From a69085cf5fadc0f462cc9d60eade7a7b471a93c1 Mon Sep 17 00:00:00 2001 From: drh Date: Mon, 2 Jan 2012 18:00:55 +0000 Subject: [PATCH] Change page quantities in pcache1.c to unsigned. FossilOrigin-Name: da52e6e8b490508bc1ee4700aa45a79f398363da --- manifest | 12 ++++++------ manifest.uuid | 2 +- src/pcache1.c | 20 +++++++++++--------- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/manifest b/manifest index 153ec82af8..b5bf9bdea3 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Remove\san\sincorrect\sassert()\sin\sbtree.c. -D 2012-01-02T16:38:57.512 +C Change\spage\squantities\sin\spcache1.c\sto\sunsigned. +D 2012-01-02T18:00:55.564 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 5b4a3e12a850b021547e43daf886b25133b44c07 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -173,7 +173,7 @@ F src/pager.h 5cd760857707529b403837d813d86b68938d6183 F src/parse.y fabb2e7047417d840e6fdb3ef0988a86849a08ba F src/pcache.c f8043b433a57aba85384a531e3937a804432a346 F src/pcache.h b1d8775a9bddf44e65edb0d20bfc57a4982f840f -F src/pcache1.c 9d735349ac87ef08076c6b1230f04cd83b15c6da +F src/pcache1.c e1aaa3bc9bbfd8b0bc391ca731f5f8185467375d F src/pragma.c dd66f21fafe7be40e1a48ad4195764cc191cf583 F src/prepare.c ec4989f7f480544bdc4192fe663470d2a2d7d61e F src/printf.c 7ffb4ebb8b341f67e049695ba031da717b3d2699 @@ -986,7 +986,7 @@ F tool/tostr.awk e75472c2f98dd76e06b8c9c1367f4ab07e122d06 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f F tool/warnings-clang.sh 9f406d66e750e8ac031c63a9ef3248aaa347ef2a F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381 -P 17c30634a71051158f8d37fd51b3c2a125ad8bd2 -R 6c012a7774ed9e5a330a66726436b4a2 +P c1691d998a03fee3bef137ccf2e8ca45acac2df4 +R 84be2ca283aa4d12d0883d5cb3ef90ca U drh -Z fcdcf01f58c77f738eb120329f0033fc +Z 981c2603df115cccf0c78e5588d3bb18 diff --git a/manifest.uuid b/manifest.uuid index 1269d5372f..1b3a2f307c 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -c1691d998a03fee3bef137ccf2e8ca45acac2df4 \ No newline at end of file +da52e6e8b490508bc1ee4700aa45a79f398363da \ No newline at end of file diff --git a/src/pcache1.c b/src/pcache1.c index 505941a3a7..405ae5aec8 100644 --- a/src/pcache1.c +++ b/src/pcache1.c @@ -48,10 +48,10 @@ typedef struct PGroup PGroup; */ struct PGroup { sqlite3_mutex *mutex; /* MUTEX_STATIC_LRU or NULL */ - int nMaxPage; /* Sum of nMax for purgeable caches */ - int nMinPage; /* Sum of nMin for purgeable caches */ - int mxPinned; /* nMaxpage + 10 - nMinPage */ - int nCurrentPage; /* Number of purgeable pages allocated */ + unsigned int nMaxPage; /* Sum of nMax for purgeable caches */ + unsigned int nMinPage; /* Sum of nMin for purgeable caches */ + unsigned int mxPinned; /* nMaxpage + 10 - nMinPage */ + unsigned int nCurrentPage; /* Number of purgeable pages allocated */ PgHdr1 *pLruHead, *pLruTail; /* LRU list of unpinned pages */ }; @@ -714,7 +714,7 @@ static sqlite3_pcache_page *pcache1Fetch( unsigned int iKey, int createFlag ){ - int nPinned; + unsigned int nPinned; PCache1 *pCache = (PCache1 *)p; PGroup *pGroup; PgHdr1 *pPage = 0; @@ -749,13 +749,13 @@ static sqlite3_pcache_page *pcache1Fetch( #endif /* Step 3: Abort if createFlag is 1 but the cache is nearly full */ + assert( pCache->nPage >= pCache->nRecyclable ); nPinned = pCache->nPage - pCache->nRecyclable; - assert( nPinned>=0 ); assert( pGroup->mxPinned == pGroup->nMaxPage + 10 - pGroup->nMinPage ); assert( pCache->n90pct == pCache->nMax*9/10 ); if( createFlag==1 && ( nPinned>=pGroup->mxPinned - || nPinned>=(int)pCache->n90pct + || nPinned>=pCache->n90pct || pcache1UnderMemoryPressure(pCache) )){ goto fetch_out; @@ -928,7 +928,9 @@ static void pcache1Destroy(sqlite3_pcache *p){ assert( pCache->bPurgeable || (pCache->nMax==0 && pCache->nMin==0) ); pcache1EnterMutex(pGroup); pcache1TruncateUnsafe(pCache, 0); + assert( pGroup->nMaxPage >= pCache->nMax ); pGroup->nMaxPage -= pCache->nMax; + assert( pGroup->nMinPage >= pCache->nMin ); pGroup->nMinPage -= pCache->nMin; pGroup->mxPinned = pGroup->nMaxPage + 10 - pGroup->nMinPage; pcache1EnforceMaxPage(pGroup); @@ -1010,8 +1012,8 @@ void sqlite3PcacheStats( nRecyclable++; } *pnCurrent = pcache1.grp.nCurrentPage; - *pnMax = pcache1.grp.nMaxPage; - *pnMin = pcache1.grp.nMinPage; + *pnMax = (int)pcache1.grp.nMaxPage; + *pnMin = (int)pcache1.grp.nMinPage; *pnRecyclable = nRecyclable; } #endif -- 2.47.2