pCache 10374 ext/sqlite3/libsqlite/sqlite3.c PCache *pCache; /* Cache that owns this page */ pCache 10467 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE void sqlite3PcacheIterateDirty(PCache *pCache, void (*xIter)(PgHdr *)); pCache 39283 ext/sqlite3/libsqlite/sqlite3.c sqlite3_pcache *pCache; /* Pluggable cache module */ pCache 39301 ext/sqlite3/libsqlite/sqlite3.c PCache *p = pPage->pCache; pCache 39361 ext/sqlite3/libsqlite/sqlite3.c if( p->pCache->bPurgeable ){ pCache 39363 ext/sqlite3/libsqlite/sqlite3.c p->pCache->pPage1 = 0; pCache 39365 ext/sqlite3/libsqlite/sqlite3.c sqlite3GlobalConfig.pcache2.xUnpin(p->pCache->pCache, p->pPage, 0); pCache 39443 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3PcacheSetPageSize(PCache *pCache, int szPage){ pCache 39444 ext/sqlite3/libsqlite/sqlite3.c assert( pCache->nRef==0 && pCache->pDirty==0 ); pCache 39445 ext/sqlite3/libsqlite/sqlite3.c if( pCache->szPage ){ pCache 39448 ext/sqlite3/libsqlite/sqlite3.c szPage, pCache->szExtra + ROUND8(sizeof(PgHdr)), pCache 39449 ext/sqlite3/libsqlite/sqlite3.c pCache->bPurgeable pCache 39452 ext/sqlite3/libsqlite/sqlite3.c sqlite3GlobalConfig.pcache2.xCachesize(pNew, numberOfCachePages(pCache)); pCache 39453 ext/sqlite3/libsqlite/sqlite3.c if( pCache->pCache ){ pCache 39454 ext/sqlite3/libsqlite/sqlite3.c sqlite3GlobalConfig.pcache2.xDestroy(pCache->pCache); pCache 39456 ext/sqlite3/libsqlite/sqlite3.c pCache->pCache = pNew; pCache 39457 ext/sqlite3/libsqlite/sqlite3.c pCache->pPage1 = 0; pCache 39458 ext/sqlite3/libsqlite/sqlite3.c pCache->szPage = szPage; pCache 39488 ext/sqlite3/libsqlite/sqlite3.c PCache *pCache, /* Obtain the page from this cache */ pCache 39494 ext/sqlite3/libsqlite/sqlite3.c assert( pCache!=0 ); pCache 39495 ext/sqlite3/libsqlite/sqlite3.c assert( pCache->pCache!=0 ); pCache 39506 ext/sqlite3/libsqlite/sqlite3.c eCreate = createFlag & pCache->eCreate; pCache 39508 ext/sqlite3/libsqlite/sqlite3.c assert( createFlag==0 || pCache->eCreate==eCreate ); pCache 39509 ext/sqlite3/libsqlite/sqlite3.c assert( createFlag==0 || eCreate==1+(!pCache->bPurgeable||!pCache->pDirty) ); pCache 39510 ext/sqlite3/libsqlite/sqlite3.c return sqlite3GlobalConfig.pcache2.xFetch(pCache->pCache, pgno, eCreate); pCache 39525 ext/sqlite3/libsqlite/sqlite3.c PCache *pCache, /* Obtain the page from this cache */ pCache 39530 ext/sqlite3/libsqlite/sqlite3.c if( pCache->eCreate==2 ) return 0; pCache 39538 ext/sqlite3/libsqlite/sqlite3.c for(pPg=pCache->pSynced; pCache 39542 ext/sqlite3/libsqlite/sqlite3.c pCache->pSynced = pPg; pCache 39544 ext/sqlite3/libsqlite/sqlite3.c for(pPg=pCache->pDirtyTail; pPg && pPg->nRef; pPg=pPg->pDirtyPrev); pCache 39552 ext/sqlite3/libsqlite/sqlite3.c sqlite3GlobalConfig.pcache.xPagecount(pCache->pCache), pCache 39553 ext/sqlite3/libsqlite/sqlite3.c numberOfCachePages(pCache)); pCache 39555 ext/sqlite3/libsqlite/sqlite3.c rc = pCache->xStress(pCache->pStress, pPg); pCache 39560 ext/sqlite3/libsqlite/sqlite3.c *ppPage = sqlite3GlobalConfig.pcache2.xFetch(pCache->pCache, pgno, 2); pCache 39574 ext/sqlite3/libsqlite/sqlite3.c PCache *pCache, /* Obtain the page from this cache */ pCache 39586 ext/sqlite3/libsqlite/sqlite3.c memset(pPgHdr->pExtra, 0, pCache->szExtra); pCache 39587 ext/sqlite3/libsqlite/sqlite3.c pPgHdr->pCache = pCache; pCache 39589 ext/sqlite3/libsqlite/sqlite3.c return sqlite3PcacheFetchFinish(pCache,pgno,pPage); pCache 39599 ext/sqlite3/libsqlite/sqlite3.c PCache *pCache, /* Obtain the page from this cache */ pCache 39609 ext/sqlite3/libsqlite/sqlite3.c return pcacheFetchFinishWithInit(pCache, pgno, pPage); pCache 39612 ext/sqlite3/libsqlite/sqlite3.c pCache->nRef++; pCache 39616 ext/sqlite3/libsqlite/sqlite3.c pCache->pPage1 = pPgHdr; pCache 39629 ext/sqlite3/libsqlite/sqlite3.c p->pCache->nRef--; pCache 39657 ext/sqlite3/libsqlite/sqlite3.c p->pCache->nRef--; pCache 39659 ext/sqlite3/libsqlite/sqlite3.c p->pCache->pPage1 = 0; pCache 39661 ext/sqlite3/libsqlite/sqlite3.c sqlite3GlobalConfig.pcache2.xUnpin(p->pCache->pCache, p->pPage, 1); pCache 39694 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE void sqlite3PcacheCleanAll(PCache *pCache){ pCache 39696 ext/sqlite3/libsqlite/sqlite3.c while( (p = pCache->pDirty)!=0 ){ pCache 39704 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE void sqlite3PcacheClearSyncFlags(PCache *pCache){ pCache 39706 ext/sqlite3/libsqlite/sqlite3.c for(p=pCache->pDirty; p; p=p->pDirtyNext){ pCache 39709 ext/sqlite3/libsqlite/sqlite3.c pCache->pSynced = pCache->pDirtyTail; pCache 39716 ext/sqlite3/libsqlite/sqlite3.c PCache *pCache = p->pCache; pCache 39719 ext/sqlite3/libsqlite/sqlite3.c sqlite3GlobalConfig.pcache2.xRekey(pCache->pCache, p->pPage, p->pgno,newPgno); pCache 39735 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE void sqlite3PcacheTruncate(PCache *pCache, Pgno pgno){ pCache 39736 ext/sqlite3/libsqlite/sqlite3.c if( pCache->pCache ){ pCache 39739 ext/sqlite3/libsqlite/sqlite3.c for(p=pCache->pDirty; p; p=pNext){ pCache 39751 ext/sqlite3/libsqlite/sqlite3.c if( pgno==0 && pCache->pPage1 ){ pCache 39752 ext/sqlite3/libsqlite/sqlite3.c memset(pCache->pPage1->pData, 0, pCache->szPage); pCache 39755 ext/sqlite3/libsqlite/sqlite3.c sqlite3GlobalConfig.pcache2.xTruncate(pCache->pCache, pgno+1); pCache 39762 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE void sqlite3PcacheClose(PCache *pCache){ pCache 39763 ext/sqlite3/libsqlite/sqlite3.c assert( pCache->pCache!=0 ); pCache 39764 ext/sqlite3/libsqlite/sqlite3.c sqlite3GlobalConfig.pcache2.xDestroy(pCache->pCache); pCache 39770 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE void sqlite3PcacheClear(PCache *pCache){ pCache 39771 ext/sqlite3/libsqlite/sqlite3.c sqlite3PcacheTruncate(pCache, 0); pCache 39847 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE PgHdr *sqlite3PcacheDirtyList(PCache *pCache){ pCache 39849 ext/sqlite3/libsqlite/sqlite3.c for(p=pCache->pDirty; p; p=p->pDirtyNext){ pCache 39852 ext/sqlite3/libsqlite/sqlite3.c return pcacheSortDirtyList(pCache->pDirty); pCache 39858 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3PcacheRefCount(PCache *pCache){ pCache 39859 ext/sqlite3/libsqlite/sqlite3.c return pCache->nRef; pCache 39872 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3PcachePagecount(PCache *pCache){ pCache 39873 ext/sqlite3/libsqlite/sqlite3.c assert( pCache->pCache!=0 ); pCache 39874 ext/sqlite3/libsqlite/sqlite3.c return sqlite3GlobalConfig.pcache2.xPagecount(pCache->pCache); pCache 39881 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3PcacheGetCachesize(PCache *pCache){ pCache 39882 ext/sqlite3/libsqlite/sqlite3.c return numberOfCachePages(pCache); pCache 39889 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE void sqlite3PcacheSetCachesize(PCache *pCache, int mxPage){ pCache 39890 ext/sqlite3/libsqlite/sqlite3.c assert( pCache->pCache!=0 ); pCache 39891 ext/sqlite3/libsqlite/sqlite3.c pCache->szCache = mxPage; pCache 39892 ext/sqlite3/libsqlite/sqlite3.c sqlite3GlobalConfig.pcache2.xCachesize(pCache->pCache, pCache 39893 ext/sqlite3/libsqlite/sqlite3.c numberOfCachePages(pCache)); pCache 39899 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE void sqlite3PcacheShrink(PCache *pCache){ pCache 39900 ext/sqlite3/libsqlite/sqlite3.c assert( pCache->pCache!=0 ); pCache 39901 ext/sqlite3/libsqlite/sqlite3.c sqlite3GlobalConfig.pcache2.xShrink(pCache->pCache); pCache 39917 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE void sqlite3PcacheIterateDirty(PCache *pCache, void (*xIter)(PgHdr *)){ pCache 39919 ext/sqlite3/libsqlite/sqlite3.c for(pDirty=pCache->pDirty; pDirty; pDirty=pDirty->pDirtyNext){ pCache 40026 ext/sqlite3/libsqlite/sqlite3.c PCache1 *pCache; /* Cache that currently owns this page */ pCache 40207 ext/sqlite3/libsqlite/sqlite3.c static PgHdr1 *pcache1AllocPage(PCache1 *pCache){ pCache 40214 ext/sqlite3/libsqlite/sqlite3.c assert( sqlite3_mutex_held(pCache->pGroup->mutex) ); pCache 40215 ext/sqlite3/libsqlite/sqlite3.c pcache1LeaveMutex(pCache->pGroup); pCache 40217 ext/sqlite3/libsqlite/sqlite3.c pPg = pcache1Alloc(pCache->szPage); pCache 40218 ext/sqlite3/libsqlite/sqlite3.c p = sqlite3Malloc(sizeof(PgHdr1) + pCache->szExtra); pCache 40225 ext/sqlite3/libsqlite/sqlite3.c pPg = pcache1Alloc(ROUND8(sizeof(PgHdr1)) + pCache->szPage + pCache->szExtra); pCache 40226 ext/sqlite3/libsqlite/sqlite3.c p = (PgHdr1 *)&((u8 *)pPg)[pCache->szPage]; pCache 40228 ext/sqlite3/libsqlite/sqlite3.c pcache1EnterMutex(pCache->pGroup); pCache 40233 ext/sqlite3/libsqlite/sqlite3.c if( pCache->bPurgeable ){ pCache 40234 ext/sqlite3/libsqlite/sqlite3.c pCache->pGroup->nCurrentPage++; pCache 40250 ext/sqlite3/libsqlite/sqlite3.c PCache1 *pCache = p->pCache; pCache 40251 ext/sqlite3/libsqlite/sqlite3.c assert( sqlite3_mutex_held(p->pCache->pGroup->mutex) ); pCache 40256 ext/sqlite3/libsqlite/sqlite3.c if( pCache->bPurgeable ){ pCache 40257 ext/sqlite3/libsqlite/sqlite3.c pCache->pGroup->nCurrentPage--; pCache 40295 ext/sqlite3/libsqlite/sqlite3.c static int pcache1UnderMemoryPressure(PCache1 *pCache){ pCache 40296 ext/sqlite3/libsqlite/sqlite3.c if( pcache1.nSlot && (pCache->szPage+pCache->szExtra)<=pcache1.szSlot ){ pCache 40354 ext/sqlite3/libsqlite/sqlite3.c PCache1 *pCache; pCache 40359 ext/sqlite3/libsqlite/sqlite3.c pCache = pPage->pCache; pCache 40360 ext/sqlite3/libsqlite/sqlite3.c pGroup = pCache->pGroup; pCache 40377 ext/sqlite3/libsqlite/sqlite3.c pCache->nRecyclable--; pCache 40389 ext/sqlite3/libsqlite/sqlite3.c PCache1 *pCache = pPage->pCache; pCache 40392 ext/sqlite3/libsqlite/sqlite3.c assert( sqlite3_mutex_held(pCache->pGroup->mutex) ); pCache 40393 ext/sqlite3/libsqlite/sqlite3.c h = pPage->iKey % pCache->nHash; pCache 40394 ext/sqlite3/libsqlite/sqlite3.c for(pp=&pCache->apHash[h]; (*pp)!=pPage; pp=&(*pp)->pNext); pCache 40397 ext/sqlite3/libsqlite/sqlite3.c pCache->nPage--; pCache 40408 ext/sqlite3/libsqlite/sqlite3.c assert( p->pCache->pGroup==pGroup ); pCache 40424 ext/sqlite3/libsqlite/sqlite3.c PCache1 *pCache, /* The cache to truncate */ pCache 40429 ext/sqlite3/libsqlite/sqlite3.c assert( sqlite3_mutex_held(pCache->pGroup->mutex) ); pCache 40430 ext/sqlite3/libsqlite/sqlite3.c for(h=0; h<pCache->nHash; h++){ pCache 40431 ext/sqlite3/libsqlite/sqlite3.c PgHdr1 **pp = &pCache->apHash[h]; pCache 40435 ext/sqlite3/libsqlite/sqlite3.c pCache->nPage--; pCache 40445 ext/sqlite3/libsqlite/sqlite3.c assert( pCache->nPage==nPage ); pCache 40487 ext/sqlite3/libsqlite/sqlite3.c PCache1 *pCache; /* The newly created page cache */ pCache 40513 ext/sqlite3/libsqlite/sqlite3.c pCache = (PCache1 *)sqlite3MallocZero(sz); pCache 40514 ext/sqlite3/libsqlite/sqlite3.c if( pCache ){ pCache 40516 ext/sqlite3/libsqlite/sqlite3.c pGroup = (PGroup*)&pCache[1]; pCache 40521 ext/sqlite3/libsqlite/sqlite3.c pCache->pGroup = pGroup; pCache 40522 ext/sqlite3/libsqlite/sqlite3.c pCache->szPage = szPage; pCache 40523 ext/sqlite3/libsqlite/sqlite3.c pCache->szExtra = szExtra; pCache 40524 ext/sqlite3/libsqlite/sqlite3.c pCache->bPurgeable = (bPurgeable ? 1 : 0); pCache 40526 ext/sqlite3/libsqlite/sqlite3.c pcache1ResizeHash(pCache); pCache 40528 ext/sqlite3/libsqlite/sqlite3.c pCache->nMin = 10; pCache 40529 ext/sqlite3/libsqlite/sqlite3.c pGroup->nMinPage += pCache->nMin; pCache 40533 ext/sqlite3/libsqlite/sqlite3.c if( pCache->nHash==0 ){ pCache 40534 ext/sqlite3/libsqlite/sqlite3.c pcache1Destroy((sqlite3_pcache*)pCache); pCache 40535 ext/sqlite3/libsqlite/sqlite3.c pCache = 0; pCache 40538 ext/sqlite3/libsqlite/sqlite3.c return (sqlite3_pcache *)pCache; pCache 40547 ext/sqlite3/libsqlite/sqlite3.c PCache1 *pCache = (PCache1 *)p; pCache 40548 ext/sqlite3/libsqlite/sqlite3.c if( pCache->bPurgeable ){ pCache 40549 ext/sqlite3/libsqlite/sqlite3.c PGroup *pGroup = pCache->pGroup; pCache 40551 ext/sqlite3/libsqlite/sqlite3.c pGroup->nMaxPage += (nMax - pCache->nMax); pCache 40553 ext/sqlite3/libsqlite/sqlite3.c pCache->nMax = nMax; pCache 40554 ext/sqlite3/libsqlite/sqlite3.c pCache->n90pct = pCache->nMax*9/10; pCache 40566 ext/sqlite3/libsqlite/sqlite3.c PCache1 *pCache = (PCache1*)p; pCache 40567 ext/sqlite3/libsqlite/sqlite3.c if( pCache->bPurgeable ){ pCache 40568 ext/sqlite3/libsqlite/sqlite3.c PGroup *pGroup = pCache->pGroup; pCache 40584 ext/sqlite3/libsqlite/sqlite3.c PCache1 *pCache = (PCache1*)p; pCache 40585 ext/sqlite3/libsqlite/sqlite3.c pcache1EnterMutex(pCache->pGroup); pCache 40586 ext/sqlite3/libsqlite/sqlite3.c n = pCache->nPage; pCache 40587 ext/sqlite3/libsqlite/sqlite3.c pcache1LeaveMutex(pCache->pGroup); pCache 40601 ext/sqlite3/libsqlite/sqlite3.c PCache1 *pCache, pCache 40606 ext/sqlite3/libsqlite/sqlite3.c PGroup *pGroup = pCache->pGroup; pCache 40610 ext/sqlite3/libsqlite/sqlite3.c assert( pCache->nPage >= pCache->nRecyclable ); pCache 40611 ext/sqlite3/libsqlite/sqlite3.c nPinned = pCache->nPage - pCache->nRecyclable; pCache 40613 ext/sqlite3/libsqlite/sqlite3.c assert( pCache->n90pct == pCache->nMax*9/10 ); pCache 40616 ext/sqlite3/libsqlite/sqlite3.c || nPinned>=pCache->n90pct pCache 40617 ext/sqlite3/libsqlite/sqlite3.c || (pcache1UnderMemoryPressure(pCache) && pCache->nRecyclable<nPinned) pCache 40622 ext/sqlite3/libsqlite/sqlite3.c if( pCache->nPage>=pCache->nHash ) pcache1ResizeHash(pCache); pCache 40623 ext/sqlite3/libsqlite/sqlite3.c assert( pCache->nHash>0 && pCache->apHash ); pCache 40626 ext/sqlite3/libsqlite/sqlite3.c if( pCache->bPurgeable && pGroup->pLruTail && ( pCache 40627 ext/sqlite3/libsqlite/sqlite3.c (pCache->nPage+1>=pCache->nMax) pCache 40629 ext/sqlite3/libsqlite/sqlite3.c || pcache1UnderMemoryPressure(pCache) pCache 40636 ext/sqlite3/libsqlite/sqlite3.c pOther = pPage->pCache; pCache 40640 ext/sqlite3/libsqlite/sqlite3.c assert( (pCache->szPage & (pCache->szPage-1))==0 && pCache->szPage>=512 ); pCache 40641 ext/sqlite3/libsqlite/sqlite3.c assert( pCache->szExtra<512 ); pCache 40645 ext/sqlite3/libsqlite/sqlite3.c if( pOther->szPage+pOther->szExtra != pCache->szPage+pCache->szExtra ){ pCache 40649 ext/sqlite3/libsqlite/sqlite3.c pGroup->nCurrentPage -= (pOther->bPurgeable - pCache->bPurgeable); pCache 40658 ext/sqlite3/libsqlite/sqlite3.c pPage = pcache1AllocPage(pCache); pCache 40663 ext/sqlite3/libsqlite/sqlite3.c unsigned int h = iKey % pCache->nHash; pCache 40664 ext/sqlite3/libsqlite/sqlite3.c pCache->nPage++; pCache 40666 ext/sqlite3/libsqlite/sqlite3.c pPage->pNext = pCache->apHash[h]; pCache 40667 ext/sqlite3/libsqlite/sqlite3.c pPage->pCache = pCache; pCache 40672 ext/sqlite3/libsqlite/sqlite3.c pCache->apHash[h] = pPage; pCache 40673 ext/sqlite3/libsqlite/sqlite3.c if( iKey>pCache->iMaxKey ){ pCache 40674 ext/sqlite3/libsqlite/sqlite3.c pCache->iMaxKey = iKey; pCache 40739 ext/sqlite3/libsqlite/sqlite3.c PCache1 *pCache = (PCache1 *)p; pCache 40743 ext/sqlite3/libsqlite/sqlite3.c assert( pCache->bPurgeable || createFlag!=1 ); pCache 40744 ext/sqlite3/libsqlite/sqlite3.c assert( pCache->bPurgeable || pCache->nMin==0 ); pCache 40745 ext/sqlite3/libsqlite/sqlite3.c assert( pCache->bPurgeable==0 || pCache->nMin==10 ); pCache 40746 ext/sqlite3/libsqlite/sqlite3.c assert( pCache->nMin==0 || pCache->bPurgeable ); pCache 40747 ext/sqlite3/libsqlite/sqlite3.c assert( pCache->nHash>0 ); pCache 40748 ext/sqlite3/libsqlite/sqlite3.c pcache1EnterMutex(pCache->pGroup); pCache 40751 ext/sqlite3/libsqlite/sqlite3.c pPage = pCache->apHash[iKey % pCache->nHash]; pCache 40759 ext/sqlite3/libsqlite/sqlite3.c pPage = pcache1FetchStage2(pCache, iKey, createFlag); pCache 40761 ext/sqlite3/libsqlite/sqlite3.c assert( pPage==0 || pCache->iMaxKey>=iKey ); pCache 40762 ext/sqlite3/libsqlite/sqlite3.c pcache1LeaveMutex(pCache->pGroup); pCache 40777 ext/sqlite3/libsqlite/sqlite3.c PCache1 *pCache = (PCache1 *)p; pCache 40779 ext/sqlite3/libsqlite/sqlite3.c PGroup *pGroup = pCache->pGroup; pCache 40781 ext/sqlite3/libsqlite/sqlite3.c assert( pPage->pCache==pCache ); pCache 40804 ext/sqlite3/libsqlite/sqlite3.c pCache->nRecyclable++; pCache 40808 ext/sqlite3/libsqlite/sqlite3.c pcache1LeaveMutex(pCache->pGroup); pCache 40820 ext/sqlite3/libsqlite/sqlite3.c PCache1 *pCache = (PCache1 *)p; pCache 40825 ext/sqlite3/libsqlite/sqlite3.c assert( pPage->pCache==pCache ); pCache 40827 ext/sqlite3/libsqlite/sqlite3.c pcache1EnterMutex(pCache->pGroup); pCache 40829 ext/sqlite3/libsqlite/sqlite3.c h = iOld%pCache->nHash; pCache 40830 ext/sqlite3/libsqlite/sqlite3.c pp = &pCache->apHash[h]; pCache 40836 ext/sqlite3/libsqlite/sqlite3.c h = iNew%pCache->nHash; pCache 40838 ext/sqlite3/libsqlite/sqlite3.c pPage->pNext = pCache->apHash[h]; pCache 40839 ext/sqlite3/libsqlite/sqlite3.c pCache->apHash[h] = pPage; pCache 40840 ext/sqlite3/libsqlite/sqlite3.c if( iNew>pCache->iMaxKey ){ pCache 40841 ext/sqlite3/libsqlite/sqlite3.c pCache->iMaxKey = iNew; pCache 40844 ext/sqlite3/libsqlite/sqlite3.c pcache1LeaveMutex(pCache->pGroup); pCache 40855 ext/sqlite3/libsqlite/sqlite3.c PCache1 *pCache = (PCache1 *)p; pCache 40856 ext/sqlite3/libsqlite/sqlite3.c pcache1EnterMutex(pCache->pGroup); pCache 40857 ext/sqlite3/libsqlite/sqlite3.c if( iLimit<=pCache->iMaxKey ){ pCache 40858 ext/sqlite3/libsqlite/sqlite3.c pcache1TruncateUnsafe(pCache, iLimit); pCache 40859 ext/sqlite3/libsqlite/sqlite3.c pCache->iMaxKey = iLimit-1; pCache 40861 ext/sqlite3/libsqlite/sqlite3.c pcache1LeaveMutex(pCache->pGroup); pCache 40870 ext/sqlite3/libsqlite/sqlite3.c PCache1 *pCache = (PCache1 *)p; pCache 40871 ext/sqlite3/libsqlite/sqlite3.c PGroup *pGroup = pCache->pGroup; pCache 40872 ext/sqlite3/libsqlite/sqlite3.c assert( pCache->bPurgeable || (pCache->nMax==0 && pCache->nMin==0) ); pCache 40874 ext/sqlite3/libsqlite/sqlite3.c pcache1TruncateUnsafe(pCache, 0); pCache 40875 ext/sqlite3/libsqlite/sqlite3.c assert( pGroup->nMaxPage >= pCache->nMax ); pCache 40876 ext/sqlite3/libsqlite/sqlite3.c pGroup->nMaxPage -= pCache->nMax; pCache 40877 ext/sqlite3/libsqlite/sqlite3.c assert( pGroup->nMinPage >= pCache->nMin ); pCache 40878 ext/sqlite3/libsqlite/sqlite3.c pGroup->nMinPage -= pCache->nMin; pCache 40882 ext/sqlite3/libsqlite/sqlite3.c sqlite3_free(pCache->apHash); pCache 40883 ext/sqlite3/libsqlite/sqlite3.c sqlite3_free(pCache);