]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Update the generator AWK script for opcodes.h so that it always generates
authordrh <drh@noemail.net>
Mon, 2 Nov 2009 18:14:50 +0000 (18:14 +0000)
committerdrh <drh@noemail.net>
Mon, 2 Nov 2009 18:14:50 +0000 (18:14 +0000)
opcode numbers in the same order and is not dependent on the hash order
of opcode names within AWK.

FossilOrigin-Name: e730195f52429dc1bc4c1559880effd68e3eced9

manifest
manifest.uuid
mkopcodeh.awk

index 9dfa94411def0e8568d415691e55c498bf7b4af8..5278324ff5bc49ceec17eba153c7b067778b1e2a 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,8 +1,8 @@
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA1
 
-C Do\snot\sinsert\sthe\sdate\sand\stime\sof\sgeneration\sinto\sthe\samalgamation.
-D 2009-11-02T18:01:50
+C Update\sthe\sgenerator\sAWK\sscript\sfor\sopcodes.h\sso\sthat\sit\salways\sgenerates\nopcode\snumbers\sin\sthe\ssame\sorder\sand\sis\snot\sdependent\son\sthe\shash\sorder\nof\sopcode\snames\swithin\sAWK.
+D 2009-11-02T18:14:50
 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
 F Makefile.in a77dfde96ad86aafd3f71651a4333a104debe86a
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -94,7 +94,7 @@ F mkdll.sh 7d09b23c05d56532e9d44a50868eb4b12ff4f74a
 F mkextu.sh 416f9b7089d80e5590a29692c9d9280a10dbad9f
 F mkextw.sh 4123480947681d9b434a5e7b1ee08135abe409ac
 F mkopcodec.awk 3fb9bf077053c968451f4dd03d11661ac373f9d1
-F mkopcodeh.awk 513946ce4429bf2723aef0d640eb4d2493deb68e
+F mkopcodeh.awk f33c497a3d6436c5db531afce1f07f1b80de7af7
 F mkso.sh fd21c06b063bb16a5d25deea1752c2da6ac3ed83
 F publish.sh c74b6c2b6b63435aa1b4b43b1396dfebfae84095
 F publish_osx.sh 2ad2ee7d50632dff99949edc9c162dbb052f7534
@@ -764,14 +764,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P f19cb105d929f0a56f9597b6eb33ad96d0f7eddc
-R 222ce2b506b5306f772956b2e9bcc307
+P 9f6cf13dfbe6f1fe0c05a9c5df557ae20dc08cbd
+R 670dbfb3f1638e27958aebe5405b2480
 U drh
-Z 61d332dffe9fc2dd5214f98fdef8985a
+Z 120b7a5204e72c359ceb7fe4b8d0946e
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.6 (GNU/Linux)
 
-iD8DBQFK7x6RoxKgR168RlERAlgdAJ9boV/waRTTo1kQPU/vbcOMeGJM0wCfXhJE
-aRHwRgWydLcaVQ7lCTUi9pI=
-=F8Jd
+iD8DBQFK7yGdoxKgR168RlERAqALAJwMgUFh451psMmH/dQjCxEIobwEGwCfSYBc
+ggSE79NEZkMsrwnv1Mi1P3c=
+=7XS6
 -----END PGP SIGNATURE-----
index 090724485e8407c2a704987b81c0170fbe3537e4..7297a0b958f855f32ada31d0cf8c4dc29880f76c 100644 (file)
@@ -1 +1 @@
-9f6cf13dfbe6f1fe0c05a9c5df557ae20dc08cbd
\ No newline at end of file
+e730195f52429dc1bc4c1559880effd68e3eced9
\ No newline at end of file
index 796a7afe7a499d9c9608161327ece9d3f08a5ffd..f357d7c4f04bc4a0b5eb133af45fdcbf9b44cc08 100644 (file)
 #
 # This script also scans for lines of the form:
 #
-#       case OP_aaaa:       /* no-push */
+#       case OP_aaaa:       /* jump, in1, in2, in3, out2-prerelease, out3 */
 #
-# When the no-push comment is found on an opcode, it means that that
-# opcode does not leave a result on the stack.  By identifying which
-# opcodes leave results on the stack it is possible to determine a
-# much smaller upper bound on the size of the stack.  This allows
-# a smaller stack to be allocated, which is important to embedded
-# systems with limited memory space.  This script generates a series
-# of "NOPUSH_MASK" defines that contain bitmaps of opcodes that leave
-# results on the stack.  The NOPUSH_MASK defines are used in vdbeaux.c
-# to help determine the maximum stack size.
+# When such comments are found on an opcode, it means that certain
+# properties apply to that opcode.  Set corresponding flags using the
+# OPFLG_INITIALIZER macro.
 #
 
 
@@ -80,6 +74,7 @@
       out3[name] = 1
     }
   }
+  order[n_op++] = name;
 }
 
 # Assign numbers to all opcodes and output the result.
@@ -90,7 +85,8 @@ END {
   print "/* See the mkopcodeh.awk script for details */"
   op["OP_Noop"] = -1;
   op["OP_Explain"] = -1;
-  for(name in op){
+  for(i=0; i<n_op; i++){
+    name = order[i];
     if( op[name]<0 ){
       cnt++
       while( used[cnt] ) cnt++
@@ -123,7 +119,8 @@ END {
   #  bit 2:     output to p1.  release p1 before opcode runs
   #
   for(i=0; i<=max; i++) bv[i] = 0;
-  for(name in op){
+  for(i=0; i<n_op; i++){
+    name = order[i];
     x = op[name]
     a0 = a1 = a2 = a3 = a4 = a5 = a6 = a7 = 0
     # a8 = a9 = a10 = a11 = a12 = a13 = a14 = a15 = 0