]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Do not include the P3 parameter on OP_Integer opcodes if the integer will fit
authordrh <drh@noemail.net>
Sun, 30 May 2004 01:38:43 +0000 (01:38 +0000)
committerdrh <drh@noemail.net>
Sun, 30 May 2004 01:38:43 +0000 (01:38 +0000)
in 32 bits.  The P3 conversion is slow. (CVS 1494)

FossilOrigin-Name: fcd84ebabca72023e76e6954514948aa9a3ab999

manifest
manifest.uuid
src/expr.c
src/vdbemem.c

index d97887ae3e1a0ab7305d8c49c743439dd39cbe51..7450fb533e91d7186f134259881765df08584538 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C A\sfile\sformat\schange\sfor\sbtree.c\smakes\sit\sbetween\s10\sand\s20%\sfaster.\s(CVS\s1493)
-D 2004-05-29T21:46:49
+C Do\snot\sinclude\sthe\sP3\sparameter\son\sOP_Integer\sopcodes\sif\sthe\sinteger\swill\sfit\nin\s32\sbits.\s\sThe\sP3\sconversion\sis\sslow.\s(CVS\s1494)
+D 2004-05-30T01:38:43
 F Makefile.in ab7b0d5118e2da97bac66be8684a1034e3500f5a
 F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906
 F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
@@ -30,7 +30,7 @@ F src/build.c fd36c4a603e23df35aa7f57772d965e1865e39e0
 F src/date.c 0eb922af5c5f5e2455f8dc2f98023ed3e04a857e
 F src/delete.c 72f8febf6170cda830f509c8f9dffbed3df3596c
 F src/encode.c a876af473d1d636faa3dca51c7571f2e007eea37
-F src/expr.c 416e8970fd0f0b66ac8b4d9f58f6f73239e47568
+F src/expr.c 5145de7d25a4b960a4afdb754a9e88b60cce0405
 F src/func.c 1fe0763675eb38b6e3992d3edfbec2271798b658
 F src/hash.c 440c2f8cb373ee1b4e13a0988489c7cd95d55b6f
 F src/hash.h 762d95f1e567664d1eafc1687de755626be962fb
@@ -74,7 +74,7 @@ F src/vdbe.h e73f890e0f2a6c42b183d7d6937947930fe4fdeb
 F src/vdbeInt.h c2bcd6e5a6e6a3753e4c5a368629c3a625719bfc
 F src/vdbeapi.c 0c5d64c81871cb4fe5407e639604ee95738b6942
 F src/vdbeaux.c 79dbad52ba653c0f26adcab1a054432669775b0d
-F src/vdbemem.c c97c145ff6d9fc5b4236704c04a65849117e6214
+F src/vdbemem.c d5f96663627d54ee8ea47f182c92faa57a015704
 F src/where.c 444a7c3a8b1eb7bba072e489af628555d21d92a4
 F test/all.test 569a92a8ee88f5300c057cc4a8f50fbbc69a3242
 F test/attach.test 0dd7cf9bf9bc915bce2da4fb616c4ea9c3da64af
@@ -204,7 +204,7 @@ F www/sqlite.tcl 3c83b08cf9f18aa2d69453ff441a36c40e431604
 F www/tclsqlite.tcl b9271d44dcf147a93c98f8ecf28c927307abd6da
 F www/vdbe.tcl 9b9095d4495f37697fd1935d10e14c6015e80aa1
 F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4
-P 3225de8902b0e7e60c4d9f3a5ef51bc74f57d364
-R 702efc72950b18adf9baf0d005935d93
+P cbcaece7f45a0bc994e6c54a996afa4e6529da6a
+R 258b847515a631fd85af8a899101683c
 U drh
-Z e0fe70a1953600e894856c5d74936688
+Z b2fca084d3ec68b05f90cc6a90870693
index 5f97a8ca8e09f8da9bb0bb0aee6807422afd14b3..0a1c977bd5dae5dfaa8bcce644cdf36f8b968984 100644 (file)
@@ -1 +1 @@
-cbcaece7f45a0bc994e6c54a996afa4e6529da6a
\ No newline at end of file
+fcd84ebabca72023e76e6954514948aa9a3ab999
\ No newline at end of file
index 1e87ed8189f8eccce11e929d7c637c628d60f879..12dbd9992d5caa32193bfe4a38edbfe1449a3154 100644 (file)
@@ -12,7 +12,7 @@
 ** This file contains routines used for analyzing expressions and
 ** for generating VDBE code that evaluates expressions in SQLite.
 **
-** $Id: expr.c,v 1.132 2004/05/29 11:24:50 danielk1977 Exp $
+** $Id: expr.c,v 1.133 2004/05/30 01:38:43 drh Exp $
 */
 #include "sqliteInt.h"
 #include <ctype.h>
@@ -1068,8 +1068,10 @@ int sqlite3ExprType(Expr *p){
 */
 static void codeInteger(Vdbe *v, const char *z, int n){
   int i;
-  if( sqlite3GetInt32(z, &i) || (i=0, sqlite3FitsIn64Bits(z))!=0 ){
-    sqlite3VdbeOp3(v, OP_Integer, i, 0, z, n);
+  if( sqlite3GetInt32(z, &i) ){
+    sqlite3VdbeAddOp(v, OP_Integer, i, 0);
+  }else if( sqlite3FitsIn64Bits(z) ){
+    sqlite3VdbeOp3(v, OP_Integer, 0, 0, z, n);
   }else{
     sqlite3VdbeOp3(v, OP_Real, 0, 0, z, n);
   }
index d3e3860ffcbed995d73cc5241e24d293849f199a..69e1c393a24f5f4a7c50c848aae4866e2a743b3a 100644 (file)
@@ -209,11 +209,12 @@ static void releaseMem(Mem *p){
 ** prior representations are invalidated.  NULL is converted into 0.
 */
 int sqlite3VdbeMemIntegerify(Mem *pMem){
-  if( pMem->flags & MEM_Int ){
+  int flags = pMem->flags;
+  if( flags & MEM_Int ){
     /* Do nothing */
-  }else if( pMem->flags & MEM_Real ){
+  }else if( flags & MEM_Real ){
     pMem->i = (i64)pMem->r;
-  }else if( pMem->flags & (MEM_Str|MEM_Blob) ){
+  }else if( flags & (MEM_Str|MEM_Blob) ){
     if( sqlite3VdbeChangeEncoding(pMem, TEXT_Utf8)
        || sqlite3VdbeMemNulTerminate(pMem) ){
       return SQLITE_NOMEM;