Provide and use a version of sqlite3VdbeFreeCursor() that guarantees the
cursor pointer is not NULL. This saves a few bytes of code space and a few CPU cycles. FossilOrigin-Name: cb5e6f8e265c91221227e5f15b95798c688773262407dd138d414103184702f6
This commit is contained in:
parent
2fb448f2c8
commit
473571b083
16
manifest
16
manifest
@ -1,5 +1,5 @@
|
||||
C Remove\san\sunnecessary\sbranch\sfrom\ssqlite3VdbeReset().
|
||||
D 2022-04-01T17:23:17.177
|
||||
C Provide\sand\suse\sa\sversion\sof\ssqlite3VdbeFreeCursor()\sthat\sguarantees\sthe\ncursor\spointer\sis\snot\sNULL.\s\sThis\ssaves\sa\sfew\sbytes\sof\scode\sspace\sand\sa\nfew\sCPU\scycles.
|
||||
D 2022-04-01T18:19:04.619
|
||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||
@ -624,11 +624,11 @@ F src/upsert.c 8789047a8f0a601ea42fa0256d1ba3190c13746b6ba940fe2d25643a7e991937
|
||||
F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0
|
||||
F src/util.c 602fe229f32a96ceccae4f40824129669582096f7c355f53dbac156c9fecef23
|
||||
F src/vacuum.c 6c38ddc52f0619865c91dae9c441d4d48bf3040d7dc1bc5b22da1e45547ed0b3
|
||||
F src/vdbe.c aa8751fbca2aae36ea0a4753636d4e257363a39c67af6b52ebdaecea83de2859
|
||||
F src/vdbe.c 0ea2adc2b42e9e3ec8c30fd46818c9715f6359334618153ed2192b4c19e328f8
|
||||
F src/vdbe.h a1d0e3b934e835e73edd146f2e7c4eadb711b5c9875c18159a57483fd78e550e
|
||||
F src/vdbeInt.h a2f535ae607e441104d22617a30cb6290264fa1820702a7956a10c6f795b1344
|
||||
F src/vdbeInt.h 81172c6b828b546d9fa1ce3e2cbeba90d56e39a6fbef87c46813611090d41f07
|
||||
F src/vdbeapi.c 17474f2122c1f54c93dcdb7b845e68e207bbebab6a040c65ed374c4aec049d34
|
||||
F src/vdbeaux.c 58e52186c8589c027cbd641a712bff32d065ed9979dceee075f149fbd9741a48
|
||||
F src/vdbeaux.c 7a98ce924c634ced8d083d130a06e7f2883743dc53f4636957971d623c5517bf
|
||||
F src/vdbeblob.c 5e61ce31aca17db8fb60395407457a8c1c7fb471dde405e0cd675974611dcfcd
|
||||
F src/vdbemem.c 062cd58c54f887dc2eeb865686251c17237f791f0e6394e9c6f7a6f3c1a7e206
|
||||
F src/vdbesort.c 43756031ca7430f7aec3ef904824a7883c4ede783e51f280d99b9b65c0796e35
|
||||
@ -1945,8 +1945,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||
P 5a50a42fde9477868fad31099f5fe976437825fac44f8b3a4cf6c739c7667bbb
|
||||
R c8b23c8076d7301b5325ea561823bba4
|
||||
P a7d79560a0efd6221ba59ce84bcb4fa94024a901ac4a45e192ddecc6e1b5c78c
|
||||
R 4a60eaae011c259c4305c79c1c111fac
|
||||
U drh
|
||||
Z 3fa3c8a11056de64fa803d36c3f3eb49
|
||||
Z 4a9d92a66022269a482333bbfdb033cb
|
||||
# Remove this line to create a well-formed Fossil manifest.
|
||||
|
@ -1 +1 @@
|
||||
a7d79560a0efd6221ba59ce84bcb4fa94024a901ac4a45e192ddecc6e1b5c78c
|
||||
cb5e6f8e265c91221227e5f15b95798c688773262407dd138d414103184702f6
|
@ -271,7 +271,7 @@ static VdbeCursor *allocateCursor(
|
||||
|
||||
assert( iCur>=0 && iCur<p->nCursor );
|
||||
if( p->apCsr[iCur] ){ /*OPTIMIZATION-IF-FALSE*/
|
||||
sqlite3VdbeFreeCursor(p, p->apCsr[iCur]);
|
||||
sqlite3VdbeFreeCursorNN(p, p->apCsr[iCur]);
|
||||
p->apCsr[iCur] = 0;
|
||||
}
|
||||
|
||||
|
@ -538,6 +538,7 @@ struct ValueList {
|
||||
*/
|
||||
void sqlite3VdbeError(Vdbe*, const char *, ...);
|
||||
void sqlite3VdbeFreeCursor(Vdbe *, VdbeCursor*);
|
||||
void sqlite3VdbeFreeCursorNN(Vdbe*,VdbeCursor*);
|
||||
void sqliteVdbePopStack(Vdbe*,int);
|
||||
int SQLITE_NOINLINE sqlite3VdbeHandleMovedCursor(VdbeCursor *p);
|
||||
int SQLITE_NOINLINE sqlite3VdbeFinishMoveto(VdbeCursor*);
|
||||
|
@ -2080,7 +2080,7 @@ void sqlite3VdbeFrameDelete(VdbeFrame *p){
|
||||
VdbeCursor **apCsr = (VdbeCursor **)&aMem[p->nChildMem];
|
||||
assert( sqlite3VdbeFrameIsValid(p) );
|
||||
for(i=0; i<p->nChildCsr; i++){
|
||||
sqlite3VdbeFreeCursor(p->v, apCsr[i]);
|
||||
if( apCsr[i] ) sqlite3VdbeFreeCursorNN(p->v, apCsr[i]);
|
||||
}
|
||||
releaseMemArray(aMem, p->nChildMem);
|
||||
sqlite3VdbeDeleteAuxData(p->v->db, &p->pAuxData, -1, 0);
|
||||
@ -2474,9 +2474,9 @@ void sqlite3VdbeMakeReady(
|
||||
** happens to hold.
|
||||
*/
|
||||
void sqlite3VdbeFreeCursor(Vdbe *p, VdbeCursor *pCx){
|
||||
if( pCx==0 ){
|
||||
return;
|
||||
}
|
||||
if( pCx ) sqlite3VdbeFreeCursorNN(p,pCx);
|
||||
}
|
||||
void sqlite3VdbeFreeCursorNN(Vdbe *p, VdbeCursor *pCx){
|
||||
switch( pCx->eCurType ){
|
||||
case CURTYPE_SORTER: {
|
||||
sqlite3VdbeSorterClose(p->db, pCx);
|
||||
@ -2508,7 +2508,7 @@ static void closeCursorsInFrame(Vdbe *p){
|
||||
for(i=0; i<p->nCursor; i++){
|
||||
VdbeCursor *pC = p->apCsr[i];
|
||||
if( pC ){
|
||||
sqlite3VdbeFreeCursor(p, pC);
|
||||
sqlite3VdbeFreeCursorNN(p, pC);
|
||||
p->apCsr[i] = 0;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user