Lines Matching refs:mem3

27603 } mem3 = { 97535575 };  variable
27605 #define mem3 GLOBAL(struct Mem3Global, mem3) macro
27612 u32 next = mem3.aPool[i].u.list.next; in memsys3UnlinkFromList()
27613 u32 prev = mem3.aPool[i].u.list.prev; in memsys3UnlinkFromList()
27614 assert( sqlite3_mutex_held(mem3.mutex) ); in memsys3UnlinkFromList()
27618 mem3.aPool[prev].u.list.next = next; in memsys3UnlinkFromList()
27621 mem3.aPool[next].u.list.prev = prev; in memsys3UnlinkFromList()
27623 mem3.aPool[i].u.list.next = 0; in memsys3UnlinkFromList()
27624 mem3.aPool[i].u.list.prev = 0; in memsys3UnlinkFromList()
27633 assert( sqlite3_mutex_held(mem3.mutex) ); in memsys3Unlink()
27634 assert( (mem3.aPool[i-1].u.hdr.size4x & 1)==0 ); in memsys3Unlink()
27636 size = mem3.aPool[i-1].u.hdr.size4x/4; in memsys3Unlink()
27637 assert( size==mem3.aPool[i+size-1].u.hdr.prevSize ); in memsys3Unlink()
27640 memsys3UnlinkFromList(i, &mem3.aiSmall[size-2]); in memsys3Unlink()
27643 memsys3UnlinkFromList(i, &mem3.aiHash[hash]); in memsys3Unlink()
27652 assert( sqlite3_mutex_held(mem3.mutex) ); in memsys3LinkIntoList()
27653 mem3.aPool[i].u.list.next = *pRoot; in memsys3LinkIntoList()
27654 mem3.aPool[i].u.list.prev = 0; in memsys3LinkIntoList()
27656 mem3.aPool[*pRoot].u.list.prev = i; in memsys3LinkIntoList()
27667 assert( sqlite3_mutex_held(mem3.mutex) ); in memsys3Link()
27669 assert( (mem3.aPool[i-1].u.hdr.size4x & 1)==0 ); in memsys3Link()
27670 size = mem3.aPool[i-1].u.hdr.size4x/4; in memsys3Link()
27671 assert( size==mem3.aPool[i+size-1].u.hdr.prevSize ); in memsys3Link()
27674 memsys3LinkIntoList(i, &mem3.aiSmall[size-2]); in memsys3Link()
27677 memsys3LinkIntoList(i, &mem3.aiHash[hash]); in memsys3Link()
27687 if( sqlite3GlobalConfig.bMemstat==0 && mem3.mutex==0 ){ in memsys3Enter()
27688 mem3.mutex = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MEM); in memsys3Enter()
27690 sqlite3_mutex_enter(mem3.mutex); in memsys3Enter()
27693 sqlite3_mutex_leave(mem3.mutex); in memsys3Leave()
27700 if( !mem3.alarmBusy ){ in memsys3OutOfMemory()
27701 mem3.alarmBusy = 1; in memsys3OutOfMemory()
27702 assert( sqlite3_mutex_held(mem3.mutex) ); in memsys3OutOfMemory()
27703 sqlite3_mutex_leave(mem3.mutex); in memsys3OutOfMemory()
27705 sqlite3_mutex_enter(mem3.mutex); in memsys3OutOfMemory()
27706 mem3.alarmBusy = 0; in memsys3OutOfMemory()
27718 assert( sqlite3_mutex_held(mem3.mutex) ); in memsys3Checkout()
27720 assert( mem3.aPool[i-1].u.hdr.size4x/4==nBlock ); in memsys3Checkout()
27721 assert( mem3.aPool[i+nBlock-1].u.hdr.prevSize==nBlock ); in memsys3Checkout()
27722 x = mem3.aPool[i-1].u.hdr.size4x; in memsys3Checkout()
27723 mem3.aPool[i-1].u.hdr.size4x = nBlock*4 | 1 | (x&2); in memsys3Checkout()
27724 mem3.aPool[i+nBlock-1].u.hdr.prevSize = nBlock; in memsys3Checkout()
27725 mem3.aPool[i+nBlock-1].u.hdr.size4x |= 2; in memsys3Checkout()
27726 return &mem3.aPool[i]; in memsys3Checkout()
27735 assert( sqlite3_mutex_held(mem3.mutex) ); in memsys3FromKeyBlk()
27736 assert( mem3.szKeyBlk>=nBlock ); in memsys3FromKeyBlk()
27737 if( nBlock>=mem3.szKeyBlk-1 ){ in memsys3FromKeyBlk()
27739 void *p = memsys3Checkout(mem3.iKeyBlk, mem3.szKeyBlk); in memsys3FromKeyBlk()
27740 mem3.iKeyBlk = 0; in memsys3FromKeyBlk()
27741 mem3.szKeyBlk = 0; in memsys3FromKeyBlk()
27742 mem3.mnKeyBlk = 0; in memsys3FromKeyBlk()
27747 newi = mem3.iKeyBlk + mem3.szKeyBlk - nBlock; in memsys3FromKeyBlk()
27748 assert( newi > mem3.iKeyBlk+1 ); in memsys3FromKeyBlk()
27749 mem3.aPool[mem3.iKeyBlk+mem3.szKeyBlk-1].u.hdr.prevSize = nBlock; in memsys3FromKeyBlk()
27750 mem3.aPool[mem3.iKeyBlk+mem3.szKeyBlk-1].u.hdr.size4x |= 2; in memsys3FromKeyBlk()
27751 mem3.aPool[newi-1].u.hdr.size4x = nBlock*4 + 1; in memsys3FromKeyBlk()
27752 mem3.szKeyBlk -= nBlock; in memsys3FromKeyBlk()
27753 mem3.aPool[newi-1].u.hdr.prevSize = mem3.szKeyBlk; in memsys3FromKeyBlk()
27754 x = mem3.aPool[mem3.iKeyBlk-1].u.hdr.size4x & 2; in memsys3FromKeyBlk()
27755 mem3.aPool[mem3.iKeyBlk-1].u.hdr.size4x = mem3.szKeyBlk*4 | x; in memsys3FromKeyBlk()
27756 if( mem3.szKeyBlk < mem3.mnKeyBlk ){ in memsys3FromKeyBlk()
27757 mem3.mnKeyBlk = mem3.szKeyBlk; in memsys3FromKeyBlk()
27759 return (void*)&mem3.aPool[newi]; in memsys3FromKeyBlk()
27782 assert( sqlite3_mutex_held(mem3.mutex) ); in memsys3Merge()
27784 iNext = mem3.aPool[i].u.list.next; in memsys3Merge()
27785 size = mem3.aPool[i-1].u.hdr.size4x; in memsys3Merge()
27789 assert( i > mem3.aPool[i-1].u.hdr.prevSize ); in memsys3Merge()
27790 prev = i - mem3.aPool[i-1].u.hdr.prevSize; in memsys3Merge()
27792 iNext = mem3.aPool[prev].u.list.next; in memsys3Merge()
27796 x = mem3.aPool[prev-1].u.hdr.size4x & 2; in memsys3Merge()
27797 mem3.aPool[prev-1].u.hdr.size4x = size*4 | x; in memsys3Merge()
27798 mem3.aPool[prev+size-1].u.hdr.prevSize = size; in memsys3Merge()
27804 if( size>mem3.szKeyBlk ){ in memsys3Merge()
27805 mem3.iKeyBlk = i; in memsys3Merge()
27806 mem3.szKeyBlk = size; in memsys3Merge()
27823 assert( sqlite3_mutex_held(mem3.mutex) ); in memsys3MallocUnsafe()
27838 i = mem3.aiSmall[nBlock-2]; in memsys3MallocUnsafe()
27840 memsys3UnlinkFromList(i, &mem3.aiSmall[nBlock-2]); in memsys3MallocUnsafe()
27845 for(i=mem3.aiHash[hash]; i>0; i=mem3.aPool[i].u.list.next){ in memsys3MallocUnsafe()
27846 if( mem3.aPool[i-1].u.hdr.size4x/4==nBlock ){ in memsys3MallocUnsafe()
27847 memsys3UnlinkFromList(i, &mem3.aiHash[hash]); in memsys3MallocUnsafe()
27857 if( mem3.szKeyBlk>=nBlock ){ in memsys3MallocUnsafe()
27869 for(toFree=nBlock*16; toFree<(mem3.nPool*16); toFree *= 2){ in memsys3MallocUnsafe()
27871 if( mem3.iKeyBlk ){ in memsys3MallocUnsafe()
27872 memsys3Link(mem3.iKeyBlk); in memsys3MallocUnsafe()
27873 mem3.iKeyBlk = 0; in memsys3MallocUnsafe()
27874 mem3.szKeyBlk = 0; in memsys3MallocUnsafe()
27877 memsys3Merge(&mem3.aiHash[i]); in memsys3MallocUnsafe()
27880 memsys3Merge(&mem3.aiSmall[i]); in memsys3MallocUnsafe()
27882 if( mem3.szKeyBlk ){ in memsys3MallocUnsafe()
27883 memsys3Unlink(mem3.iKeyBlk); in memsys3MallocUnsafe()
27884 if( mem3.szKeyBlk>=nBlock ){ in memsys3MallocUnsafe()
27904 assert( sqlite3_mutex_held(mem3.mutex) ); in memsys3FreeUnsafe()
27905 assert( p>mem3.aPool && p<&mem3.aPool[mem3.nPool] ); in memsys3FreeUnsafe()
27906 i = p - mem3.aPool; in memsys3FreeUnsafe()
27907 assert( (mem3.aPool[i-1].u.hdr.size4x&1)==1 ); in memsys3FreeUnsafe()
27908 size = mem3.aPool[i-1].u.hdr.size4x/4; in memsys3FreeUnsafe()
27909 assert( i+size<=mem3.nPool+1 ); in memsys3FreeUnsafe()
27910 mem3.aPool[i-1].u.hdr.size4x &= ~1; in memsys3FreeUnsafe()
27911 mem3.aPool[i+size-1].u.hdr.prevSize = size; in memsys3FreeUnsafe()
27912 mem3.aPool[i+size-1].u.hdr.size4x &= ~2; in memsys3FreeUnsafe()
27916 if( mem3.iKeyBlk ){ in memsys3FreeUnsafe()
27917 while( (mem3.aPool[mem3.iKeyBlk-1].u.hdr.size4x&2)==0 ){ in memsys3FreeUnsafe()
27918 size = mem3.aPool[mem3.iKeyBlk-1].u.hdr.prevSize; in memsys3FreeUnsafe()
27919 mem3.iKeyBlk -= size; in memsys3FreeUnsafe()
27920 mem3.szKeyBlk += size; in memsys3FreeUnsafe()
27921 memsys3Unlink(mem3.iKeyBlk); in memsys3FreeUnsafe()
27922 x = mem3.aPool[mem3.iKeyBlk-1].u.hdr.size4x & 2; in memsys3FreeUnsafe()
27923 mem3.aPool[mem3.iKeyBlk-1].u.hdr.size4x = mem3.szKeyBlk*4 | x; in memsys3FreeUnsafe()
27924 mem3.aPool[mem3.iKeyBlk+mem3.szKeyBlk-1].u.hdr.prevSize = mem3.szKeyBlk; in memsys3FreeUnsafe()
27926 x = mem3.aPool[mem3.iKeyBlk-1].u.hdr.size4x & 2; in memsys3FreeUnsafe()
27927 while( (mem3.aPool[mem3.iKeyBlk+mem3.szKeyBlk-1].u.hdr.size4x&1)==0 ){ in memsys3FreeUnsafe()
27928 memsys3Unlink(mem3.iKeyBlk+mem3.szKeyBlk); in memsys3FreeUnsafe()
27929 mem3.szKeyBlk += mem3.aPool[mem3.iKeyBlk+mem3.szKeyBlk-1].u.hdr.size4x/4; in memsys3FreeUnsafe()
27930 mem3.aPool[mem3.iKeyBlk-1].u.hdr.size4x = mem3.szKeyBlk*4 | x; in memsys3FreeUnsafe()
27931 mem3.aPool[mem3.iKeyBlk+mem3.szKeyBlk-1].u.hdr.prevSize = mem3.szKeyBlk; in memsys3FreeUnsafe()
28024 mem3.aPool = (Mem3Block *)sqlite3GlobalConfig.pHeap; in memsys3Init()
28025 mem3.nPool = (sqlite3GlobalConfig.nHeap / sizeof(Mem3Block)) - 2; in memsys3Init()
28028 mem3.szKeyBlk = mem3.nPool; in memsys3Init()
28029 mem3.mnKeyBlk = mem3.szKeyBlk; in memsys3Init()
28030 mem3.iKeyBlk = 1; in memsys3Init()
28031 mem3.aPool[0].u.hdr.size4x = (mem3.szKeyBlk<<2) + 2; in memsys3Init()
28032 mem3.aPool[mem3.nPool].u.hdr.prevSize = mem3.nPool; in memsys3Init()
28033 mem3.aPool[mem3.nPool].u.hdr.size4x = 1; in memsys3Init()
28043 mem3.mutex = 0; in memsys3Shutdown()
28070 for(i=1; i<=mem3.nPool; i+=size/4){ in sqlite3Memsys3Dump()
28071 size = mem3.aPool[i-1].u.hdr.size4x; in sqlite3Memsys3Dump()
28073 fprintf(out, "%p size error\n", &mem3.aPool[i]); in sqlite3Memsys3Dump()
28077 if( (size&1)==0 && mem3.aPool[i+size/4-1].u.hdr.prevSize!=size/4 ){ in sqlite3Memsys3Dump()
28078 fprintf(out, "%p tail size does not match\n", &mem3.aPool[i]); in sqlite3Memsys3Dump()
28082 if( ((mem3.aPool[i+size/4-1].u.hdr.size4x&2)>>1)!=(size&1) ){ in sqlite3Memsys3Dump()
28083 fprintf(out, "%p tail checkout bit is incorrect\n", &mem3.aPool[i]); in sqlite3Memsys3Dump()
28088 fprintf(out, "%p %6d bytes checked out\n", &mem3.aPool[i], (size/4)*8-8); in sqlite3Memsys3Dump()
28090 fprintf(out, "%p %6d bytes free%s\n", &mem3.aPool[i], (size/4)*8-8, in sqlite3Memsys3Dump()
28091 i==mem3.iKeyBlk ? " **key**" : ""); in sqlite3Memsys3Dump()
28095 if( mem3.aiSmall[i]==0 ) continue; in sqlite3Memsys3Dump()
28097 for(j = mem3.aiSmall[i]; j>0; j=mem3.aPool[j].u.list.next){ in sqlite3Memsys3Dump()
28098 fprintf(out, " %p(%d)", &mem3.aPool[j], in sqlite3Memsys3Dump()
28099 (mem3.aPool[j-1].u.hdr.size4x/4)*8-8); in sqlite3Memsys3Dump()
28104 if( mem3.aiHash[i]==0 ) continue; in sqlite3Memsys3Dump()
28106 for(j = mem3.aiHash[i]; j>0; j=mem3.aPool[j].u.list.next){ in sqlite3Memsys3Dump()
28107 fprintf(out, " %p(%d)", &mem3.aPool[j], in sqlite3Memsys3Dump()
28108 (mem3.aPool[j-1].u.hdr.size4x/4)*8-8); in sqlite3Memsys3Dump()
28112 fprintf(out, "key=%d\n", mem3.iKeyBlk); in sqlite3Memsys3Dump()
28113 fprintf(out, "nowUsed=%d\n", mem3.nPool*8 - mem3.szKeyBlk*8); in sqlite3Memsys3Dump()
28114 fprintf(out, "mxUsed=%d\n", mem3.nPool*8 - mem3.mnKeyBlk*8); in sqlite3Memsys3Dump()
28115 sqlite3_mutex_leave(mem3.mutex); in sqlite3Memsys3Dump()