From: drh <> Date: Thu, 7 Apr 2022 18:17:56 +0000 (+0000) Subject: The ".testctrl optimizations 0x400000" command disables the generation of X-Git-Tag: version-3.39.0~227 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=da4c7ccc075f84dd0f91d6bc6d60e9acebf78292;p=thirdparty%2Fsqlite.git The ".testctrl optimizations 0x400000" command disables the generation of OP_ReleaseReg opcodes. OP_ReleaseReg opcodes are usually only generated for SQLITE_DEBUG builds and are used to verify that registers are descoped propertly. But they can get in the way of code understanding when studying bytecode dumps. So this new optimization setting is provided to temporarily turn OP_ReleaseReg opcodes off. FossilOrigin-Name: fa5276725f246cef9d58b27c1e617ee3f873f7a9b88284a4e8fc453ebda338bc --- diff --git a/manifest b/manifest index 3a5afaeadc..d1b23d0aac 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sthe\sparsing\sof\sC-style\scomments\sin\sLemon,\sas\sreported\sby\n[forum:/forumpost/b6edc69548|forum\spost\sb6edc69548].\s\sThis\shas\sno\saffect\non\sSQLite\sitself. -D 2022-04-07T14:13:32.478 +C The\s".testctrl\soptimizations\s0x400000"\scommand\sdisables\sthe\sgeneration\sof\nOP_ReleaseReg\sopcodes.\s\sOP_ReleaseReg\sopcodes\sare\susually\sonly\sgenerated\sfor\nSQLITE_DEBUG\sbuilds\sand\sare\sused\sto\sverify\sthat\sregisters\sare\sdescoped\npropertly.\s\sBut\sthey\scan\sget\sin\sthe\sway\sof\scode\sunderstanding\swhen\sstudying\nbytecode\sdumps.\s\sSo\sthis\snew\soptimization\ssetting\sis\sprovided\sto\ntemporarily\sturn\sOP_ReleaseReg\sopcodes\soff. +D 2022-04-07T18:17:56.434 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -557,7 +557,7 @@ F src/shell.c.in 18832612e74c92bbd25d88e1f92685f66589262f68cca1001d2a43bd6dd0ed6 F src/sqlite.h.in 2a35f62185eb5e7ecc64a2f68442b538ce9be74f80f28a00abc24837edcf1c17 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 F src/sqlite3ext.h f49e28c25bd941e79794db5415fdf7b202deb3bc072ed6f1ed273d578703684e -F src/sqliteInt.h dbd5537c36a6b01fd67890487c3f7da468f16845500c115886f20adec06869ca +F src/sqliteInt.h 8262a5a484ffc0c0899537c9d99fff381f2d76061e256592a342bc098860a6ec F src/sqliteLimit.h d7323ffea5208c6af2734574bae933ca8ed2ab728083caa117c9738581a31657 F src/status.c 4a3da6d77eeb3531cb0dbdf7047772a2a1b99f98c69e90ce009c75fe6328b2c0 F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1 @@ -628,7 +628,7 @@ F src/vdbe.c 4d8f5b013e1ad47240e9822217a4ac76041afd2667dcbefd26f598fe45f729a5 F src/vdbe.h 89f5edb1422c8783a0b29db836e409876f2b3e847f78e2b21b1fbcc48a93f85f F src/vdbeInt.h 5f3d0abcf30c2b7a6672ad4386f18be0fca9c9b2cefe18f85a2e3df74f2613bf F src/vdbeapi.c 354c893f1500cf524cc45c32879b9c68893a28b77e3442c24668d6afe4236217 -F src/vdbeaux.c 567ddcdd5d875161201e9752144834d1519e7e856e2da410619d88a9cfefe70d +F src/vdbeaux.c baafd56664ccca4cf361a48b912f7ff37f95ee19aaf7cada420ce2ca73396833 F src/vdbeblob.c 5e61ce31aca17db8fb60395407457a8c1c7fb471dde405e0cd675974611dcfcd F src/vdbemem.c 7189090b72baa025f945a1ac8c61ee420c645254476e8a191d555db76dfea5d4 F src/vdbesort.c 43756031ca7430f7aec3ef904824a7883c4ede783e51f280d99b9b65c0796e35 @@ -1945,8 +1945,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 5043a3507e0781878e0e1bea5095a33273958820baead4af8fc2929e9d7c07ee -R 3aa1ea2fb3309b52d9b9b355614ccef2 +P 201569e09b000919ccb463bd581fb2ecd5320e7f584fdb1bc2aaba111061d5c3 +R 3b3b7a8904349e1fc968ddd3854c9c21 U drh -Z a9f6250e4b921e7cc5eba2670fe5b4ea +Z 053f375f9db373c4b27ef764e92f78d7 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 604ab9337a..70d47c032f 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -201569e09b000919ccb463bd581fb2ecd5320e7f584fdb1bc2aaba111061d5c3 \ No newline at end of file +fa5276725f246cef9d58b27c1e617ee3f873f7a9b88284a4e8fc453ebda338bc \ No newline at end of file diff --git a/src/sqliteInt.h b/src/sqliteInt.h index 9f95ec8a9d..a9f3121c7c 100644 --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@ -1779,6 +1779,7 @@ struct sqlite3 { #define SQLITE_BloomFilter 0x00080000 /* Use a Bloom filter on searches */ #define SQLITE_BloomPulldown 0x00100000 /* Run Bloom filters early */ #define SQLITE_BalancedMerge 0x00200000 /* Balance multi-way merges */ +#define SQLITE_ReleaseReg 0x00400000 /* Use OP_ReleaseReg for testing */ #define SQLITE_AllOpts 0xffffffff /* All optimizations */ /* diff --git a/src/vdbeaux.c b/src/vdbeaux.c index 551236226b..cb2433c2cd 100644 --- a/src/vdbeaux.c +++ b/src/vdbeaux.c @@ -1231,7 +1231,7 @@ void sqlite3VdbeReleaseRegisters( u32 mask, /* Mask of registers to NOT release */ int bUndefine /* If true, mark registers as undefined */ ){ - if( N==0 ) return; + if( N==0 || OptimizationDisabled(pParse->db, SQLITE_ReleaseReg) ) return; assert( pParse->pVdbe ); assert( iFirst>=1 ); assert( iFirst+N-1<=pParse->nMem );