From: drh Date: Thu, 25 Jan 2018 01:20:29 +0000 (+0000) Subject: Slightly smaller and faster implementation of OP_If and OP_IfNot. X-Git-Tag: version-3.23.0~183 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cad42838d718fdabb18d0ea4fc72ced389489cb0;p=thirdparty%2Fsqlite.git Slightly smaller and faster implementation of OP_If and OP_IfNot. FossilOrigin-Name: 6ab42934e2c4957b5d8927bf4434a9db07ab6078987a6a2d25f35cc468d21203 --- diff --git a/manifest b/manifest index 36be0b5904..7d40e3172b 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C When\sunpacking\sa\ssorter\srecord,\sdo\sso\sfrom\sright\sto\sleft\sinstead\sof\sleft\sto\nright,\ssince\sby\sstarting\swith\sthe\sright-most\scolumn,\sthe\swork\sdone\sby\nOP_Column\sopcodes\sis\sreduced. -D 2018-01-24T20:42:42.319 +C Slightly\ssmaller\sand\sfaster\simplementation\sof\sOP_If\sand\sOP_IfNot. +D 2018-01-25T01:20:29.953 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F Makefile.in 7a3f714b4fcf793108042b7b0a5c720b0b310ec84314d61ba7f3f49f27e550ea @@ -556,7 +556,7 @@ F src/update.c a90a32ffc0100265b0693dbbdbe490756447af181f5ea2c138cce515b08c8795 F src/utf.c 810fbfebe12359f10bc2a011520a6e10879ab2a163bcb26c74768eab82ea62a5 F src/util.c ef4a5f904d942e660abade7fbf3e6bdb402dabe9e7c27f3361ecf40b945538b5 F src/vacuum.c 90839322fd5f00df9617eb21b68beda9b6e2a2937576b0d65985e4aeb1c53739 -F src/vdbe.c d4684bd5efad095d9e4405e5ca2e1168dc7aff643cae04c424e4bade70641d70 +F src/vdbe.c 0e13b8c33a9ecf236b3045f190fb58933049582307b621cbd924b6582a2b705f F src/vdbe.h 134beb7a12a6213c00eba58febaede33447cc4441bc568a0d9c144b33fc3720a F src/vdbeInt.h 8d7d07f13cb3c4cbca91e22ba4a1920e542dda7c5d9299920432a0b3d5b009f5 F src/vdbeapi.c fea41171884a4de119f8b10ab514c788674eeeb7f27218bb6d008e1310bfd07f @@ -1702,7 +1702,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 090a64faaac579c6ed1cddb02d14e7089468a4aeaeec11e78d461790bcb6eb0a -R 36fadb5748a2d2919f267681ce3c3a75 +P 8055e4f42446ceb5bcf752bbf41a73289c3ca759c56c9f779edc3d7f202b7881 +R 3a57ffa9e8084df96fa05ea7edc4d068 U drh -Z 4006c7b9f32358fa0bed65eb183dba8e +Z 1f11fb78272f5afcdf3b192bdf3cca0d diff --git a/manifest.uuid b/manifest.uuid index 4ff4675403..8b78bd0022 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -8055e4f42446ceb5bcf752bbf41a73289c3ca759c56c9f779edc3d7f202b7881 \ No newline at end of file +6ab42934e2c4957b5d8927bf4434a9db07ab6078987a6a2d25f35cc468d21203 \ No newline at end of file diff --git a/src/vdbe.c b/src/vdbe.c index 81a2361a55..495b56aa1d 100644 --- a/src/vdbe.c +++ b/src/vdbe.c @@ -2289,11 +2289,11 @@ case OP_IfNot: { /* jump, in1 */ if( pIn1->flags & MEM_Null ){ c = pOp->p3; }else{ -#ifdef SQLITE_OMIT_FLOATING_POINT - c = sqlite3VdbeIntValue(pIn1)!=0; -#else - c = sqlite3VdbeRealValue(pIn1)!=0.0; -#endif + if( pIn1->flags & MEM_Int ){ + c = pIn1->u.i!=0; + }else{ + c = sqlite3VdbeRealValue(pIn1)!=0.0; + } if( pOp->opcode==OP_IfNot ) c = !c; } VdbeBranchTaken(c!=0, 2);