]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add the OP_IntCopy opcode - an optimized version of OP_SCopy that only works
authordrh <drh@noemail.net>
Thu, 15 Oct 2015 18:04:59 +0000 (18:04 +0000)
committerdrh <drh@noemail.net>
Thu, 15 Oct 2015 18:04:59 +0000 (18:04 +0000)
for integer values.

FossilOrigin-Name: 3a2f73a4924860fde8ee41ad646e7a02d29ad9d5

manifest
manifest.uuid
src/insert.c
src/vdbe.c

index fca5ef5f707139f133e9dab5b1a477dbbf837a66..737b70124f07fd0779cf64f72c87a4887009e940 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Optimization\sto\sthe\sout2Prerelease()\shelper\sroutine\sin\sthe\sVDBE\sengine.
-D 2015-10-15T17:31:41.009
+C Add\sthe\sOP_IntCopy\sopcode\s-\san\soptimized\sversion\sof\sOP_SCopy\sthat\sonly\sworks\nfor\sinteger\svalues.
+D 2015-10-15T18:04:59.304
 F Makefile.in 2ea961bc09e441874eb3d1bf7398e04feb24f3ee
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc 8e42cb55739cd8c12e1fd25401956e2019448f6a
@@ -298,7 +298,7 @@ F src/global.c 508e4087f7b41d688e4762dcf4d4fe28cfbc87f9
 F src/hash.c 4263fbc955f26c2e8cdc0cf214bc42435aa4e4f5
 F src/hash.h c8f3c31722cf3277d03713909761e152a5b81094
 F src/hwtime.h d32741c8f4df852c7d959236615444e2b1063b08
-F src/insert.c 3c522beb5bf50a2efee1fca1e80fd40942e5817c
+F src/insert.c 6dadbb671c2cc035ddbbf11a0b0209185d5bfe2c
 F src/journal.c b4124532212b6952f42eb2c12fa3c25701d8ba8d
 F src/legacy.c ba1863ea58c4c840335a84ec276fc2b25e22bc4e
 F src/lempar.c d344a95d60c24e2f490ee59db9784b1b17439012
@@ -401,7 +401,7 @@ F src/update.c dc37664095ca8604293ff1de2d9a547c6efb5e6e
 F src/utf.c fc6b889ba0779b7722634cdeaa25f1930d93820c
 F src/util.c fc612367108b74573c5fd13a85d0a23027f438bd
 F src/vacuum.c 2ddd5cad2a7b9cef7f9e431b8c7771634c6b1701
-F src/vdbe.c eac089848a684b91affc534c05158a4562ca947c
+F src/vdbe.c 61bd96c72f103d2e96de6ab7852dc009dc9bb6b3
 F src/vdbe.h 4bc88bd0e06f8046ee6ab7487c0015e85ad949ad
 F src/vdbeInt.h 8b867eac234e28627ffcace3cd4b4b79bbec664b
 F src/vdbeapi.c 020681b943e77766b32ae1cddf86d7831b7374ca
@@ -1391,7 +1391,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 9ccf8f8d35723f2a9b59010b6d5f37a14164a188
-R 3f72c1696a2c0bbe157c006cd1e8f7da
+P 79298fe8c42f64b6a6110a70b84033873ac0630d
+R 89187b0adfb4e11f457d8e4e8b2fb5a1
 U drh
-Z ec1afe1b1807430ccd9064412c85cfed
+Z d5daf0c298c0bf1343696c75c4c1313f
index 8e1798d5ca75c0ed51c3c0ec7d9a357ff1f0d48a..5b247ba14a0743f072df5d531c964b0b619c68ad 100644 (file)
@@ -1 +1 @@
-79298fe8c42f64b6a6110a70b84033873ac0630d
\ No newline at end of file
+3a2f73a4924860fde8ee41ad646e7a02d29ad9d5
\ No newline at end of file
index 0cf670e6cf139a7573e4621ada7bf94c15fe5cd1..9274b0771d3135bce74fd7dc504415673b6efad6 100644 (file)
@@ -1422,7 +1422,7 @@ void sqlite3GenerateConstraintChecks(
         }else{
           x = iField + regNewData + 1;
         }
-        sqlite3VdbeAddOp2(v, OP_SCopy, x, regIdx+i);
+        sqlite3VdbeAddOp2(v, iField<0 ? OP_IntCopy : OP_SCopy, x, regIdx+i);
         VdbeComment((v, "%s", iField<0 ? "rowid" : pTab->aCol[iField].zName));
       }
     }
index b2d62b7aa67fcdaa5c1208756822ee7ac266dcce..980876c079d2d392c056856e9c09714a12588f62 100644 (file)
@@ -1273,6 +1273,22 @@ case OP_SCopy: {            /* out2 */
   break;
 }
 
+/* Opcode: IntCopy P1 P2 * * *
+** Synopsis: r[P2]=r[P1]
+**
+** Transfer the integer value held in register P1 into register P2.
+**
+** This is an optimized version of SCopy that works only for integer
+** values.
+*/
+case OP_IntCopy: {            /* out2 */
+  pIn1 = &aMem[pOp->p1];
+  assert( (pIn1->flags & MEM_Int)!=0 );
+  pOut = &aMem[pOp->p2];
+  sqlite3VdbeMemSetInt64(pOut, pIn1->u.i);
+  break;
+}
+
 /* Opcode: ResultRow P1 P2 * * *
 ** Synopsis:  output=r[P1@P2]
 **