]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
The ".testctrl optimizations 0x400000" command disables the generation of
authordrh <>
Thu, 7 Apr 2022 18:17:56 +0000 (18:17 +0000)
committerdrh <>
Thu, 7 Apr 2022 18:17:56 +0000 (18:17 +0000)
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

manifest
manifest.uuid
src/sqliteInt.h
src/vdbeaux.c

index 3a5afaeadce68e87e29ddf9010b92dbb9698f004..d1b23d0aacbd236ce14aaeb11f988bad1cd5b27c 100644 (file)
--- 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.
index 604ab9337a1796eda133fc25b46360bc38258669..70d47c032fe373be2b3af732f7cc9bdb6ec8e0d1 100644 (file)
@@ -1 +1 @@
-201569e09b000919ccb463bd581fb2ecd5320e7f584fdb1bc2aaba111061d5c3
\ No newline at end of file
+fa5276725f246cef9d58b27c1e617ee3f873f7a9b88284a4e8fc453ebda338bc
\ No newline at end of file
index 9f95ec8a9d8c86804afc67594faf65efc8376f8c..a9f3121c7cd006e9223e36e9377298fabeaf0763 100644 (file)
@@ -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 */
 
 /*
index 551236226bf02b1ce31979ed9e6a5e898a4a529a..cb2433c2cde789d40cf27e95de70fb23f41592ec 100644 (file)
@@ -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 );