aboutsummaryrefslogtreecommitdiff
path: root/src/vdbe.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2016-02-04 19:50:33 +0000
committerdrh <drh@noemail.net>2016-02-04 19:50:33 +0000
commite514f651d0fb5364e6495b9d6c4dd80ca51a227f (patch)
tree8c0ee5aa3167d08295821ff973b13a8b979e1cee /src/vdbe.c
parent4786cf5a20ded9637e487a9dd93ea104c8fb46ef (diff)
downloadsqlite-e514f651d0fb5364e6495b9d6c4dd80ca51a227f.tar.gz
sqlite-e514f651d0fb5364e6495b9d6c4dd80ca51a227f.zip
Temporarily back out the 0.5% performance improvement from
check-in [632071bac5ff32]. Need a more elaborate solution that works with reentrant virtual tables and SQL functions. FossilOrigin-Name: 42736fb0adc82a0fb692850ff3dd3f9b501cbf1f
Diffstat (limited to 'src/vdbe.c')
-rw-r--r--src/vdbe.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/vdbe.c b/src/vdbe.c
index fd90d3b0d..62ad86d4f 100644
--- a/src/vdbe.c
+++ b/src/vdbe.c
@@ -629,6 +629,7 @@ int sqlite3VdbeExec(
#endif
for(pOp=&aOp[p->pc]; rc==SQLITE_OK; pOp++){
assert( pOp>=aOp && pOp<&aOp[p->nOp]);
+ if( db->mallocFailed ) goto no_mem;
#ifdef VDBE_PROFILE
start = sqlite3Hwtime();
#endif
@@ -753,16 +754,14 @@ jump_to_p2_and_check_for_interrupt:
/* Opcodes that are used as the bottom of a loop (OP_Next, OP_Prev,
** OP_VNext, OP_RowSetNext, or OP_SorterNext) all jump here upon
** completion. Check to see if sqlite3_interrupt() has been called
- ** or if the progress callback needs to be invoked. Also check for
- ** OOM conditions and abort if seen.
+ ** or if the progress callback needs to be invoked.
**
** This code uses unstructured "goto" statements and does not look clean.
** But that is not due to sloppy coding habits. The code is written this
** way for performance, to avoid having to run the interrupt and progress
- ** checks on every opcode. This helps sqlite3_step() to run over 2.0%
+ ** checks on every opcode. This helps sqlite3_step() to run about 1.5%
** faster according to "valgrind --tool=cachegrind" */
check_for_interrupt:
- if( db->mallocFailed ) goto no_mem;
if( db->u1.isInterrupted ) goto abort_due_to_interrupt;
#ifndef SQLITE_OMIT_PROGRESS_CALLBACK
/* Call the progress callback if it is configured and the required number