Lines Matching refs:i
147 static void memsys3UnlinkFromList(u32 i, u32 *pRoot){ in memsys3UnlinkFromList() argument
148 u32 next = mem3.aPool[i].u.list.next; in memsys3UnlinkFromList()
149 u32 prev = mem3.aPool[i].u.list.prev; in memsys3UnlinkFromList()
159 mem3.aPool[i].u.list.next = 0; in memsys3UnlinkFromList()
160 mem3.aPool[i].u.list.prev = 0; in memsys3UnlinkFromList()
167 static void memsys3Unlink(u32 i){ in memsys3Unlink() argument
170 assert( (mem3.aPool[i-1].u.hdr.size4x & 1)==0 ); in memsys3Unlink()
171 assert( i>=1 ); in memsys3Unlink()
172 size = mem3.aPool[i-1].u.hdr.size4x/4; in memsys3Unlink()
173 assert( size==mem3.aPool[i+size-1].u.hdr.prevSize ); in memsys3Unlink()
176 memsys3UnlinkFromList(i, &mem3.aiSmall[size-2]); in memsys3Unlink()
179 memsys3UnlinkFromList(i, &mem3.aiHash[hash]); in memsys3Unlink()
187 static void memsys3LinkIntoList(u32 i, u32 *pRoot){ in memsys3LinkIntoList() argument
189 mem3.aPool[i].u.list.next = *pRoot; in memsys3LinkIntoList()
190 mem3.aPool[i].u.list.prev = 0; in memsys3LinkIntoList()
192 mem3.aPool[*pRoot].u.list.prev = i; in memsys3LinkIntoList()
194 *pRoot = i; in memsys3LinkIntoList()
201 static void memsys3Link(u32 i){ in memsys3Link() argument
204 assert( i>=1 ); in memsys3Link()
205 assert( (mem3.aPool[i-1].u.hdr.size4x & 1)==0 ); in memsys3Link()
206 size = mem3.aPool[i-1].u.hdr.size4x/4; in memsys3Link()
207 assert( size==mem3.aPool[i+size-1].u.hdr.prevSize ); in memsys3Link()
210 memsys3LinkIntoList(i, &mem3.aiSmall[size-2]); in memsys3Link()
213 memsys3LinkIntoList(i, &mem3.aiHash[hash]); in memsys3Link()
252 static void *memsys3Checkout(u32 i, u32 nBlock){ in memsys3Checkout() argument
255 assert( i>=1 ); in memsys3Checkout()
256 assert( mem3.aPool[i-1].u.hdr.size4x/4==nBlock ); in memsys3Checkout()
257 assert( mem3.aPool[i+nBlock-1].u.hdr.prevSize==nBlock ); in memsys3Checkout()
258 x = mem3.aPool[i-1].u.hdr.size4x; in memsys3Checkout()
259 mem3.aPool[i-1].u.hdr.size4x = nBlock*4 | 1 | (x&2); in memsys3Checkout()
260 mem3.aPool[i+nBlock-1].u.hdr.prevSize = nBlock; in memsys3Checkout()
261 mem3.aPool[i+nBlock-1].u.hdr.size4x |= 2; in memsys3Checkout()
262 return &mem3.aPool[i]; in memsys3Checkout()
316 u32 iNext, prev, size, i, x; in memsys3Merge() local
319 for(i=*pRoot; i>0; i=iNext){ in memsys3Merge()
320 iNext = mem3.aPool[i].u.list.next; in memsys3Merge()
321 size = mem3.aPool[i-1].u.hdr.size4x; in memsys3Merge()
324 memsys3UnlinkFromList(i, pRoot); in memsys3Merge()
325 assert( i > mem3.aPool[i-1].u.hdr.prevSize ); in memsys3Merge()
326 prev = i - mem3.aPool[i-1].u.hdr.prevSize; in memsys3Merge()
331 size = i + size/4 - prev; in memsys3Merge()
336 i = prev; in memsys3Merge()
341 mem3.iKeyBlk = i; in memsys3Merge()
355 u32 i; in memsys3MallocUnsafe() local
374 i = mem3.aiSmall[nBlock-2]; in memsys3MallocUnsafe()
375 if( i>0 ){ in memsys3MallocUnsafe()
376 memsys3UnlinkFromList(i, &mem3.aiSmall[nBlock-2]); in memsys3MallocUnsafe()
377 return memsys3Checkout(i, nBlock); in memsys3MallocUnsafe()
381 for(i=mem3.aiHash[hash]; i>0; i=mem3.aPool[i].u.list.next){ in memsys3MallocUnsafe()
382 if( mem3.aPool[i-1].u.hdr.size4x/4==nBlock ){ in memsys3MallocUnsafe()
383 memsys3UnlinkFromList(i, &mem3.aiHash[hash]); in memsys3MallocUnsafe()
384 return memsys3Checkout(i, nBlock); in memsys3MallocUnsafe()
412 for(i=0; i<N_HASH; i++){ in memsys3MallocUnsafe()
413 memsys3Merge(&mem3.aiHash[i]); in memsys3MallocUnsafe()
415 for(i=0; i<MX_SMALL-1; i++){ in memsys3MallocUnsafe()
416 memsys3Merge(&mem3.aiSmall[i]); in memsys3MallocUnsafe()
438 int i; in memsys3FreeUnsafe() local
442 i = p - mem3.aPool; in memsys3FreeUnsafe()
443 assert( (mem3.aPool[i-1].u.hdr.size4x&1)==1 ); in memsys3FreeUnsafe()
444 size = mem3.aPool[i-1].u.hdr.size4x/4; in memsys3FreeUnsafe()
445 assert( i+size<=mem3.nPool+1 ); in memsys3FreeUnsafe()
446 mem3.aPool[i-1].u.hdr.size4x &= ~1; in memsys3FreeUnsafe()
447 mem3.aPool[i+size-1].u.hdr.prevSize = size; in memsys3FreeUnsafe()
448 mem3.aPool[i+size-1].u.hdr.size4x &= ~2; in memsys3FreeUnsafe()
449 memsys3Link(i); in memsys3FreeUnsafe()
592 u32 i, j; in sqlite3Memsys3Dump() local
606 for(i=1; i<=mem3.nPool; i+=size/4){ in sqlite3Memsys3Dump()
607 size = mem3.aPool[i-1].u.hdr.size4x; in sqlite3Memsys3Dump()
609 fprintf(out, "%p size error\n", &mem3.aPool[i]); in sqlite3Memsys3Dump()
613 if( (size&1)==0 && mem3.aPool[i+size/4-1].u.hdr.prevSize!=size/4 ){ in sqlite3Memsys3Dump()
614 fprintf(out, "%p tail size does not match\n", &mem3.aPool[i]); in sqlite3Memsys3Dump()
618 if( ((mem3.aPool[i+size/4-1].u.hdr.size4x&2)>>1)!=(size&1) ){ in sqlite3Memsys3Dump()
619 fprintf(out, "%p tail checkout bit is incorrect\n", &mem3.aPool[i]); in sqlite3Memsys3Dump()
624 fprintf(out, "%p %6d bytes checked out\n", &mem3.aPool[i], (size/4)*8-8); in sqlite3Memsys3Dump()
626 fprintf(out, "%p %6d bytes free%s\n", &mem3.aPool[i], (size/4)*8-8, in sqlite3Memsys3Dump()
627 i==mem3.iKeyBlk ? " **key**" : ""); in sqlite3Memsys3Dump()
630 for(i=0; i<MX_SMALL-1; i++){ in sqlite3Memsys3Dump()
631 if( mem3.aiSmall[i]==0 ) continue; in sqlite3Memsys3Dump()
632 fprintf(out, "small(%2d):", i); in sqlite3Memsys3Dump()
633 for(j = mem3.aiSmall[i]; j>0; j=mem3.aPool[j].u.list.next){ in sqlite3Memsys3Dump()
639 for(i=0; i<N_HASH; i++){ in sqlite3Memsys3Dump()
640 if( mem3.aiHash[i]==0 ) continue; in sqlite3Memsys3Dump()
641 fprintf(out, "hash(%2d):", i); in sqlite3Memsys3Dump()
642 for(j = mem3.aiHash[i]; j>0; j=mem3.aPool[j].u.list.next){ in sqlite3Memsys3Dump()