Another attempt to get reuse of excess opcode array space working correctly
on all architectures and platforms. FossilOrigin-Name: 2f8583748abab1e15029d3a8693ba9a66c978c2b
This commit is contained in:
parent
98486c046f
commit
0816905cdd
14
manifest
14
manifest
@ -1,5 +1,5 @@
|
|||||||
C Permit\sthe\s'test_fs'\stest\smodule\sto\sbe\scompiled\sand\sused\son\sMinGW.
|
C Another\sattempt\sto\sget\sreuse\sof\sexcess\sopcode\sarray\sspace\sworking\scorrectly\non\sall\sarchitectures\sand\splatforms.
|
||||||
D 2016-01-05T01:48:29.005
|
D 2016-01-05T03:39:25.682
|
||||||
F Makefile.in 28bcd6149e050dff35d4dcfd97e890cd387a499d
|
F Makefile.in 28bcd6149e050dff35d4dcfd97e890cd387a499d
|
||||||
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
|
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
|
||||||
F Makefile.msc 5fff077fcc46de7714ed6eebb6159a4c00eab751
|
F Makefile.msc 5fff077fcc46de7714ed6eebb6159a4c00eab751
|
||||||
@ -402,7 +402,7 @@ F src/vdbe.c 6ac8e5d808d48afc369316e147c191102f0584c1
|
|||||||
F src/vdbe.h efb7a8c1459e31f3ea4377824c6a7e4cb5068637
|
F src/vdbe.h efb7a8c1459e31f3ea4377824c6a7e4cb5068637
|
||||||
F src/vdbeInt.h 75c2e82ee3357e9210c06474f8d9bdf12c81105d
|
F src/vdbeInt.h 75c2e82ee3357e9210c06474f8d9bdf12c81105d
|
||||||
F src/vdbeapi.c 020681b943e77766b32ae1cddf86d7831b7374ca
|
F src/vdbeapi.c 020681b943e77766b32ae1cddf86d7831b7374ca
|
||||||
F src/vdbeaux.c 141ee231ad190240d0d1ee133c9ea28eecd55824
|
F src/vdbeaux.c 3308a07a6b0b64e22e83cbcc76773eaf330b056a
|
||||||
F src/vdbeblob.c fdc4a81605ae7a35ae94a55bd768b66d6be16f15
|
F src/vdbeblob.c fdc4a81605ae7a35ae94a55bd768b66d6be16f15
|
||||||
F src/vdbemem.c fdd1578e47bea61390d472de53c565781d81e045
|
F src/vdbemem.c fdd1578e47bea61390d472de53c565781d81e045
|
||||||
F src/vdbesort.c a7ec02da4494c59dfd071126dd3726be5a11459d
|
F src/vdbesort.c a7ec02da4494c59dfd071126dd3726be5a11459d
|
||||||
@ -1406,7 +1406,7 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f
|
|||||||
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
|
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
|
||||||
F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
|
F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
|
||||||
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
||||||
P 1aa530144643582658c8c1dd66548662f950efe3
|
P ac27f38eef7a241d56124c263d9f8c91f372a77f
|
||||||
R 6490ec858048a3d7899751e10a44fa21
|
R 60123ea1ef3684554ab03afc4196be5d
|
||||||
U mistachkin
|
U drh
|
||||||
Z b205e33bbbedd23793ff52ce1287fb1d
|
Z f77bc5a04736277ef260f43c3525df33
|
||||||
|
@ -1 +1 @@
|
|||||||
ac27f38eef7a241d56124c263d9f8c91f372a77f
|
2f8583748abab1e15029d3a8693ba9a66c978c2b
|
@ -1851,19 +1851,24 @@ void sqlite3VdbeMakeReady(
|
|||||||
/* zCsr will initially point to nFree bytes of unused space at the
|
/* zCsr will initially point to nFree bytes of unused space at the
|
||||||
** end of the opcode array, p->aOp. The computation of nFree is
|
** end of the opcode array, p->aOp. The computation of nFree is
|
||||||
** conservative - it might be smaller than the true number of free
|
** conservative - it might be smaller than the true number of free
|
||||||
** bytes, but never larger. nFree might be negative. But the allocation
|
** bytes, but never larger. nFree must be a multiple of 8 - it is
|
||||||
** loop will still function correctly.
|
** rounded down if is not.
|
||||||
*/
|
*/
|
||||||
zCsr = ((u8*)p->aOp) + ROUND8(sizeof(Op)*p->nOp); /* Available space */
|
n = ROUND8(sizeof(Op)*p->nOp); /* Bytes of opcode space used */
|
||||||
nFree = pParse->szOpAlloc - ROUND8(sizeof(Op)*p->nOp); /* Size of zCsr */
|
zCsr = &((u8*)p->aOp)[n]; /* Unused opcode space */
|
||||||
if( nFree>0 ) memset(zCsr, 0, nFree);
|
assert( EIGHT_BYTE_ALIGNMENT(zCsr) );
|
||||||
|
nFree = ROUNDDOWN8(pParse->szOpAlloc - n); /* Bytes of unused space */
|
||||||
|
assert( nFree>=0 );
|
||||||
|
if( nFree>0 ){
|
||||||
|
memset(zCsr, 0, nFree);
|
||||||
|
assert( EIGHT_BYTE_ALIGNMENT(&zCsr[nFree]) );
|
||||||
|
}
|
||||||
|
|
||||||
resolveP2Values(p, &nArg);
|
resolveP2Values(p, &nArg);
|
||||||
p->usesStmtJournal = (u8)(pParse->isMultiWrite && pParse->mayAbort);
|
p->usesStmtJournal = (u8)(pParse->isMultiWrite && pParse->mayAbort);
|
||||||
if( pParse->explain && nMem<10 ){
|
if( pParse->explain && nMem<10 ){
|
||||||
nMem = 10;
|
nMem = 10;
|
||||||
}
|
}
|
||||||
assert( EIGHT_BYTE_ALIGNMENT(&zCsr[nFree]) );
|
|
||||||
p->expired = 0;
|
p->expired = 0;
|
||||||
|
|
||||||
/* Memory for registers, parameters, cursor, etc, is allocated in two
|
/* Memory for registers, parameters, cursor, etc, is allocated in two
|
||||||
|
Loading…
x
Reference in New Issue
Block a user