mirror of
https://github.com/sqlite/sqlite.git
synced 2025-11-14 00:22:38 +03:00
A new implementation of sqlite3VdbeMakeLabel() is faster and makes fewer
memory allocations by deferring memory allocation until sqlite3VdbeResolveLabel() is called, at which point the code generator has a better idea of how big the relocation table needs to be. The sqlite3VdbeMakeLabel() routine now takes a Parse* parameter instead of Vdbe*. FossilOrigin-Name: 4a0929ac76d8aa5dd65eac3b83d6bbf41e505e01d175ca0fb2b19ba02d439415
This commit is contained in:
@@ -441,7 +441,7 @@ void sqlite3Update(
|
||||
#endif
|
||||
|
||||
/* Jump to labelBreak to abandon further processing of this UPDATE */
|
||||
labelContinue = labelBreak = sqlite3VdbeMakeLabel(v);
|
||||
labelContinue = labelBreak = sqlite3VdbeMakeLabel(pParse);
|
||||
|
||||
/* Not an UPSERT. Normal processing. Begin by
|
||||
** initialize the count of updated rows */
|
||||
@@ -576,13 +576,13 @@ void sqlite3Update(
|
||||
VdbeCoverage(v);
|
||||
}
|
||||
if( eOnePass!=ONEPASS_SINGLE ){
|
||||
labelContinue = sqlite3VdbeMakeLabel(v);
|
||||
labelContinue = sqlite3VdbeMakeLabel(pParse);
|
||||
}
|
||||
sqlite3VdbeAddOp2(v, OP_IsNull, pPk ? regKey : regOldRowid, labelBreak);
|
||||
VdbeCoverageIf(v, pPk==0);
|
||||
VdbeCoverageIf(v, pPk!=0);
|
||||
}else if( pPk ){
|
||||
labelContinue = sqlite3VdbeMakeLabel(v);
|
||||
labelContinue = sqlite3VdbeMakeLabel(pParse);
|
||||
sqlite3VdbeAddOp2(v, OP_Rewind, iEph, labelBreak); VdbeCoverage(v);
|
||||
addrTop = sqlite3VdbeAddOp2(v, OP_RowData, iEph, regKey);
|
||||
sqlite3VdbeAddOp4Int(v, OP_NotFound, iDataCur, labelContinue, regKey, 0);
|
||||
|
||||
Reference in New Issue
Block a user