]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Another improvement to OP_Function and an improvement to OP_Move.
authordrh <drh@noemail.net>
Thu, 21 Nov 2013 04:18:31 +0000 (04:18 +0000)
committerdrh <drh@noemail.net>
Thu, 21 Nov 2013 04:18:31 +0000 (04:18 +0000)
FossilOrigin-Name: 70b056fb6f60cdfbe24e4b77a1770eef064a73c6

manifest
manifest.uuid
src/vdbe.c

index ecd4861c863a7c886e311848c54bce92b2653592..6c4d9ef46ad2d9b3816150068821f9a020c19726 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C A\ssimple\schange\sto\sthe\sOP_Function\sopcode\simproves\soverall\sperformance\sby\nabout\s0.5%.
-D 2013-11-21T03:43:12.554
+C Another\simprovement\sto\sOP_Function\sand\san\simprovement\sto\sOP_Move.
+D 2013-11-21T04:18:31.892
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 8a07bebafbfda0eb67728f4bd15a36201662d1a1
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -280,7 +280,7 @@ F src/update.c c05a0ee658f1a149e0960dfd110f3b8bd846bcb0
 F src/utf.c 6fc6c88d50448c469c5c196acf21617a24f90269
 F src/util.c 2fa6c821d28bbdbeec1b2a7b091a281c9ef8f918
 F src/vacuum.c 3728d74919d4fb1356f9e9a13e27773db60b7179
-F src/vdbe.c 9d8490d65b06d2e21dd0f0e6286c07e7f3095a48
+F src/vdbe.c bfbbaf9daddfd0228747e4e47677bd34dc306388
 F src/vdbe.h c06f0813f853566457ce9cfb1a4a4bc39a5da644
 F src/vdbeInt.h 0ac03c790b8ea4568b747550ba9bbf92a8e8feb2
 F src/vdbeapi.c 93a22a9ba2abe292d5c2cf304d7eb2e894dde0ed
@@ -1140,7 +1140,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01
 F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff
-P ecaac28a2e78aca148fc614fe54bf2706aed8be2
-R 33f1c98c35afb745f70ac2d0738f01fc
+P b890eefd57fbd189f7df611e82eb1fb4b197e1c3
+R f453cb4528248c0309ea050c9ba4ca77
 U drh
-Z a8c7ba243cd2d2fb4fb7b6cf27c27770
+Z 2b2e2a3a32727285c9b4dfbebd948b02
index c568fbf63a80aef885b0823e9b8dcac2ac8acfa8..4fff4fd7d38e7a4e43682ed559fc760aa5112001 100644 (file)
@@ -1 +1 @@
-b890eefd57fbd189f7df611e82eb1fb4b197e1c3
\ No newline at end of file
+70b056fb6f60cdfbe24e4b77a1770eef064a73c6
\ No newline at end of file
index e94c88504519b9c2ff27dd1870db3f4dbe0e24cc..f30810dd8aa6bf1511b80762b96252e13a387ac0 100644 (file)
@@ -1081,15 +1081,15 @@ case OP_Move: {
   int p1;          /* Register to copy from */
   int p2;          /* Register to copy to */
 
-  n = pOp->p3 + 1;
+  n = pOp->p3;
   p1 = pOp->p1;
   p2 = pOp->p2;
-  assert( n>0 && p1>0 && p2>0 );
+  assert( n>=0 && p1>0 && p2>0 );
   assert( p1+n<=p2 || p2+n<=p1 );
 
   pIn1 = &aMem[p1];
   pOut = &aMem[p2];
-  while( n-- ){
+  do{
     assert( pOut<=&aMem[(p->nMem-p->nCursor)] );
     assert( pIn1<=&aMem[(p->nMem-p->nCursor)] );
     assert( memIsValid(pIn1) );
@@ -1106,7 +1106,7 @@ case OP_Move: {
     REGISTER_TRACE(p2++, pOut);
     pIn1++;
     pOut++;
-  }
+  }while( n-- );
   break;
 }
 
@@ -1532,7 +1532,8 @@ case OP_Function: {
 
   /* Copy the result of the function into register P3 */
   sqlite3VdbeChangeEncoding(&ctx.s, encoding);
-  sqlite3VdbeMemMove(pOut, &ctx.s);
+  assert( pOut->flags==MEM_Null );
+  memcpy(pOut, &ctx.s, sizeof(Mem));
   if( sqlite3VdbeMemTooBig(pOut) ){
     goto too_big;
   }