Attachment "tclExecute-TEBCinline-compgoto.diff" to
ticket [1820448fff]
added by
das
2007-11-10 02:18:33.
0000: 49 6e 64 65 78 3a 20 67 65 6e 65 72 69 63 2f 74 Index: generic/t
0010: 63 6c 45 78 65 63 75 74 65 2e 63 0a 3d 3d 3d 3d clExecute.c.====
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0050: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a ===============.
0060: 52 43 53 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f RCS file: /cvsro
0070: 6f 74 2f 74 63 6c 2f 74 63 6c 2f 67 65 6e 65 72 ot/tcl/tcl/gener
0080: 69 63 2f 74 63 6c 45 78 65 63 75 74 65 2e 63 2c ic/tclExecute.c,
0090: 76 0a 72 65 74 72 69 65 76 69 6e 67 20 72 65 76 v.retrieving rev
00a0: 69 73 69 6f 6e 20 31 2e 33 34 32 0a 64 69 66 66 ision 1.342.diff
00b0: 20 2d 75 20 2d 70 20 2d 72 31 2e 33 34 32 20 74 -u -p -r1.342 t
00c0: 63 6c 45 78 65 63 75 74 65 2e 63 0a 2d 2d 2d 20 clExecute.c.---
00d0: 67 65 6e 65 72 69 63 2f 74 63 6c 45 78 65 63 75 generic/tclExecu
00e0: 74 65 2e 63 09 39 20 4e 6f 76 20 32 30 30 37 20 te.c.9 Nov 2007
00f0: 31 38 3a 35 35 3a 31 34 20 2d 30 30 30 30 09 31 18:55:14 -0000.1
0100: 2e 33 34 32 0a 2b 2b 2b 20 67 65 6e 65 72 69 63 .342.+++ generic
0110: 2f 74 63 6c 45 78 65 63 75 74 65 2e 63 09 39 20 /tclExecute.c.9
0120: 4e 6f 76 20 32 30 30 37 20 31 39 3a 30 32 3a 31 Nov 2007 19:02:1
0130: 31 20 2d 30 30 30 30 0a 40 40 20 2d 32 34 2c 36 1 -0000.@@ -24,6
0140: 20 2b 32 34 2c 31 35 20 40 40 0a 20 23 69 6e 63 +24,15 @@. #inc
0150: 6c 75 64 65 20 3c 66 6c 6f 61 74 2e 68 3e 0a 20 lude <float.h>.
0160: 0a 20 2f 2a 0a 2b 20 2a 20 46 49 58 4d 45 3a 20 . /*.+ * FIXME:
0170: 6d 61 6e 75 61 6c 20 63 6f 6e 66 69 67 75 72 61 manual configura
0180: 74 69 6f 6e 20 6f 66 20 54 45 42 43 20 69 6e 6c tion of TEBC inl
0190: 69 6e 65 20 6c 65 76 65 6c 20 26 20 63 6f 6d 70 ine level & comp
01a0: 75 74 65 64 20 67 6f 74 6f 20 75 73 65 3a 0a 2b uted goto use:.+
01b0: 20 2a 2f 0a 2b 0a 2b 23 69 66 6e 64 65 66 20 54 */.+.+#ifndef T
01c0: 45 42 43 5f 49 4e 4c 49 4e 45 5f 4c 45 56 45 4c EBC_INLINE_LEVEL
01d0: 0a 2b 23 20 20 20 64 65 66 69 6e 65 20 54 45 42 .+# define TEB
01e0: 43 5f 49 4e 4c 49 4e 45 5f 4c 45 56 45 4c 09 30 C_INLINE_LEVEL.0
01f0: 09 2f 2a 20 30 20 2d 20 34 20 20 2a 2f 0a 2b 23 ./* 0 - 4 */.+#
0200: 20 20 20 64 65 66 69 6e 65 20 55 53 45 5f 43 4f define USE_CO
0210: 4d 50 55 54 45 44 5f 47 4f 54 4f 09 30 09 2f 2a MPUTED_GOTO.0./*
0220: 20 30 20 6f 72 20 31 20 2a 2f 0a 2b 23 65 6e 64 0 or 1 */.+#end
0230: 69 66 0a 2b 0a 2b 2f 2a 0a 20 20 2a 20 48 61 63 if.+.+/*. * Hac
0240: 6b 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 77 k to determine w
0250: 68 65 74 68 65 72 20 77 65 20 6d 61 79 20 65 78 hether we may ex
0260: 70 65 63 74 20 49 45 45 45 20 66 6c 6f 61 74 69 pect IEEE floati
0270: 6e 67 20 70 6f 69 6e 74 2e 20 54 68 65 20 68 61 ng point. The ha
0280: 63 6b 20 69 73 0a 20 20 2a 20 66 6f 72 6d 61 6c ck is. * formal
0290: 6c 79 20 69 6e 63 6f 72 72 65 63 74 20 69 6e 20 ly incorrect in
02a0: 74 68 61 74 20 6e 6f 6e 2d 49 45 45 45 20 70 6c that non-IEEE pl
02b0: 61 74 66 6f 72 6d 73 20 6d 69 67 68 74 20 68 61 atforms might ha
02c0: 76 65 20 74 68 65 20 73 61 6d 65 20 70 72 65 63 ve the same prec
02d0: 69 73 69 6f 6e 0a 20 20 2a 20 61 6e 64 20 72 61 ision. * and ra
02e0: 6e 67 65 2c 20 62 75 74 20 56 41 58 2c 20 49 42 nge, but VAX, IB
02f0: 4d 2c 20 61 6e 64 20 43 72 61 79 20 64 6f 20 6e M, and Cray do n
0300: 6f 74 3b 20 61 72 65 20 74 68 65 72 65 20 61 6e ot; are there an
0310: 79 20 6f 74 68 65 72 20 66 6c 6f 61 74 69 6e 67 y other floating
0320: 0a 40 40 20 2d 31 38 37 2c 36 20 2b 31 39 36 2c .@@ -187,6 +196,
0330: 32 35 38 20 40 40 20 56 61 72 48 61 73 68 43 72 258 @@ VarHashCr
0340: 65 61 74 65 56 61 72 28 0a 20 20 20 20 20 56 61 eateVar(. Va
0350: 72 48 61 73 68 43 72 65 61 74 65 56 61 72 28 28 rHashCreateVar((
0360: 74 61 62 6c 65 50 74 72 29 2c 20 28 6b 65 79 29 tablePtr), (key)
0370: 2c 20 4e 55 4c 4c 29 0a 20 0a 20 2f 2a 0a 2b 20 , NULL). . /*.+
0380: 2a 20 55 73 65 20 67 63 63 20 62 72 61 6e 63 68 * Use gcc branch
0390: 20 70 72 65 64 69 63 74 69 6f 6e 20 62 75 69 6c prediction buil
03a0: 74 69 6e 20 77 68 65 6e 20 61 76 61 69 6c 61 62 tin when availab
03b0: 6c 65 2e 0a 2b 20 2a 2f 0a 2b 0a 2b 23 69 66 64 le..+ */.+.+#ifd
03c0: 65 66 20 48 41 56 45 5f 42 55 49 4c 54 49 4e 5f ef HAVE_BUILTIN_
03d0: 45 58 50 45 43 54 0a 2b 23 20 20 20 69 66 6e 64 EXPECT.+# ifnd
03e0: 65 66 20 55 53 45 5f 42 55 49 4c 54 49 4e 5f 45 ef USE_BUILTIN_E
03f0: 58 50 45 43 54 0a 2b 23 09 64 65 66 69 6e 65 20 XPECT.+#.define
0400: 55 53 45 5f 42 55 49 4c 54 49 4e 5f 45 58 50 45 USE_BUILTIN_EXPE
0410: 43 54 09 31 0a 2b 23 20 20 20 65 6e 64 69 66 0a CT.1.+# endif.
0420: 2b 23 65 6c 73 65 0a 2b 23 20 20 20 69 66 6e 64 +#else.+# ifnd
0430: 65 66 20 55 53 45 5f 42 55 49 4c 54 49 4e 5f 45 ef USE_BUILTIN_E
0440: 58 50 45 43 54 0a 2b 23 09 64 65 66 69 6e 65 20 XPECT.+#.define
0450: 55 53 45 5f 42 55 49 4c 54 49 4e 5f 45 58 50 45 USE_BUILTIN_EXPE
0460: 43 54 09 30 0a 2b 23 20 20 20 65 6c 69 66 20 55 CT.0.+# elif U
0470: 53 45 5f 42 55 49 4c 54 49 4e 5f 45 58 50 45 43 SE_BUILTIN_EXPEC
0480: 54 0a 2b 23 09 77 61 72 6e 69 6e 67 20 5f 5f 62 T.+#.warning __b
0490: 75 69 6c 74 69 6e 5f 65 78 70 65 63 74 20 75 6e uiltin_expect un
04a0: 61 76 61 69 6c 61 62 6c 65 0a 2b 23 09 75 6e 64 available.+#.und
04b0: 65 66 20 20 55 53 45 5f 42 55 49 4c 54 49 4e 5f ef USE_BUILTIN_
04c0: 45 58 50 45 43 54 0a 2b 23 09 64 65 66 69 6e 65 EXPECT.+#.define
04d0: 20 55 53 45 5f 42 55 49 4c 54 49 4e 5f 45 58 50 USE_BUILTIN_EXP
04e0: 45 43 54 09 30 0a 2b 23 20 20 20 65 6e 64 69 66 ECT.0.+# endif
04f0: 0a 2b 23 65 6e 64 69 66 0a 2b 0a 2b 23 69 66 20 .+#endif.+.+#if
0500: 55 53 45 5f 42 55 49 4c 54 49 4e 5f 45 58 50 45 USE_BUILTIN_EXPE
0510: 43 54 0a 2b 23 20 20 20 64 65 66 69 6e 65 20 4c CT.+# define L
0520: 49 4b 45 4c 59 28 74 29 09 09 09 28 5f 5f 62 75 IKELY(t)...(__bu
0530: 69 6c 74 69 6e 5f 65 78 70 65 63 74 28 28 74 29 iltin_expect((t)
0540: 2c 20 31 29 29 0a 2b 23 20 20 20 64 65 66 69 6e , 1)).+# defin
0550: 65 20 55 4e 4c 49 4b 45 4c 59 28 74 29 09 09 09 e UNLIKELY(t)...
0560: 28 5f 5f 62 75 69 6c 74 69 6e 5f 65 78 70 65 63 (__builtin_expec
0570: 74 28 28 74 29 2c 20 30 29 29 0a 2b 23 65 6c 73 t((t), 0)).+#els
0580: 65 0a 2b 23 20 20 20 64 65 66 69 6e 65 20 4c 49 e.+# define LI
0590: 4b 45 4c 59 28 74 29 09 28 74 29 0a 2b 23 20 20 KELY(t).(t).+#
05a0: 20 64 65 66 69 6e 65 20 55 4e 4c 49 4b 45 4c 59 define UNLIKELY
05b0: 28 74 29 09 28 74 29 0a 2b 23 65 6e 64 69 66 0a (t).(t).+#endif.
05c0: 2b 0a 2b 2f 2a 0a 2b 20 2a 20 55 73 65 20 63 6f +.+/*.+ * Use co
05d0: 6d 70 75 74 65 64 20 67 6f 74 6f 20 69 6e 73 74 mputed goto inst
05e0: 65 61 64 20 6f 66 20 62 69 67 20 73 77 69 74 63 ead of big switc
05f0: 68 20 77 68 65 6e 20 61 76 61 69 6c 61 62 6c 65 h when available
0600: 2e 0a 2b 20 2a 2f 0a 2b 0a 2b 23 69 66 64 65 66 ..+ */.+.+#ifdef
0610: 20 48 41 56 45 5f 43 4f 4d 50 55 54 45 44 5f 47 HAVE_COMPUTED_G
0620: 4f 54 4f 0a 2b 23 20 20 20 69 66 6e 64 65 66 20 OTO.+# ifndef
0630: 55 53 45 5f 43 4f 4d 50 55 54 45 44 5f 47 4f 54 USE_COMPUTED_GOT
0640: 4f 0a 2b 23 09 64 65 66 69 6e 65 20 55 53 45 5f O.+#.define USE_
0650: 43 4f 4d 50 55 54 45 44 5f 47 4f 54 4f 09 31 0a COMPUTED_GOTO.1.
0660: 2b 23 20 20 20 65 6e 64 69 66 0a 2b 23 65 6c 73 +# endif.+#els
0670: 65 0a 2b 23 20 20 20 69 66 6e 64 65 66 20 55 53 e.+# ifndef US
0680: 45 5f 43 4f 4d 50 55 54 45 44 5f 47 4f 54 4f 0a E_COMPUTED_GOTO.
0690: 2b 23 09 64 65 66 69 6e 65 20 55 53 45 5f 43 4f +#.define USE_CO
06a0: 4d 50 55 54 45 44 5f 47 4f 54 4f 09 30 0a 2b 23 MPUTED_GOTO.0.+#
06b0: 20 20 20 65 6c 69 66 20 55 53 45 5f 43 4f 4d 50 elif USE_COMP
06c0: 55 54 45 44 5f 47 4f 54 4f 0a 2b 23 09 77 61 72 UTED_GOTO.+#.war
06d0: 6e 69 6e 67 20 63 6f 6d 70 75 74 65 64 20 67 6f ning computed go
06e0: 74 6f 20 75 6e 61 76 61 69 6c 61 62 6c 65 0a 2b to unavailable.+
06f0: 23 09 75 6e 64 65 66 20 20 55 53 45 5f 43 4f 4d #.undef USE_COM
0700: 50 55 54 45 44 5f 47 4f 54 4f 0a 2b 23 09 64 65 PUTED_GOTO.+#.de
0710: 66 69 6e 65 20 55 53 45 5f 43 4f 4d 50 55 54 45 fine USE_COMPUTE
0720: 44 5f 47 4f 54 4f 09 30 0a 2b 23 20 20 20 65 6e D_GOTO.0.+# en
0730: 64 69 66 0a 2b 23 65 6e 64 69 66 0a 2b 0a 2b 2f dif.+#endif.+.+/
0740: 2a 0a 2b 20 2a 20 4d 61 63 72 6f 73 20 74 6f 20 *.+ * Macros to
0750: 63 6f 6e 73 74 72 75 63 74 20 74 68 65 20 69 6e construct the in
0760: 73 74 72 75 63 74 69 6f 6e 20 73 77 69 74 63 68 struction switch
0770: 20 72 65 73 70 2e 20 6a 75 6d 70 74 61 62 6c 65 resp. jumptable
0780: 2e 0a 2b 20 2a 2f 0a 2b 0a 2b 23 69 66 20 21 55 ..+ */.+.+#if !U
0790: 53 45 5f 43 4f 4d 50 55 54 45 44 5f 47 4f 54 4f SE_COMPUTED_GOTO
07a0: 0a 2b 23 20 20 20 64 65 66 69 6e 65 20 43 41 53 .+# define CAS
07b0: 45 28 69 29 09 09 63 61 73 65 20 69 0a 2b 23 20 E(i)..case i.+#
07c0: 20 20 64 65 66 69 6e 65 20 42 41 44 5f 49 4e 53 define BAD_INS
07d0: 54 28 29 09 09 64 65 66 61 75 6c 74 0a 2b 23 20 T()..default.+#
07e0: 20 20 64 65 66 69 6e 65 20 44 49 53 50 41 54 43 define DISPATC
07f0: 48 5f 49 4e 53 54 28 29 09 73 77 69 74 63 68 20 H_INST().switch
0800: 28 2a 70 63 29 0a 2b 23 65 6c 73 65 0a 2b 23 20 (*pc).+#else.+#
0810: 20 20 64 65 66 69 6e 65 20 43 41 53 45 28 69 29 define CASE(i)
0820: 20 09 09 6c 5f 69 6e 73 74 5f 23 23 69 0a 2b 23 ..l_inst_##i.+#
0830: 20 20 20 64 65 66 69 6e 65 20 42 41 44 5f 49 4e define BAD_IN
0840: 53 54 28 29 09 09 6c 5f 62 61 64 5f 69 6e 73 74 ST()..l_bad_inst
0850: 0a 2b 23 20 20 20 64 65 66 69 6e 65 20 44 49 53 .+# define DIS
0860: 50 41 54 43 48 5f 49 4e 53 54 28 29 09 47 4f 54 PATCH_INST().GOT
0870: 4f 5f 4e 45 58 54 5f 49 4e 53 54 28 29 3b 20 6c O_NEXT_INST(); l
0880: 5f 74 6f 70 3a 0a 2b 23 20 20 20 64 65 66 69 6e _top:.+# defin
0890: 65 20 43 41 44 52 28 69 29 09 09 28 28 63 68 61 e CADR(i)..((cha
08a0: 72 2a 29 20 26 26 6c 5f 69 6e 73 74 5f 23 23 69 r*) &&l_inst_##i
08b0: 20 2d 20 28 63 68 61 72 2a 29 20 26 26 6c 5f 74 - (char*) &&l_t
08c0: 6f 70 29 0a 2b 23 20 20 20 64 65 66 69 6e 65 20 op).+# define
08d0: 47 4f 54 4f 5f 4e 45 58 54 5f 49 4e 53 54 28 29 GOTO_NEXT_INST()
08e0: 20 5c 0a 2b 09 69 66 20 28 4c 49 4b 45 4c 59 28 \.+.if (LIKELY(
08f0: 2a 70 63 20 3c 3d 20 4c 41 53 54 5f 49 4e 53 54 *pc <= LAST_INST
0900: 5f 4f 50 43 4f 44 45 29 29 20 7b 5c 0a 2b 09 20 _OPCODE)) {\.+.
0910: 20 20 20 67 6f 74 6f 20 2a 28 76 6f 69 64 2a 29 goto *(void*)
0920: 28 69 6e 73 74 4a 75 6d 70 74 61 62 6c 65 5b 2a (instJumptable[*
0930: 70 63 5d 20 2b 20 28 63 68 61 72 2a 29 20 26 26 pc] + (char*) &&
0940: 6c 5f 74 6f 70 29 3b 5c 0a 2b 09 7d 20 65 6c 73 l_top);\.+.} els
0950: 65 20 7b 5c 0a 2b 09 20 20 20 20 67 6f 74 6f 20 e {\.+. goto
0960: 42 41 44 5f 49 4e 53 54 28 29 3b 5c 0a 2b 09 7d BAD_INST();\.+.}
0970: 0a 2b 23 65 6e 64 69 66 0a 2b 0a 2b 2f 2a 0a 2b .+#endif.+.+/*.+
0980: 20 2a 20 44 65 66 69 6e 65 20 74 68 65 20 4e 45 * Define the NE
0990: 58 54 5f 49 4e 53 54 28 29 20 61 6e 64 20 4e 45 XT_INST() and NE
09a0: 58 54 5f 49 4e 53 54 5f 44 49 53 50 41 54 43 48 XT_INST_DISPATCH
09b0: 28 29 20 6d 61 63 72 6f 73 20 61 63 63 6f 72 64 () macros accord
09c0: 69 6e 67 20 74 6f 20 74 68 65 0a 2b 20 2a 20 63 ing to the.+ * c
09d0: 68 6f 73 65 6e 20 6c 65 76 65 6c 20 6f 66 20 69 hosen level of i
09e0: 6e 6c 69 6e 69 6e 67 20 69 6e 74 6f 20 74 68 65 nlining into the
09f0: 20 4e 45 58 54 5f 49 4e 53 54 5f 46 28 29 20 61 NEXT_INST_F() a
0a00: 6e 64 20 4e 45 58 54 5f 49 4e 53 54 5f 56 28 29 nd NEXT_INST_V()
0a10: 20 6d 61 63 72 6f 73 3a 0a 2b 20 2a 09 30 20 6e macros:.+ *.0 n
0a20: 6f 20 69 6e 6c 69 6e 69 6e 67 0a 2b 20 2a 09 31 o inlining.+ *.1
0a30: 20 69 6e 6c 69 6e 65 20 63 6c 65 61 6e 75 70 20 inline cleanup
0a40: 63 6f 64 65 0a 2b 20 2a 09 32 20 61 6c 73 6f 20 code.+ *.2 also
0a50: 69 6e 6c 69 6e 65 20 61 73 79 6e 63 20 68 61 6e inline async han
0a60: 64 6c 65 72 20 61 6e 64 20 6f 74 68 65 72 20 63 dler and other c
0a70: 68 65 63 6b 20 63 6f 64 65 0a 2b 20 2a 09 33 20 heck code.+ *.3
0a80: 61 6c 73 6f 20 69 6e 6c 69 6e 65 20 70 65 65 70 also inline peep
0a90: 68 6f 6c 65 20 67 6f 74 6f 73 0a 2b 20 2a 09 34 hole gotos.+ *.4
0aa0: 20 61 6c 73 6f 20 64 6f 20 69 6e 64 69 72 65 63 also do indirec
0ab0: 74 20 74 68 72 65 61 64 69 6e 67 20 28 64 69 72 t threading (dir
0ac0: 65 63 74 20 63 6f 6d 70 75 74 65 64 20 67 6f 74 ect computed got
0ad0: 6f 20 74 6f 20 6e 65 78 74 20 69 6e 73 74 72 75 o to next instru
0ae0: 63 74 69 6f 6e 29 0a 2b 20 2a 2f 0a 2b 0a 2b 23 ction).+ */.+.+#
0af0: 69 66 6e 64 65 66 20 54 45 42 43 5f 49 4e 4c 49 ifndef TEBC_INLI
0b00: 4e 45 5f 4c 45 56 45 4c 0a 2b 23 20 20 20 64 65 NE_LEVEL.+# de
0b10: 66 69 6e 65 20 54 45 42 43 5f 49 4e 4c 49 4e 45 fine TEBC_INLINE
0b20: 5f 4c 45 56 45 4c 09 09 30 0a 2b 23 65 6e 64 69 _LEVEL..0.+#endi
0b30: 66 0a 2b 0a 2b 23 69 66 20 54 45 42 43 5f 49 4e f.+.+#if TEBC_IN
0b40: 4c 49 4e 45 5f 4c 45 56 45 4c 20 3e 20 33 20 26 LINE_LEVEL > 3 &
0b50: 26 20 55 53 45 5f 43 4f 4d 50 55 54 45 44 5f 47 & USE_COMPUTED_G
0b60: 4f 54 4f 0a 2b 23 20 20 20 64 65 66 69 6e 65 20 OTO.+# define
0b70: 4e 45 58 54 5f 49 4e 53 54 28 29 20 5c 0a 2b 09 NEXT_INST() \.+.
0b80: 4e 45 58 54 5f 49 4e 53 54 5f 43 48 45 43 4b 53 NEXT_INST_CHECKS
0b90: 28 29 3b 5c 0a 2b 09 4e 45 58 54 5f 49 4e 53 54 ();\.+.NEXT_INST
0ba0: 5f 50 45 45 50 48 4f 4c 45 28 29 3b 5c 0a 2b 09 _PEEPHOLE();\.+.
0bb0: 47 4f 54 4f 5f 4e 45 58 54 5f 49 4e 53 54 28 29 GOTO_NEXT_INST()
0bc0: 3b 0a 2b 23 20 20 20 64 65 66 69 6e 65 20 4e 45 ;.+# define NE
0bd0: 58 54 5f 49 4e 53 54 5f 44 49 53 50 41 54 43 48 XT_INST_DISPATCH
0be0: 28 29 20 5c 0a 2b 09 4e 45 58 54 5f 49 4e 53 54 () \.+.NEXT_INST
0bf0: 5f 43 48 45 43 4b 53 28 29 3b 5c 0a 2b 09 4e 45 _CHECKS();\.+.NE
0c00: 58 54 5f 49 4e 53 54 5f 50 45 45 50 48 4f 4c 45 XT_INST_PEEPHOLE
0c10: 28 29 3b 5c 0a 2b 09 44 49 53 50 41 54 43 48 5f ();\.+.DISPATCH_
0c20: 49 4e 53 54 28 29 0a 2b 23 65 6c 69 66 20 54 45 INST().+#elif TE
0c30: 42 43 5f 49 4e 4c 49 4e 45 5f 4c 45 56 45 4c 20 BC_INLINE_LEVEL
0c40: 3e 20 32 0a 2b 23 20 20 20 64 65 66 69 6e 65 20 > 2.+# define
0c50: 4e 45 58 54 5f 49 4e 53 54 28 29 20 5c 0a 2b 09 NEXT_INST() \.+.
0c60: 4e 45 58 54 5f 49 4e 53 54 5f 43 48 45 43 4b 53 NEXT_INST_CHECKS
0c70: 28 29 3b 5c 0a 2b 09 4e 45 58 54 5f 49 4e 53 54 ();\.+.NEXT_INST
0c80: 5f 50 45 45 50 48 4f 4c 45 28 29 3b 5c 0a 2b 09 _PEEPHOLE();\.+.
0c90: 67 6f 74 6f 20 6c 5f 6e 65 78 74 5f 69 6e 73 74 goto l_next_inst
0ca0: 3b 0a 2b 23 20 20 20 64 65 66 69 6e 65 20 4e 45 ;.+# define NE
0cb0: 58 54 5f 49 4e 53 54 5f 44 49 53 50 41 54 43 48 XT_INST_DISPATCH
0cc0: 28 29 20 5c 0a 2b 09 4e 45 58 54 5f 49 4e 53 54 () \.+.NEXT_INST
0cd0: 5f 43 48 45 43 4b 53 28 29 3b 5c 0a 2b 09 4e 45 _CHECKS();\.+.NE
0ce0: 58 54 5f 49 4e 53 54 5f 50 45 45 50 48 4f 4c 45 XT_INST_PEEPHOLE
0cf0: 28 29 3b 5c 0a 2b 09 6c 5f 6e 65 78 74 5f 69 6e ();\.+.l_next_in
0d00: 73 74 3a 5c 0a 2b 09 44 49 53 50 41 54 43 48 5f st:\.+.DISPATCH_
0d10: 49 4e 53 54 28 29 0a 2b 23 65 6c 69 66 20 54 45 INST().+#elif TE
0d20: 42 43 5f 49 4e 4c 49 4e 45 5f 4c 45 56 45 4c 20 BC_INLINE_LEVEL
0d30: 3e 20 31 0a 2b 23 20 20 20 64 65 66 69 6e 65 20 > 1.+# define
0d40: 4e 45 58 54 5f 49 4e 53 54 28 29 20 5c 0a 2b 09 NEXT_INST() \.+.
0d50: 4e 45 58 54 5f 49 4e 53 54 5f 43 48 45 43 4b 53 NEXT_INST_CHECKS
0d60: 28 29 3b 5c 0a 2b 09 67 6f 74 6f 20 6c 5f 6e 65 ();\.+.goto l_ne
0d70: 78 74 5f 69 6e 73 74 3b 0a 2b 23 20 20 20 64 65 xt_inst;.+# de
0d80: 66 69 6e 65 20 4e 45 58 54 5f 49 4e 53 54 5f 44 fine NEXT_INST_D
0d90: 49 53 50 41 54 43 48 28 29 20 5c 0a 2b 09 4e 45 ISPATCH() \.+.NE
0da0: 58 54 5f 49 4e 53 54 5f 43 48 45 43 4b 53 28 29 XT_INST_CHECKS()
0db0: 3b 5c 0a 2b 09 6c 5f 6e 65 78 74 5f 69 6e 73 74 ;\.+.l_next_inst
0dc0: 3a 5c 0a 2b 09 4e 45 58 54 5f 49 4e 53 54 5f 50 :\.+.NEXT_INST_P
0dd0: 45 45 50 48 4f 4c 45 28 29 3b 5c 0a 2b 09 44 49 EEPHOLE();\.+.DI
0de0: 53 50 41 54 43 48 5f 49 4e 53 54 28 29 0a 2b 23 SPATCH_INST().+#
0df0: 65 6c 69 66 20 54 45 42 43 5f 49 4e 4c 49 4e 45 elif TEBC_INLINE
0e00: 5f 4c 45 56 45 4c 20 3e 20 30 0a 2b 23 20 20 20 _LEVEL > 0.+#
0e10: 64 65 66 69 6e 65 20 4e 45 58 54 5f 49 4e 53 54 define NEXT_INST
0e20: 28 29 20 5c 0a 2b 09 67 6f 74 6f 20 6c 5f 6e 65 () \.+.goto l_ne
0e30: 78 74 5f 69 6e 73 74 3b 0a 2b 23 20 20 20 64 65 xt_inst;.+# de
0e40: 66 69 6e 65 20 4e 45 58 54 5f 49 4e 53 54 5f 44 fine NEXT_INST_D
0e50: 49 53 50 41 54 43 48 28 29 20 5c 0a 2b 09 6c 5f ISPATCH() \.+.l_
0e60: 6e 65 78 74 5f 69 6e 73 74 3a 5c 0a 2b 09 4e 45 next_inst:\.+.NE
0e70: 58 54 5f 49 4e 53 54 5f 43 48 45 43 4b 53 28 29 XT_INST_CHECKS()
0e80: 3b 5c 0a 2b 09 4e 45 58 54 5f 49 4e 53 54 5f 50 ;\.+.NEXT_INST_P
0e90: 45 45 50 48 4f 4c 45 28 29 3b 5c 0a 2b 09 44 49 EEPHOLE();\.+.DI
0ea0: 53 50 41 54 43 48 5f 49 4e 53 54 28 29 0a 2b 23 SPATCH_INST().+#
0eb0: 65 6c 73 65 0a 2b 23 20 20 20 64 65 66 69 6e 65 else.+# define
0ec0: 20 4e 45 58 54 5f 49 4e 53 54 28 29 20 5c 0a 2b NEXT_INST() \.+
0ed0: 09 67 6f 74 6f 20 6c 5f 6e 65 78 74 5f 69 6e 73 .goto l_next_ins
0ee0: 74 3b 0a 2b 23 20 20 20 64 65 66 69 6e 65 20 4e t;.+# define N
0ef0: 45 58 54 5f 49 4e 53 54 5f 44 49 53 50 41 54 43 EXT_INST_DISPATC
0f00: 48 28 29 20 5c 0a 2b 09 67 6f 74 6f 20 6c 5f 6e H() \.+.goto l_n
0f10: 65 78 74 5f 69 6e 73 74 3b 5c 0a 2b 09 4e 45 58 ext_inst;\.+.NEX
0f20: 54 5f 49 4e 53 54 5f 43 4c 45 41 4e 55 50 28 29 T_INST_CLEANUP()
0f30: 3b 5c 0a 2b 09 6c 5f 6e 65 78 74 5f 69 6e 73 74 ;\.+.l_next_inst
0f40: 3a 5c 0a 2b 09 4e 45 58 54 5f 49 4e 53 54 5f 43 :\.+.NEXT_INST_C
0f50: 48 45 43 4b 53 28 29 3b 5c 0a 2b 09 4e 45 58 54 HECKS();\.+.NEXT
0f60: 5f 49 4e 53 54 5f 50 45 45 50 48 4f 4c 45 28 29 _INST_PEEPHOLE()
0f70: 3b 5c 0a 2b 09 44 49 53 50 41 54 43 48 5f 49 4e ;\.+.DISPATCH_IN
0f80: 53 54 28 29 0a 2b 23 65 6e 64 69 66 0a 2b 0a 2b ST().+#endif.+.+
0f90: 2f 2a 0a 2b 20 2a 20 4d 61 63 72 6f 73 20 66 6f /*.+ * Macros fo
0fa0: 72 20 70 72 65 2d 69 6e 73 74 72 75 63 74 69 6f r pre-instructio
0fb0: 6e 2d 65 78 65 63 75 74 69 6f 6e 20 63 68 65 63 n-execution chec
0fc0: 6b 73 20 61 6e 64 20 73 74 61 74 73 2e 0a 2b 20 ks and stats..+
0fd0: 2a 2f 0a 2b 0a 2b 23 64 65 66 69 6e 65 20 4e 45 */.+.+#define NE
0fe0: 58 54 5f 49 4e 53 54 5f 43 48 45 43 4b 53 28 29 XT_INST_CHECKS()
0ff0: 20 5c 0a 2b 20 20 20 20 4e 45 58 54 5f 49 4e 53 \.+ NEXT_INS
1000: 54 5f 53 54 41 43 4b 5f 43 48 45 43 4b 28 29 3b T_STACK_CHECK();
1010: 5c 0a 2b 20 20 20 20 4e 45 58 54 5f 49 4e 53 54 \.+ NEXT_INST
1020: 5f 53 54 41 54 53 28 29 3b 5c 0a 2b 20 20 20 20 _STATS();\.+
1030: 54 43 4c 5f 44 54 52 41 43 45 5f 49 4e 53 54 5f TCL_DTRACE_INST_
1040: 4e 45 58 54 28 29 3b 5c 0a 2b 20 20 20 20 4e 45 NEXT();\.+ NE
1050: 58 54 5f 49 4e 53 54 5f 41 53 59 4e 43 5f 43 48 XT_INST_ASYNC_CH
1060: 45 43 4b 28 29 0a 2b 0a 2b 23 69 66 64 65 66 20 ECK().+.+#ifdef
1070: 54 43 4c 5f 43 4f 4d 50 49 4c 45 5f 44 45 42 55 TCL_COMPILE_DEBU
1080: 47 0a 2b 20 20 20 20 2f 2a 0a 2b 20 20 20 20 20 G.+ /*.+
1090: 2a 20 53 6b 69 70 20 74 68 65 20 73 74 61 63 6b * Skip the stack
10a0: 20 64 65 70 74 68 20 63 68 65 63 6b 20 69 66 20 depth check if
10b0: 61 6e 20 65 78 70 61 6e 73 69 6f 6e 20 69 73 20 an expansion is
10c0: 69 6e 20 70 72 6f 67 72 65 73 73 2e 0a 2b 20 20 in progress..+
10d0: 20 20 20 2a 2f 0a 2b 23 20 20 20 64 65 66 69 6e */.+# defin
10e0: 65 20 4e 45 58 54 5f 49 4e 53 54 5f 53 54 41 43 e NEXT_INST_STAC
10f0: 4b 5f 43 48 45 43 4b 28 29 20 5c 0a 2b 20 20 20 K_CHECK() \.+
1100: 20 56 61 6c 69 64 61 74 65 50 63 41 6e 64 53 74 ValidatePcAndSt
1110: 61 63 6b 54 6f 70 28 63 6f 64 65 50 74 72 2c 20 ackTop(codePtr,
1120: 70 63 2c 20 43 55 52 52 5f 44 45 50 54 48 2c 20 pc, CURR_DEPTH,
1130: 30 2c 5c 0a 2b 09 20 20 20 20 2f 2a 63 68 65 63 0,\.+. /*chec
1140: 6b 53 74 61 63 6b 2a 2f 20 65 78 70 61 6e 64 4e kStack*/ expandN
1150: 65 73 74 4c 69 73 74 20 3d 3d 20 4e 55 4c 4c 29 estList == NULL)
1160: 3b 5c 0a 2b 20 20 20 20 69 66 20 28 74 72 61 63 ;\.+ if (trac
1170: 65 49 6e 73 74 72 75 63 74 69 6f 6e 73 29 20 7b eInstructions) {
1180: 5c 0a 2b 09 66 70 72 69 6e 74 66 28 73 74 64 6f \.+.fprintf(stdo
1190: 75 74 2c 20 22 25 32 64 3a 20 25 32 64 20 22 2c ut, "%2d: %2d ",
11a0: 20 69 50 74 72 2d 3e 6e 75 6d 4c 65 76 65 6c 73 iPtr->numLevels
11b0: 2c 20 28 69 6e 74 29 20 43 55 52 52 5f 44 45 50 , (int) CURR_DEP
11c0: 54 48 29 3b 5c 0a 2b 09 54 63 6c 50 72 69 6e 74 TH);\.+.TclPrint
11d0: 49 6e 73 74 72 75 63 74 69 6f 6e 28 63 6f 64 65 Instruction(code
11e0: 50 74 72 2c 20 70 63 29 3b 5c 0a 2b 09 66 66 6c Ptr, pc);\.+.ffl
11f0: 75 73 68 28 73 74 64 6f 75 74 29 3b 5c 0a 2b 20 ush(stdout);\.+
1200: 20 20 20 7d 0a 2b 23 65 6c 73 65 0a 2b 23 20 20 }.+#else.+#
1210: 20 64 65 66 69 6e 65 20 4e 45 58 54 5f 49 4e 53 define NEXT_INS
1220: 54 5f 53 54 41 43 4b 5f 43 48 45 43 4b 28 29 0a T_STACK_CHECK().
1230: 2b 23 65 6e 64 69 66 20 2f 2a 20 54 43 4c 5f 43 +#endif /* TCL_C
1240: 4f 4d 50 49 4c 45 5f 44 45 42 55 47 20 2a 2f 0a OMPILE_DEBUG */.
1250: 2b 0a 2b 23 69 66 64 65 66 20 54 43 4c 5f 43 4f +.+#ifdef TCL_CO
1260: 4d 50 49 4c 45 5f 53 54 41 54 53 0a 2b 23 20 20 MPILE_STATS.+#
1270: 20 64 65 66 69 6e 65 20 4e 45 58 54 5f 49 4e 53 define NEXT_INS
1280: 54 5f 53 54 41 54 53 28 29 20 69 50 74 72 2d 3e T_STATS() iPtr->
1290: 73 74 61 74 73 2e 69 6e 73 74 72 75 63 74 69 6f stats.instructio
12a0: 6e 43 6f 75 6e 74 5b 2a 70 63 5d 2b 2b 3b 0a 2b nCount[*pc]++;.+
12b0: 23 65 6c 73 65 0a 2b 23 20 20 20 64 65 66 69 6e #else.+# defin
12c0: 65 20 4e 45 58 54 5f 49 4e 53 54 5f 53 54 41 54 e NEXT_INST_STAT
12d0: 53 28 29 0a 2b 23 65 6e 64 69 66 0a 2b 0a 2b 2f S().+#endif.+.+/
12e0: 2a 0a 2b 20 2a 20 43 68 65 63 6b 20 66 6f 72 20 *.+ * Check for
12f0: 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 68 61 6e asynchronous han
1300: 64 6c 65 72 73 20 5b 42 75 67 20 37 34 36 37 32 dlers [Bug 74672
1310: 32 5d 3b 20 77 65 20 64 6f 20 74 68 65 20 63 68 2]; we do the ch
1320: 65 63 6b 20 65 76 65 72 79 0a 2b 20 2a 20 41 53 eck every.+ * AS
1330: 59 4e 43 5f 43 48 45 43 4b 5f 43 4f 55 4e 54 5f YNC_CHECK_COUNT_
1340: 4d 41 53 4b 20 69 6e 73 74 72 75 63 74 69 6f 6e MASK instruction
1350: 2c 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 28 32 , of the form (2
1360: 2a 2a 6e 2d 31 29 2e 0a 2b 20 2a 2f 0a 2b 0a 2b **n-1)..+ */.+.+
1370: 23 64 65 66 69 6e 65 20 4e 45 58 54 5f 49 4e 53 #define NEXT_INS
1380: 54 5f 41 53 59 4e 43 5f 43 48 45 43 4b 28 29 20 T_ASYNC_CHECK()
1390: 5c 0a 2b 20 20 20 20 69 66 20 28 28 69 6e 73 74 \.+ if ((inst
13a0: 72 75 63 74 69 6f 6e 43 6f 75 6e 74 2b 2b 20 26 ructionCount++ &
13b0: 20 41 53 59 4e 43 5f 43 48 45 43 4b 5f 43 4f 55 ASYNC_CHECK_COU
13c0: 4e 54 5f 4d 41 53 4b 29 20 3d 3d 20 30 29 20 7b NT_MASK) == 0) {
13d0: 5c 0a 2b 09 69 6e 74 20 6c 6f 63 61 6c 52 65 73 \.+.int localRes
13e0: 75 6c 74 3b 5c 0a 2b 09 69 66 20 28 54 63 6c 5f ult;\.+.if (Tcl_
13f0: 41 73 79 6e 63 52 65 61 64 79 28 29 29 20 7b 5c AsyncReady()) {\
1400: 0a 2b 09 20 20 20 20 44 45 43 41 43 48 45 5f 53 .+. DECACHE_S
1410: 54 41 43 4b 5f 49 4e 46 4f 28 29 3b 5c 0a 2b 09 TACK_INFO();\.+.
1420: 20 20 20 20 6c 6f 63 61 6c 52 65 73 75 6c 74 20 localResult
1430: 3d 20 54 63 6c 5f 41 73 79 6e 63 49 6e 76 6f 6b = Tcl_AsyncInvok
1440: 65 28 69 6e 74 65 72 70 2c 20 72 65 73 75 6c 74 e(interp, result
1450: 29 3b 5c 0a 2b 09 20 20 20 20 43 41 43 48 45 5f );\.+. CACHE_
1460: 53 54 41 43 4b 5f 49 4e 46 4f 28 29 3b 5c 0a 2b STACK_INFO();\.+
1470: 09 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 52 65 . if (localRe
1480: 73 75 6c 74 20 3d 3d 20 54 43 4c 5f 45 52 52 4f sult == TCL_ERRO
1490: 52 29 20 7b 5c 0a 2b 09 09 72 65 73 75 6c 74 20 R) {\.+..result
14a0: 3d 20 6c 6f 63 61 6c 52 65 73 75 6c 74 3b 5c 0a = localResult;\.
14b0: 2b 09 09 67 6f 74 6f 20 63 68 65 63 6b 46 6f 72 +..goto checkFor
14c0: 43 61 74 63 68 3b 5c 0a 2b 09 20 20 20 20 7d 5c Catch;\.+. }\
14d0: 0a 2b 09 7d 5c 0a 2b 09 69 66 20 28 54 63 6c 4c .+.}\.+.if (TclL
14e0: 69 6d 69 74 52 65 61 64 79 28 69 50 74 72 2d 3e imitReady(iPtr->
14f0: 6c 69 6d 69 74 29 29 20 7b 5c 0a 2b 09 20 20 20 limit)) {\.+.
1500: 20 44 45 43 41 43 48 45 5f 53 54 41 43 4b 5f 49 DECACHE_STACK_I
1510: 4e 46 4f 28 29 3b 5c 0a 2b 09 20 20 20 20 6c 6f NFO();\.+. lo
1520: 63 61 6c 52 65 73 75 6c 74 20 3d 20 54 63 6c 5f calResult = Tcl_
1530: 4c 69 6d 69 74 43 68 65 63 6b 28 69 6e 74 65 72 LimitCheck(inter
1540: 70 29 3b 5c 0a 2b 09 20 20 20 20 43 41 43 48 45 p);\.+. CACHE
1550: 5f 53 54 41 43 4b 5f 49 4e 46 4f 28 29 3b 5c 0a _STACK_INFO();\.
1560: 2b 09 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 52 +. if (localR
1570: 65 73 75 6c 74 20 3d 3d 20 54 43 4c 5f 45 52 52 esult == TCL_ERR
1580: 4f 52 29 20 7b 5c 0a 2b 09 09 72 65 73 75 6c 74 OR) {\.+..result
1590: 20 3d 20 6c 6f 63 61 6c 52 65 73 75 6c 74 3b 5c = localResult;\
15a0: 0a 2b 09 09 67 6f 74 6f 20 63 68 65 63 6b 46 6f .+..goto checkFo
15b0: 72 43 61 74 63 68 3b 5c 0a 2b 09 20 20 20 20 7d rCatch;\.+. }
15c0: 5c 0a 2b 09 7d 5c 0a 2b 20 20 20 20 7d 0a 2b 0a \.+.}\.+ }.+.
15d0: 2b 2f 2a 0a 2b 20 2a 20 54 68 65 73 65 20 74 77 +/*.+ * These tw
15e0: 6f 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 61 o instructions a
15f0: 63 63 6f 75 6e 74 20 66 6f 72 20 32 36 25 20 6f ccount for 26% o
1600: 66 20 61 6c 6c 20 69 6e 73 74 72 75 63 74 69 6f f all instructio
1610: 6e 73 20 28 61 63 63 6f 72 64 69 6e 67 0a 2b 20 ns (according.+
1620: 2a 20 74 6f 20 6d 65 61 73 75 72 65 6d 65 6e 74 * to measurement
1630: 73 20 6f 6e 20 74 63 6c 62 65 6e 63 68 20 62 79 s on tclbench by
1640: 20 42 65 6e 20 56 69 74 61 6c 65 0a 2b 20 2a 20 Ben Vitale.+ *
1650: 5b 68 74 74 70 3a 2f 2f 77 77 77 2e 63 73 2e 74 [http://www.cs.t
1660: 6f 72 6f 6e 74 6f 2e 65 64 75 2f 73 79 73 6c 61 oronto.edu/sysla
1670: 62 2f 70 75 62 73 2f 74 63 6c 32 30 30 35 2d 76 b/pubs/tcl2005-v
1680: 69 74 61 6c 65 2d 7a 61 6c 65 73 6b 69 2e 70 64 itale-zaleski.pd
1690: 66 5d 0a 2b 20 2a 20 52 65 73 6f 6c 76 69 6e 67 f].+ * Resolving
16a0: 20 74 68 65 6d 20 62 65 66 6f 72 65 20 74 68 65 them before the
16b0: 20 73 77 69 74 63 68 20 72 65 64 75 63 65 73 20 switch reduces
16c0: 74 68 65 20 63 6f 73 74 20 6f 66 20 62 72 61 6e the cost of bran
16d0: 63 68 0a 2b 20 2a 20 6d 69 73 70 72 65 64 69 63 ch.+ * mispredic
16e0: 74 69 6f 6e 73 2c 20 73 65 65 6d 73 20 74 6f 20 tions, seems to
16f0: 69 6d 70 72 6f 76 65 20 72 75 6e 74 69 6d 65 20 improve runtime
1700: 62 79 20 35 25 20 74 6f 20 31 35 25 2c 20 61 6e by 5% to 15%, an
1710: 64 20 28 61 6d 61 7a 69 6e 67 6c 79 21 29 0a 2b d (amazingly!).+
1720: 20 2a 20 72 65 64 75 63 65 73 20 74 6f 74 61 6c * reduces total
1730: 20 6f 62 6a 20 73 69 7a 65 2e 0a 2b 20 2a 2f 0a obj size..+ */.
1740: 2b 0a 2b 23 64 65 66 69 6e 65 20 4e 45 58 54 5f +.+#define NEXT_
1750: 49 4e 53 54 5f 50 45 45 50 48 4f 4c 45 28 29 20 INST_PEEPHOLE()
1760: 5c 0a 2b 20 20 20 20 69 66 20 28 2a 70 63 20 3d \.+ if (*pc =
1770: 3d 20 49 4e 53 54 5f 4c 4f 41 44 5f 53 43 41 4c = INST_LOAD_SCAL
1780: 41 52 31 29 20 7b 5c 0a 2b 09 67 6f 74 6f 20 69 AR1) {\.+.goto i
1790: 6e 73 74 4c 6f 61 64 53 63 61 6c 61 72 31 3b 5c nstLoadScalar1;\
17a0: 0a 2b 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 .+ } else if
17b0: 28 2a 70 63 20 3d 3d 20 49 4e 53 54 5f 50 55 53 (*pc == INST_PUS
17c0: 48 31 29 20 7b 5c 0a 2b 09 67 6f 74 6f 20 69 6e H1) {\.+.goto in
17d0: 73 74 50 75 73 68 31 50 65 65 70 68 6f 6c 65 3b stPush1Peephole;
17e0: 5c 0a 2b 20 20 20 20 7d 0a 2b 0a 2b 2f 2a 0a 2b \.+ }.+.+/*.+
17f0: 20 2a 20 4d 61 63 72 6f 73 20 66 6f 72 20 73 74 * Macros for st
1800: 61 6e 64 61 72 64 20 69 6e 73 74 72 75 63 74 69 andard instructi
1810: 6f 6e 20 65 6e 64 69 6e 67 73 3b 20 75 6e 72 6f on endings; unro
1820: 6c 6c 65 64 20 66 6f 72 20 73 70 65 65 64 20 69 lled for speed i
1830: 6e 20 74 68 65 20 6d 6f 73 74 0a 2b 20 2a 20 66 n the most.+ * f
1840: 72 65 71 75 65 6e 74 20 63 61 73 65 73 20 28 69 requent cases (i
1850: 6e 73 74 72 75 63 74 69 6f 6e 73 20 74 68 61 74 nstructions that
1860: 20 63 6f 6e 73 75 6d 65 20 75 70 20 74 6f 20 74 consume up to t
1870: 77 6f 20 73 74 61 63 6b 20 65 6c 65 6d 65 6e 74 wo stack element
1880: 73 29 2e 0a 2b 20 2a 2f 0a 2b 0a 2b 23 64 65 66 s)..+ */.+.+#def
1890: 69 6e 65 20 43 4c 45 41 4e 55 50 5f 50 4f 50 28 ine CLEANUP_POP(
18a0: 29 20 7b 5c 0a 2b 09 54 63 6c 5f 4f 62 6a 20 2a ) {\.+.Tcl_Obj *
18b0: 76 61 6c 75 65 50 74 72 20 3d 20 50 4f 50 5f 4f valuePtr = POP_O
18c0: 42 4a 45 43 54 28 29 3b 5c 0a 2b 09 54 63 6c 44 BJECT();\.+.TclD
18d0: 65 63 72 52 65 66 43 6f 75 6e 74 28 76 61 6c 75 ecrRefCount(valu
18e0: 65 50 74 72 29 3b 5c 0a 2b 20 20 20 20 7d 0a 2b ePtr);\.+ }.+
18f0: 23 64 65 66 69 6e 65 20 43 4c 45 41 4e 55 50 5f #define CLEANUP_
1900: 54 4f 53 28 29 20 7b 5c 0a 2b 09 54 63 6c 5f 4f TOS() {\.+.Tcl_O
1910: 62 6a 20 2a 76 61 6c 75 65 50 74 72 20 3d 20 4f bj *valuePtr = O
1920: 42 4a 5f 41 54 5f 54 4f 53 3b 5c 0a 2b 09 54 63 BJ_AT_TOS;\.+.Tc
1930: 6c 44 65 63 72 52 65 66 43 6f 75 6e 74 28 76 61 lDecrRefCount(va
1940: 6c 75 65 50 74 72 29 3b 5c 0a 2b 09 4f 42 4a 5f luePtr);\.+.OBJ_
1950: 41 54 5f 54 4f 53 20 3d 20 6f 62 6a 52 65 73 75 AT_TOS = objResu
1960: 6c 74 50 74 72 3b 5c 0a 2b 20 20 20 20 7d 0a 2b ltPtr;\.+ }.+
1970: 23 64 65 66 69 6e 65 20 43 4c 45 41 4e 55 50 56 #define CLEANUPV
1980: 5f 50 55 53 48 5f 4c 28 6c 31 2c 20 6c 32 29 20 _PUSH_L(l1, l2)
1990: 5c 0a 2b 20 20 20 20 73 77 69 74 63 68 20 28 63 \.+ switch (c
19a0: 6c 65 61 6e 75 70 29 20 7b 5c 0a 2b 09 63 61 73 leanup) {\.+.cas
19b0: 65 20 30 3a 09 09 2a 28 2b 2b 74 6f 73 50 74 72 e 0:..*(++tosPtr
19c0: 29 20 3d 20 28 6f 62 6a 52 65 73 75 6c 74 50 74 ) = (objResultPt
19d0: 72 29 3b 20 62 72 65 61 6b 3b 5c 0a 2b 09 64 65 r); break;\.+.de
19e0: 66 61 75 6c 74 3a 09 63 6c 65 61 6e 75 70 20 2d fault:.cleanup -
19f0: 3d 20 32 3b 20 77 68 69 6c 65 20 28 63 6c 65 61 = 2; while (clea
1a00: 6e 75 70 2d 2d 29 20 7b 20 43 4c 45 41 4e 55 50 nup--) { CLEANUP
1a10: 5f 50 4f 50 28 29 3b 20 7d 5c 0a 2b 09 63 61 73 _POP(); }\.+.cas
1a20: 65 20 32 3a 09 09 6c 32 20 43 4c 45 41 4e 55 50 e 2:..l2 CLEANUP
1a30: 5f 50 4f 50 28 29 3b 5c 0a 2b 09 63 61 73 65 20 _POP();\.+.case
1a40: 31 3a 09 09 6c 31 20 43 4c 45 41 4e 55 50 5f 54 1:..l1 CLEANUP_T
1a50: 4f 53 28 29 3b 5c 0a 2b 20 20 20 20 7d 0a 2b 23 OS();\.+ }.+#
1a60: 64 65 66 69 6e 65 20 43 4c 45 41 4e 55 50 56 5f define CLEANUPV_
1a70: 4c 28 6c 31 2c 20 6c 32 29 20 5c 0a 2b 20 20 20 L(l1, l2) \.+
1a80: 20 73 77 69 74 63 68 20 28 63 6c 65 61 6e 75 70 switch (cleanup
1a90: 29 20 7b 5c 0a 2b 09 64 65 66 61 75 6c 74 3a 09 ) {\.+.default:.
1aa0: 63 6c 65 61 6e 75 70 20 2d 3d 20 32 3b 20 77 68 cleanup -= 2; wh
1ab0: 69 6c 65 20 28 63 6c 65 61 6e 75 70 2d 2d 29 20 ile (cleanup--)
1ac0: 7b 20 43 4c 45 41 4e 55 50 5f 50 4f 50 28 29 3b { CLEANUP_POP();
1ad0: 20 7d 5c 0a 2b 09 63 61 73 65 20 32 3a 09 09 6c }\.+.case 2:..l
1ae0: 32 20 43 4c 45 41 4e 55 50 5f 50 4f 50 28 29 3b 2 CLEANUP_POP();
1af0: 5c 0a 2b 09 63 61 73 65 20 31 3a 09 09 6c 31 20 \.+.case 1:..l1
1b00: 43 4c 45 41 4e 55 50 5f 50 4f 50 28 29 3b 5c 0a CLEANUP_POP();\.
1b10: 2b 09 63 61 73 65 20 30 3a 09 09 62 72 65 61 6b +.case 0:..break
1b20: 3b 5c 0a 2b 20 20 20 20 7d 0a 2b 23 69 66 20 54 ;\.+ }.+#if T
1b30: 45 42 43 5f 49 4e 4c 49 4e 45 5f 4c 45 56 45 4c EBC_INLINE_LEVEL
1b40: 20 3e 20 30 0a 2b 23 20 20 20 64 65 66 69 6e 65 > 0.+# define
1b50: 20 43 4c 45 41 4e 55 50 32 5f 50 55 53 48 28 29 CLEANUP2_PUSH()
1b60: 09 43 4c 45 41 4e 55 50 5f 50 4f 50 28 29 0a 2b .CLEANUP_POP().+
1b70: 23 20 20 20 64 65 66 69 6e 65 20 43 4c 45 41 4e # define CLEAN
1b80: 55 50 31 5f 50 55 53 48 28 29 09 43 4c 45 41 4e UP1_PUSH().CLEAN
1b90: 55 50 5f 54 4f 53 28 29 0a 2b 23 20 20 20 64 65 UP_TOS().+# de
1ba0: 66 69 6e 65 20 43 4c 45 41 4e 55 50 32 28 29 09 fine CLEANUP2().
1bb0: 09 43 4c 45 41 4e 55 50 5f 50 4f 50 28 29 0a 2b .CLEANUP_POP().+
1bc0: 23 20 20 20 64 65 66 69 6e 65 20 43 4c 45 41 4e # define CLEAN
1bd0: 55 50 31 28 29 09 09 43 4c 45 41 4e 55 50 5f 50 UP1()..CLEANUP_P
1be0: 4f 50 28 29 0a 2b 23 20 20 20 64 65 66 69 6e 65 OP().+# define
1bf0: 20 43 4c 45 41 4e 55 50 56 5f 50 55 53 48 28 29 CLEANUPV_PUSH()
1c00: 09 43 4c 45 41 4e 55 50 56 5f 50 55 53 48 5f 4c .CLEANUPV_PUSH_L
1c10: 28 2c 29 0a 2b 23 20 20 20 64 65 66 69 6e 65 20 (,).+# define
1c20: 43 4c 45 41 4e 55 50 56 28 29 09 09 43 4c 45 41 CLEANUPV()..CLEA
1c30: 4e 55 50 56 5f 4c 28 2c 29 0a 2b 23 65 6c 73 65 NUPV_L(,).+#else
1c40: 0a 2b 23 20 20 20 64 65 66 69 6e 65 20 43 4c 45 .+# define CLE
1c50: 41 4e 55 50 32 5f 50 55 53 48 28 29 09 67 6f 74 ANUP2_PUSH().got
1c60: 6f 20 6c 5f 63 6c 65 61 6e 75 70 32 5f 70 75 73 o l_cleanup2_pus
1c70: 68 3b 0a 2b 23 20 20 20 64 65 66 69 6e 65 20 43 h;.+# define C
1c80: 4c 45 41 4e 55 50 31 5f 50 55 53 48 28 29 09 67 LEANUP1_PUSH().g
1c90: 6f 74 6f 20 6c 5f 63 6c 65 61 6e 75 70 31 5f 70 oto l_cleanup1_p
1ca0: 75 73 68 3b 0a 2b 23 20 20 20 64 65 66 69 6e 65 ush;.+# define
1cb0: 20 43 4c 45 41 4e 55 50 32 28 29 09 09 67 6f 74 CLEANUP2()..got
1cc0: 6f 20 6c 5f 63 6c 65 61 6e 75 70 32 3b 0a 2b 23 o l_cleanup2;.+#
1cd0: 20 20 20 64 65 66 69 6e 65 20 43 4c 45 41 4e 55 define CLEANU
1ce0: 50 31 28 29 09 09 67 6f 74 6f 20 6c 5f 63 6c 65 P1()..goto l_cle
1cf0: 61 6e 75 70 31 3b 0a 2b 23 20 20 20 64 65 66 69 anup1;.+# defi
1d00: 6e 65 20 43 4c 45 41 4e 55 50 56 5f 50 55 53 48 ne CLEANUPV_PUSH
1d10: 28 29 09 67 6f 74 6f 20 6c 5f 63 6c 65 61 6e 75 ().goto l_cleanu
1d20: 70 56 5f 70 75 73 68 3b 0a 2b 23 20 20 20 64 65 pV_push;.+# de
1d30: 66 69 6e 65 20 43 4c 45 41 4e 55 50 56 28 29 09 fine CLEANUPV().
1d40: 09 67 6f 74 6f 20 6c 5f 63 6c 65 61 6e 75 70 56 .goto l_cleanupV
1d50: 3b 0a 2b 23 20 20 20 64 65 66 69 6e 65 20 4e 45 ;.+# define NE
1d60: 58 54 5f 49 4e 53 54 5f 43 4c 45 41 4e 55 50 28 XT_INST_CLEANUP(
1d70: 29 20 5c 0a 2b 09 6c 5f 63 6c 65 61 6e 75 70 56 ) \.+.l_cleanupV
1d80: 5f 70 75 73 68 3a 20 20 43 4c 45 41 4e 55 50 56 _push: CLEANUPV
1d90: 5f 50 55 53 48 5f 4c 28 6c 5f 63 6c 65 61 6e 75 _PUSH_L(l_cleanu
1da0: 70 31 5f 70 75 73 68 3a 2c 20 6c 5f 63 6c 65 61 p1_push:, l_clea
1db0: 6e 75 70 32 5f 70 75 73 68 3a 29 3b 5c 0a 2b 09 nup2_push:);\.+.
1dc0: 67 6f 74 6f 20 6c 5f 63 6c 65 61 6e 75 70 5f 64 goto l_cleanup_d
1dd0: 6f 6e 65 3b 5c 0a 2b 09 6c 5f 63 6c 65 61 6e 75 one;\.+.l_cleanu
1de0: 70 56 3a 09 20 20 43 4c 45 41 4e 55 50 56 5f 4c pV:. CLEANUPV_L
1df0: 28 6c 5f 63 6c 65 61 6e 75 70 31 3a 2c 20 6c 5f (l_cleanup1:, l_
1e00: 63 6c 65 61 6e 75 70 32 3a 29 3b 5c 0a 2b 09 6c cleanup2:);\.+.l
1e10: 5f 63 6c 65 61 6e 75 70 5f 64 6f 6e 65 3a 0a 2b _cleanup_done:.+
1e20: 23 65 6e 64 69 66 0a 2b 0a 2b 2f 2a 0a 20 20 2a #endif.+.+/*. *
1e30: 20 54 68 65 20 6e 65 77 20 6d 61 63 72 6f 20 66 The new macro f
1e40: 6f 72 20 65 6e 64 69 6e 67 20 61 6e 20 69 6e 73 or ending an ins
1e50: 74 72 75 63 74 69 6f 6e 3b 20 6e 6f 74 65 20 74 truction; note t
1e60: 68 61 74 20 61 20 72 65 61 73 6f 6e 61 62 6c 65 hat a reasonable
1e70: 20 43 2d 6f 70 74 69 6d 69 73 65 72 0a 20 20 2a C-optimiser. *
1e80: 20 77 69 6c 6c 20 72 65 73 6f 6c 76 65 20 61 6c will resolve al
1e90: 6c 20 62 72 61 6e 63 68 65 73 20 61 74 20 63 6f l branches at co
1ea0: 6d 70 69 6c 65 20 74 69 6d 65 2e 20 28 72 65 73 mpile time. (res
1eb0: 75 6c 74 29 20 69 73 20 61 6c 77 61 79 73 20 61 ult) is always a
1ec0: 20 63 6f 6e 73 74 61 6e 74 3b 0a 20 20 2a 20 74 constant;. * t
1ed0: 68 65 20 6d 61 63 72 6f 20 4e 45 58 54 5f 49 4e he macro NEXT_IN
1ee0: 53 54 5f 46 20 68 61 6e 64 6c 65 73 20 63 6f 6e ST_F handles con
1ef0: 73 74 61 6e 74 20 28 6e 43 6c 65 61 6e 75 70 29 stant (nCleanup)
1f00: 2c 20 4e 45 58 54 5f 49 4e 53 54 5f 56 20 69 73 , NEXT_INST_V is
1f10: 20 72 65 73 6f 6c 76 65 64 0a 40 40 20 2d 32 31 resolved.@@ -21
1f20: 30 2c 32 35 20 2b 34 37 31 2c 32 35 20 40 40 20 0,25 +471,25 @@
1f30: 56 61 72 48 61 73 68 43 72 65 61 74 65 56 61 72 VarHashCreateVar
1f40: 28 0a 20 09 20 20 20 20 7d 5c 0a 20 09 7d 20 5c (. . }\. .} \
1f50: 0a 20 09 70 63 20 2b 3d 20 28 70 63 41 64 6a 75 . .pc += (pcAdju
1f60: 73 74 6d 65 6e 74 29 3b 5c 0a 2d 09 67 6f 74 6f stment);\.-.goto
1f70: 20 63 6c 65 61 6e 75 70 30 3b 5c 0a 2d 20 20 20 cleanup0;\.-
1f80: 20 7d 20 65 6c 73 65 20 69 66 20 28 72 65 73 75 } else if (resu
1f90: 6c 74 48 61 6e 64 6c 69 6e 67 20 21 3d 20 30 29 ltHandling != 0)
1fa0: 20 7b 5c 0a 2b 20 20 20 20 7d 20 65 6c 73 65 20 {\.+ } else
1fb0: 69 66 20 28 72 65 73 75 6c 74 48 61 6e 64 6c 69 if (resultHandli
1fc0: 6e 67 29 20 7b 5c 0a 20 09 69 66 20 28 28 72 65 ng) {\. .if ((re
1fd0: 73 75 6c 74 48 61 6e 64 6c 69 6e 67 29 20 3e 20 sultHandling) >
1fe0: 30 29 20 7b 5c 0a 20 09 20 20 20 20 54 63 6c 5f 0) {\. . Tcl_
1ff0: 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 6f 62 6a IncrRefCount(obj
2000: 52 65 73 75 6c 74 50 74 72 29 3b 5c 0a 20 09 7d ResultPtr);\. .}
2010: 5c 0a 20 09 70 63 20 2b 3d 20 28 70 63 41 64 6a \. .pc += (pcAdj
2020: 75 73 74 6d 65 6e 74 29 3b 5c 0a 20 09 73 77 69 ustment);\. .swi
2030: 74 63 68 20 28 6e 43 6c 65 61 6e 75 70 29 20 7b tch (nCleanup) {
2040: 5c 0a 2d 09 20 20 20 20 63 61 73 65 20 31 3a 20 \.-. case 1:
2050: 67 6f 74 6f 20 63 6c 65 61 6e 75 70 31 5f 70 75 goto cleanup1_pu
2060: 73 68 4f 62 6a 52 65 73 75 6c 74 50 74 72 3b 5c shObjResultPtr;\
2070: 0a 2d 09 20 20 20 20 63 61 73 65 20 32 3a 20 67 .-. case 2: g
2080: 6f 74 6f 20 63 6c 65 61 6e 75 70 32 5f 70 75 73 oto cleanup2_pus
2090: 68 4f 62 6a 52 65 73 75 6c 74 50 74 72 3b 5c 0a hObjResultPtr;\.
20a0: 20 09 20 20 20 20 64 65 66 61 75 6c 74 3a 20 54 . default: T
20b0: 63 6c 5f 50 61 6e 69 63 28 22 62 61 64 20 75 73 cl_Panic("bad us
20c0: 61 67 65 20 6f 66 20 6d 61 63 72 6f 20 4e 45 58 age of macro NEX
20d0: 54 5f 49 4e 53 54 5f 46 22 29 3b 5c 0a 2b 09 20 T_INST_F");\.+.
20e0: 20 20 20 63 61 73 65 20 32 3a 20 43 4c 45 41 4e case 2: CLEAN
20f0: 55 50 32 5f 50 55 53 48 28 29 3b 5c 0a 2b 09 20 UP2_PUSH();\.+.
2100: 20 20 20 63 61 73 65 20 31 3a 20 43 4c 45 41 4e case 1: CLEAN
2110: 55 50 31 5f 50 55 53 48 28 29 3b 5c 0a 20 09 7d UP1_PUSH();\. .}
2120: 5c 0a 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 5c \. } else {\
2130: 0a 20 09 70 63 20 2b 3d 20 28 70 63 41 64 6a 75 . .pc += (pcAdju
2140: 73 74 6d 65 6e 74 29 3b 5c 0a 20 09 73 77 69 74 stment);\. .swit
2150: 63 68 20 28 6e 43 6c 65 61 6e 75 70 29 20 7b 5c ch (nCleanup) {\
2160: 0a 2d 09 20 20 20 20 63 61 73 65 20 31 3a 20 67 .-. case 1: g
2170: 6f 74 6f 20 63 6c 65 61 6e 75 70 31 3b 5c 0a 2d oto cleanup1;\.-
2180: 09 20 20 20 20 63 61 73 65 20 32 3a 20 67 6f 74 . case 2: got
2190: 6f 20 63 6c 65 61 6e 75 70 32 3b 5c 0a 20 09 20 o cleanup2;\. .
21a0: 20 20 20 64 65 66 61 75 6c 74 3a 20 54 63 6c 5f default: Tcl_
21b0: 50 61 6e 69 63 28 22 62 61 64 20 75 73 61 67 65 Panic("bad usage
21c0: 20 6f 66 20 6d 61 63 72 6f 20 4e 45 58 54 5f 49 of macro NEXT_I
21d0: 4e 53 54 5f 46 22 29 3b 5c 0a 2b 09 20 20 20 20 NST_F");\.+.
21e0: 63 61 73 65 20 32 3a 20 43 4c 45 41 4e 55 50 32 case 2: CLEANUP2
21f0: 28 29 3b 5c 0a 2b 09 20 20 20 20 63 61 73 65 20 ();\.+. case
2200: 31 3a 20 43 4c 45 41 4e 55 50 31 28 29 3b 5c 0a 1: CLEANUP1();\.
2210: 20 09 7d 5c 0a 2d 20 20 20 20 7d 0a 2b 20 20 20 .}\.- }.+
2220: 20 7d 5c 0a 2b 20 20 20 20 4e 45 58 54 5f 49 4e }\.+ NEXT_IN
2230: 53 54 28 29 3b 0a 20 0a 20 23 64 65 66 69 6e 65 ST();. . #define
2240: 20 4e 45 58 54 5f 49 4e 53 54 5f 56 28 70 63 41 NEXT_INST_V(pcA
2250: 64 6a 75 73 74 6d 65 6e 74 2c 20 6e 43 6c 65 61 djustment, nClea
2260: 6e 75 70 2c 20 72 65 73 75 6c 74 48 61 6e 64 6c nup, resultHandl
2270: 69 6e 67 29 20 5c 0a 20 20 20 20 20 70 63 20 2b ing) \. pc +
2280: 3d 20 28 70 63 41 64 6a 75 73 74 6d 65 6e 74 29 = (pcAdjustment)
2290: 3b 5c 0a 40 40 20 2d 32 33 37 2c 31 30 20 2b 34 ;\.@@ -237,10 +4
22a0: 39 38 2c 31 31 20 40 40 20 56 61 72 48 61 73 68 98,11 @@ VarHash
22b0: 43 72 65 61 74 65 56 61 72 28 0a 20 09 69 66 20 CreateVar(. .if
22c0: 28 28 72 65 73 75 6c 74 48 61 6e 64 6c 69 6e 67 ((resultHandling
22d0: 29 20 3e 20 30 29 20 7b 5c 0a 20 09 20 20 20 20 ) > 0) {\. .
22e0: 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 Tcl_IncrRefCount
22f0: 28 6f 62 6a 52 65 73 75 6c 74 50 74 72 29 3b 5c (objResultPtr);\
2300: 0a 20 09 7d 5c 0a 2d 09 67 6f 74 6f 20 63 6c 65 . .}\.-.goto cle
2310: 61 6e 75 70 56 5f 70 75 73 68 4f 62 6a 52 65 73 anupV_pushObjRes
2320: 75 6c 74 50 74 72 3b 5c 0a 2b 09 43 4c 45 41 4e ultPtr;\.+.CLEAN
2330: 55 50 56 5f 50 55 53 48 28 29 3b 5c 0a 20 20 20 UPV_PUSH();\.
2340: 20 20 7d 20 65 6c 73 65 20 7b 5c 0a 2d 09 67 6f } else {\.-.go
2350: 74 6f 20 63 6c 65 61 6e 75 70 56 3b 5c 0a 2d 20 to cleanupV;\.-
2360: 20 20 20 7d 0a 2b 09 43 4c 45 41 4e 55 50 56 28 }.+.CLEANUPV(
2370: 29 3b 5c 0a 2b 20 20 20 20 7d 5c 0a 2b 20 20 20 );\.+ }\.+
2380: 20 4e 45 58 54 5f 49 4e 53 54 28 29 3b 0a 20 0a NEXT_INST();. .
2390: 20 2f 2a 0a 20 20 2a 20 4d 61 63 72 6f 73 20 75 /*. * Macros u
23a0: 73 65 64 20 74 6f 20 63 61 63 68 65 20 6f 66 74 sed to cache oft
23b0: 65 6e 2d 72 65 66 65 72 65 6e 63 65 64 20 54 63 en-referenced Tc
23c0: 6c 20 65 76 61 6c 75 61 74 69 6f 6e 20 73 74 61 l evaluation sta
23d0: 63 6b 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 40 ck information.@
23e0: 40 20 2d 31 35 38 34 2c 36 20 2b 31 38 34 36 2c @ -1584,6 +1846,
23f0: 38 31 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 81 @@ TclExecute
2400: 42 79 74 65 43 6f 64 65 28 0a 20 23 65 6e 64 69 ByteCode(. #endi
2410: 66 0a 20 20 20 20 20 63 68 61 72 20 2a 63 75 72 f. char *cur
2420: 49 6e 73 74 4e 61 6d 65 20 3d 20 4e 55 4c 4c 3b InstName = NULL;
2430: 0a 20 0a 2b 23 69 66 20 55 53 45 5f 43 4f 4d 50 . .+#if USE_COMP
2440: 55 54 45 44 5f 47 4f 54 4f 0a 2b 0a 2b 20 20 20 UTED_GOTO.+.+
2450: 20 2f 2a 0a 2b 20 20 20 20 20 2a 20 49 6e 73 74 /*.+ * Inst
2460: 72 75 63 74 69 6f 6e 20 6a 75 6d 70 74 61 62 6c ruction jumptabl
2470: 65 20 66 6f 72 20 63 6f 6d 70 75 74 65 64 20 67 e for computed g
2480: 6f 74 6f 20 64 69 73 70 61 74 63 68 2c 20 6e 65 oto dispatch, ne
2490: 65 64 73 20 74 6f 20 62 65 20 6b 65 70 74 0a 2b eds to be kept.+
24a0: 20 20 20 20 20 2a 20 69 6e 20 73 79 6e 63 20 77 * in sync w
24b0: 69 74 68 20 69 6e 73 74 72 75 63 74 69 6f 6e 20 ith instruction
24c0: 6c 69 73 74 20 69 6e 20 74 63 6c 43 6f 6d 70 69 list in tclCompi
24d0: 6c 65 2e 68 2e 0a 2b 20 20 20 20 20 2a 2f 0a 2b le.h..+ */.+
24e0: 0a 2b 20 20 20 20 73 74 61 74 69 63 20 63 6f 6e .+ static con
24f0: 73 74 20 70 74 72 64 69 66 66 5f 74 20 69 6e 73 st ptrdiff_t ins
2500: 74 4a 75 6d 70 74 61 62 6c 65 5b 5d 20 3d 20 7b tJumptable[] = {
2510: 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 44 4f 4e .+.CADR(INST_DON
2520: 45 29 2c 09 09 43 41 44 52 28 49 4e 53 54 5f 50 E),..CADR(INST_P
2530: 55 53 48 31 29 2c 0a 2b 09 43 41 44 52 28 49 4e USH1),.+.CADR(IN
2540: 53 54 5f 50 55 53 48 34 29 2c 09 09 43 41 44 52 ST_PUSH4),..CADR
2550: 28 49 4e 53 54 5f 50 4f 50 29 2c 0a 2b 09 43 41 (INST_POP),.+.CA
2560: 44 52 28 49 4e 53 54 5f 44 55 50 29 2c 09 09 09 DR(INST_DUP),...
2570: 43 41 44 52 28 49 4e 53 54 5f 43 4f 4e 43 41 54 CADR(INST_CONCAT
2580: 31 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 1),.+.CADR(INST_
2590: 49 4e 56 4f 4b 45 5f 53 54 4b 31 29 2c 09 09 43 INVOKE_STK1),..C
25a0: 41 44 52 28 49 4e 53 54 5f 49 4e 56 4f 4b 45 5f ADR(INST_INVOKE_
25b0: 53 54 4b 34 29 2c 0a 2b 09 43 41 44 52 28 49 4e STK4),.+.CADR(IN
25c0: 53 54 5f 45 56 41 4c 5f 53 54 4b 29 2c 09 09 43 ST_EVAL_STK),..C
25d0: 41 44 52 28 49 4e 53 54 5f 45 58 50 52 5f 53 54 ADR(INST_EXPR_ST
25e0: 4b 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f K),.+.CADR(INST_
25f0: 4c 4f 41 44 5f 53 43 41 4c 41 52 31 29 2c 09 43 LOAD_SCALAR1),.C
2600: 41 44 52 28 49 4e 53 54 5f 4c 4f 41 44 5f 53 43 ADR(INST_LOAD_SC
2610: 41 4c 41 52 34 29 2c 0a 2b 09 43 41 44 52 28 49 ALAR4),.+.CADR(I
2620: 4e 53 54 5f 4c 4f 41 44 5f 53 43 41 4c 41 52 5f NST_LOAD_SCALAR_
2630: 53 54 4b 29 2c 09 43 41 44 52 28 49 4e 53 54 5f STK),.CADR(INST_
2640: 4c 4f 41 44 5f 41 52 52 41 59 31 29 2c 0a 2b 09 LOAD_ARRAY1),.+.
2650: 43 41 44 52 28 49 4e 53 54 5f 4c 4f 41 44 5f 41 CADR(INST_LOAD_A
2660: 52 52 41 59 34 29 2c 09 09 43 41 44 52 28 49 4e RRAY4),..CADR(IN
2670: 53 54 5f 4c 4f 41 44 5f 41 52 52 41 59 5f 53 54 ST_LOAD_ARRAY_ST
2680: 4b 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f K),.+.CADR(INST_
2690: 4c 4f 41 44 5f 53 54 4b 29 2c 09 09 43 41 44 52 LOAD_STK),..CADR
26a0: 28 49 4e 53 54 5f 53 54 4f 52 45 5f 53 43 41 4c (INST_STORE_SCAL
26b0: 41 52 31 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 AR1),.+.CADR(INS
26c0: 54 5f 53 54 4f 52 45 5f 53 43 41 4c 41 52 34 29 T_STORE_SCALAR4)
26d0: 2c 09 43 41 44 52 28 49 4e 53 54 5f 53 54 4f 52 ,.CADR(INST_STOR
26e0: 45 5f 53 43 41 4c 41 52 5f 53 54 4b 29 2c 0a 2b E_SCALAR_STK),.+
26f0: 09 43 41 44 52 28 49 4e 53 54 5f 53 54 4f 52 45 .CADR(INST_STORE
2700: 5f 41 52 52 41 59 31 29 2c 09 43 41 44 52 28 49 _ARRAY1),.CADR(I
2710: 4e 53 54 5f 53 54 4f 52 45 5f 41 52 52 41 59 34 NST_STORE_ARRAY4
2720: 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 53 ),.+.CADR(INST_S
2730: 54 4f 52 45 5f 41 52 52 41 59 5f 53 54 4b 29 2c TORE_ARRAY_STK),
2740: 09 43 41 44 52 28 49 4e 53 54 5f 53 54 4f 52 45 .CADR(INST_STORE
2750: 5f 53 54 4b 29 2c 0a 2b 09 43 41 44 52 28 49 4e _STK),.+.CADR(IN
2760: 53 54 5f 49 4e 43 52 5f 53 43 41 4c 41 52 31 29 ST_INCR_SCALAR1)
2770: 2c 09 43 41 44 52 28 49 4e 53 54 5f 49 4e 43 52 ,.CADR(INST_INCR
2780: 5f 53 43 41 4c 41 52 5f 53 54 4b 29 2c 0a 2b 09 _SCALAR_STK),.+.
2790: 43 41 44 52 28 49 4e 53 54 5f 49 4e 43 52 5f 41 CADR(INST_INCR_A
27a0: 52 52 41 59 31 29 2c 09 09 43 41 44 52 28 49 4e RRAY1),..CADR(IN
27b0: 53 54 5f 49 4e 43 52 5f 41 52 52 41 59 5f 53 54 ST_INCR_ARRAY_ST
27c0: 4b 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f K),.+.CADR(INST_
27d0: 49 4e 43 52 5f 53 54 4b 29 2c 09 09 43 41 44 52 INCR_STK),..CADR
27e0: 28 49 4e 53 54 5f 49 4e 43 52 5f 53 43 41 4c 41 (INST_INCR_SCALA
27f0: 52 31 5f 49 4d 4d 29 2c 0a 2b 09 43 41 44 52 28 R1_IMM),.+.CADR(
2800: 49 4e 53 54 5f 49 4e 43 52 5f 53 43 41 4c 41 52 INST_INCR_SCALAR
2810: 5f 53 54 4b 5f 49 4d 4d 29 2c 09 43 41 44 52 28 _STK_IMM),.CADR(
2820: 49 4e 53 54 5f 49 4e 43 52 5f 41 52 52 41 59 31 INST_INCR_ARRAY1
2830: 5f 49 4d 4d 29 2c 0a 2b 09 43 41 44 52 28 49 4e _IMM),.+.CADR(IN
2840: 53 54 5f 49 4e 43 52 5f 41 52 52 41 59 5f 53 54 ST_INCR_ARRAY_ST
2850: 4b 5f 49 4d 4d 29 2c 09 43 41 44 52 28 49 4e 53 K_IMM),.CADR(INS
2860: 54 5f 49 4e 43 52 5f 53 54 4b 5f 49 4d 4d 29 2c T_INCR_STK_IMM),
2870: 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 4a 55 4d .+.CADR(INST_JUM
2880: 50 31 29 2c 09 09 43 41 44 52 28 49 4e 53 54 5f P1),..CADR(INST_
2890: 4a 55 4d 50 34 29 2c 0a 2b 09 43 41 44 52 28 49 JUMP4),.+.CADR(I
28a0: 4e 53 54 5f 4a 55 4d 50 5f 54 52 55 45 31 29 2c NST_JUMP_TRUE1),
28b0: 09 09 43 41 44 52 28 49 4e 53 54 5f 4a 55 4d 50 ..CADR(INST_JUMP
28c0: 5f 54 52 55 45 34 29 2c 0a 2b 09 43 41 44 52 28 _TRUE4),.+.CADR(
28d0: 49 4e 53 54 5f 4a 55 4d 50 5f 46 41 4c 53 45 31 INST_JUMP_FALSE1
28e0: 29 2c 09 09 43 41 44 52 28 49 4e 53 54 5f 4a 55 ),..CADR(INST_JU
28f0: 4d 50 5f 46 41 4c 53 45 34 29 2c 0a 2b 09 43 41 MP_FALSE4),.+.CA
2900: 44 52 28 49 4e 53 54 5f 4c 4f 52 29 2c 09 09 09 DR(INST_LOR),...
2910: 43 41 44 52 28 49 4e 53 54 5f 4c 41 4e 44 29 2c CADR(INST_LAND),
2920: 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 42 49 54 .+.CADR(INST_BIT
2930: 4f 52 29 2c 09 09 43 41 44 52 28 49 4e 53 54 5f OR),..CADR(INST_
2940: 42 49 54 58 4f 52 29 2c 0a 2b 09 43 41 44 52 28 BITXOR),.+.CADR(
2950: 49 4e 53 54 5f 42 49 54 41 4e 44 29 2c 09 09 43 INST_BITAND),..C
2960: 41 44 52 28 49 4e 53 54 5f 45 51 29 2c 0a 2b 09 ADR(INST_EQ),.+.
2970: 43 41 44 52 28 49 4e 53 54 5f 4e 45 51 29 2c 09 CADR(INST_NEQ),.
2980: 09 09 43 41 44 52 28 49 4e 53 54 5f 4c 54 29 2c ..CADR(INST_LT),
2990: 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 47 54 29 .+.CADR(INST_GT)
29a0: 2c 09 09 09 43 41 44 52 28 49 4e 53 54 5f 4c 45 ,...CADR(INST_LE
29b0: 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 47 ),.+.CADR(INST_G
29c0: 45 29 2c 09 09 09 43 41 44 52 28 49 4e 53 54 5f E),...CADR(INST_
29d0: 4c 53 48 49 46 54 29 2c 0a 2b 09 43 41 44 52 28 LSHIFT),.+.CADR(
29e0: 49 4e 53 54 5f 52 53 48 49 46 54 29 2c 09 09 43 INST_RSHIFT),..C
29f0: 41 44 52 28 49 4e 53 54 5f 41 44 44 29 2c 0a 2b ADR(INST_ADD),.+
2a00: 09 43 41 44 52 28 49 4e 53 54 5f 53 55 42 29 2c .CADR(INST_SUB),
2a10: 09 09 09 43 41 44 52 28 49 4e 53 54 5f 4d 55 4c ...CADR(INST_MUL
2a20: 54 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f T),.+.CADR(INST_
2a30: 44 49 56 29 2c 09 09 09 43 41 44 52 28 49 4e 53 DIV),...CADR(INS
2a40: 54 5f 4d 4f 44 29 2c 0a 2b 09 43 41 44 52 28 49 T_MOD),.+.CADR(I
2a50: 4e 53 54 5f 55 50 4c 55 53 29 2c 09 09 43 41 44 NST_UPLUS),..CAD
2a60: 52 28 49 4e 53 54 5f 55 4d 49 4e 55 53 29 2c 0a R(INST_UMINUS),.
2a70: 2b 09 43 41 44 52 28 49 4e 53 54 5f 42 49 54 4e +.CADR(INST_BITN
2a80: 4f 54 29 2c 09 09 43 41 44 52 28 49 4e 53 54 5f OT),..CADR(INST_
2a90: 4c 4e 4f 54 29 2c 0a 2b 09 43 41 44 52 28 49 4e LNOT),.+.CADR(IN
2aa0: 53 54 5f 43 41 4c 4c 5f 42 55 49 4c 54 49 4e 5f ST_CALL_BUILTIN_
2ab0: 46 55 4e 43 31 29 2c 09 43 41 44 52 28 49 4e 53 FUNC1),.CADR(INS
2ac0: 54 5f 43 41 4c 4c 5f 46 55 4e 43 31 29 2c 0a 2b T_CALL_FUNC1),.+
2ad0: 09 43 41 44 52 28 49 4e 53 54 5f 54 52 59 5f 43 .CADR(INST_TRY_C
2ae0: 56 54 5f 54 4f 5f 4e 55 4d 45 52 49 43 29 2c 09 VT_TO_NUMERIC),.
2af0: 43 41 44 52 28 49 4e 53 54 5f 42 52 45 41 4b 29 CADR(INST_BREAK)
2b00: 2c 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 43 4f ,.+.CADR(INST_CO
2b10: 4e 54 49 4e 55 45 29 2c 09 09 43 41 44 52 28 49 NTINUE),..CADR(I
2b20: 4e 53 54 5f 46 4f 52 45 41 43 48 5f 53 54 41 52 NST_FOREACH_STAR
2b30: 54 34 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 54 T4),.+.CADR(INST
2b40: 5f 46 4f 52 45 41 43 48 5f 53 54 45 50 34 29 2c _FOREACH_STEP4),
2b50: 09 43 41 44 52 28 49 4e 53 54 5f 42 45 47 49 4e .CADR(INST_BEGIN
2b60: 5f 43 41 54 43 48 34 29 2c 0a 2b 09 43 41 44 52 _CATCH4),.+.CADR
2b70: 28 49 4e 53 54 5f 45 4e 44 5f 43 41 54 43 48 29 (INST_END_CATCH)
2b80: 2c 09 09 43 41 44 52 28 49 4e 53 54 5f 50 55 53 ,..CADR(INST_PUS
2b90: 48 5f 52 45 53 55 4c 54 29 2c 0a 2b 09 43 41 44 H_RESULT),.+.CAD
2ba0: 52 28 49 4e 53 54 5f 50 55 53 48 5f 52 45 54 55 R(INST_PUSH_RETU
2bb0: 52 4e 5f 43 4f 44 45 29 2c 09 43 41 44 52 28 49 RN_CODE),.CADR(I
2bc0: 4e 53 54 5f 53 54 52 5f 45 51 29 2c 0a 2b 09 43 NST_STR_EQ),.+.C
2bd0: 41 44 52 28 49 4e 53 54 5f 53 54 52 5f 4e 45 51 ADR(INST_STR_NEQ
2be0: 29 2c 09 09 43 41 44 52 28 49 4e 53 54 5f 53 54 ),..CADR(INST_ST
2bf0: 52 5f 43 4d 50 29 2c 0a 2b 09 43 41 44 52 28 49 R_CMP),.+.CADR(I
2c00: 4e 53 54 5f 53 54 52 5f 4c 45 4e 29 2c 09 09 43 NST_STR_LEN),..C
2c10: 41 44 52 28 49 4e 53 54 5f 53 54 52 5f 49 4e 44 ADR(INST_STR_IND
2c20: 45 58 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 54 EX),.+.CADR(INST
2c30: 5f 53 54 52 5f 4d 41 54 43 48 29 2c 09 09 43 41 _STR_MATCH),..CA
2c40: 44 52 28 49 4e 53 54 5f 4c 49 53 54 29 2c 0a 2b DR(INST_LIST),.+
2c50: 09 43 41 44 52 28 49 4e 53 54 5f 4c 49 53 54 5f .CADR(INST_LIST_
2c60: 49 4e 44 45 58 29 2c 09 09 43 41 44 52 28 49 4e INDEX),..CADR(IN
2c70: 53 54 5f 4c 49 53 54 5f 4c 45 4e 47 54 48 29 2c ST_LIST_LENGTH),
2c80: 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 41 50 50 .+.CADR(INST_APP
2c90: 45 4e 44 5f 53 43 41 4c 41 52 31 29 2c 09 43 41 END_SCALAR1),.CA
2ca0: 44 52 28 49 4e 53 54 5f 41 50 50 45 4e 44 5f 53 DR(INST_APPEND_S
2cb0: 43 41 4c 41 52 34 29 2c 0a 2b 09 43 41 44 52 28 CALAR4),.+.CADR(
2cc0: 49 4e 53 54 5f 41 50 50 45 4e 44 5f 41 52 52 41 INST_APPEND_ARRA
2cd0: 59 31 29 2c 09 43 41 44 52 28 49 4e 53 54 5f 41 Y1),.CADR(INST_A
2ce0: 50 50 45 4e 44 5f 41 52 52 41 59 34 29 2c 0a 2b PPEND_ARRAY4),.+
2cf0: 09 43 41 44 52 28 49 4e 53 54 5f 41 50 50 45 4e .CADR(INST_APPEN
2d00: 44 5f 41 52 52 41 59 5f 53 54 4b 29 2c 09 43 41 D_ARRAY_STK),.CA
2d10: 44 52 28 49 4e 53 54 5f 41 50 50 45 4e 44 5f 53 DR(INST_APPEND_S
2d20: 54 4b 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 54 TK),.+.CADR(INST
2d30: 5f 4c 41 50 50 45 4e 44 5f 53 43 41 4c 41 52 31 _LAPPEND_SCALAR1
2d40: 29 2c 09 43 41 44 52 28 49 4e 53 54 5f 4c 41 50 ),.CADR(INST_LAP
2d50: 50 45 4e 44 5f 53 43 41 4c 41 52 34 29 2c 0a 2b PEND_SCALAR4),.+
2d60: 09 43 41 44 52 28 49 4e 53 54 5f 4c 41 50 50 45 .CADR(INST_LAPPE
2d70: 4e 44 5f 41 52 52 41 59 31 29 2c 09 43 41 44 52 ND_ARRAY1),.CADR
2d80: 28 49 4e 53 54 5f 4c 41 50 50 45 4e 44 5f 41 52 (INST_LAPPEND_AR
2d90: 52 41 59 34 29 2c 0a 2b 09 43 41 44 52 28 49 4e RAY4),.+.CADR(IN
2da0: 53 54 5f 4c 41 50 50 45 4e 44 5f 41 52 52 41 59 ST_LAPPEND_ARRAY
2db0: 5f 53 54 4b 29 2c 09 43 41 44 52 28 49 4e 53 54 _STK),.CADR(INST
2dc0: 5f 4c 41 50 50 45 4e 44 5f 53 54 4b 29 2c 0a 2b _LAPPEND_STK),.+
2dd0: 09 43 41 44 52 28 49 4e 53 54 5f 4c 49 53 54 5f .CADR(INST_LIST_
2de0: 49 4e 44 45 58 5f 4d 55 4c 54 49 29 2c 09 43 41 INDEX_MULTI),.CA
2df0: 44 52 28 49 4e 53 54 5f 4f 56 45 52 29 2c 0a 2b DR(INST_OVER),.+
2e00: 09 43 41 44 52 28 49 4e 53 54 5f 4c 53 45 54 5f .CADR(INST_LSET_
2e10: 4c 49 53 54 29 2c 09 09 43 41 44 52 28 49 4e 53 LIST),..CADR(INS
2e20: 54 5f 4c 53 45 54 5f 46 4c 41 54 29 2c 0a 2b 09 T_LSET_FLAT),.+.
2e30: 43 41 44 52 28 49 4e 53 54 5f 52 45 54 55 52 4e CADR(INST_RETURN
2e40: 5f 49 4d 4d 29 2c 09 09 43 41 44 52 28 49 4e 53 _IMM),..CADR(INS
2e50: 54 5f 45 58 50 4f 4e 29 2c 0a 2b 09 43 41 44 52 T_EXPON),.+.CADR
2e60: 28 49 4e 53 54 5f 45 58 50 41 4e 44 5f 53 54 41 (INST_EXPAND_STA
2e70: 52 54 29 2c 09 43 41 44 52 28 49 4e 53 54 5f 45 RT),.CADR(INST_E
2e80: 58 50 41 4e 44 5f 53 54 4b 54 4f 50 29 2c 0a 2b XPAND_STKTOP),.+
2e90: 09 43 41 44 52 28 49 4e 53 54 5f 49 4e 56 4f 4b .CADR(INST_INVOK
2ea0: 45 5f 45 58 50 41 4e 44 45 44 29 2c 09 43 41 44 E_EXPANDED),.CAD
2eb0: 52 28 49 4e 53 54 5f 4c 49 53 54 5f 49 4e 44 45 R(INST_LIST_INDE
2ec0: 58 5f 49 4d 4d 29 2c 0a 2b 09 43 41 44 52 28 49 X_IMM),.+.CADR(I
2ed0: 4e 53 54 5f 4c 49 53 54 5f 52 41 4e 47 45 5f 49 NST_LIST_RANGE_I
2ee0: 4d 4d 29 2c 09 43 41 44 52 28 49 4e 53 54 5f 53 MM),.CADR(INST_S
2ef0: 54 41 52 54 5f 43 4d 44 29 2c 0a 2b 09 43 41 44 TART_CMD),.+.CAD
2f00: 52 28 49 4e 53 54 5f 4c 49 53 54 5f 49 4e 29 2c R(INST_LIST_IN),
2f10: 09 09 43 41 44 52 28 49 4e 53 54 5f 4c 49 53 54 ..CADR(INST_LIST
2f20: 5f 4e 4f 54 5f 49 4e 29 2c 0a 2b 09 43 41 44 52 _NOT_IN),.+.CADR
2f30: 28 49 4e 53 54 5f 50 55 53 48 5f 52 45 54 55 52 (INST_PUSH_RETUR
2f40: 4e 5f 4f 50 54 49 4f 4e 53 29 2c 09 43 41 44 52 N_OPTIONS),.CADR
2f50: 28 49 4e 53 54 5f 52 45 54 55 52 4e 5f 53 54 4b (INST_RETURN_STK
2f60: 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 44 ),.+.CADR(INST_D
2f70: 49 43 54 5f 47 45 54 29 2c 09 09 43 41 44 52 28 ICT_GET),..CADR(
2f80: 49 4e 53 54 5f 44 49 43 54 5f 53 45 54 29 2c 0a INST_DICT_SET),.
2f90: 2b 09 43 41 44 52 28 49 4e 53 54 5f 44 49 43 54 +.CADR(INST_DICT
2fa0: 5f 55 4e 53 45 54 29 2c 09 09 43 41 44 52 28 49 _UNSET),..CADR(I
2fb0: 4e 53 54 5f 44 49 43 54 5f 49 4e 43 52 5f 49 4d NST_DICT_INCR_IM
2fc0: 4d 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f M),.+.CADR(INST_
2fd0: 44 49 43 54 5f 41 50 50 45 4e 44 29 2c 09 09 43 DICT_APPEND),..C
2fe0: 41 44 52 28 49 4e 53 54 5f 44 49 43 54 5f 4c 41 ADR(INST_DICT_LA
2ff0: 50 50 45 4e 44 29 2c 0a 2b 09 43 41 44 52 28 49 PPEND),.+.CADR(I
3000: 4e 53 54 5f 44 49 43 54 5f 46 49 52 53 54 29 2c NST_DICT_FIRST),
3010: 09 09 43 41 44 52 28 49 4e 53 54 5f 44 49 43 54 ..CADR(INST_DICT
3020: 5f 4e 45 58 54 29 2c 0a 2b 09 43 41 44 52 28 49 _NEXT),.+.CADR(I
3030: 4e 53 54 5f 44 49 43 54 5f 44 4f 4e 45 29 2c 09 NST_DICT_DONE),.
3040: 09 43 41 44 52 28 49 4e 53 54 5f 44 49 43 54 5f .CADR(INST_DICT_
3050: 55 50 44 41 54 45 5f 53 54 41 52 54 29 2c 0a 2b UPDATE_START),.+
3060: 09 43 41 44 52 28 49 4e 53 54 5f 44 49 43 54 5f .CADR(INST_DICT_
3070: 55 50 44 41 54 45 5f 45 4e 44 29 2c 09 43 41 44 UPDATE_END),.CAD
3080: 52 28 49 4e 53 54 5f 4a 55 4d 50 5f 54 41 42 4c R(INST_JUMP_TABL
3090: 45 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f E),.+.CADR(INST_
30a0: 55 50 56 41 52 29 2c 09 09 43 41 44 52 28 49 4e UPVAR),..CADR(IN
30b0: 53 54 5f 4e 53 55 50 56 41 52 29 2c 0a 2b 09 43 ST_NSUPVAR),.+.C
30c0: 41 44 52 28 49 4e 53 54 5f 56 41 52 49 41 42 4c ADR(INST_VARIABL
30d0: 45 29 2c 09 09 43 41 44 52 28 49 4e 53 54 5f 53 E),..CADR(INST_S
30e0: 59 4e 54 41 58 29 2c 0a 2b 09 43 41 44 52 28 49 YNTAX),.+.CADR(I
30f0: 4e 53 54 5f 52 45 56 45 52 53 45 29 2c 0a 2b 20 NST_REVERSE),.+
3100: 20 20 20 7d 3b 0a 2b 23 65 6e 64 69 66 0a 2b 0a };.+#endif.+.
3110: 20 20 20 20 20 2f 2a 0a 20 20 20 20 20 20 2a 20 /*. *
3120: 54 68 65 20 65 78 65 63 75 74 69 6f 6e 20 75 73 The execution us
3130: 65 73 20 61 20 75 6e 69 66 69 65 64 20 73 74 61 es a unified sta
3140: 63 6b 3a 20 66 69 72 73 74 20 74 68 65 20 63 61 ck: first the ca
3150: 74 63 68 20 73 74 61 63 6b 2c 20 69 6d 6d 65 64 tch stack, immed
3160: 69 61 74 65 6c 79 0a 20 20 20 20 20 20 2a 20 61 iately. * a
3170: 62 6f 76 65 20 69 74 20 61 20 43 6d 64 46 72 61 bove it a CmdFra
3180: 6d 65 2c 20 74 68 65 6e 20 74 68 65 20 65 78 65 me, then the exe
3190: 63 75 74 69 6f 6e 20 73 74 61 63 6b 2e 0a 40 40 cution stack..@@
31a0: 20 2d 31 36 33 39 2c 31 34 33 20 2b 31 39 37 36 -1639,143 +1976
31b0: 2c 39 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 ,9 @@ TclExecute
31c0: 42 79 74 65 43 6f 64 65 28 0a 20 20 20 20 20 20 ByteCode(.
31d0: 2a 20 6f 72 20 73 6f 6d 65 20 65 72 72 6f 72 2e * or some error.
31e0: 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 2d 20 20 20 . */. .-
31f0: 20 67 6f 74 6f 20 63 6c 65 61 6e 75 70 30 3b 0a goto cleanup0;.
3200: 2d 0a 2d 20 20 20 20 2f 2a 0a 2d 20 20 20 20 20 -.- /*.-
3210: 2a 20 54 61 72 67 65 74 73 20 66 6f 72 20 73 74 * Targets for st
3220: 61 6e 64 61 72 64 20 69 6e 73 74 72 75 63 74 69 andard instructi
3230: 6f 6e 20 65 6e 64 69 6e 67 73 3b 20 75 6e 72 6f on endings; unro
3240: 6c 6c 65 64 20 66 6f 72 20 73 70 65 65 64 20 69 lled for speed i
3250: 6e 20 74 68 65 0a 2d 20 20 20 20 20 2a 20 6d 6f n the.- * mo
3260: 73 74 20 66 72 65 71 75 65 6e 74 20 63 61 73 65 st frequent case
3270: 73 20 28 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 s (instructions
3280: 74 68 61 74 20 63 6f 6e 73 75 6d 65 20 75 70 20 that consume up
3290: 74 6f 20 74 77 6f 20 73 74 61 63 6b 0a 2d 20 20 to two stack.-
32a0: 20 20 20 2a 20 65 6c 65 6d 65 6e 74 73 29 2e 0a * elements)..
32b0: 2d 20 20 20 20 20 2a 0a 2d 20 20 20 20 20 2a 20 - *.- *
32c0: 54 68 69 73 20 75 73 65 64 20 74 6f 20 62 65 20 This used to be
32d0: 61 20 22 66 6f 72 28 3b 3b 29 22 20 6c 6f 6f 70 a "for(;;)" loop
32e0: 2c 20 77 69 74 68 20 65 61 63 68 20 69 6e 73 74 , with each inst
32f0: 72 75 63 74 69 6f 6e 20 64 6f 69 6e 67 20 69 74 ruction doing it
3300: 73 20 6f 77 6e 0a 2d 20 20 20 20 20 2a 20 63 6c s own.- * cl
3310: 65 61 6e 75 70 2e 0a 2d 20 20 20 20 20 2a 2f 0a eanup..- */.
3320: 2d 0a 2d 20 20 20 20 7b 0a 2d 09 54 63 6c 5f 4f -.- {.-.Tcl_O
3330: 62 6a 20 2a 76 61 6c 75 65 50 74 72 3b 0a 2d 0a bj *valuePtr;.-.
3340: 2d 20 20 20 20 63 6c 65 61 6e 75 70 56 5f 70 75 - cleanupV_pu
3350: 73 68 4f 62 6a 52 65 73 75 6c 74 50 74 72 3a 0a shObjResultPtr:.
3360: 2d 09 73 77 69 74 63 68 20 28 63 6c 65 61 6e 75 -.switch (cleanu
3370: 70 29 20 7b 0a 2d 09 63 61 73 65 20 30 3a 0a 2d p) {.-.case 0:.-
3380: 09 20 20 20 20 2a 28 2b 2b 74 6f 73 50 74 72 29 . *(++tosPtr)
3390: 20 3d 20 28 6f 62 6a 52 65 73 75 6c 74 50 74 72 = (objResultPtr
33a0: 29 3b 0a 2d 09 20 20 20 20 67 6f 74 6f 20 63 6c );.-. goto cl
33b0: 65 61 6e 75 70 30 3b 0a 2d 09 64 65 66 61 75 6c eanup0;.-.defaul
33c0: 74 3a 0a 2d 09 20 20 20 20 63 6c 65 61 6e 75 70 t:.-. cleanup
33d0: 20 2d 3d 20 32 3b 0a 2d 09 20 20 20 20 77 68 69 -= 2;.-. whi
33e0: 6c 65 20 28 63 6c 65 61 6e 75 70 2d 2d 29 20 7b le (cleanup--) {
33f0: 0a 2d 09 09 76 61 6c 75 65 50 74 72 20 3d 20 50 .-..valuePtr = P
3400: 4f 50 5f 4f 42 4a 45 43 54 28 29 3b 0a 2d 09 09 OP_OBJECT();.-..
3410: 54 63 6c 44 65 63 72 52 65 66 43 6f 75 6e 74 28 TclDecrRefCount(
3420: 76 61 6c 75 65 50 74 72 29 3b 0a 2d 09 20 20 20 valuePtr);.-.
3430: 20 7d 0a 2d 09 63 61 73 65 20 32 3a 0a 2d 09 63 }.-.case 2:.-.c
3440: 6c 65 61 6e 75 70 32 5f 70 75 73 68 4f 62 6a 52 leanup2_pushObjR
3450: 65 73 75 6c 74 50 74 72 3a 0a 2d 09 20 20 20 20 esultPtr:.-.
3460: 76 61 6c 75 65 50 74 72 20 3d 20 50 4f 50 5f 4f valuePtr = POP_O
3470: 42 4a 45 43 54 28 29 3b 0a 2d 09 20 20 20 20 54 BJECT();.-. T
3480: 63 6c 44 65 63 72 52 65 66 43 6f 75 6e 74 28 76 clDecrRefCount(v
3490: 61 6c 75 65 50 74 72 29 3b 0a 2d 09 63 61 73 65 aluePtr);.-.case
34a0: 20 31 3a 0a 2d 09 63 6c 65 61 6e 75 70 31 5f 70 1:.-.cleanup1_p
34b0: 75 73 68 4f 62 6a 52 65 73 75 6c 74 50 74 72 3a ushObjResultPtr:
34c0: 0a 2d 09 20 20 20 20 76 61 6c 75 65 50 74 72 20 .-. valuePtr
34d0: 3d 20 4f 42 4a 5f 41 54 5f 54 4f 53 3b 0a 2d 09 = OBJ_AT_TOS;.-.
34e0: 20 20 20 20 54 63 6c 44 65 63 72 52 65 66 43 6f TclDecrRefCo
34f0: 75 6e 74 28 76 61 6c 75 65 50 74 72 29 3b 0a 2d unt(valuePtr);.-
3500: 09 7d 0a 2d 09 4f 42 4a 5f 41 54 5f 54 4f 53 20 .}.-.OBJ_AT_TOS
3510: 3d 20 6f 62 6a 52 65 73 75 6c 74 50 74 72 3b 0a = objResultPtr;.
3520: 2d 09 67 6f 74 6f 20 63 6c 65 61 6e 75 70 30 3b -.goto cleanup0;
3530: 0a 2d 0a 2d 20 20 20 20 63 6c 65 61 6e 75 70 56 .-.- cleanupV
3540: 3a 0a 2d 09 73 77 69 74 63 68 20 28 63 6c 65 61 :.-.switch (clea
3550: 6e 75 70 29 20 7b 0a 2d 09 64 65 66 61 75 6c 74 nup) {.-.default
3560: 3a 0a 2d 09 20 20 20 20 63 6c 65 61 6e 75 70 20 :.-. cleanup
3570: 2d 3d 20 32 3b 0a 2d 09 20 20 20 20 77 68 69 6c -= 2;.-. whil
3580: 65 20 28 63 6c 65 61 6e 75 70 2d 2d 29 20 7b 0a e (cleanup--) {.
3590: 2d 09 09 76 61 6c 75 65 50 74 72 20 3d 20 50 4f -..valuePtr = PO
35a0: 50 5f 4f 42 4a 45 43 54 28 29 3b 0a 2d 09 09 54 P_OBJECT();.-..T
35b0: 63 6c 44 65 63 72 52 65 66 43 6f 75 6e 74 28 76 clDecrRefCount(v
35c0: 61 6c 75 65 50 74 72 29 3b 0a 2d 09 20 20 20 20 aluePtr);.-.
35d0: 7d 0a 2d 09 63 61 73 65 20 32 3a 0a 2d 09 63 6c }.-.case 2:.-.cl
35e0: 65 61 6e 75 70 32 3a 0a 2d 09 20 20 20 20 76 61 eanup2:.-. va
35f0: 6c 75 65 50 74 72 20 3d 20 50 4f 50 5f 4f 42 4a luePtr = POP_OBJ
3600: 45 43 54 28 29 3b 0a 2d 09 20 20 20 20 54 63 6c ECT();.-. Tcl
3610: 44 65 63 72 52 65 66 43 6f 75 6e 74 28 76 61 6c DecrRefCount(val
3620: 75 65 50 74 72 29 3b 0a 2d 09 63 61 73 65 20 31 uePtr);.-.case 1
3630: 3a 0a 2d 09 63 6c 65 61 6e 75 70 31 3a 0a 2d 09 :.-.cleanup1:.-.
3640: 20 20 20 20 76 61 6c 75 65 50 74 72 20 3d 20 50 valuePtr = P
3650: 4f 50 5f 4f 42 4a 45 43 54 28 29 3b 0a 2d 09 20 OP_OBJECT();.-.
3660: 20 20 20 54 63 6c 44 65 63 72 52 65 66 43 6f 75 TclDecrRefCou
3670: 6e 74 28 76 61 6c 75 65 50 74 72 29 3b 0a 2d 09 nt(valuePtr);.-.
3680: 63 61 73 65 20 30 3a 0a 2d 09 20 20 20 20 2f 2a case 0:.-. /*
3690: 0a 2d 09 20 20 20 20 20 2a 20 57 65 20 72 65 61 .-. * We rea
36a0: 6c 6c 79 20 77 61 6e 74 20 74 6f 20 64 6f 20 6e lly want to do n
36b0: 6f 74 68 69 6e 67 20 6e 6f 77 2c 20 62 75 74 20 othing now, but
36c0: 74 68 69 73 20 69 73 20 6e 65 65 64 65 64 20 66 this is needed f
36d0: 6f 72 20 73 6f 6d 65 0a 2d 09 20 20 20 20 20 2a or some.-. *
36e0: 20 63 6f 6d 70 69 6c 65 72 73 20 28 53 75 6e 50 compilers (SunP
36f0: 72 6f 20 43 43 29 2e 0a 2d 09 20 20 20 20 20 2a ro CC)..-. *
3700: 2f 0a 2d 0a 2d 09 20 20 20 20 62 72 65 61 6b 3b /.-.-. break;
3710: 0a 2d 09 7d 0a 2d 20 20 20 20 7d 0a 2d 20 63 6c .-.}.- }.- cl
3720: 65 61 6e 75 70 30 3a 0a 2d 0a 2d 23 69 66 64 65 eanup0:.-.-#ifde
3730: 66 20 54 43 4c 5f 43 4f 4d 50 49 4c 45 5f 44 45 f TCL_COMPILE_DE
3740: 42 55 47 0a 2d 20 20 20 20 2f 2a 0a 2d 20 20 20 BUG.- /*.-
3750: 20 20 2a 20 53 6b 69 70 20 74 68 65 20 73 74 61 * Skip the sta
3760: 63 6b 20 64 65 70 74 68 20 63 68 65 63 6b 20 69 ck depth check i
3770: 66 20 61 6e 20 65 78 70 61 6e 73 69 6f 6e 20 69 f an expansion i
3780: 73 20 69 6e 20 70 72 6f 67 72 65 73 73 2e 0a 2d s in progress..-
3790: 20 20 20 20 20 2a 2f 0a 2d 0a 2d 20 20 20 20 56 */.-.- V
37a0: 61 6c 69 64 61 74 65 50 63 41 6e 64 53 74 61 63 alidatePcAndStac
37b0: 6b 54 6f 70 28 63 6f 64 65 50 74 72 2c 20 70 63 kTop(codePtr, pc
37c0: 2c 20 43 55 52 52 5f 44 45 50 54 48 2c 20 30 2c , CURR_DEPTH, 0,
37d0: 0a 2d 09 20 20 20 20 2f 2a 63 68 65 63 6b 53 74 .-. /*checkSt
37e0: 61 63 6b 2a 2f 20 65 78 70 61 6e 64 4e 65 73 74 ack*/ expandNest
37f0: 4c 69 73 74 20 3d 3d 20 4e 55 4c 4c 29 3b 0a 2d List == NULL);.-
3800: 20 20 20 20 69 66 20 28 74 72 61 63 65 49 6e 73 if (traceIns
3810: 74 72 75 63 74 69 6f 6e 73 29 20 7b 0a 2d 09 66 tructions) {.-.f
3820: 70 72 69 6e 74 66 28 73 74 64 6f 75 74 2c 20 22 printf(stdout, "
3830: 25 32 64 3a 20 25 32 64 20 22 2c 20 69 50 74 72 %2d: %2d ", iPtr
3840: 2d 3e 6e 75 6d 4c 65 76 65 6c 73 2c 20 28 69 6e ->numLevels, (in
3850: 74 29 20 43 55 52 52 5f 44 45 50 54 48 29 3b 0a t) CURR_DEPTH);.
3860: 2d 09 54 63 6c 50 72 69 6e 74 49 6e 73 74 72 75 -.TclPrintInstru
3870: 63 74 69 6f 6e 28 63 6f 64 65 50 74 72 2c 20 70 ction(codePtr, p
3880: 63 29 3b 0a 2d 09 66 66 6c 75 73 68 28 73 74 64 c);.-.fflush(std
3890: 6f 75 74 29 3b 0a 2d 20 20 20 20 7d 0a 2d 23 65 out);.- }.-#e
38a0: 6e 64 69 66 20 2f 2a 20 54 43 4c 5f 43 4f 4d 50 ndif /* TCL_COMP
38b0: 49 4c 45 5f 44 45 42 55 47 20 2a 2f 0a 2d 0a 2d ILE_DEBUG */.-.-
38c0: 23 69 66 64 65 66 20 54 43 4c 5f 43 4f 4d 50 49 #ifdef TCL_COMPI
38d0: 4c 45 5f 53 54 41 54 53 0a 2d 20 20 20 20 69 50 LE_STATS.- iP
38e0: 74 72 2d 3e 73 74 61 74 73 2e 69 6e 73 74 72 75 tr->stats.instru
38f0: 63 74 69 6f 6e 43 6f 75 6e 74 5b 2a 70 63 5d 2b ctionCount[*pc]+
3900: 2b 3b 0a 2d 23 65 6e 64 69 66 0a 2d 0a 2d 20 20 +;.-#endif.-.-
3910: 20 20 20 54 43 4c 5f 44 54 52 41 43 45 5f 49 4e TCL_DTRACE_IN
3920: 53 54 5f 4e 45 58 54 28 29 3b 0a 2d 0a 2d 20 20 ST_NEXT();.-.-
3930: 20 20 2f 2a 0a 2d 20 20 20 20 20 2a 20 43 68 65 /*.- * Che
3940: 63 6b 20 66 6f 72 20 61 73 79 6e 63 68 72 6f 6e ck for asynchron
3950: 6f 75 73 20 68 61 6e 64 6c 65 72 73 20 5b 42 75 ous handlers [Bu
3960: 67 20 37 34 36 37 32 32 5d 3b 20 77 65 20 64 6f g 746722]; we do
3970: 20 74 68 65 20 63 68 65 63 6b 20 65 76 65 72 79 the check every
3980: 0a 2d 20 20 20 20 20 2a 20 41 53 59 4e 43 5f 43 .- * ASYNC_C
3990: 48 45 43 4b 5f 43 4f 55 4e 54 5f 4d 41 53 4b 20 HECK_COUNT_MASK
39a0: 69 6e 73 74 72 75 63 74 69 6f 6e 2c 20 6f 66 20 instruction, of
39b0: 74 68 65 20 66 6f 72 6d 20 28 32 2a 2a 6e 2d 31 the form (2**n-1
39c0: 29 2e 0a 2d 20 20 20 20 20 2a 2f 0a 2d 0a 2d 20 )..- */.-.-
39d0: 20 20 20 69 66 20 28 28 69 6e 73 74 72 75 63 74 if ((instruct
39e0: 69 6f 6e 43 6f 75 6e 74 2b 2b 20 26 20 41 53 59 ionCount++ & ASY
39f0: 4e 43 5f 43 48 45 43 4b 5f 43 4f 55 4e 54 5f 4d NC_CHECK_COUNT_M
3a00: 41 53 4b 29 20 3d 3d 20 30 29 20 7b 0a 2d 09 2f ASK) == 0) {.-./
3a10: 2a 0a 2d 09 20 2a 20 43 68 65 63 6b 20 66 6f 72 *.-. * Check for
3a20: 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 68 61 asynchronous ha
3a30: 6e 64 6c 65 72 73 20 5b 42 75 67 20 37 34 36 37 ndlers [Bug 7467
3a40: 32 32 5d 3b 20 77 65 20 64 6f 20 74 68 65 20 63 22]; we do the c
3a50: 68 65 63 6b 20 65 76 65 72 79 0a 2d 09 20 2a 20 heck every.-. *
3a60: 41 53 59 4e 43 5f 43 48 45 43 4b 5f 43 4f 55 4e ASYNC_CHECK_COUN
3a70: 54 5f 4d 41 53 4b 20 69 6e 73 74 72 75 63 74 69 T_MASK instructi
3a80: 6f 6e 2c 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 on, of the form
3a90: 28 32 2a 2a 6e 2d 3c 31 29 2e 0a 2d 09 20 2a 2f (2**n-<1)..-. */
3aa0: 0a 2d 0a 2d 09 69 66 20 28 54 63 6c 5f 41 73 79 .-.-.if (Tcl_Asy
3ab0: 6e 63 52 65 61 64 79 28 29 29 20 7b 0a 2d 09 20 ncReady()) {.-.
3ac0: 20 20 20 69 6e 74 20 6c 6f 63 61 6c 52 65 73 75 int localResu
3ad0: 6c 74 3b 0a 2d 0a 2d 09 20 20 20 20 44 45 43 41 lt;.-.-. DECA
3ae0: 43 48 45 5f 53 54 41 43 4b 5f 49 4e 46 4f 28 29 CHE_STACK_INFO()
3af0: 3b 0a 2d 09 20 20 20 20 6c 6f 63 61 6c 52 65 73 ;.-. localRes
3b00: 75 6c 74 20 3d 20 54 63 6c 5f 41 73 79 6e 63 49 ult = Tcl_AsyncI
3b10: 6e 76 6f 6b 65 28 69 6e 74 65 72 70 2c 20 72 65 nvoke(interp, re
3b20: 73 75 6c 74 29 3b 0a 2d 09 20 20 20 20 43 41 43 sult);.-. CAC
3b30: 48 45 5f 53 54 41 43 4b 5f 49 4e 46 4f 28 29 3b HE_STACK_INFO();
3b40: 0a 2d 09 20 20 20 20 69 66 20 28 6c 6f 63 61 6c .-. if (local
3b50: 52 65 73 75 6c 74 20 3d 3d 20 54 43 4c 5f 45 52 Result == TCL_ER
3b60: 52 4f 52 29 20 7b 0a 2d 09 09 72 65 73 75 6c 74 ROR) {.-..result
3b70: 20 3d 20 6c 6f 63 61 6c 52 65 73 75 6c 74 3b 0a = localResult;.
3b80: 2d 09 09 67 6f 74 6f 20 63 68 65 63 6b 46 6f 72 -..goto checkFor
3b90: 43 61 74 63 68 3b 0a 2d 09 20 20 20 20 7d 0a 2d Catch;.-. }.-
3ba0: 09 7d 0a 2d 09 69 66 20 28 54 63 6c 4c 69 6d 69 .}.-.if (TclLimi
3bb0: 74 52 65 61 64 79 28 69 50 74 72 2d 3e 6c 69 6d tReady(iPtr->lim
3bc0: 69 74 29 29 20 7b 0a 2d 09 20 20 20 20 69 6e 74 it)) {.-. int
3bd0: 20 6c 6f 63 61 6c 52 65 73 75 6c 74 3b 0a 2d 0a localResult;.-.
3be0: 2d 09 20 20 20 20 44 45 43 41 43 48 45 5f 53 54 -. DECACHE_ST
3bf0: 41 43 4b 5f 49 4e 46 4f 28 29 3b 0a 2d 09 20 20 ACK_INFO();.-.
3c00: 20 20 6c 6f 63 61 6c 52 65 73 75 6c 74 20 3d 20 localResult =
3c10: 54 63 6c 5f 4c 69 6d 69 74 43 68 65 63 6b 28 69 Tcl_LimitCheck(i
3c20: 6e 74 65 72 70 29 3b 0a 2d 09 20 20 20 20 43 41 nterp);.-. CA
3c30: 43 48 45 5f 53 54 41 43 4b 5f 49 4e 46 4f 28 29 CHE_STACK_INFO()
3c40: 3b 0a 2d 09 20 20 20 20 69 66 20 28 6c 6f 63 61 ;.-. if (loca
3c50: 6c 52 65 73 75 6c 74 20 3d 3d 20 54 43 4c 5f 45 lResult == TCL_E
3c60: 52 52 4f 52 29 20 7b 0a 2d 09 09 72 65 73 75 6c RROR) {.-..resul
3c70: 74 20 3d 20 6c 6f 63 61 6c 52 65 73 75 6c 74 3b t = localResult;
3c80: 0a 2d 09 09 67 6f 74 6f 20 63 68 65 63 6b 46 6f .-..goto checkFo
3c90: 72 43 61 74 63 68 3b 0a 2d 09 20 20 20 20 7d 0a rCatch;.-. }.
3ca0: 2d 09 7d 0a 2d 20 20 20 20 7d 0a 2d 0a 2d 20 20 -.}.- }.-.-
3cb0: 20 20 2f 2a 0a 2d 20 20 20 20 20 2a 20 54 68 65 /*.- * The
3cc0: 73 65 20 74 77 6f 20 69 6e 73 74 72 75 63 74 69 se two instructi
3cd0: 6f 6e 73 20 61 63 63 6f 75 6e 74 20 66 6f 72 20 ons account for
3ce0: 32 36 25 20 6f 66 20 61 6c 6c 20 69 6e 73 74 72 26% of all instr
3cf0: 75 63 74 69 6f 6e 73 20 28 61 63 63 6f 72 64 69 uctions (accordi
3d00: 6e 67 0a 2d 20 20 20 20 20 2a 20 74 6f 20 6d 65 ng.- * to me
3d10: 61 73 75 72 65 6d 65 6e 74 73 20 6f 6e 20 74 63 asurements on tc
3d20: 6c 62 65 6e 63 68 20 62 79 20 42 65 6e 20 56 69 lbench by Ben Vi
3d30: 74 61 6c 65 0a 2d 20 20 20 20 20 2a 20 5b 68 74 tale.- * [ht
3d40: 74 70 3a 2f 2f 77 77 77 2e 63 73 2e 74 6f 72 6f tp://www.cs.toro
3d50: 6e 74 6f 2e 65 64 75 2f 73 79 73 6c 61 62 2f 70 nto.edu/syslab/p
3d60: 75 62 73 2f 74 63 6c 32 30 30 35 2d 76 69 74 61 ubs/tcl2005-vita
3d70: 6c 65 2d 7a 61 6c 65 73 6b 69 2e 70 64 66 5d 0a le-zaleski.pdf].
3d80: 2d 20 20 20 20 20 2a 20 52 65 73 6f 6c 76 69 6e - * Resolvin
3d90: 67 20 74 68 65 6d 20 62 65 66 6f 72 65 20 74 68 g them before th
3da0: 65 20 73 77 69 74 63 68 20 72 65 64 75 63 65 73 e switch reduces
3db0: 20 74 68 65 20 63 6f 73 74 20 6f 66 20 62 72 61 the cost of bra
3dc0: 6e 63 68 0a 2d 20 20 20 20 20 2a 20 6d 69 73 70 nch.- * misp
3dd0: 72 65 64 69 63 74 69 6f 6e 73 2c 20 73 65 65 6d redictions, seem
3de0: 73 20 74 6f 20 69 6d 70 72 6f 76 65 20 72 75 6e s to improve run
3df0: 74 69 6d 65 20 62 79 20 35 25 20 74 6f 20 31 35 time by 5% to 15
3e00: 25 2c 20 61 6e 64 20 28 61 6d 61 7a 69 6e 67 6c %, and (amazingl
3e10: 79 21 29 0a 2d 20 20 20 20 20 2a 20 72 65 64 75 y!).- * redu
3e20: 63 65 73 20 74 6f 74 61 6c 20 6f 62 6a 20 73 69 ces total obj si
3e30: 7a 65 2e 0a 2d 20 20 20 20 20 2a 2f 0a 2d 0a 2d ze..- */.-.-
3e40: 20 20 20 20 69 66 20 28 2a 70 63 20 3d 3d 20 49 if (*pc == I
3e50: 4e 53 54 5f 4c 4f 41 44 5f 53 43 41 4c 41 52 31 NST_LOAD_SCALAR1
3e60: 29 20 7b 0a 2d 09 67 6f 74 6f 20 69 6e 73 74 4c ) {.-.goto instL
3e70: 6f 61 64 53 63 61 6c 61 72 31 3b 0a 2d 20 20 20 oadScalar1;.-
3e80: 20 7d 20 65 6c 73 65 20 69 66 20 28 2a 70 63 20 } else if (*pc
3e90: 3d 3d 20 49 4e 53 54 5f 50 55 53 48 31 29 20 7b == INST_PUSH1) {
3ea0: 0a 2d 09 67 6f 74 6f 20 69 6e 73 74 50 75 73 68 .-.goto instPush
3eb0: 31 50 65 65 70 68 6f 6c 65 3b 0a 2d 20 20 20 20 1Peephole;.-
3ec0: 7d 0a 2d 20 20 20 20 0a 2d 20 20 20 20 73 77 69 }.- .- swi
3ed0: 74 63 68 20 28 2a 70 63 29 20 7b 0a 2d 20 20 20 tch (*pc) {.-
3ee0: 20 63 61 73 65 20 49 4e 53 54 5f 53 59 4e 54 41 case INST_SYNTA
3ef0: 58 3a 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 X:.- case INS
3f00: 54 5f 52 45 54 55 52 4e 5f 49 4d 4d 3a 20 7b 0a T_RETURN_IMM: {.
3f10: 2b 20 20 20 20 4e 45 58 54 5f 49 4e 53 54 5f 44 + NEXT_INST_D
3f20: 49 53 50 41 54 43 48 28 29 20 7b 0a 2b 20 20 20 ISPATCH() {.+
3f30: 20 43 41 53 45 28 49 4e 53 54 5f 53 59 4e 54 41 CASE(INST_SYNTA
3f40: 58 29 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e X):.+ CASE(IN
3f50: 53 54 5f 52 45 54 55 52 4e 5f 49 4d 4d 29 3a 20 ST_RETURN_IMM):
3f60: 7b 0a 20 09 69 6e 74 20 63 6f 64 65 20 3d 20 54 {. .int code = T
3f70: 63 6c 47 65 74 49 6e 74 34 41 74 50 74 72 28 70 clGetInt4AtPtr(p
3f80: 63 2b 31 29 3b 0a 20 09 69 6e 74 20 6c 65 76 65 c+1);. .int leve
3f90: 6c 20 3d 20 54 63 6c 47 65 74 55 49 6e 74 34 41 l = TclGetUInt4A
3fa0: 74 50 74 72 28 70 63 2b 35 29 3b 0a 20 0a 40 40 tPtr(pc+5);. .@@
3fb0: 20 2d 31 37 39 39 2c 37 20 2b 32 30 30 32 2c 37 -1799,7 +2002,7
3fc0: 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 @@ TclExecuteBy
3fd0: 74 65 43 6f 64 65 28 0a 20 09 7d 0a 20 20 20 20 teCode(. .}.
3fe0: 20 7d 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 }. .- case I
3ff0: 4e 53 54 5f 52 45 54 55 52 4e 5f 53 54 4b 3a 0a NST_RETURN_STK:.
4000: 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 52 + CASE(INST_R
4010: 45 54 55 52 4e 5f 53 54 4b 29 3a 0a 20 09 54 52 ETURN_STK):. .TR
4020: 41 43 45 28 28 22 3d 3e 20 22 29 29 3b 0a 20 09 ACE(("=> "));. .
4030: 6f 62 6a 52 65 73 75 6c 74 50 74 72 20 3d 20 50 objResultPtr = P
4040: 4f 50 5f 4f 42 4a 45 43 54 28 29 3b 0a 20 09 72 OP_OBJECT();. .r
4050: 65 73 75 6c 74 20 3d 20 54 63 6c 5f 53 65 74 52 esult = Tcl_SetR
4060: 65 74 75 72 6e 4f 70 74 69 6f 6e 73 28 69 6e 74 eturnOptions(int
4070: 65 72 70 2c 20 4f 42 4a 5f 41 54 5f 54 4f 53 29 erp, OBJ_AT_TOS)
4080: 3b 0a 40 40 20 2d 31 38 31 34 2c 37 20 2b 32 30 ;.@@ -1814,7 +20
4090: 31 37 2c 37 20 40 40 20 54 63 6c 45 78 65 63 75 17,7 @@ TclExecu
40a0: 74 65 42 79 74 65 43 6f 64 65 28 0a 20 09 20 20 teByteCode(. .
40b0: 20 20 67 6f 74 6f 20 70 72 6f 63 65 73 73 45 78 goto processEx
40c0: 63 65 70 74 69 6f 6e 52 65 74 75 72 6e 3b 0a 20 ceptionReturn;.
40d0: 09 7d 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 .}. .- case I
40e0: 4e 53 54 5f 44 4f 4e 45 3a 0a 2b 20 20 20 20 43 NST_DONE:.+ C
40f0: 41 53 45 28 49 4e 53 54 5f 44 4f 4e 45 29 3a 0a ASE(INST_DONE):.
4100: 20 09 69 66 20 28 74 6f 73 50 74 72 20 3e 20 69 .if (tosPtr > i
4110: 6e 69 74 54 6f 73 50 74 72 29 20 7b 0a 20 09 20 nitTosPtr) {. .
4120: 20 20 20 2f 2a 0a 20 09 20 20 20 20 20 2a 20 53 /*. . * S
4130: 65 74 20 74 68 65 20 69 6e 74 65 72 70 72 65 74 et the interpret
4140: 65 72 27 73 20 6f 62 6a 65 63 74 20 72 65 73 75 er's object resu
4150: 6c 74 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20 74 lt to point to t
4160: 68 65 20 74 6f 70 6d 6f 73 74 0a 40 40 20 2d 31 he topmost.@@ -1
4170: 38 33 37 2c 37 20 2b 32 30 34 30 2c 37 20 40 40 837,7 +2040,7 @@
4180: 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 TclExecuteByteC
4190: 6f 64 65 28 0a 20 09 20 20 20 20 67 6f 74 6f 20 ode(. . goto
41a0: 61 62 6e 6f 72 6d 61 6c 52 65 74 75 72 6e 3b 0a abnormalReturn;.
41b0: 20 09 7d 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 .}. .- case
41c0: 49 4e 53 54 5f 50 55 53 48 31 3a 0a 2b 20 20 20 INST_PUSH1:.+
41d0: 20 43 41 53 45 28 49 4e 53 54 5f 50 55 53 48 31 CASE(INST_PUSH1
41e0: 29 3a 0a 20 20 20 20 20 69 6e 73 74 50 75 73 68 ):. instPush
41f0: 31 50 65 65 70 68 6f 6c 65 3a 0a 20 09 50 55 53 1Peephole:. .PUS
4200: 48 5f 4f 42 4a 45 43 54 28 63 6f 64 65 50 74 72 H_OBJECT(codePtr
4210: 2d 3e 6f 62 6a 41 72 72 61 79 50 74 72 5b 54 63 ->objArrayPtr[Tc
4220: 6c 47 65 74 55 49 6e 74 31 41 74 50 74 72 28 70 lGetUInt1AtPtr(p
4230: 63 2b 31 29 5d 29 3b 0a 20 09 54 52 41 43 45 5f c+1)]);. .TRACE_
4240: 57 49 54 48 5f 4f 42 4a 28 28 22 25 75 20 3d 3e WITH_OBJ(("%u =>
4250: 20 22 2c 20 54 63 6c 47 65 74 49 6e 74 31 41 74 ", TclGetInt1At
4260: 50 74 72 28 70 63 2b 31 29 29 2c 20 4f 42 4a 5f Ptr(pc+1)), OBJ_
4270: 41 54 5f 54 4f 53 29 3b 0a 40 40 20 2d 31 38 35 AT_TOS);.@@ -185
4280: 34 2c 31 32 20 2b 32 30 35 37 2c 31 32 20 40 40 4,12 +2057,12 @@
4290: 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 TclExecuteByteC
42a0: 6f 64 65 28 0a 20 23 65 6e 64 69 66 0a 20 09 4e ode(. #endif. .N
42b0: 45 58 54 5f 49 4e 53 54 5f 46 28 30 2c 20 30 2c EXT_INST_F(0, 0,
42c0: 20 30 29 3b 0a 20 0a 2d 20 20 20 20 63 61 73 65 0);. .- case
42d0: 20 49 4e 53 54 5f 50 55 53 48 34 3a 0a 2b 20 20 INST_PUSH4:.+
42e0: 20 20 43 41 53 45 28 49 4e 53 54 5f 50 55 53 48 CASE(INST_PUSH
42f0: 34 29 3a 0a 20 09 6f 62 6a 52 65 73 75 6c 74 50 4):. .objResultP
4300: 74 72 20 3d 20 63 6f 64 65 50 74 72 2d 3e 6f 62 tr = codePtr->ob
4310: 6a 41 72 72 61 79 50 74 72 5b 54 63 6c 47 65 74 jArrayPtr[TclGet
4320: 55 49 6e 74 34 41 74 50 74 72 28 70 63 2b 31 29 UInt4AtPtr(pc+1)
4330: 5d 3b 0a 20 09 54 52 41 43 45 5f 57 49 54 48 5f ];. .TRACE_WITH_
4340: 4f 42 4a 28 28 22 25 75 20 3d 3e 20 22 2c 20 54 OBJ(("%u => ", T
4350: 63 6c 47 65 74 55 49 6e 74 34 41 74 50 74 72 28 clGetUInt4AtPtr(
4360: 70 63 2b 31 29 29 2c 20 6f 62 6a 52 65 73 75 6c pc+1)), objResul
4370: 74 50 74 72 29 3b 0a 20 09 4e 45 58 54 5f 49 4e tPtr);. .NEXT_IN
4380: 53 54 5f 46 28 35 2c 20 30 2c 20 31 29 3b 0a 20 ST_F(5, 0, 1);.
4390: 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f .- case INST_
43a0: 50 4f 50 3a 20 7b 0a 2b 20 20 20 20 43 41 53 45 POP: {.+ CASE
43b0: 28 49 4e 53 54 5f 50 4f 50 29 3a 20 7b 0a 20 09 (INST_POP): {. .
43c0: 54 63 6c 5f 4f 62 6a 20 2a 76 61 6c 75 65 50 74 Tcl_Obj *valuePt
43d0: 72 3b 0a 20 0a 20 09 54 52 41 43 45 5f 57 49 54 r;. . .TRACE_WIT
43e0: 48 5f 4f 42 4a 28 28 22 3d 3e 20 64 69 73 63 61 H_OBJ(("=> disca
43f0: 72 64 69 6e 67 20 22 29 2c 20 4f 42 4a 5f 41 54 rding "), OBJ_AT
4400: 5f 54 4f 53 29 3b 0a 40 40 20 2d 31 38 38 32 2c _TOS);.@@ -1882,
4410: 37 20 2b 32 30 38 35 2c 37 20 40 40 20 54 63 6c 7 +2085,7 @@ Tcl
4420: 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 28 ExecuteByteCode(
4430: 0a 20 09 4e 45 58 54 5f 49 4e 53 54 5f 46 28 30 . .NEXT_INST_F(0
4440: 2c 20 30 2c 20 30 29 3b 0a 20 20 20 20 20 7d 0a , 0, 0);. }.
4450: 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 .- case INST
4460: 5f 53 54 41 52 54 5f 43 4d 44 3a 0a 2b 20 20 20 _START_CMD:.+
4470: 20 43 41 53 45 28 49 4e 53 54 5f 53 54 41 52 54 CASE(INST_START
4480: 5f 43 4d 44 29 3a 0a 20 23 69 66 20 21 54 43 4c _CMD):. #if !TCL
4490: 5f 43 4f 4d 50 49 4c 45 5f 44 45 42 55 47 0a 20 _COMPILE_DEBUG.
44a0: 20 20 20 20 69 6e 73 74 53 74 61 72 74 43 6d 64 instStartCmd
44b0: 50 65 65 70 68 6f 6c 65 3a 0a 20 23 65 6e 64 69 Peephole:. #endi
44c0: 66 0a 40 40 20 2d 31 39 32 33 2c 31 32 20 2b 32 f.@@ -1923,12 +2
44d0: 31 32 36 2c 31 32 20 40 40 20 54 63 6c 45 78 65 126,12 @@ TclExe
44e0: 63 75 74 65 42 79 74 65 43 6f 64 65 28 0a 20 09 cuteByteCode(. .
44f0: 20 20 20 20 4e 45 58 54 5f 49 4e 53 54 5f 56 28 NEXT_INST_V(
4500: 6f 70 6e 64 2c 20 30 2c 20 2d 31 29 3b 0a 20 09 opnd, 0, -1);. .
4510: 7d 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e }. .- case IN
4520: 53 54 5f 44 55 50 3a 0a 2b 20 20 20 20 43 41 53 ST_DUP:.+ CAS
4530: 45 28 49 4e 53 54 5f 44 55 50 29 3a 0a 20 09 6f E(INST_DUP):. .o
4540: 62 6a 52 65 73 75 6c 74 50 74 72 20 3d 20 4f 42 bjResultPtr = OB
4550: 4a 5f 41 54 5f 54 4f 53 3b 0a 20 09 54 52 41 43 J_AT_TOS;. .TRAC
4560: 45 5f 57 49 54 48 5f 4f 42 4a 28 28 22 3d 3e 20 E_WITH_OBJ(("=>
4570: 22 29 2c 20 6f 62 6a 52 65 73 75 6c 74 50 74 72 "), objResultPtr
4580: 29 3b 0a 20 09 4e 45 58 54 5f 49 4e 53 54 5f 46 );. .NEXT_INST_F
4590: 28 31 2c 20 30 2c 20 31 29 3b 0a 20 0a 2d 20 20 (1, 0, 1);. .-
45a0: 20 20 63 61 73 65 20 49 4e 53 54 5f 4f 56 45 52 case INST_OVER
45b0: 3a 20 7b 0a 2b 20 20 20 20 43 41 53 45 28 49 4e : {.+ CASE(IN
45c0: 53 54 5f 4f 56 45 52 29 3a 20 7b 0a 20 09 69 6e ST_OVER): {. .in
45d0: 74 20 6f 70 6e 64 3b 0a 20 0a 20 09 6f 70 6e 64 t opnd;. . .opnd
45e0: 20 3d 20 54 63 6c 47 65 74 55 49 6e 74 34 41 74 = TclGetUInt4At
45f0: 50 74 72 28 70 63 2b 31 29 3b 0a 40 40 20 2d 31 Ptr(pc+1);.@@ -1
4600: 39 33 37 2c 37 20 2b 32 31 34 30 2c 37 20 40 40 937,7 +2140,7 @@
4610: 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 TclExecuteByteC
4620: 6f 64 65 28 0a 20 09 4e 45 58 54 5f 49 4e 53 54 ode(. .NEXT_INST
4630: 5f 46 28 35 2c 20 30 2c 20 31 29 3b 0a 20 20 20 _F(5, 0, 1);.
4640: 20 20 7d 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 }. .- case
4650: 49 4e 53 54 5f 52 45 56 45 52 53 45 3a 20 7b 0a INST_REVERSE: {.
4660: 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 52 + CASE(INST_R
4670: 45 56 45 52 53 45 29 3a 20 7b 0a 20 09 69 6e 74 EVERSE): {. .int
4680: 20 6f 70 6e 64 3b 0a 20 09 54 63 6c 5f 4f 62 6a opnd;. .Tcl_Obj
4690: 20 2a 2a 61 2c 20 2a 2a 62 3b 0a 20 0a 40 40 20 **a, **b;. .@@
46a0: 2d 31 39 35 33 2c 37 20 2b 32 31 35 36 2c 37 20 -1953,7 +2156,7
46b0: 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 @@ TclExecuteByt
46c0: 65 43 6f 64 65 28 0a 20 09 4e 45 58 54 5f 49 4e eCode(. .NEXT_IN
46d0: 53 54 5f 46 28 35 2c 20 30 2c 20 30 29 3b 0a 20 ST_F(5, 0, 0);.
46e0: 20 20 20 20 7d 0a 20 0a 2d 20 20 20 20 63 61 73 }. .- cas
46f0: 65 20 49 4e 53 54 5f 43 4f 4e 43 41 54 31 3a 20 e INST_CONCAT1:
4700: 7b 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 {.+ CASE(INST
4710: 5f 43 4f 4e 43 41 54 31 29 3a 20 7b 0a 20 09 69 _CONCAT1): {. .i
4720: 6e 74 20 6f 70 6e 64 2c 20 6c 65 6e 67 74 68 2c nt opnd, length,
4730: 20 61 70 70 65 6e 64 4c 65 6e 20 3d 20 30 3b 0a appendLen = 0;.
4740: 20 09 63 68 61 72 20 2a 62 79 74 65 73 2c 20 2a .char *bytes, *
4750: 70 3b 0a 20 09 54 63 6c 5f 4f 62 6a 20 2a 2a 63 p;. .Tcl_Obj **c
4760: 75 72 72 50 74 72 3b 0a 40 40 20 2d 32 30 32 38 urrPtr;.@@ -2028
4770: 2c 37 20 2b 32 32 33 31 2c 37 20 40 40 20 54 63 ,7 +2231,7 @@ Tc
4780: 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 lExecuteByteCode
4790: 28 0a 20 09 4e 45 58 54 5f 49 4e 53 54 5f 56 28 (. .NEXT_INST_V(
47a0: 32 2c 20 6f 70 6e 64 2c 20 31 29 3b 0a 20 20 20 2, opnd, 1);.
47b0: 20 20 7d 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 }. .- case
47c0: 49 4e 53 54 5f 45 58 50 41 4e 44 5f 53 54 41 52 INST_EXPAND_STAR
47d0: 54 3a 20 7b 0a 2b 20 20 20 20 43 41 53 45 28 49 T: {.+ CASE(I
47e0: 4e 53 54 5f 45 58 50 41 4e 44 5f 53 54 41 52 54 NST_EXPAND_START
47f0: 29 3a 20 7b 0a 20 09 2f 2a 0a 20 09 20 2a 20 50 ): {. ./*. . * P
4800: 75 73 68 20 61 6e 20 65 6c 65 6d 65 6e 74 20 74 ush an element t
4810: 6f 20 74 68 65 20 65 78 70 61 6e 64 4e 65 73 74 o the expandNest
4820: 4c 69 73 74 2e 20 54 68 69 73 20 72 65 63 6f 72 List. This recor
4830: 64 73 20 74 68 65 20 63 75 72 72 65 6e 74 0a 20 ds the current.
4840: 09 20 2a 20 73 74 61 63 6b 20 64 65 70 74 68 20 . * stack depth
4850: 2d 20 69 2e 65 2e 2c 20 74 68 65 20 70 6f 69 6e - i.e., the poin
4860: 74 20 69 6e 20 74 68 65 20 73 74 61 63 6b 20 77 t in the stack w
4870: 68 65 72 65 20 74 68 65 20 65 78 70 61 6e 64 65 here the expande
4880: 64 0a 40 40 20 2d 32 30 35 31 2c 37 20 2b 32 32 d.@@ -2051,7 +22
4890: 35 34 2c 37 20 40 40 20 54 63 6c 45 78 65 63 75 54,7 @@ TclExecu
48a0: 74 65 42 79 74 65 43 6f 64 65 28 0a 20 09 4e 45 teByteCode(. .NE
48b0: 58 54 5f 49 4e 53 54 5f 46 28 31 2c 20 30 2c 20 XT_INST_F(1, 0,
48c0: 30 29 3b 0a 20 20 20 20 20 7d 0a 20 0a 2d 20 20 0);. }. .-
48d0: 20 20 63 61 73 65 20 49 4e 53 54 5f 45 58 50 41 case INST_EXPA
48e0: 4e 44 5f 53 54 4b 54 4f 50 3a 20 7b 0a 2b 20 20 ND_STKTOP: {.+
48f0: 20 20 43 41 53 45 28 49 4e 53 54 5f 45 58 50 41 CASE(INST_EXPA
4900: 4e 44 5f 53 54 4b 54 4f 50 29 3a 20 7b 0a 20 09 ND_STKTOP): {. .
4910: 69 6e 74 20 6f 62 6a 63 2c 20 6c 65 6e 67 74 68 int objc, length
4920: 2c 20 69 3b 0a 20 09 54 63 6c 5f 4f 62 6a 20 2a , i;. .Tcl_Obj *
4930: 2a 6f 62 6a 76 2c 20 2a 76 61 6c 75 65 50 74 72 *objv, *valuePtr
4940: 3b 0a 20 09 70 74 72 64 69 66 66 5f 74 20 6d 6f ;. .ptrdiff_t mo
4950: 76 65 64 3b 0a 40 40 20 2d 32 31 31 35 2c 37 20 ved;.@@ -2115,7
4960: 2b 32 33 31 38 2c 37 20 40 40 20 54 63 6c 45 78 +2318,7 @@ TclEx
4970: 65 63 75 74 65 42 79 74 65 43 6f 64 65 28 0a 20 ecuteByteCode(.
4980: 0a 20 09 69 6e 74 20 6f 62 6a 63 2c 20 70 63 41 . .int objc, pcA
4990: 64 6a 75 73 74 6d 65 6e 74 3b 0a 20 0a 2d 20 20 djustment;. .-
49a0: 20 20 63 61 73 65 20 49 4e 53 54 5f 49 4e 56 4f case INST_INVO
49b0: 4b 45 5f 45 58 50 41 4e 44 45 44 3a 0a 2b 20 20 KE_EXPANDED:.+
49c0: 20 20 43 41 53 45 28 49 4e 53 54 5f 49 4e 56 4f CASE(INST_INVO
49d0: 4b 45 5f 45 58 50 41 4e 44 45 44 29 3a 0a 20 09 KE_EXPANDED):. .
49e0: 7b 0a 20 09 20 20 20 20 54 63 6c 5f 4f 62 6a 20 {. . Tcl_Obj
49f0: 2a 6f 62 6a 50 74 72 20 3d 20 65 78 70 61 6e 64 *objPtr = expand
4a00: 4e 65 73 74 4c 69 73 74 3b 0a 20 0a 40 40 20 2d NestList;. .@@ -
4a10: 32 31 33 37 2c 31 32 20 2b 32 33 34 30 2c 31 32 2137,12 +2340,12
4a20: 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 @@ TclExecuteBy
4a30: 74 65 43 6f 64 65 28 0a 20 09 20 20 20 20 4e 45 teCode(. . NE
4a40: 58 54 5f 49 4e 53 54 5f 46 28 31 2c 20 30 2c 20 XT_INST_F(1, 0,
4a50: 31 29 3b 0a 20 09 7d 0a 20 0a 2d 20 20 20 20 63 1);. .}. .- c
4a60: 61 73 65 20 49 4e 53 54 5f 49 4e 56 4f 4b 45 5f ase INST_INVOKE_
4a70: 53 54 4b 34 3a 0a 2b 20 20 20 20 43 41 53 45 28 STK4:.+ CASE(
4a80: 49 4e 53 54 5f 49 4e 56 4f 4b 45 5f 53 54 4b 34 INST_INVOKE_STK4
4a90: 29 3a 0a 20 09 6f 62 6a 63 20 3d 20 54 63 6c 47 ):. .objc = TclG
4aa0: 65 74 55 49 6e 74 34 41 74 50 74 72 28 70 63 2b etUInt4AtPtr(pc+
4ab0: 31 29 3b 0a 20 09 70 63 41 64 6a 75 73 74 6d 65 1);. .pcAdjustme
4ac0: 6e 74 20 3d 20 35 3b 0a 20 09 67 6f 74 6f 20 64 nt = 5;. .goto d
4ad0: 6f 49 6e 76 6f 63 61 74 69 6f 6e 3b 0a 20 0a 2d oInvocation;. .-
4ae0: 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 49 4e case INST_IN
4af0: 56 4f 4b 45 5f 53 54 4b 31 3a 0a 2b 20 20 20 20 VOKE_STK1:.+
4b00: 43 41 53 45 28 49 4e 53 54 5f 49 4e 56 4f 4b 45 CASE(INST_INVOKE
4b10: 5f 53 54 4b 31 29 3a 0a 20 09 6f 62 6a 63 20 3d _STK1):. .objc =
4b20: 20 54 63 6c 47 65 74 55 49 6e 74 31 41 74 50 74 TclGetUInt1AtPt
4b30: 72 28 70 63 2b 31 29 3b 0a 20 09 70 63 41 64 6a r(pc+1);. .pcAdj
4b40: 75 73 74 6d 65 6e 74 20 3d 20 32 3b 0a 20 0a 40 ustment = 2;. .@
4b50: 40 20 2d 32 32 33 34 2c 37 20 2b 32 34 33 37 2c @ -2234,7 +2437,
4b60: 37 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 7 @@ TclExecuteB
4b70: 79 74 65 43 6f 64 65 28 0a 20 09 7d 0a 20 0a 20 yteCode(. .}. .
4b80: 23 69 66 20 54 43 4c 5f 53 55 50 50 4f 52 54 5f #if TCL_SUPPORT_
4b90: 38 34 5f 42 59 54 45 43 4f 44 45 0a 2d 20 20 20 84_BYTECODE.-
4ba0: 20 63 61 73 65 20 49 4e 53 54 5f 43 41 4c 4c 5f case INST_CALL_
4bb0: 42 55 49 4c 54 49 4e 5f 46 55 4e 43 31 3a 20 7b BUILTIN_FUNC1: {
4bc0: 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f .+ CASE(INST_
4bd0: 43 41 4c 4c 5f 42 55 49 4c 54 49 4e 5f 46 55 4e CALL_BUILTIN_FUN
4be0: 43 31 29 3a 20 7b 0a 20 09 2f 2a 0a 20 09 20 2a C1): {. ./*. . *
4bf0: 20 43 61 6c 6c 20 6f 6e 65 20 6f 66 20 74 68 65 Call one of the
4c00: 20 62 75 69 6c 74 2d 69 6e 20 70 72 65 2d 38 2e built-in pre-8.
4c10: 35 20 54 63 6c 20 6d 61 74 68 20 66 75 6e 63 74 5 Tcl math funct
4c20: 69 6f 6e 73 2e 20 54 68 69 73 0a 20 09 20 2a 20 ions. This. . *
4c30: 74 72 61 6e 73 6c 61 74 65 73 20 74 6f 20 49 4e translates to IN
4c40: 53 54 5f 49 4e 56 4f 4b 45 5f 53 54 4b 31 20 77 ST_INVOKE_STK1 w
4c50: 69 74 68 20 74 68 65 20 66 69 72 73 74 20 61 72 ith the first ar
4c60: 67 75 6d 65 6e 74 20 6f 66 0a 40 40 20 2d 32 32 gument of.@@ -22
4c70: 38 32 2c 37 20 2b 32 34 38 35 2c 37 20 40 40 20 82,7 +2485,7 @@
4c80: 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f TclExecuteByteCo
4c90: 64 65 28 0a 20 09 67 6f 74 6f 20 64 6f 49 6e 76 de(. .goto doInv
4ca0: 6f 63 61 74 69 6f 6e 3b 0a 20 20 20 20 20 7d 0a ocation;. }.
4cb0: 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 .- case INST
4cc0: 5f 43 41 4c 4c 5f 46 55 4e 43 31 3a 20 7b 0a 2b _CALL_FUNC1: {.+
4cd0: 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 43 41 CASE(INST_CA
4ce0: 4c 4c 5f 46 55 4e 43 31 29 3a 20 7b 0a 20 09 2f LL_FUNC1): {. ./
4cf0: 2a 0a 20 09 20 2a 20 43 61 6c 6c 20 61 20 6e 6f *. . * Call a no
4d00: 6e 2d 62 75 69 6c 74 69 6e 20 54 63 6c 20 6d 61 n-builtin Tcl ma
4d10: 74 68 20 66 75 6e 63 74 69 6f 6e 20 70 72 65 76 th function prev
4d20: 69 6f 75 73 6c 79 20 72 65 67 69 73 74 65 72 65 iously registere
4d30: 64 20 62 79 20 61 0a 20 09 20 2a 20 63 61 6c 6c d by a. . * call
4d40: 20 74 6f 20 54 63 6c 5f 43 72 65 61 74 65 4d 61 to Tcl_CreateMa
4d50: 74 68 46 75 6e 63 20 70 72 65 2d 38 2e 35 2e 20 thFunc pre-8.5.
4d60: 54 68 69 73 20 69 73 20 65 73 73 65 6e 74 69 61 This is essentia
4d70: 6c 6c 79 0a 40 40 20 2d 32 33 32 30 2c 31 34 20 lly.@@ -2320,14
4d80: 2b 32 35 32 33 2c 31 34 20 40 40 20 54 63 6c 45 +2523,14 @@ TclE
4d90: 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 28 0a xecuteByteCode(.
4da0: 20 20 20 20 20 20 2a 20 72 65 6d 61 69 6e 73 20 * remains
4db0: 66 6f 72 20 65 78 69 73 74 69 6e 67 20 62 79 74 for existing byt
4dc0: 65 63 6f 64 65 20 70 72 65 63 6f 6d 70 69 6c 65 ecode precompile
4dd0: 64 20 66 69 6c 65 73 2e 0a 20 20 20 20 20 20 2a d files.. *
4de0: 2f 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e /. .- case IN
4df0: 53 54 5f 43 41 4c 4c 5f 42 55 49 4c 54 49 4e 5f ST_CALL_BUILTIN_
4e00: 46 55 4e 43 31 3a 0a 2b 20 20 20 20 43 41 53 45 FUNC1:.+ CASE
4e10: 28 49 4e 53 54 5f 43 41 4c 4c 5f 42 55 49 4c 54 (INST_CALL_BUILT
4e20: 49 4e 5f 46 55 4e 43 31 29 3a 0a 20 09 54 63 6c IN_FUNC1):. .Tcl
4e30: 5f 50 61 6e 69 63 28 22 54 63 6c 45 78 65 63 75 _Panic("TclExecu
4e40: 74 65 42 79 74 65 43 6f 64 65 3a 20 6f 62 73 6f teByteCode: obso
4e50: 6c 65 74 65 20 49 4e 53 54 5f 43 41 4c 4c 5f 42 lete INST_CALL_B
4e60: 55 49 4c 54 49 4e 5f 46 55 4e 43 31 20 66 6f 75 UILTIN_FUNC1 fou
4e70: 6e 64 22 29 3b 0a 2d 20 20 20 20 63 61 73 65 20 nd");.- case
4e80: 49 4e 53 54 5f 43 41 4c 4c 5f 46 55 4e 43 31 3a INST_CALL_FUNC1:
4e90: 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f .+ CASE(INST_
4ea0: 43 41 4c 4c 5f 46 55 4e 43 31 29 3a 0a 20 09 54 CALL_FUNC1):. .T
4eb0: 63 6c 5f 50 61 6e 69 63 28 22 54 63 6c 45 78 65 cl_Panic("TclExe
4ec0: 63 75 74 65 42 79 74 65 43 6f 64 65 3a 20 6f 62 cuteByteCode: ob
4ed0: 73 6f 6c 65 74 65 20 49 4e 53 54 5f 43 41 4c 4c solete INST_CALL
4ee0: 5f 46 55 4e 43 31 20 66 6f 75 6e 64 22 29 3b 0a _FUNC1 found");.
4ef0: 20 23 65 6e 64 69 66 0a 20 20 20 20 20 7d 0a 20 #endif. }.
4f00: 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f .- case INST_
4f10: 45 56 41 4c 5f 53 54 4b 3a 20 7b 0a 2b 20 20 20 EVAL_STK: {.+
4f20: 20 43 41 53 45 28 49 4e 53 54 5f 45 56 41 4c 5f CASE(INST_EVAL_
4f30: 53 54 4b 29 3a 20 7b 0a 20 09 2f 2a 0a 20 09 20 STK): {. ./*. .
4f40: 2a 20 4e 6f 74 65 20 74 6f 20 6d 61 69 6e 74 61 * Note to mainta
4f50: 69 6e 65 72 73 3a 20 69 74 20 69 73 20 69 6d 70 iners: it is imp
4f60: 6f 72 74 61 6e 74 20 74 68 61 74 20 49 4e 53 54 ortant that INST
4f70: 5f 45 56 41 4c 5f 53 54 4b 20 70 6f 70 20 69 74 _EVAL_STK pop it
4f80: 73 0a 20 09 20 2a 20 61 72 67 75 6d 65 6e 74 20 s. . * argument
4f90: 66 72 6f 6d 20 74 68 65 20 73 74 61 63 6b 20 62 from the stack b
4fa0: 65 66 6f 72 65 20 6a 75 6d 70 69 6e 67 20 74 6f efore jumping to
4fb0: 20 63 68 65 63 6b 46 6f 72 43 61 74 63 68 21 20 checkForCatch!
4fc0: 44 4f 20 4e 4f 54 0a 40 40 20 2d 32 33 37 36 2c DO NOT.@@ -2376,
4fd0: 37 20 2b 32 35 37 39 2c 37 20 40 40 20 54 63 6c 7 +2579,7 @@ Tcl
4fe0: 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 28 ExecuteByteCode(
4ff0: 0a 20 09 7d 0a 20 20 20 20 20 7d 0a 20 0a 2d 20 . .}. }. .-
5000: 20 20 20 63 61 73 65 20 49 4e 53 54 5f 45 58 50 case INST_EXP
5010: 52 5f 53 54 4b 3a 20 7b 0a 2b 20 20 20 20 43 41 R_STK: {.+ CA
5020: 53 45 28 49 4e 53 54 5f 45 58 50 52 5f 53 54 4b SE(INST_EXPR_STK
5030: 29 3a 20 7b 0a 20 09 54 63 6c 5f 4f 62 6a 20 2a ): {. .Tcl_Obj *
5040: 6f 62 6a 50 74 72 2c 20 2a 76 61 6c 75 65 50 74 objPtr, *valuePt
5050: 72 3b 0a 20 0a 20 09 6f 62 6a 50 74 72 20 3d 20 r;. . .objPtr =
5060: 4f 42 4a 5f 41 54 5f 54 4f 53 3b 0a 40 40 20 2d OBJ_AT_TOS;.@@ -
5070: 32 34 30 39 2c 37 20 2b 32 36 31 32 2c 37 20 40 2409,7 +2612,7 @
5080: 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 @ TclExecuteByte
5090: 43 6f 64 65 28 0a 20 09 56 61 72 20 2a 76 61 72 Code(. .Var *var
50a0: 50 74 72 2c 20 2a 61 72 72 61 79 50 74 72 3b 0a Ptr, *arrayPtr;.
50b0: 20 09 54 63 6c 5f 4f 62 6a 20 2a 6f 62 6a 50 74 .Tcl_Obj *objPt
50c0: 72 3b 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 r;. .- case I
50d0: 4e 53 54 5f 4c 4f 41 44 5f 53 43 41 4c 41 52 31 NST_LOAD_SCALAR1
50e0: 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 :.+ CASE(INST
50f0: 5f 4c 4f 41 44 5f 53 43 41 4c 41 52 31 29 3a 0a _LOAD_SCALAR1):.
5100: 20 09 69 6e 73 74 4c 6f 61 64 53 63 61 6c 61 72 .instLoadScalar
5110: 31 3a 0a 20 09 6f 70 6e 64 20 3d 20 54 63 6c 47 1:. .opnd = TclG
5120: 65 74 55 49 6e 74 31 41 74 50 74 72 28 70 63 2b etUInt1AtPtr(pc+
5130: 31 29 3b 0a 20 09 76 61 72 50 74 72 20 3d 20 26 1);. .varPtr = &
5140: 28 63 6f 6d 70 69 6c 65 64 4c 6f 63 61 6c 73 5b (compiledLocals[
5150: 6f 70 6e 64 5d 29 3b 0a 40 40 20 2d 32 34 33 32 opnd]);.@@ -2432
5160: 2c 37 20 2b 32 36 33 35 2c 37 20 40 40 20 54 63 ,7 +2635,7 @@ Tc
5170: 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 lExecuteByteCode
5180: 28 0a 20 09 70 61 72 74 31 50 74 72 20 3d 20 70 (. .part1Ptr = p
5190: 61 72 74 32 50 74 72 20 3d 20 4e 55 4c 4c 3b 0a art2Ptr = NULL;.
51a0: 20 09 67 6f 74 6f 20 64 6f 43 61 6c 6c 50 74 72 .goto doCallPtr
51b0: 47 65 74 56 61 72 3b 0a 20 0a 2d 20 20 20 20 63 GetVar;. .- c
51c0: 61 73 65 20 49 4e 53 54 5f 4c 4f 41 44 5f 53 43 ase INST_LOAD_SC
51d0: 41 4c 41 52 34 3a 0a 2b 20 20 20 20 43 41 53 45 ALAR4:.+ CASE
51e0: 28 49 4e 53 54 5f 4c 4f 41 44 5f 53 43 41 4c 41 (INST_LOAD_SCALA
51f0: 52 34 29 3a 0a 20 09 6f 70 6e 64 20 3d 20 54 63 R4):. .opnd = Tc
5200: 6c 47 65 74 55 49 6e 74 34 41 74 50 74 72 28 70 lGetUInt4AtPtr(p
5210: 63 2b 31 29 3b 0a 20 09 76 61 72 50 74 72 20 3d c+1);. .varPtr =
5220: 20 26 28 63 6f 6d 70 69 6c 65 64 4c 6f 63 61 6c &(compiledLocal
5230: 73 5b 6f 70 6e 64 5d 29 3b 0a 20 09 77 68 69 6c s[opnd]);. .whil
5240: 65 20 28 54 63 6c 49 73 56 61 72 4c 69 6e 6b 28 e (TclIsVarLink(
5250: 76 61 72 50 74 72 29 29 20 7b 0a 40 40 20 2d 32 varPtr)) {.@@ -2
5260: 34 35 34 2c 31 32 20 2b 32 36 35 37 2c 31 32 20 454,12 +2657,12
5270: 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 @@ TclExecuteByt
5280: 65 43 6f 64 65 28 0a 20 09 70 61 72 74 31 50 74 eCode(. .part1Pt
5290: 72 20 3d 20 70 61 72 74 32 50 74 72 20 3d 20 4e r = part2Ptr = N
52a0: 55 4c 4c 3b 0a 20 09 67 6f 74 6f 20 64 6f 43 61 ULL;. .goto doCa
52b0: 6c 6c 50 74 72 47 65 74 56 61 72 3b 0a 20 0a 2d llPtrGetVar;. .-
52c0: 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 4c 4f case INST_LO
52d0: 41 44 5f 41 52 52 41 59 34 3a 0a 2b 20 20 20 20 AD_ARRAY4:.+
52e0: 43 41 53 45 28 49 4e 53 54 5f 4c 4f 41 44 5f 41 CASE(INST_LOAD_A
52f0: 52 52 41 59 34 29 3a 0a 20 09 6f 70 6e 64 20 3d RRAY4):. .opnd =
5300: 20 54 63 6c 47 65 74 55 49 6e 74 34 41 74 50 74 TclGetUInt4AtPt
5310: 72 28 70 63 2b 31 29 3b 0a 20 09 70 63 41 64 6a r(pc+1);. .pcAdj
5320: 75 73 74 6d 65 6e 74 20 3d 20 35 3b 0a 20 09 67 ustment = 5;. .g
5330: 6f 74 6f 20 64 6f 4c 6f 61 64 41 72 72 61 79 3b oto doLoadArray;
5340: 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 . .- case INS
5350: 54 5f 4c 4f 41 44 5f 41 52 52 41 59 31 3a 0a 2b T_LOAD_ARRAY1:.+
5360: 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 4c 4f CASE(INST_LO
5370: 41 44 5f 41 52 52 41 59 31 29 3a 0a 20 09 6f 70 AD_ARRAY1):. .op
5380: 6e 64 20 3d 20 54 63 6c 47 65 74 55 49 6e 74 31 nd = TclGetUInt1
5390: 41 74 50 74 72 28 70 63 2b 31 29 3b 0a 20 09 70 AtPtr(pc+1);. .p
53a0: 63 41 64 6a 75 73 74 6d 65 6e 74 20 3d 20 32 3b cAdjustment = 2;
53b0: 0a 20 0a 40 40 20 2d 32 34 39 34 2c 31 35 20 2b . .@@ -2494,15 +
53c0: 32 36 39 37 2c 31 35 20 40 40 20 54 63 6c 45 78 2697,15 @@ TclEx
53d0: 65 63 75 74 65 42 79 74 65 43 6f 64 65 28 0a 20 ecuteByteCode(.
53e0: 09 63 6c 65 61 6e 75 70 20 3d 20 31 3b 0a 20 09 .cleanup = 1;. .
53f0: 67 6f 74 6f 20 64 6f 43 61 6c 6c 50 74 72 47 65 goto doCallPtrGe
5400: 74 56 61 72 3b 0a 20 0a 2d 20 20 20 20 63 61 73 tVar;. .- cas
5410: 65 20 49 4e 53 54 5f 4c 4f 41 44 5f 41 52 52 41 e INST_LOAD_ARRA
5420: 59 5f 53 54 4b 3a 0a 2b 20 20 20 20 43 41 53 45 Y_STK:.+ CASE
5430: 28 49 4e 53 54 5f 4c 4f 41 44 5f 41 52 52 41 59 (INST_LOAD_ARRAY
5440: 5f 53 54 4b 29 3a 0a 20 09 63 6c 65 61 6e 75 70 _STK):. .cleanup
5450: 20 3d 20 32 3b 0a 20 09 70 61 72 74 32 50 74 72 = 2;. .part2Ptr
5460: 20 3d 20 4f 42 4a 5f 41 54 5f 54 4f 53 3b 09 09 = OBJ_AT_TOS;..
5470: 2f 2a 20 65 6c 65 6d 65 6e 74 20 6e 61 6d 65 20 /* element name
5480: 2a 2f 0a 20 09 6f 62 6a 50 74 72 20 3d 20 4f 42 */. .objPtr = OB
5490: 4a 5f 55 4e 44 45 52 5f 54 4f 53 3b 09 09 2f 2a J_UNDER_TOS;../*
54a0: 20 61 72 72 61 79 20 6e 61 6d 65 20 2a 2f 0a 20 array name */.
54b0: 09 54 52 41 43 45 28 28 22 5c 22 25 2e 33 30 73 .TRACE(("\"%.30s
54c0: 28 25 2e 33 30 73 29 5c 22 20 3d 3e 20 22 2c 20 (%.30s)\" => ",
54d0: 4f 32 53 28 6f 62 6a 50 74 72 29 2c 20 4f 32 53 O2S(objPtr), O2S
54e0: 28 70 61 72 74 32 50 74 72 29 29 29 3b 0a 20 09 (part2Ptr)));. .
54f0: 67 6f 74 6f 20 64 6f 4c 6f 61 64 53 74 6b 3b 0a goto doLoadStk;.
5500: 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 .- case INST
5510: 5f 4c 4f 41 44 5f 53 54 4b 3a 0a 2d 20 20 20 20 _LOAD_STK:.-
5520: 63 61 73 65 20 49 4e 53 54 5f 4c 4f 41 44 5f 53 case INST_LOAD_S
5530: 43 41 4c 41 52 5f 53 54 4b 3a 0a 2b 20 20 20 20 CALAR_STK:.+
5540: 43 41 53 45 28 49 4e 53 54 5f 4c 4f 41 44 5f 53 CASE(INST_LOAD_S
5550: 54 4b 29 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 TK):.+ CASE(I
5560: 4e 53 54 5f 4c 4f 41 44 5f 53 43 41 4c 41 52 5f NST_LOAD_SCALAR_
5570: 53 54 4b 29 3a 0a 20 09 63 6c 65 61 6e 75 70 20 STK):. .cleanup
5580: 3d 20 31 3b 0a 20 09 70 61 72 74 32 50 74 72 20 = 1;. .part2Ptr
5590: 3d 20 4e 55 4c 4c 3b 0a 20 09 6f 62 6a 50 74 72 = NULL;. .objPtr
55a0: 20 3d 20 4f 42 4a 5f 41 54 5f 54 4f 53 3b 09 09 = OBJ_AT_TOS;..
55b0: 2f 2a 20 76 61 72 69 61 62 6c 65 20 6e 61 6d 65 /* variable name
55c0: 20 2a 2f 0a 40 40 20 2d 32 35 37 32 2c 31 32 20 */.@@ -2572,12
55d0: 2b 32 37 37 35 2c 31 32 20 40 40 20 54 63 6c 45 +2775,12 @@ TclE
55e0: 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 28 0a xecuteByteCode(.
55f0: 20 09 56 61 72 20 2a 76 61 72 50 74 72 2c 20 2a .Var *varPtr, *
5600: 61 72 72 61 79 50 74 72 3b 0a 20 09 54 63 6c 5f arrayPtr;. .Tcl_
5610: 4f 62 6a 20 2a 6f 62 6a 50 74 72 2c 20 2a 76 61 Obj *objPtr, *va
5620: 6c 75 65 50 74 72 3b 0a 20 0a 2d 20 20 20 20 63 luePtr;. .- c
5630: 61 73 65 20 49 4e 53 54 5f 53 54 4f 52 45 5f 41 ase INST_STORE_A
5640: 52 52 41 59 34 3a 0a 2b 20 20 20 20 43 41 53 45 RRAY4:.+ CASE
5650: 28 49 4e 53 54 5f 53 54 4f 52 45 5f 41 52 52 41 (INST_STORE_ARRA
5660: 59 34 29 3a 0a 20 09 6f 70 6e 64 20 3d 20 54 63 Y4):. .opnd = Tc
5670: 6c 47 65 74 55 49 6e 74 34 41 74 50 74 72 28 70 lGetUInt4AtPtr(p
5680: 63 2b 31 29 3b 0a 20 09 70 63 41 64 6a 75 73 74 c+1);. .pcAdjust
5690: 6d 65 6e 74 20 3d 20 35 3b 0a 20 09 67 6f 74 6f ment = 5;. .goto
56a0: 20 64 6f 53 74 6f 72 65 41 72 72 61 79 44 69 72 doStoreArrayDir
56b0: 65 63 74 3b 0a 20 0a 2d 20 20 20 20 63 61 73 65 ect;. .- case
56c0: 20 49 4e 53 54 5f 53 54 4f 52 45 5f 41 52 52 41 INST_STORE_ARRA
56d0: 59 31 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e Y1:.+ CASE(IN
56e0: 53 54 5f 53 54 4f 52 45 5f 41 52 52 41 59 31 29 ST_STORE_ARRAY1)
56f0: 3a 0a 20 09 6f 70 6e 64 20 3d 20 54 63 6c 47 65 :. .opnd = TclGe
5700: 74 55 49 6e 74 31 41 74 50 74 72 28 70 63 2b 31 tUInt1AtPtr(pc+1
5710: 29 3b 0a 20 09 70 63 41 64 6a 75 73 74 6d 65 6e );. .pcAdjustmen
5720: 74 20 3d 20 32 3b 0a 20 0a 40 40 20 2d 32 36 30 t = 2;. .@@ -260
5730: 34 2c 31 32 20 2b 32 38 30 37 2c 31 32 20 40 40 4,12 +2807,12 @@
5740: 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 TclExecuteByteC
5750: 6f 64 65 28 0a 20 09 70 61 72 74 31 50 74 72 20 ode(. .part1Ptr
5760: 3d 20 4e 55 4c 4c 3b 0a 20 09 67 6f 74 6f 20 64 = NULL;. .goto d
5770: 6f 53 74 6f 72 65 41 72 72 61 79 44 69 72 65 63 oStoreArrayDirec
5780: 74 46 61 69 6c 65 64 3b 0a 20 0a 2d 20 20 20 20 tFailed;. .-
5790: 63 61 73 65 20 49 4e 53 54 5f 53 54 4f 52 45 5f case INST_STORE_
57a0: 53 43 41 4c 41 52 34 3a 0a 2b 20 20 20 20 43 41 SCALAR4:.+ CA
57b0: 53 45 28 49 4e 53 54 5f 53 54 4f 52 45 5f 53 43 SE(INST_STORE_SC
57c0: 41 4c 41 52 34 29 3a 0a 20 09 6f 70 6e 64 20 3d ALAR4):. .opnd =
57d0: 20 54 63 6c 47 65 74 55 49 6e 74 34 41 74 50 74 TclGetUInt4AtPt
57e0: 72 28 70 63 2b 31 29 3b 0a 20 09 70 63 41 64 6a r(pc+1);. .pcAdj
57f0: 75 73 74 6d 65 6e 74 20 3d 20 35 3b 0a 20 09 67 ustment = 5;. .g
5800: 6f 74 6f 20 64 6f 53 74 6f 72 65 53 63 61 6c 61 oto doStoreScala
5810: 72 44 69 72 65 63 74 3b 0a 20 0a 2d 20 20 20 20 rDirect;. .-
5820: 63 61 73 65 20 49 4e 53 54 5f 53 54 4f 52 45 5f case INST_STORE_
5830: 53 43 41 4c 41 52 31 3a 0a 2b 20 20 20 20 43 41 SCALAR1:.+ CA
5840: 53 45 28 49 4e 53 54 5f 53 54 4f 52 45 5f 53 43 SE(INST_STORE_SC
5850: 41 4c 41 52 31 29 3a 0a 20 09 6f 70 6e 64 20 3d ALAR1):. .opnd =
5860: 20 54 63 6c 47 65 74 55 49 6e 74 31 41 74 50 74 TclGetUInt1AtPt
5870: 72 28 70 63 2b 31 29 3b 0a 20 09 70 63 41 64 6a r(pc+1);. .pcAdj
5880: 75 73 74 6d 65 6e 74 20 3d 20 32 3b 0a 20 0a 40 ustment = 2;. .@
5890: 40 20 2d 32 36 34 39 2c 34 30 20 2b 32 38 35 32 @ -2649,40 +2852
58a0: 2c 34 30 20 40 40 20 54 63 6c 45 78 65 63 75 74 ,40 @@ TclExecut
58b0: 65 42 79 74 65 43 6f 64 65 28 0a 20 09 70 61 72 eByteCode(. .par
58c0: 74 31 50 74 72 20 3d 20 4e 55 4c 4c 3b 0a 20 09 t1Ptr = NULL;. .
58d0: 67 6f 74 6f 20 64 6f 53 74 6f 72 65 53 63 61 6c goto doStoreScal
58e0: 61 72 3b 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 ar;. .- case
58f0: 49 4e 53 54 5f 4c 41 50 50 45 4e 44 5f 53 54 4b INST_LAPPEND_STK
5900: 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 :.+ CASE(INST
5910: 5f 4c 41 50 50 45 4e 44 5f 53 54 4b 29 3a 0a 20 _LAPPEND_STK):.
5920: 09 76 61 6c 75 65 50 74 72 20 3d 20 4f 42 4a 5f .valuePtr = OBJ_
5930: 41 54 5f 54 4f 53 3b 20 2f 2a 20 76 61 6c 75 65 AT_TOS; /* value
5940: 20 74 6f 20 61 70 70 65 6e 64 20 2a 2f 0a 20 09 to append */. .
5950: 70 61 72 74 32 50 74 72 20 3d 20 4e 55 4c 4c 3b part2Ptr = NULL;
5960: 0a 20 09 73 74 6f 72 65 46 6c 61 67 73 20 3d 20 . .storeFlags =
5970: 28 54 43 4c 5f 4c 45 41 56 45 5f 45 52 52 5f 4d (TCL_LEAVE_ERR_M
5980: 53 47 20 7c 20 54 43 4c 5f 41 50 50 45 4e 44 5f SG | TCL_APPEND_
5990: 56 41 4c 55 45 0a 20 09 09 7c 20 54 43 4c 5f 4c VALUE. ..| TCL_L
59a0: 49 53 54 5f 45 4c 45 4d 45 4e 54 20 7c 20 54 43 IST_ELEMENT | TC
59b0: 4c 5f 54 52 41 43 45 5f 52 45 41 44 53 29 3b 0a L_TRACE_READS);.
59c0: 20 09 67 6f 74 6f 20 64 6f 53 74 6f 72 65 53 74 .goto doStoreSt
59d0: 6b 3b 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 k;. .- case I
59e0: 4e 53 54 5f 4c 41 50 50 45 4e 44 5f 41 52 52 41 NST_LAPPEND_ARRA
59f0: 59 5f 53 54 4b 3a 0a 2b 20 20 20 20 43 41 53 45 Y_STK:.+ CASE
5a00: 28 49 4e 53 54 5f 4c 41 50 50 45 4e 44 5f 41 52 (INST_LAPPEND_AR
5a10: 52 41 59 5f 53 54 4b 29 3a 0a 20 09 76 61 6c 75 RAY_STK):. .valu
5a20: 65 50 74 72 20 3d 20 4f 42 4a 5f 41 54 5f 54 4f ePtr = OBJ_AT_TO
5a30: 53 3b 20 2f 2a 20 76 61 6c 75 65 20 74 6f 20 61 S; /* value to a
5a40: 70 70 65 6e 64 20 2a 2f 0a 20 09 70 61 72 74 32 ppend */. .part2
5a50: 50 74 72 20 3d 20 4f 42 4a 5f 55 4e 44 45 52 5f Ptr = OBJ_UNDER_
5a60: 54 4f 53 3b 0a 20 09 73 74 6f 72 65 46 6c 61 67 TOS;. .storeFlag
5a70: 73 20 3d 20 28 54 43 4c 5f 4c 45 41 56 45 5f 45 s = (TCL_LEAVE_E
5a80: 52 52 5f 4d 53 47 20 7c 20 54 43 4c 5f 41 50 50 RR_MSG | TCL_APP
5a90: 45 4e 44 5f 56 41 4c 55 45 0a 20 09 09 7c 20 54 END_VALUE. ..| T
5aa0: 43 4c 5f 4c 49 53 54 5f 45 4c 45 4d 45 4e 54 20 CL_LIST_ELEMENT
5ab0: 7c 20 54 43 4c 5f 54 52 41 43 45 5f 52 45 41 44 | TCL_TRACE_READ
5ac0: 53 29 3b 0a 20 09 67 6f 74 6f 20 64 6f 53 74 6f S);. .goto doSto
5ad0: 72 65 53 74 6b 3b 0a 20 0a 2d 20 20 20 20 63 61 reStk;. .- ca
5ae0: 73 65 20 49 4e 53 54 5f 41 50 50 45 4e 44 5f 53 se INST_APPEND_S
5af0: 54 4b 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e TK:.+ CASE(IN
5b00: 53 54 5f 41 50 50 45 4e 44 5f 53 54 4b 29 3a 0a ST_APPEND_STK):.
5b10: 20 09 76 61 6c 75 65 50 74 72 20 3d 20 4f 42 4a .valuePtr = OBJ
5b20: 5f 41 54 5f 54 4f 53 3b 20 2f 2a 20 76 61 6c 75 _AT_TOS; /* valu
5b30: 65 20 74 6f 20 61 70 70 65 6e 64 20 2a 2f 0a 20 e to append */.
5b40: 09 70 61 72 74 32 50 74 72 20 3d 20 4e 55 4c 4c .part2Ptr = NULL
5b50: 3b 0a 20 09 73 74 6f 72 65 46 6c 61 67 73 20 3d ;. .storeFlags =
5b60: 20 28 54 43 4c 5f 4c 45 41 56 45 5f 45 52 52 5f (TCL_LEAVE_ERR_
5b70: 4d 53 47 20 7c 20 54 43 4c 5f 41 50 50 45 4e 44 MSG | TCL_APPEND
5b80: 5f 56 41 4c 55 45 29 3b 0a 20 09 67 6f 74 6f 20 _VALUE);. .goto
5b90: 64 6f 53 74 6f 72 65 53 74 6b 3b 0a 20 0a 2d 20 doStoreStk;. .-
5ba0: 20 20 20 63 61 73 65 20 49 4e 53 54 5f 41 50 50 case INST_APP
5bb0: 45 4e 44 5f 41 52 52 41 59 5f 53 54 4b 3a 0a 2b END_ARRAY_STK:.+
5bc0: 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 41 50 CASE(INST_AP
5bd0: 50 45 4e 44 5f 41 52 52 41 59 5f 53 54 4b 29 3a PEND_ARRAY_STK):
5be0: 0a 20 09 76 61 6c 75 65 50 74 72 20 3d 20 4f 42 . .valuePtr = OB
5bf0: 4a 5f 41 54 5f 54 4f 53 3b 20 2f 2a 20 76 61 6c J_AT_TOS; /* val
5c00: 75 65 20 74 6f 20 61 70 70 65 6e 64 20 2a 2f 0a ue to append */.
5c10: 20 09 70 61 72 74 32 50 74 72 20 3d 20 4f 42 4a .part2Ptr = OBJ
5c20: 5f 55 4e 44 45 52 5f 54 4f 53 3b 0a 20 09 73 74 _UNDER_TOS;. .st
5c30: 6f 72 65 46 6c 61 67 73 20 3d 20 28 54 43 4c 5f oreFlags = (TCL_
5c40: 4c 45 41 56 45 5f 45 52 52 5f 4d 53 47 20 7c 20 LEAVE_ERR_MSG |
5c50: 54 43 4c 5f 41 50 50 45 4e 44 5f 56 41 4c 55 45 TCL_APPEND_VALUE
5c60: 29 3b 0a 20 09 67 6f 74 6f 20 64 6f 53 74 6f 72 );. .goto doStor
5c70: 65 53 74 6b 3b 0a 20 0a 2d 20 20 20 20 63 61 73 eStk;. .- cas
5c80: 65 20 49 4e 53 54 5f 53 54 4f 52 45 5f 41 52 52 e INST_STORE_ARR
5c90: 41 59 5f 53 54 4b 3a 0a 2b 20 20 20 20 43 41 53 AY_STK:.+ CAS
5ca0: 45 28 49 4e 53 54 5f 53 54 4f 52 45 5f 41 52 52 E(INST_STORE_ARR
5cb0: 41 59 5f 53 54 4b 29 3a 0a 20 09 76 61 6c 75 65 AY_STK):. .value
5cc0: 50 74 72 20 3d 20 4f 42 4a 5f 41 54 5f 54 4f 53 Ptr = OBJ_AT_TOS
5cd0: 3b 0a 20 09 70 61 72 74 32 50 74 72 20 3d 20 4f ;. .part2Ptr = O
5ce0: 42 4a 5f 55 4e 44 45 52 5f 54 4f 53 3b 0a 20 09 BJ_UNDER_TOS;. .
5cf0: 73 74 6f 72 65 46 6c 61 67 73 20 3d 20 54 43 4c storeFlags = TCL
5d00: 5f 4c 45 41 56 45 5f 45 52 52 5f 4d 53 47 3b 0a _LEAVE_ERR_MSG;.
5d10: 20 09 67 6f 74 6f 20 64 6f 53 74 6f 72 65 53 74 .goto doStoreSt
5d20: 6b 3b 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 k;. .- case I
5d30: 4e 53 54 5f 53 54 4f 52 45 5f 53 54 4b 3a 0a 2d NST_STORE_STK:.-
5d40: 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 53 54 case INST_ST
5d50: 4f 52 45 5f 53 43 41 4c 41 52 5f 53 54 4b 3a 0a ORE_SCALAR_STK:.
5d60: 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 53 + CASE(INST_S
5d70: 54 4f 52 45 5f 53 54 4b 29 3a 0a 2b 20 20 20 20 TORE_STK):.+
5d80: 43 41 53 45 28 49 4e 53 54 5f 53 54 4f 52 45 5f CASE(INST_STORE_
5d90: 53 43 41 4c 41 52 5f 53 54 4b 29 3a 0a 20 09 76 SCALAR_STK):. .v
5da0: 61 6c 75 65 50 74 72 20 3d 20 4f 42 4a 5f 41 54 aluePtr = OBJ_AT
5db0: 5f 54 4f 53 3b 0a 20 09 70 61 72 74 32 50 74 72 _TOS;. .part2Ptr
5dc0: 20 3d 20 4e 55 4c 4c 3b 0a 20 09 73 74 6f 72 65 = NULL;. .store
5dd0: 46 6c 61 67 73 20 3d 20 54 43 4c 5f 4c 45 41 56 Flags = TCL_LEAV
5de0: 45 5f 45 52 52 5f 4d 53 47 3b 0a 40 40 20 2d 32 E_ERR_MSG;.@@ -2
5df0: 37 31 31 2c 32 37 20 2b 32 39 31 34 2c 32 37 20 711,27 +2914,27
5e00: 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 @@ TclExecuteByt
5e10: 65 43 6f 64 65 28 0a 20 09 20 20 20 20 67 6f 74 eCode(. . got
5e20: 6f 20 63 68 65 63 6b 46 6f 72 43 61 74 63 68 3b o checkForCatch;
5e30: 0a 20 09 7d 0a 20 0a 2d 20 20 20 20 63 61 73 65 . .}. .- case
5e40: 20 49 4e 53 54 5f 4c 41 50 50 45 4e 44 5f 41 52 INST_LAPPEND_AR
5e50: 52 41 59 34 3a 0a 2b 20 20 20 20 43 41 53 45 28 RAY4:.+ CASE(
5e60: 49 4e 53 54 5f 4c 41 50 50 45 4e 44 5f 41 52 52 INST_LAPPEND_ARR
5e70: 41 59 34 29 3a 0a 20 09 6f 70 6e 64 20 3d 20 54 AY4):. .opnd = T
5e80: 63 6c 47 65 74 55 49 6e 74 34 41 74 50 74 72 28 clGetUInt4AtPtr(
5e90: 70 63 2b 31 29 3b 0a 20 09 70 63 41 64 6a 75 73 pc+1);. .pcAdjus
5ea0: 74 6d 65 6e 74 20 3d 20 35 3b 0a 20 09 73 74 6f tment = 5;. .sto
5eb0: 72 65 46 6c 61 67 73 20 3d 20 28 54 43 4c 5f 4c reFlags = (TCL_L
5ec0: 45 41 56 45 5f 45 52 52 5f 4d 53 47 20 7c 20 54 EAVE_ERR_MSG | T
5ed0: 43 4c 5f 41 50 50 45 4e 44 5f 56 41 4c 55 45 0a CL_APPEND_VALUE.
5ee0: 20 09 09 7c 20 54 43 4c 5f 4c 49 53 54 5f 45 4c ..| TCL_LIST_EL
5ef0: 45 4d 45 4e 54 20 7c 20 54 43 4c 5f 54 52 41 43 EMENT | TCL_TRAC
5f00: 45 5f 52 45 41 44 53 29 3b 0a 20 09 67 6f 74 6f E_READS);. .goto
5f10: 20 64 6f 53 74 6f 72 65 41 72 72 61 79 3b 0a 20 doStoreArray;.
5f20: 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f .- case INST_
5f30: 4c 41 50 50 45 4e 44 5f 41 52 52 41 59 31 3a 0a LAPPEND_ARRAY1:.
5f40: 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 4c + CASE(INST_L
5f50: 41 50 50 45 4e 44 5f 41 52 52 41 59 31 29 3a 0a APPEND_ARRAY1):.
5f60: 20 09 6f 70 6e 64 20 3d 20 54 63 6c 47 65 74 55 .opnd = TclGetU
5f70: 49 6e 74 31 41 74 50 74 72 28 70 63 2b 31 29 3b Int1AtPtr(pc+1);
5f80: 0a 20 09 70 63 41 64 6a 75 73 74 6d 65 6e 74 20 . .pcAdjustment
5f90: 3d 20 32 3b 0a 20 09 73 74 6f 72 65 46 6c 61 67 = 2;. .storeFlag
5fa0: 73 20 3d 20 28 54 43 4c 5f 4c 45 41 56 45 5f 45 s = (TCL_LEAVE_E
5fb0: 52 52 5f 4d 53 47 20 7c 20 54 43 4c 5f 41 50 50 RR_MSG | TCL_APP
5fc0: 45 4e 44 5f 56 41 4c 55 45 0a 20 09 09 7c 20 54 END_VALUE. ..| T
5fd0: 43 4c 5f 4c 49 53 54 5f 45 4c 45 4d 45 4e 54 20 CL_LIST_ELEMENT
5fe0: 7c 20 54 43 4c 5f 54 52 41 43 45 5f 52 45 41 44 | TCL_TRACE_READ
5ff0: 53 29 3b 0a 20 09 67 6f 74 6f 20 64 6f 53 74 6f S);. .goto doSto
6000: 72 65 41 72 72 61 79 3b 0a 20 0a 2d 20 20 20 20 reArray;. .-
6010: 63 61 73 65 20 49 4e 53 54 5f 41 50 50 45 4e 44 case INST_APPEND
6020: 5f 41 52 52 41 59 34 3a 0a 2b 20 20 20 20 43 41 _ARRAY4:.+ CA
6030: 53 45 28 49 4e 53 54 5f 41 50 50 45 4e 44 5f 41 SE(INST_APPEND_A
6040: 52 52 41 59 34 29 3a 0a 20 09 6f 70 6e 64 20 3d RRAY4):. .opnd =
6050: 20 54 63 6c 47 65 74 55 49 6e 74 34 41 74 50 74 TclGetUInt4AtPt
6060: 72 28 70 63 2b 31 29 3b 0a 20 09 70 63 41 64 6a r(pc+1);. .pcAdj
6070: 75 73 74 6d 65 6e 74 20 3d 20 35 3b 0a 20 09 73 ustment = 5;. .s
6080: 74 6f 72 65 46 6c 61 67 73 20 3d 20 28 54 43 4c toreFlags = (TCL
6090: 5f 4c 45 41 56 45 5f 45 52 52 5f 4d 53 47 20 7c _LEAVE_ERR_MSG |
60a0: 20 54 43 4c 5f 41 50 50 45 4e 44 5f 56 41 4c 55 TCL_APPEND_VALU
60b0: 45 29 3b 0a 20 09 67 6f 74 6f 20 64 6f 53 74 6f E);. .goto doSto
60c0: 72 65 41 72 72 61 79 3b 0a 20 0a 2d 20 20 20 20 reArray;. .-
60d0: 63 61 73 65 20 49 4e 53 54 5f 41 50 50 45 4e 44 case INST_APPEND
60e0: 5f 41 52 52 41 59 31 3a 0a 2b 20 20 20 20 43 41 _ARRAY1:.+ CA
60f0: 53 45 28 49 4e 53 54 5f 41 50 50 45 4e 44 5f 41 SE(INST_APPEND_A
6100: 52 52 41 59 31 29 3a 0a 20 09 6f 70 6e 64 20 3d RRAY1):. .opnd =
6110: 20 54 63 6c 47 65 74 55 49 6e 74 31 41 74 50 74 TclGetUInt1AtPt
6120: 72 28 70 63 2b 31 29 3b 0a 20 09 70 63 41 64 6a r(pc+1);. .pcAdj
6130: 75 73 74 6d 65 6e 74 20 3d 20 32 3b 0a 20 09 73 ustment = 2;. .s
6140: 74 6f 72 65 46 6c 61 67 73 20 3d 20 28 54 43 4c toreFlags = (TCL
6150: 5f 4c 45 41 56 45 5f 45 52 52 5f 4d 53 47 20 7c _LEAVE_ERR_MSG |
6160: 20 54 43 4c 5f 41 50 50 45 4e 44 5f 56 41 4c 55 TCL_APPEND_VALU
6170: 45 29 3b 0a 40 40 20 2d 32 37 36 30 2c 32 37 20 E);.@@ -2760,27
6180: 2b 32 39 36 33 2c 32 37 20 40 40 20 54 63 6c 45 +2963,27 @@ TclE
6190: 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 28 0a xecuteByteCode(.
61a0: 20 09 20 20 20 20 67 6f 74 6f 20 63 68 65 63 6b . goto check
61b0: 46 6f 72 43 61 74 63 68 3b 0a 20 09 7d 0a 20 0a ForCatch;. .}. .
61c0: 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 4c - case INST_L
61d0: 41 50 50 45 4e 44 5f 53 43 41 4c 41 52 34 3a 0a APPEND_SCALAR4:.
61e0: 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 4c + CASE(INST_L
61f0: 41 50 50 45 4e 44 5f 53 43 41 4c 41 52 34 29 3a APPEND_SCALAR4):
6200: 0a 20 09 6f 70 6e 64 20 3d 20 54 63 6c 47 65 74 . .opnd = TclGet
6210: 55 49 6e 74 34 41 74 50 74 72 28 70 63 2b 31 29 UInt4AtPtr(pc+1)
6220: 3b 0a 20 09 70 63 41 64 6a 75 73 74 6d 65 6e 74 ;. .pcAdjustment
6230: 20 3d 20 35 3b 0a 20 09 73 74 6f 72 65 46 6c 61 = 5;. .storeFla
6240: 67 73 20 3d 20 28 54 43 4c 5f 4c 45 41 56 45 5f gs = (TCL_LEAVE_
6250: 45 52 52 5f 4d 53 47 20 7c 20 54 43 4c 5f 41 50 ERR_MSG | TCL_AP
6260: 50 45 4e 44 5f 56 41 4c 55 45 0a 20 09 09 7c 20 PEND_VALUE. ..|
6270: 54 43 4c 5f 4c 49 53 54 5f 45 4c 45 4d 45 4e 54 TCL_LIST_ELEMENT
6280: 20 7c 20 54 43 4c 5f 54 52 41 43 45 5f 52 45 41 | TCL_TRACE_REA
6290: 44 53 29 3b 0a 20 09 67 6f 74 6f 20 64 6f 53 74 DS);. .goto doSt
62a0: 6f 72 65 53 63 61 6c 61 72 3b 0a 20 0a 2d 20 20 oreScalar;. .-
62b0: 20 20 63 61 73 65 20 49 4e 53 54 5f 4c 41 50 50 case INST_LAPP
62c0: 45 4e 44 5f 53 43 41 4c 41 52 31 3a 0a 2b 20 20 END_SCALAR1:.+
62d0: 20 20 43 41 53 45 28 49 4e 53 54 5f 4c 41 50 50 CASE(INST_LAPP
62e0: 45 4e 44 5f 53 43 41 4c 41 52 31 29 3a 0a 20 09 END_SCALAR1):. .
62f0: 6f 70 6e 64 20 3d 20 54 63 6c 47 65 74 55 49 6e opnd = TclGetUIn
6300: 74 31 41 74 50 74 72 28 70 63 2b 31 29 3b 0a 20 t1AtPtr(pc+1);.
6310: 09 70 63 41 64 6a 75 73 74 6d 65 6e 74 20 3d 20 .pcAdjustment =
6320: 32 3b 0a 20 09 73 74 6f 72 65 46 6c 61 67 73 20 2;. .storeFlags
6330: 3d 20 28 54 43 4c 5f 4c 45 41 56 45 5f 45 52 52 = (TCL_LEAVE_ERR
6340: 5f 4d 53 47 20 7c 20 54 43 4c 5f 41 50 50 45 4e _MSG | TCL_APPEN
6350: 44 5f 56 41 4c 55 45 0a 20 09 09 7c 20 54 43 4c D_VALUE. ..| TCL
6360: 5f 4c 49 53 54 5f 45 4c 45 4d 45 4e 54 20 7c 20 _LIST_ELEMENT |
6370: 54 43 4c 5f 54 52 41 43 45 5f 52 45 41 44 53 29 TCL_TRACE_READS)
6380: 3b 0a 20 09 67 6f 74 6f 20 64 6f 53 74 6f 72 65 ;. .goto doStore
6390: 53 63 61 6c 61 72 3b 0a 20 0a 2d 20 20 20 20 63 Scalar;. .- c
63a0: 61 73 65 20 49 4e 53 54 5f 41 50 50 45 4e 44 5f ase INST_APPEND_
63b0: 53 43 41 4c 41 52 34 3a 0a 2b 20 20 20 20 43 41 SCALAR4:.+ CA
63c0: 53 45 28 49 4e 53 54 5f 41 50 50 45 4e 44 5f 53 SE(INST_APPEND_S
63d0: 43 41 4c 41 52 34 29 3a 0a 20 09 6f 70 6e 64 20 CALAR4):. .opnd
63e0: 3d 20 54 63 6c 47 65 74 55 49 6e 74 34 41 74 50 = TclGetUInt4AtP
63f0: 74 72 28 70 63 2b 31 29 3b 0a 20 09 70 63 41 64 tr(pc+1);. .pcAd
6400: 6a 75 73 74 6d 65 6e 74 20 3d 20 35 3b 0a 20 09 justment = 5;. .
6410: 73 74 6f 72 65 46 6c 61 67 73 20 3d 20 28 54 43 storeFlags = (TC
6420: 4c 5f 4c 45 41 56 45 5f 45 52 52 5f 4d 53 47 20 L_LEAVE_ERR_MSG
6430: 7c 20 54 43 4c 5f 41 50 50 45 4e 44 5f 56 41 4c | TCL_APPEND_VAL
6440: 55 45 29 3b 0a 20 09 67 6f 74 6f 20 64 6f 53 74 UE);. .goto doSt
6450: 6f 72 65 53 63 61 6c 61 72 3b 0a 20 0a 2d 20 20 oreScalar;. .-
6460: 20 20 63 61 73 65 20 49 4e 53 54 5f 41 50 50 45 case INST_APPE
6470: 4e 44 5f 53 43 41 4c 41 52 31 3a 0a 2b 20 20 20 ND_SCALAR1:.+
6480: 20 43 41 53 45 28 49 4e 53 54 5f 41 50 50 45 4e CASE(INST_APPEN
6490: 44 5f 53 43 41 4c 41 52 31 29 3a 0a 20 09 6f 70 D_SCALAR1):. .op
64a0: 6e 64 20 3d 20 54 63 6c 47 65 74 55 49 6e 74 31 nd = TclGetUInt1
64b0: 41 74 50 74 72 28 70 63 2b 31 29 3b 0a 20 09 70 AtPtr(pc+1);. .p
64c0: 63 41 64 6a 75 73 74 6d 65 6e 74 20 3d 20 32 3b cAdjustment = 2;
64d0: 0a 20 09 73 74 6f 72 65 46 6c 61 67 73 20 3d 20 . .storeFlags =
64e0: 28 54 43 4c 5f 4c 45 41 56 45 5f 45 52 52 5f 4d (TCL_LEAVE_ERR_M
64f0: 53 47 20 7c 20 54 43 4c 5f 41 50 50 45 4e 44 5f SG | TCL_APPEND_
6500: 56 41 4c 55 45 29 3b 0a 40 40 20 2d 32 38 34 33 VALUE);.@@ -2843
6510: 2c 31 31 20 2b 33 30 34 36 2c 31 31 20 40 40 20 ,11 +3046,11 @@
6520: 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f TclExecuteByteCo
6530: 64 65 28 0a 20 09 54 63 6c 5f 4f 62 6a 20 2a 70 de(. .Tcl_Obj *p
6540: 61 72 74 31 50 74 72 2c 20 2a 70 61 72 74 32 50 art1Ptr, *part2P
6550: 74 72 3b 0a 20 09 56 61 72 20 2a 76 61 72 50 74 tr;. .Var *varPt
6560: 72 2c 20 2a 61 72 72 61 79 50 74 72 3b 0a 20 0a r, *arrayPtr;. .
6570: 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 49 - case INST_I
6580: 4e 43 52 5f 53 43 41 4c 41 52 31 3a 0a 2d 20 20 NCR_SCALAR1:.-
6590: 20 20 63 61 73 65 20 49 4e 53 54 5f 49 4e 43 52 case INST_INCR
65a0: 5f 41 52 52 41 59 31 3a 0a 2d 20 20 20 20 63 61 _ARRAY1:.- ca
65b0: 73 65 20 49 4e 53 54 5f 49 4e 43 52 5f 41 52 52 se INST_INCR_ARR
65c0: 41 59 5f 53 54 4b 3a 0a 2d 20 20 20 20 63 61 73 AY_STK:.- cas
65d0: 65 20 49 4e 53 54 5f 49 4e 43 52 5f 53 43 41 4c e INST_INCR_SCAL
65e0: 41 52 5f 53 54 4b 3a 0a 2d 20 20 20 20 63 61 73 AR_STK:.- cas
65f0: 65 20 49 4e 53 54 5f 49 4e 43 52 5f 53 54 4b 3a e INST_INCR_STK:
6600: 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f .+ CASE(INST_
6610: 49 4e 43 52 5f 53 43 41 4c 41 52 31 29 3a 0a 2b INCR_SCALAR1):.+
6620: 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 49 4e CASE(INST_IN
6630: 43 52 5f 41 52 52 41 59 31 29 3a 0a 2b 20 20 20 CR_ARRAY1):.+
6640: 20 43 41 53 45 28 49 4e 53 54 5f 49 4e 43 52 5f CASE(INST_INCR_
6650: 41 52 52 41 59 5f 53 54 4b 29 3a 0a 2b 20 20 20 ARRAY_STK):.+
6660: 20 43 41 53 45 28 49 4e 53 54 5f 49 4e 43 52 5f CASE(INST_INCR_
6670: 53 43 41 4c 41 52 5f 53 54 4b 29 3a 0a 2b 20 20 SCALAR_STK):.+
6680: 20 20 43 41 53 45 28 49 4e 53 54 5f 49 4e 43 52 CASE(INST_INCR
6690: 5f 53 54 4b 29 3a 0a 20 09 6f 70 6e 64 20 3d 20 _STK):. .opnd =
66a0: 54 63 6c 47 65 74 55 49 6e 74 31 41 74 50 74 72 TclGetUInt1AtPtr
66b0: 28 70 63 2b 31 29 3b 0a 20 09 69 6e 63 72 50 74 (pc+1);. .incrPt
66c0: 72 20 3d 20 50 4f 50 5f 4f 42 4a 45 43 54 28 29 r = POP_OBJECT()
66d0: 3b 0a 20 09 73 77 69 74 63 68 20 28 2a 70 63 29 ;. .switch (*pc)
66e0: 20 7b 0a 40 40 20 2d 32 38 36 32 2c 39 20 2b 33 {.@@ -2862,9 +3
66f0: 30 36 35 2c 39 20 40 40 20 54 63 6c 45 78 65 63 065,9 @@ TclExec
6700: 75 74 65 42 79 74 65 43 6f 64 65 28 0a 20 09 20 uteByteCode(. .
6710: 20 20 20 67 6f 74 6f 20 64 6f 49 6e 63 72 53 74 goto doIncrSt
6720: 6b 3b 0a 20 09 7d 0a 20 0a 2d 20 20 20 20 63 61 k;. .}. .- ca
6730: 73 65 20 49 4e 53 54 5f 49 4e 43 52 5f 41 52 52 se INST_INCR_ARR
6740: 41 59 5f 53 54 4b 5f 49 4d 4d 3a 0a 2d 20 20 20 AY_STK_IMM:.-
6750: 20 63 61 73 65 20 49 4e 53 54 5f 49 4e 43 52 5f case INST_INCR_
6760: 53 43 41 4c 41 52 5f 53 54 4b 5f 49 4d 4d 3a 0a SCALAR_STK_IMM:.
6770: 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 49 - case INST_I
6780: 4e 43 52 5f 53 54 4b 5f 49 4d 4d 3a 0a 2b 20 20 NCR_STK_IMM:.+
6790: 20 20 43 41 53 45 28 49 4e 53 54 5f 49 4e 43 52 CASE(INST_INCR
67a0: 5f 41 52 52 41 59 5f 53 54 4b 5f 49 4d 4d 29 3a _ARRAY_STK_IMM):
67b0: 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f .+ CASE(INST_
67c0: 49 4e 43 52 5f 53 43 41 4c 41 52 5f 53 54 4b 5f INCR_SCALAR_STK_
67d0: 49 4d 4d 29 3a 0a 2b 20 20 20 20 43 41 53 45 28 IMM):.+ CASE(
67e0: 49 4e 53 54 5f 49 4e 43 52 5f 53 54 4b 5f 49 4d INST_INCR_STK_IM
67f0: 4d 29 3a 0a 20 09 69 20 3d 20 54 63 6c 47 65 74 M):. .i = TclGet
6800: 49 6e 74 31 41 74 50 74 72 28 70 63 2b 31 29 3b Int1AtPtr(pc+1);
6810: 0a 20 09 69 6e 63 72 50 74 72 20 3d 20 54 63 6c . .incrPtr = Tcl
6820: 5f 4e 65 77 49 6e 74 4f 62 6a 28 69 29 3b 0a 20 _NewIntObj(i);.
6830: 09 54 63 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e .Tcl_IncrRefCoun
6840: 74 28 69 6e 63 72 50 74 72 29 3b 0a 40 40 20 2d t(incrPtr);.@@ -
6850: 32 38 39 38 2c 37 20 2b 33 31 30 31 2c 37 20 40 2898,7 +3101,7 @
6860: 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 @ TclExecuteByte
6870: 43 6f 64 65 28 0a 20 09 20 20 20 20 67 6f 74 6f Code(. . goto
6880: 20 63 68 65 63 6b 46 6f 72 43 61 74 63 68 3b 0a checkForCatch;.
6890: 20 09 7d 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 .}. .- case
68a0: 49 4e 53 54 5f 49 4e 43 52 5f 41 52 52 41 59 31 INST_INCR_ARRAY1
68b0: 5f 49 4d 4d 3a 0a 2b 20 20 20 20 43 41 53 45 28 _IMM:.+ CASE(
68c0: 49 4e 53 54 5f 49 4e 43 52 5f 41 52 52 41 59 31 INST_INCR_ARRAY1
68d0: 5f 49 4d 4d 29 3a 0a 20 09 6f 70 6e 64 20 3d 20 _IMM):. .opnd =
68e0: 54 63 6c 47 65 74 55 49 6e 74 31 41 74 50 74 72 TclGetUInt1AtPtr
68f0: 28 70 63 2b 31 29 3b 0a 20 09 69 20 3d 20 54 63 (pc+1);. .i = Tc
6900: 6c 47 65 74 49 6e 74 31 41 74 50 74 72 28 70 63 lGetInt1AtPtr(pc
6910: 2b 32 29 3b 0a 20 09 69 6e 63 72 50 74 72 20 3d +2);. .incrPtr =
6920: 20 54 63 6c 5f 4e 65 77 49 6e 74 4f 62 6a 28 69 Tcl_NewIntObj(i
6930: 29 3b 0a 40 40 20 2d 32 39 32 35 2c 37 20 2b 33 );.@@ -2925,7 +3
6940: 31 32 38 2c 37 20 40 40 20 54 63 6c 45 78 65 63 128,7 @@ TclExec
6950: 75 74 65 42 79 74 65 43 6f 64 65 28 0a 20 09 20 uteByteCode(. .
6960: 20 20 20 67 6f 74 6f 20 63 68 65 63 6b 46 6f 72 goto checkFor
6970: 43 61 74 63 68 3b 0a 20 09 7d 0a 20 0a 2d 20 20 Catch;. .}. .-
6980: 20 20 63 61 73 65 20 49 4e 53 54 5f 49 4e 43 52 case INST_INCR
6990: 5f 53 43 41 4c 41 52 31 5f 49 4d 4d 3a 0a 2b 20 _SCALAR1_IMM:.+
69a0: 20 20 20 43 41 53 45 28 49 4e 53 54 5f 49 4e 43 CASE(INST_INC
69b0: 52 5f 53 43 41 4c 41 52 31 5f 49 4d 4d 29 3a 0a R_SCALAR1_IMM):.
69c0: 20 09 6f 70 6e 64 20 3d 20 54 63 6c 47 65 74 55 .opnd = TclGetU
69d0: 49 6e 74 31 41 74 50 74 72 28 70 63 2b 31 29 3b Int1AtPtr(pc+1);
69e0: 0a 20 09 69 20 3d 20 54 63 6c 47 65 74 49 6e 74 . .i = TclGetInt
69f0: 31 41 74 50 74 72 28 70 63 2b 32 29 3b 0a 20 09 1AtPtr(pc+2);. .
6a00: 70 63 41 64 6a 75 73 74 6d 65 6e 74 20 3d 20 33 pcAdjustment = 3
6a10: 3b 0a 40 40 20 2d 33 31 30 37 2c 37 20 2b 33 33 ;.@@ -3107,7 +33
6a20: 31 30 2c 37 20 40 40 20 54 63 6c 45 78 65 63 75 10,7 @@ TclExecu
6a30: 74 65 42 79 74 65 43 6f 64 65 28 0a 20 20 20 20 teByteCode(.
6a40: 20 20 2a 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d * ------------
6a50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6a60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6a70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 -------------.
6a80: 20 20 20 20 2a 2f 0a 20 0a 2d 20 20 20 20 63 61 */. .- ca
6a90: 73 65 20 49 4e 53 54 5f 55 50 56 41 52 3a 20 7b se INST_UPVAR: {
6aa0: 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f .+ CASE(INST_
6ab0: 55 50 56 41 52 29 3a 20 7b 0a 20 09 69 6e 74 20 UPVAR): {. .int
6ac0: 6f 70 6e 64 3b 0a 20 09 56 61 72 20 2a 76 61 72 opnd;. .Var *var
6ad0: 50 74 72 2c 20 2a 6f 74 68 65 72 50 74 72 3b 0a Ptr, *otherPtr;.
6ae0: 20 0a 40 40 20 2d 33 31 33 37 2c 37 20 2b 33 33 .@@ -3137,7 +33
6af0: 34 30 2c 37 20 40 40 20 54 63 6c 45 78 65 63 75 40,7 @@ TclExecu
6b00: 74 65 42 79 74 65 43 6f 64 65 28 0a 20 09 20 20 teByteCode(. .
6b10: 20 20 67 6f 74 6f 20 63 68 65 63 6b 46 6f 72 43 goto checkForC
6b20: 61 74 63 68 3b 0a 20 09 7d 0a 20 0a 2d 20 20 20 atch;. .}. .-
6b30: 20 63 61 73 65 20 49 4e 53 54 5f 56 41 52 49 41 case INST_VARIA
6b40: 42 4c 45 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 BLE:.+ CASE(I
6b50: 4e 53 54 5f 56 41 52 49 41 42 4c 45 29 3a 0a 20 NST_VARIABLE):.
6b60: 09 54 52 41 43 45 28 28 22 76 61 72 69 61 62 6c .TRACE(("variabl
6b70: 65 20 22 29 29 3b 0a 20 09 6f 74 68 65 72 50 74 e "));. .otherPt
6b80: 72 20 3d 20 54 63 6c 4f 62 6a 4c 6f 6f 6b 75 70 r = TclObjLookup
6b90: 56 61 72 45 78 28 69 6e 74 65 72 70 2c 20 4f 42 VarEx(interp, OB
6ba0: 4a 5f 41 54 5f 54 4f 53 2c 20 4e 55 4c 4c 2c 0a J_AT_TOS, NULL,.
6bb0: 20 09 09 28 54 43 4c 5f 4e 41 4d 45 53 50 41 43 ..(TCL_NAMESPAC
6bc0: 45 5f 4f 4e 4c 59 20 7c 20 54 43 4c 5f 4c 45 41 E_ONLY | TCL_LEA
6bd0: 56 45 5f 45 52 52 5f 4d 53 47 29 2c 20 22 61 63 VE_ERR_MSG), "ac
6be0: 63 65 73 73 22 2c 0a 40 40 20 2d 33 31 35 34 2c cess",.@@ -3154,
6bf0: 37 20 2b 33 33 35 37 2c 37 20 40 40 20 54 63 6c 7 +3357,7 @@ Tcl
6c00: 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 28 ExecuteByteCode(
6c10: 0a 20 09 72 65 73 75 6c 74 20 3d 20 54 43 4c 5f . .result = TCL_
6c20: 45 52 52 4f 52 3b 0a 20 09 67 6f 74 6f 20 63 68 ERROR;. .goto ch
6c30: 65 63 6b 46 6f 72 43 61 74 63 68 3b 0a 20 0a 2d eckForCatch;. .-
6c40: 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 4e 53 case INST_NS
6c50: 55 50 56 41 52 3a 0a 2b 20 20 20 20 43 41 53 45 UPVAR:.+ CASE
6c60: 28 49 4e 53 54 5f 4e 53 55 50 56 41 52 29 3a 0a (INST_NSUPVAR):.
6c70: 20 09 54 52 41 43 45 5f 57 49 54 48 5f 4f 42 4a .TRACE_WITH_OBJ
6c80: 28 28 22 6e 73 75 70 76 61 72 20 22 29 2c 20 4f (("nsupvar "), O
6c90: 42 4a 5f 55 4e 44 45 52 5f 54 4f 53 29 3b 0a 20 BJ_UNDER_TOS);.
6ca0: 0a 20 09 7b 0a 40 40 20 2d 33 32 32 36 2c 37 20 . .{.@@ -3226,7
6cb0: 2b 33 34 32 39 2c 37 20 40 40 20 54 63 6c 45 78 +3429,7 @@ TclEx
6cc0: 65 63 75 74 65 42 79 74 65 43 6f 64 65 28 0a 20 ecuteByteCode(.
6cd0: 09 4e 45 58 54 5f 49 4e 53 54 5f 46 28 35 2c 20 .NEXT_INST_F(5,
6ce0: 31 2c 20 30 29 3b 0a 20 20 20 20 20 7d 0a 20 0a 1, 0);. }. .
6cf0: 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 4a - case INST_J
6d00: 55 4d 50 31 3a 20 7b 0a 2b 20 20 20 20 43 41 53 UMP1: {.+ CAS
6d10: 45 28 49 4e 53 54 5f 4a 55 4d 50 31 29 3a 20 7b E(INST_JUMP1): {
6d20: 0a 20 09 69 6e 74 20 6f 70 6e 64 3b 0a 20 0a 20 . .int opnd;. .
6d30: 09 6f 70 6e 64 20 3d 20 54 63 6c 47 65 74 49 6e .opnd = TclGetIn
6d40: 74 31 41 74 50 74 72 28 70 63 2b 31 29 3b 0a 40 t1AtPtr(pc+1);.@
6d50: 40 20 2d 33 32 33 35 2c 37 20 2b 33 34 33 38 2c @ -3235,7 +3438,
6d60: 37 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 7 @@ TclExecuteB
6d70: 79 74 65 43 6f 64 65 28 0a 20 09 4e 45 58 54 5f yteCode(. .NEXT_
6d80: 49 4e 53 54 5f 46 28 6f 70 6e 64 2c 20 30 2c 20 INST_F(opnd, 0,
6d90: 30 29 3b 0a 20 20 20 20 20 7d 0a 20 0a 2d 20 20 0);. }. .-
6da0: 20 20 63 61 73 65 20 49 4e 53 54 5f 4a 55 4d 50 case INST_JUMP
6db0: 34 3a 20 7b 0a 2b 20 20 20 20 43 41 53 45 28 49 4: {.+ CASE(I
6dc0: 4e 53 54 5f 4a 55 4d 50 34 29 3a 20 7b 0a 20 09 NST_JUMP4): {. .
6dd0: 69 6e 74 20 6f 70 6e 64 3b 0a 20 0a 20 09 6f 70 int opnd;. . .op
6de0: 6e 64 20 3d 20 54 63 6c 47 65 74 49 6e 74 34 41 nd = TclGetInt4A
6df0: 74 50 74 72 28 70 63 2b 31 29 3b 0a 40 40 20 2d tPtr(pc+1);.@@ -
6e00: 33 32 35 30 2c 32 32 20 2b 33 34 35 33 2c 32 32 3250,22 +3453,22
6e10: 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 @@ TclExecuteBy
6e20: 74 65 43 6f 64 65 28 0a 20 0a 20 09 2f 2a 20 54 teCode(. . ./* T
6e30: 4f 44 4f 3a 20 63 6f 6e 73 69 64 65 72 20 72 65 ODO: consider re
6e40: 77 72 69 74 65 20 73 6f 20 77 65 20 64 6f 6e 27 write so we don'
6e50: 74 20 63 6f 6d 70 75 74 65 20 74 68 65 20 6f 66 t compute the of
6e60: 66 73 65 74 20 77 65 27 72 65 20 6e 6f 74 0a 20 fset we're not.
6e70: 09 20 2a 20 67 6f 69 6e 67 20 74 6f 20 74 61 6b . * going to tak
6e80: 65 2e 20 2a 2f 0a 2d 20 20 20 20 63 61 73 65 20 e. */.- case
6e90: 49 4e 53 54 5f 4a 55 4d 50 5f 46 41 4c 53 45 34 INST_JUMP_FALSE4
6ea0: 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 :.+ CASE(INST
6eb0: 5f 4a 55 4d 50 5f 46 41 4c 53 45 34 29 3a 0a 20 _JUMP_FALSE4):.
6ec0: 09 6a 6d 70 4f 66 66 73 65 74 5b 30 5d 20 3d 20 .jmpOffset[0] =
6ed0: 54 63 6c 47 65 74 49 6e 74 34 41 74 50 74 72 28 TclGetInt4AtPtr(
6ee0: 70 63 2b 31 29 3b 09 2f 2a 20 46 41 4c 53 45 20 pc+1);./* FALSE
6ef0: 6f 66 66 73 65 74 20 2a 2f 0a 20 09 6a 6d 70 4f offset */. .jmpO
6f00: 66 66 73 65 74 5b 31 5d 20 3d 20 35 3b 09 09 09 ffset[1] = 5;...
6f10: 2f 2a 20 54 52 55 45 20 6f 66 66 73 65 74 2a 2f /* TRUE offset*/
6f20: 0a 20 09 67 6f 74 6f 20 64 6f 43 6f 6e 64 4a 75 . .goto doCondJu
6f30: 6d 70 3b 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 mp;. .- case
6f40: 49 4e 53 54 5f 4a 55 4d 50 5f 54 52 55 45 34 3a INST_JUMP_TRUE4:
6f50: 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f .+ CASE(INST_
6f60: 4a 55 4d 50 5f 54 52 55 45 34 29 3a 0a 20 09 6a JUMP_TRUE4):. .j
6f70: 6d 70 4f 66 66 73 65 74 5b 30 5d 20 3d 20 35 3b mpOffset[0] = 5;
6f80: 0a 20 09 6a 6d 70 4f 66 66 73 65 74 5b 31 5d 20 . .jmpOffset[1]
6f90: 3d 20 54 63 6c 47 65 74 49 6e 74 34 41 74 50 74 = TclGetInt4AtPt
6fa0: 72 28 70 63 2b 31 29 3b 0a 20 09 67 6f 74 6f 20 r(pc+1);. .goto
6fb0: 64 6f 43 6f 6e 64 4a 75 6d 70 3b 0a 20 0a 2d 20 doCondJump;. .-
6fc0: 20 20 20 63 61 73 65 20 49 4e 53 54 5f 4a 55 4d case INST_JUM
6fd0: 50 5f 46 41 4c 53 45 31 3a 0a 2b 20 20 20 20 43 P_FALSE1:.+ C
6fe0: 41 53 45 28 49 4e 53 54 5f 4a 55 4d 50 5f 46 41 ASE(INST_JUMP_FA
6ff0: 4c 53 45 31 29 3a 0a 20 09 6a 6d 70 4f 66 66 73 LSE1):. .jmpOffs
7000: 65 74 5b 30 5d 20 3d 20 54 63 6c 47 65 74 49 6e et[0] = TclGetIn
7010: 74 31 41 74 50 74 72 28 70 63 2b 31 29 3b 0a 20 t1AtPtr(pc+1);.
7020: 09 6a 6d 70 4f 66 66 73 65 74 5b 31 5d 20 3d 20 .jmpOffset[1] =
7030: 32 3b 0a 20 09 67 6f 74 6f 20 64 6f 43 6f 6e 64 2;. .goto doCond
7040: 4a 75 6d 70 3b 0a 20 0a 2d 20 20 20 20 63 61 73 Jump;. .- cas
7050: 65 20 49 4e 53 54 5f 4a 55 4d 50 5f 54 52 55 45 e INST_JUMP_TRUE
7060: 31 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 1:.+ CASE(INS
7070: 54 5f 4a 55 4d 50 5f 54 52 55 45 31 29 3a 0a 20 T_JUMP_TRUE1):.
7080: 09 6a 6d 70 4f 66 66 73 65 74 5b 30 5d 20 3d 20 .jmpOffset[0] =
7090: 32 3b 0a 20 09 6a 6d 70 4f 66 66 73 65 74 5b 31 2;. .jmpOffset[1
70a0: 5d 20 3d 20 54 63 6c 47 65 74 49 6e 74 31 41 74 ] = TclGetInt1At
70b0: 50 74 72 28 70 63 2b 31 29 3b 0a 20 0a 40 40 20 Ptr(pc+1);. .@@
70c0: 2d 33 33 30 34 2c 37 20 2b 33 35 30 37 2c 37 20 -3304,7 +3507,7
70d0: 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 @@ TclExecuteByt
70e0: 65 43 6f 64 65 28 0a 20 09 4e 45 58 54 5f 49 4e eCode(. .NEXT_IN
70f0: 53 54 5f 46 28 6a 6d 70 4f 66 66 73 65 74 5b 62 ST_F(jmpOffset[b
7100: 5d 2c 20 31 2c 20 30 29 3b 0a 20 20 20 20 20 7d ], 1, 0);. }
7110: 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 . .- case INS
7120: 54 5f 4a 55 4d 50 5f 54 41 42 4c 45 3a 20 7b 0a T_JUMP_TABLE: {.
7130: 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 4a + CASE(INST_J
7140: 55 4d 50 5f 54 41 42 4c 45 29 3a 20 7b 0a 20 09 UMP_TABLE): {. .
7150: 54 63 6c 5f 48 61 73 68 45 6e 74 72 79 20 2a 68 Tcl_HashEntry *h
7160: 50 74 72 3b 0a 20 09 4a 75 6d 70 74 61 62 6c 65 Ptr;. .Jumptable
7170: 49 6e 66 6f 20 2a 6a 74 50 74 72 3b 0a 20 09 69 Info *jtPtr;. .i
7180: 6e 74 20 6f 70 6e 64 3b 0a 40 40 20 2d 33 33 33 nt opnd;.@@ -333
7190: 35 2c 38 20 2b 33 35 33 38 2c 38 20 40 40 20 54 5,8 +3538,8 @@ T
71a0: 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 clExecuteByteCod
71b0: 65 28 0a 20 20 20 20 20 20 2a 20 61 6e 64 20 4c e(. * and L
71c0: 41 4e 44 20 69 73 20 6e 6f 77 20 68 61 6e 64 6c AND is now handl
71d0: 65 64 20 62 79 20 74 68 65 20 65 78 70 72 65 73 ed by the expres
71e0: 73 69 6f 6e 20 63 6f 6d 70 69 6c 65 72 2e 0a 20 sion compiler..
71f0: 20 20 20 20 20 2a 2f 0a 20 0a 2d 20 20 20 20 63 */. .- c
7200: 61 73 65 20 49 4e 53 54 5f 4c 4f 52 3a 0a 2d 20 ase INST_LOR:.-
7210: 20 20 20 63 61 73 65 20 49 4e 53 54 5f 4c 41 4e case INST_LAN
7220: 44 3a 20 7b 0a 2b 20 20 20 20 43 41 53 45 28 49 D: {.+ CASE(I
7230: 4e 53 54 5f 4c 4f 52 29 3a 0a 2b 20 20 20 20 43 NST_LOR):.+ C
7240: 41 53 45 28 49 4e 53 54 5f 4c 41 4e 44 29 3a 20 ASE(INST_LAND):
7250: 7b 0a 20 09 2f 2a 0a 20 09 20 2a 20 4f 70 65 72 {. ./*. . * Oper
7260: 61 6e 64 73 20 6d 75 73 74 20 62 65 20 62 6f 6f ands must be boo
7270: 6c 65 61 6e 20 6f 72 20 6e 75 6d 65 72 69 63 2e lean or numeric.
7280: 20 4e 6f 20 69 6e 74 2d 3e 64 6f 75 62 6c 65 20 No int->double
7290: 63 6f 6e 76 65 72 73 69 6f 6e 73 20 61 72 65 0a conversions are.
72a0: 20 09 20 2a 20 70 65 72 66 6f 72 6d 65 64 2e 0a . * performed..
72b0: 40 40 20 2d 33 33 37 37 2c 37 20 2b 33 35 38 30 @@ -3377,7 +3580
72c0: 2c 37 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 ,7 @@ TclExecute
72d0: 42 79 74 65 43 6f 64 65 28 0a 20 20 20 20 20 20 ByteCode(.
72e0: 2a 09 20 20 20 53 74 61 72 74 20 6f 66 20 49 4e *. Start of IN
72f0: 53 54 5f 4c 49 53 54 20 61 6e 64 20 72 65 6c 61 ST_LIST and rela
7300: 74 65 64 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 ted instructions
7310: 2e 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 2d 20 20 .. */. .-
7320: 20 20 63 61 73 65 20 49 4e 53 54 5f 4c 49 53 54 case INST_LIST
7330: 3a 20 7b 0a 2b 20 20 20 20 43 41 53 45 28 49 4e : {.+ CASE(IN
7340: 53 54 5f 4c 49 53 54 29 3a 20 7b 0a 20 09 2f 2a ST_LIST): {. ./*
7350: 0a 20 09 20 2a 20 50 6f 70 20 74 68 65 20 6f 70 . . * Pop the op
7360: 6e 64 20 28 6f 62 6a 63 29 20 74 6f 70 20 73 74 nd (objc) top st
7370: 61 63 6b 20 65 6c 65 6d 65 6e 74 73 20 69 6e 74 ack elements int
7380: 6f 20 61 20 6e 65 77 20 6c 69 73 74 20 6f 62 6a o a new list obj
7390: 20 61 6e 64 20 74 68 65 6e 0a 20 09 20 2a 20 64 and then. . * d
73a0: 65 63 72 65 6d 65 6e 74 20 74 68 65 69 72 20 72 ecrement their r
73b0: 65 66 20 63 6f 75 6e 74 73 2e 0a 40 40 20 2d 33 ef counts..@@ -3
73c0: 33 39 31 2c 37 20 2b 33 35 39 34 2c 37 20 40 40 391,7 +3594,7 @@
73d0: 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 TclExecuteByteC
73e0: 6f 64 65 28 0a 20 09 4e 45 58 54 5f 49 4e 53 54 ode(. .NEXT_INST
73f0: 5f 56 28 35 2c 20 6f 70 6e 64 2c 20 31 29 3b 0a _V(5, opnd, 1);.
7400: 20 20 20 20 20 7d 0a 20 0a 2d 20 20 20 20 63 61 }. .- ca
7410: 73 65 20 49 4e 53 54 5f 4c 49 53 54 5f 4c 45 4e se INST_LIST_LEN
7420: 47 54 48 3a 20 7b 0a 2b 20 20 20 20 43 41 53 45 GTH: {.+ CASE
7430: 28 49 4e 53 54 5f 4c 49 53 54 5f 4c 45 4e 47 54 (INST_LIST_LENGT
7440: 48 29 3a 20 7b 0a 20 09 54 63 6c 5f 4f 62 6a 20 H): {. .Tcl_Obj
7450: 2a 76 61 6c 75 65 50 74 72 3b 0a 20 09 69 6e 74 *valuePtr;. .int
7460: 20 6c 65 6e 67 74 68 3b 0a 20 0a 40 40 20 2d 33 length;. .@@ -3
7470: 34 30 39 2c 37 20 2b 33 36 31 32 2c 37 20 40 40 409,7 +3612,7 @@
7480: 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 TclExecuteByteC
7490: 6f 64 65 28 0a 20 09 7d 0a 20 20 20 20 20 7d 0a ode(. .}. }.
74a0: 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 .- case INST
74b0: 5f 4c 49 53 54 5f 49 4e 44 45 58 3a 20 7b 0a 2b _LIST_INDEX: {.+
74c0: 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 4c 49 CASE(INST_LI
74d0: 53 54 5f 49 4e 44 45 58 29 3a 20 7b 0a 20 09 2f ST_INDEX): {. ./
74e0: 2a 2a 2a 20 6c 69 6e 64 65 78 20 77 69 74 68 20 *** lindex with
74f0: 6f 62 6a 63 20 3d 3d 20 33 20 2a 2a 2a 2f 0a 20 objc == 3 ***/.
7500: 0a 20 09 54 63 6c 5f 4f 62 6a 20 2a 76 61 6c 75 . .Tcl_Obj *valu
7510: 65 50 74 72 2c 20 2a 76 61 6c 75 65 32 50 74 72 ePtr, *value2Ptr
7520: 3b 0a 40 40 20 2d 33 34 34 32 2c 37 20 2b 33 36 ;.@@ -3442,7 +36
7530: 34 35 2c 37 20 40 40 20 54 63 6c 45 78 65 63 75 45,7 @@ TclExecu
7540: 74 65 42 79 74 65 43 6f 64 65 28 0a 20 09 7d 0a teByteCode(. .}.
7550: 20 20 20 20 20 7d 0a 20 0a 2d 20 20 20 20 63 61 }. .- ca
7560: 73 65 20 49 4e 53 54 5f 4c 49 53 54 5f 49 4e 44 se INST_LIST_IND
7570: 45 58 5f 49 4d 4d 3a 20 7b 0a 2b 20 20 20 20 43 EX_IMM: {.+ C
7580: 41 53 45 28 49 4e 53 54 5f 4c 49 53 54 5f 49 4e ASE(INST_LIST_IN
7590: 44 45 58 5f 49 4d 4d 29 3a 20 7b 0a 20 09 2f 2a DEX_IMM): {. ./*
75a0: 2a 2a 20 6c 69 6e 64 65 78 20 77 69 74 68 20 6f ** lindex with o
75b0: 62 6a 63 3d 3d 33 20 61 6e 64 20 69 6e 64 65 78 bjc==3 and index
75c0: 20 69 6e 20 62 79 74 65 63 6f 64 65 20 73 74 72 in bytecode str
75d0: 65 61 6d 20 2a 2a 2a 2f 0a 20 0a 20 09 69 6e 74 eam ***/. . .int
75e0: 20 6c 69 73 74 63 2c 20 69 64 78 2c 20 6f 70 6e listc, idx, opn
75f0: 64 3b 0a 40 40 20 2d 33 34 38 39 2c 37 20 2b 33 d;.@@ -3489,7 +3
7600: 36 39 32 2c 37 20 40 40 20 54 63 6c 45 78 65 63 692,7 @@ TclExec
7610: 75 74 65 42 79 74 65 43 6f 64 65 28 0a 20 09 7d uteByteCode(. .}
7620: 0a 20 20 20 20 20 7d 0a 20 0a 2d 20 20 20 20 63 . }. .- c
7630: 61 73 65 20 49 4e 53 54 5f 4c 49 53 54 5f 49 4e ase INST_LIST_IN
7640: 44 45 58 5f 4d 55 4c 54 49 3a 20 7b 0a 2b 20 20 DEX_MULTI: {.+
7650: 20 20 43 41 53 45 28 49 4e 53 54 5f 4c 49 53 54 CASE(INST_LIST
7660: 5f 49 4e 44 45 58 5f 4d 55 4c 54 49 29 3a 20 7b _INDEX_MULTI): {
7670: 0a 20 09 2f 2a 0a 20 09 20 2a 20 27 6c 69 6e 64 . ./*. . * 'lind
7680: 65 78 27 20 77 69 74 68 20 6d 75 6c 74 69 70 6c ex' with multipl
7690: 65 20 69 6e 64 65 78 20 61 72 67 73 3a 0a 20 09 e index args:. .
76a0: 20 2a 0a 40 40 20 2d 33 35 32 36 2c 37 20 2b 33 *.@@ -3526,7 +3
76b0: 37 32 39 2c 37 20 40 40 20 54 63 6c 45 78 65 63 729,7 @@ TclExec
76c0: 75 74 65 42 79 74 65 43 6f 64 65 28 0a 20 09 7d uteByteCode(. .}
76d0: 0a 20 20 20 20 20 7d 0a 20 0a 2d 20 20 20 20 63 . }. .- c
76e0: 61 73 65 20 49 4e 53 54 5f 4c 53 45 54 5f 46 4c ase INST_LSET_FL
76f0: 41 54 3a 20 7b 0a 2b 20 20 20 20 43 41 53 45 28 AT: {.+ CASE(
7700: 49 4e 53 54 5f 4c 53 45 54 5f 46 4c 41 54 29 3a INST_LSET_FLAT):
7710: 20 7b 0a 20 09 2f 2a 0a 20 09 20 2a 20 4c 73 65 {. ./*. . * Lse
7720: 74 20 77 69 74 68 20 33 2c 20 35 2c 20 6f 72 20 t with 3, 5, or
7730: 6d 6f 72 65 20 61 72 67 73 2e 20 47 65 74 20 74 more args. Get t
7740: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 69 6e 64 he number of ind
7750: 65 78 20 61 72 67 73 2e 0a 20 09 20 2a 2f 0a 40 ex args.. . */.@
7760: 40 20 2d 33 35 37 38 2c 37 20 2b 33 37 38 31 2c @ -3578,7 +3781,
7770: 37 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 7 @@ TclExecuteB
7780: 79 74 65 43 6f 64 65 28 0a 20 09 7d 0a 20 20 20 yteCode(. .}.
7790: 20 20 7d 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 }. .- case
77a0: 49 4e 53 54 5f 4c 53 45 54 5f 4c 49 53 54 3a 20 INST_LSET_LIST:
77b0: 7b 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 {.+ CASE(INST
77c0: 5f 4c 53 45 54 5f 4c 49 53 54 29 3a 20 7b 0a 20 _LSET_LIST): {.
77d0: 09 2f 2a 0a 20 09 20 2a 20 27 6c 73 65 74 27 20 ./*. . * 'lset'
77e0: 77 69 74 68 20 34 20 61 72 67 73 2e 0a 20 09 20 with 4 args.. .
77f0: 2a 2f 0a 40 40 20 2d 33 36 32 37 2c 37 20 2b 33 */.@@ -3627,7 +3
7800: 38 33 30 2c 37 20 40 40 20 54 63 6c 45 78 65 63 830,7 @@ TclExec
7810: 75 74 65 42 79 74 65 43 6f 64 65 28 0a 20 09 7d uteByteCode(. .}
7820: 0a 20 20 20 20 20 7d 0a 20 0a 2d 20 20 20 20 63 . }. .- c
7830: 61 73 65 20 49 4e 53 54 5f 4c 49 53 54 5f 52 41 ase INST_LIST_RA
7840: 4e 47 45 5f 49 4d 4d 3a 20 7b 0a 2b 20 20 20 20 NGE_IMM: {.+
7850: 43 41 53 45 28 49 4e 53 54 5f 4c 49 53 54 5f 52 CASE(INST_LIST_R
7860: 41 4e 47 45 5f 49 4d 4d 29 3a 20 7b 0a 20 09 2f ANGE_IMM): {. ./
7870: 2a 2a 2a 20 6c 72 61 6e 67 65 20 77 69 74 68 20 *** lrange with
7880: 6f 62 6a 63 3d 3d 34 20 61 6e 64 20 62 6f 74 68 objc==4 and both
7890: 20 69 6e 64 69 63 65 73 20 69 6e 20 62 79 74 65 indices in byte
78a0: 63 6f 64 65 20 73 74 72 65 61 6d 20 2a 2a 2a 2f code stream ***/
78b0: 0a 20 0a 20 09 69 6e 74 20 6c 69 73 74 63 2c 20 . . .int listc,
78c0: 66 72 6f 6d 49 64 78 2c 20 74 6f 49 64 78 3b 0a fromIdx, toIdx;.
78d0: 40 40 20 2d 33 37 30 38 2c 38 20 2b 33 39 31 31 @@ -3708,8 +3911
78e0: 2c 38 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 ,8 @@ TclExecute
78f0: 42 79 74 65 43 6f 64 65 28 0a 20 09 4e 45 58 54 ByteCode(. .NEXT
7900: 5f 49 4e 53 54 5f 46 28 39 2c 20 31 2c 20 31 29 _INST_F(9, 1, 1)
7910: 3b 0a 20 20 20 20 20 7d 0a 20 0a 2d 20 20 20 20 ;. }. .-
7920: 63 61 73 65 20 49 4e 53 54 5f 4c 49 53 54 5f 49 case INST_LIST_I
7930: 4e 3a 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 N:.- case INS
7940: 54 5f 4c 49 53 54 5f 4e 4f 54 5f 49 4e 3a 20 7b T_LIST_NOT_IN: {
7950: 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f .+ CASE(INST_
7960: 4c 49 53 54 5f 49 4e 29 3a 0a 2b 20 20 20 20 43 LIST_IN):.+ C
7970: 41 53 45 28 49 4e 53 54 5f 4c 49 53 54 5f 4e 4f ASE(INST_LIST_NO
7980: 54 5f 49 4e 29 3a 20 7b 0a 20 09 2f 2a 0a 20 09 T_IN): {. ./*. .
7990: 20 2a 20 42 61 73 69 63 20 6c 69 73 74 20 63 6f * Basic list co
79a0: 6e 74 61 69 6e 6d 65 6e 74 20 6f 70 65 72 61 74 ntainment operat
79b0: 6f 72 73 2e 0a 20 09 20 2a 2f 0a 40 40 20 2d 33 ors.. . */.@@ -3
79c0: 37 38 35 2c 38 20 2b 33 39 38 38 2c 38 20 40 40 785,8 +3988,8 @@
79d0: 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 TclExecuteByteC
79e0: 6f 64 65 28 0a 20 20 20 20 20 20 2a 20 2d 2d 2d ode(. * ---
79f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7a00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7a10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7a20: 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 20 20 2a 2f 0a ------. */.
7a30: 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 .- case INST
7a40: 5f 53 54 52 5f 45 51 3a 0a 2d 20 20 20 20 63 61 _STR_EQ:.- ca
7a50: 73 65 20 49 4e 53 54 5f 53 54 52 5f 4e 45 51 3a se INST_STR_NEQ:
7a60: 20 7b 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 {.+ CASE(INS
7a70: 54 5f 53 54 52 5f 45 51 29 3a 0a 2b 20 20 20 20 T_STR_EQ):.+
7a80: 43 41 53 45 28 49 4e 53 54 5f 53 54 52 5f 4e 45 CASE(INST_STR_NE
7a90: 51 29 3a 20 7b 0a 20 09 2f 2a 0a 20 09 20 2a 20 Q): {. ./*. . *
7aa0: 53 74 72 69 6e 67 20 28 69 6e 29 65 71 75 61 6c String (in)equal
7ab0: 69 74 79 20 63 68 65 63 6b 0a 20 09 20 2a 20 54 ity check. . * T
7ac0: 4f 44 4f 3a 20 43 6f 6e 73 69 64 65 72 20 6d 65 ODO: Consider me
7ad0: 72 67 69 6e 67 20 69 6e 74 6f 20 49 4e 53 54 5f rging into INST_
7ae0: 53 54 52 5f 43 4d 50 0a 40 40 20 2d 33 38 35 31 STR_CMP.@@ -3851
7af0: 2c 37 20 2b 34 30 35 34 2c 37 20 40 40 20 54 63 ,7 +4054,7 @@ Tc
7b00: 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 lExecuteByteCode
7b10: 28 0a 20 09 4e 45 58 54 5f 49 4e 53 54 5f 46 28 (. .NEXT_INST_F(
7b20: 30 2c 20 32 2c 20 31 29 3b 0a 20 20 20 20 20 7d 0, 2, 1);. }
7b30: 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 . .- case INS
7b40: 54 5f 53 54 52 5f 43 4d 50 3a 20 7b 0a 2b 20 20 T_STR_CMP: {.+
7b50: 20 20 43 41 53 45 28 49 4e 53 54 5f 53 54 52 5f CASE(INST_STR_
7b60: 43 4d 50 29 3a 20 7b 0a 20 09 2f 2a 0a 20 09 20 CMP): {. ./*. .
7b70: 2a 20 53 74 72 69 6e 67 20 63 6f 6d 70 61 72 65 * String compare
7b80: 2e 0a 20 09 20 2a 2f 0a 40 40 20 2d 33 39 36 30 .. . */.@@ -3960
7b90: 2c 37 20 2b 34 31 36 33 2c 37 20 40 40 20 54 63 ,7 +4163,7 @@ Tc
7ba0: 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 lExecuteByteCode
7bb0: 28 0a 20 09 4e 45 58 54 5f 49 4e 53 54 5f 46 28 (. .NEXT_INST_F(
7bc0: 31 2c 20 32 2c 20 31 29 3b 0a 20 20 20 20 20 7d 1, 2, 1);. }
7bd0: 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 . .- case INS
7be0: 54 5f 53 54 52 5f 4c 45 4e 3a 20 7b 0a 2b 20 20 T_STR_LEN: {.+
7bf0: 20 20 43 41 53 45 28 49 4e 53 54 5f 53 54 52 5f CASE(INST_STR_
7c00: 4c 45 4e 29 3a 20 7b 0a 20 09 69 6e 74 20 6c 65 LEN): {. .int le
7c10: 6e 67 74 68 3b 0a 20 09 54 63 6c 5f 4f 62 6a 20 ngth;. .Tcl_Obj
7c20: 2a 76 61 6c 75 65 50 74 72 3b 0a 20 0a 40 40 20 *valuePtr;. .@@
7c30: 2d 33 39 37 36 2c 37 20 2b 34 31 37 39 2c 37 20 -3976,7 +4179,7
7c40: 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 @@ TclExecuteByt
7c50: 65 43 6f 64 65 28 0a 20 09 4e 45 58 54 5f 49 4e eCode(. .NEXT_IN
7c60: 53 54 5f 46 28 31 2c 20 31 2c 20 31 29 3b 0a 20 ST_F(1, 1, 1);.
7c70: 20 20 20 20 7d 0a 20 0a 2d 20 20 20 20 63 61 73 }. .- cas
7c80: 65 20 49 4e 53 54 5f 53 54 52 5f 49 4e 44 45 58 e INST_STR_INDEX
7c90: 3a 20 7b 0a 2b 20 20 20 20 43 41 53 45 28 49 4e : {.+ CASE(IN
7ca0: 53 54 5f 53 54 52 5f 49 4e 44 45 58 29 3a 20 7b ST_STR_INDEX): {
7cb0: 0a 20 09 2f 2a 0a 20 09 20 2a 20 53 74 72 69 6e . ./*. . * Strin
7cc0: 67 20 63 6f 6d 70 61 72 65 2e 0a 20 09 20 2a 2f g compare.. . */
7cd0: 0a 40 40 20 2d 34 30 34 31 2c 37 20 2b 34 32 34 .@@ -4041,7 +424
7ce0: 34 2c 37 20 40 40 20 54 63 6c 45 78 65 63 75 74 4,7 @@ TclExecut
7cf0: 65 42 79 74 65 43 6f 64 65 28 0a 20 09 4e 45 58 eByteCode(. .NEX
7d00: 54 5f 49 4e 53 54 5f 46 28 31 2c 20 32 2c 20 31 T_INST_F(1, 2, 1
7d10: 29 3b 0a 20 20 20 20 20 7d 0a 20 0a 2d 20 20 20 );. }. .-
7d20: 20 63 61 73 65 20 49 4e 53 54 5f 53 54 52 5f 4d case INST_STR_M
7d30: 41 54 43 48 3a 20 7b 0a 2b 20 20 20 20 43 41 53 ATCH: {.+ CAS
7d40: 45 28 49 4e 53 54 5f 53 54 52 5f 4d 41 54 43 48 E(INST_STR_MATCH
7d50: 29 3a 20 7b 0a 20 09 69 6e 74 20 6e 6f 63 61 73 ): {. .int nocas
7d60: 65 2c 20 6d 61 74 63 68 3b 0a 20 09 54 63 6c 5f e, match;. .Tcl_
7d70: 4f 62 6a 20 2a 76 61 6c 75 65 50 74 72 2c 20 2a Obj *valuePtr, *
7d80: 76 61 6c 75 65 32 50 74 72 3b 0a 20 0a 40 40 20 value2Ptr;. .@@
7d90: 2d 34 30 38 36 2c 31 32 20 2b 34 32 38 39 2c 31 -4086,12 +4289,1
7da0: 32 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 2 @@ TclExecuteB
7db0: 79 74 65 43 6f 64 65 28 0a 20 09 4e 45 58 54 5f yteCode(. .NEXT_
7dc0: 49 4e 53 54 5f 46 28 32 2c 20 32 2c 20 31 29 3b INST_F(2, 2, 1);
7dd0: 0a 20 20 20 20 20 7d 0a 20 0a 2d 20 20 20 20 63 . }. .- c
7de0: 61 73 65 20 49 4e 53 54 5f 45 51 3a 0a 2d 20 20 ase INST_EQ:.-
7df0: 20 20 63 61 73 65 20 49 4e 53 54 5f 4e 45 51 3a case INST_NEQ:
7e00: 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f .- case INST_
7e10: 4c 54 3a 0a 2d 20 20 20 20 63 61 73 65 20 49 4e LT:.- case IN
7e20: 53 54 5f 47 54 3a 0a 2d 20 20 20 20 63 61 73 65 ST_GT:.- case
7e30: 20 49 4e 53 54 5f 4c 45 3a 0a 2d 20 20 20 20 63 INST_LE:.- c
7e40: 61 73 65 20 49 4e 53 54 5f 47 45 3a 20 7b 0a 2b ase INST_GE: {.+
7e50: 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 45 51 CASE(INST_EQ
7e60: 29 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 ):.+ CASE(INS
7e70: 54 5f 4e 45 51 29 3a 0a 2b 20 20 20 20 43 41 53 T_NEQ):.+ CAS
7e80: 45 28 49 4e 53 54 5f 4c 54 29 3a 0a 2b 20 20 20 E(INST_LT):.+
7e90: 20 43 41 53 45 28 49 4e 53 54 5f 47 54 29 3a 0a CASE(INST_GT):.
7ea0: 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 4c + CASE(INST_L
7eb0: 45 29 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e E):.+ CASE(IN
7ec0: 53 54 5f 47 45 29 3a 20 7b 0a 20 09 54 63 6c 5f ST_GE): {. .Tcl_
7ed0: 4f 62 6a 20 2a 76 61 6c 75 65 50 74 72 20 3d 20 Obj *valuePtr =
7ee0: 4f 42 4a 5f 55 4e 44 45 52 5f 54 4f 53 3b 0a 20 OBJ_UNDER_TOS;.
7ef0: 09 54 63 6c 5f 4f 62 6a 20 2a 76 61 6c 75 65 32 .Tcl_Obj *value2
7f00: 50 74 72 20 3d 20 4f 42 4a 5f 41 54 5f 54 4f 53 Ptr = OBJ_AT_TOS
7f10: 3b 0a 20 09 43 6c 69 65 6e 74 44 61 74 61 20 70 ;. .ClientData p
7f20: 74 72 31 2c 20 70 74 72 32 3b 0a 40 40 20 2d 34 tr1, ptr2;.@@ -4
7f30: 34 30 33 2c 39 20 2b 34 36 30 36 2c 39 20 40 40 403,9 +4606,9 @@
7f40: 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 TclExecuteByteC
7f50: 6f 64 65 28 0a 20 09 4e 45 58 54 5f 49 4e 53 54 ode(. .NEXT_INST
7f60: 5f 46 28 30 2c 20 32 2c 20 31 29 3b 0a 20 20 20 _F(0, 2, 1);.
7f70: 20 20 7d 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 }. .- case
7f80: 49 4e 53 54 5f 4d 4f 44 3a 0a 2d 20 20 20 20 63 INST_MOD:.- c
7f90: 61 73 65 20 49 4e 53 54 5f 4c 53 48 49 46 54 3a ase INST_LSHIFT:
7fa0: 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f .- case INST_
7fb0: 52 53 48 49 46 54 3a 20 7b 0a 2b 20 20 20 20 43 RSHIFT: {.+ C
7fc0: 41 53 45 28 49 4e 53 54 5f 4d 4f 44 29 3a 0a 2b ASE(INST_MOD):.+
7fd0: 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 4c 53 CASE(INST_LS
7fe0: 48 49 46 54 29 3a 0a 2b 20 20 20 20 43 41 53 45 HIFT):.+ CASE
7ff0: 28 49 4e 53 54 5f 52 53 48 49 46 54 29 3a 20 7b (INST_RSHIFT): {
8000: 0a 20 09 54 63 6c 5f 4f 62 6a 20 2a 76 61 6c 75 . .Tcl_Obj *valu
8010: 65 32 50 74 72 20 3d 20 4f 42 4a 5f 41 54 5f 54 e2Ptr = OBJ_AT_T
8020: 4f 53 3b 0a 20 09 54 63 6c 5f 4f 62 6a 20 2a 76 OS;. .Tcl_Obj *v
8030: 61 6c 75 65 50 74 72 20 3d 20 4f 42 4a 5f 55 4e aluePtr = OBJ_UN
8040: 44 45 52 5f 54 4f 53 3b 0a 20 09 43 6c 69 65 6e DER_TOS;. .Clien
8050: 74 44 61 74 61 20 70 74 72 31 2c 20 70 74 72 32 tData ptr1, ptr2
8060: 3b 0a 40 40 20 2d 34 38 36 32 2c 39 20 2b 35 30 ;.@@ -4862,9 +50
8070: 36 35 2c 39 20 40 40 20 54 63 6c 45 78 65 63 75 65,9 @@ TclExecu
8080: 74 65 42 79 74 65 43 6f 64 65 28 0a 20 09 4e 45 teByteCode(. .NE
8090: 58 54 5f 49 4e 53 54 5f 46 28 31 2c 20 32 2c 20 XT_INST_F(1, 2,
80a0: 31 29 3b 0a 20 20 20 20 20 7d 0a 20 0a 2d 20 20 1);. }. .-
80b0: 20 20 63 61 73 65 20 49 4e 53 54 5f 42 49 54 4f case INST_BITO
80c0: 52 3a 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 R:.- case INS
80d0: 54 5f 42 49 54 58 4f 52 3a 0a 2d 20 20 20 20 63 T_BITXOR:.- c
80e0: 61 73 65 20 49 4e 53 54 5f 42 49 54 41 4e 44 3a ase INST_BITAND:
80f0: 20 7b 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 {.+ CASE(INS
8100: 54 5f 42 49 54 4f 52 29 3a 0a 2b 20 20 20 20 43 T_BITOR):.+ C
8110: 41 53 45 28 49 4e 53 54 5f 42 49 54 58 4f 52 29 ASE(INST_BITXOR)
8120: 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 :.+ CASE(INST
8130: 5f 42 49 54 41 4e 44 29 3a 20 7b 0a 20 09 43 6c _BITAND): {. .Cl
8140: 69 65 6e 74 44 61 74 61 20 70 74 72 31 2c 20 70 ientData ptr1, p
8150: 74 72 32 3b 0a 20 09 69 6e 74 20 74 79 70 65 31 tr2;. .int type1
8160: 2c 20 74 79 70 65 32 3b 0a 20 09 54 63 6c 5f 4f , type2;. .Tcl_O
8170: 62 6a 20 2a 76 61 6c 75 65 32 50 74 72 20 3d 20 bj *value2Ptr =
8180: 4f 42 4a 5f 41 54 5f 54 4f 53 3b 0a 40 40 20 2d OBJ_AT_TOS;.@@ -
8190: 35 31 30 35 2c 31 31 20 2b 35 33 30 38 2c 31 31 5105,11 +5308,11
81a0: 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 @@ TclExecuteBy
81b0: 74 65 43 6f 64 65 28 0a 20 09 7d 0a 20 20 20 20 teCode(. .}.
81c0: 20 7d 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 }. .- case I
81d0: 4e 53 54 5f 45 58 50 4f 4e 3a 0a 2d 20 20 20 20 NST_EXPON:.-
81e0: 63 61 73 65 20 49 4e 53 54 5f 41 44 44 3a 0a 2d case INST_ADD:.-
81f0: 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 53 55 case INST_SU
8200: 42 3a 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 B:.- case INS
8210: 54 5f 44 49 56 3a 0a 2d 20 20 20 20 63 61 73 65 T_DIV:.- case
8220: 20 49 4e 53 54 5f 4d 55 4c 54 3a 20 7b 0a 2b 20 INST_MULT: {.+
8230: 20 20 20 43 41 53 45 28 49 4e 53 54 5f 45 58 50 CASE(INST_EXP
8240: 4f 4e 29 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 ON):.+ CASE(I
8250: 4e 53 54 5f 41 44 44 29 3a 0a 2b 20 20 20 20 43 NST_ADD):.+ C
8260: 41 53 45 28 49 4e 53 54 5f 53 55 42 29 3a 0a 2b ASE(INST_SUB):.+
8270: 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 44 49 CASE(INST_DI
8280: 56 29 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e V):.+ CASE(IN
8290: 53 54 5f 4d 55 4c 54 29 3a 20 7b 0a 20 09 43 6c ST_MULT): {. .Cl
82a0: 69 65 6e 74 44 61 74 61 20 70 74 72 31 2c 20 70 ientData ptr1, p
82b0: 74 72 32 3b 0a 20 09 69 6e 74 20 74 79 70 65 31 tr2;. .int type1
82c0: 2c 20 74 79 70 65 32 3b 0a 20 09 54 63 6c 5f 4f , type2;. .Tcl_O
82d0: 62 6a 20 2a 76 61 6c 75 65 32 50 74 72 20 3d 20 bj *value2Ptr =
82e0: 4f 42 4a 5f 41 54 5f 54 4f 53 3b 0a 40 40 20 2d OBJ_AT_TOS;.@@ -
82f0: 35 38 33 38 2c 37 20 2b 36 30 34 31 2c 37 20 40 5838,7 +6041,7 @
8300: 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 @ TclExecuteByte
8310: 43 6f 64 65 28 0a 20 09 7d 0a 20 20 20 20 20 7d Code(. .}. }
8320: 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 . .- case INS
8330: 54 5f 4c 4e 4f 54 3a 20 7b 0a 2b 20 20 20 20 43 T_LNOT: {.+ C
8340: 41 53 45 28 49 4e 53 54 5f 4c 4e 4f 54 29 3a 20 ASE(INST_LNOT):
8350: 7b 0a 20 09 69 6e 74 20 62 3b 0a 20 09 54 63 6c {. .int b;. .Tcl
8360: 5f 4f 62 6a 20 2a 76 61 6c 75 65 50 74 72 20 3d _Obj *valuePtr =
8370: 20 4f 42 4a 5f 41 54 5f 54 4f 53 3b 0a 20 0a 40 OBJ_AT_TOS;. .@
8380: 40 20 2d 35 38 35 36 2c 37 20 2b 36 30 35 39 2c @ -5856,7 +6059,
8390: 37 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 7 @@ TclExecuteB
83a0: 79 74 65 43 6f 64 65 28 0a 20 09 4e 45 58 54 5f yteCode(. .NEXT_
83b0: 49 4e 53 54 5f 46 28 31 2c 20 31 2c 20 31 29 3b INST_F(1, 1, 1);
83c0: 0a 20 20 20 20 20 7d 0a 20 0a 2d 20 20 20 20 63 . }. .- c
83d0: 61 73 65 20 49 4e 53 54 5f 42 49 54 4e 4f 54 3a ase INST_BITNOT:
83e0: 20 7b 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 {.+ CASE(INS
83f0: 54 5f 42 49 54 4e 4f 54 29 3a 20 7b 0a 20 09 6d T_BITNOT): {. .m
8400: 70 5f 69 6e 74 20 62 69 67 3b 0a 20 09 43 6c 69 p_int big;. .Cli
8410: 65 6e 74 44 61 74 61 20 70 74 72 3b 0a 20 09 69 entData ptr;. .i
8420: 6e 74 20 74 79 70 65 3b 0a 40 40 20 2d 35 39 30 nt type;.@@ -590
8430: 38 2c 37 20 2b 36 31 31 31 2c 37 20 40 40 20 54 8,7 +6111,7 @@ T
8440: 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 clExecuteByteCod
8450: 65 28 0a 20 09 4e 45 58 54 5f 49 4e 53 54 5f 46 e(. .NEXT_INST_F
8460: 28 31 2c 20 30 2c 20 30 29 3b 0a 20 20 20 20 20 (1, 0, 0);.
8470: 7d 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e }. .- case IN
8480: 53 54 5f 55 4d 49 4e 55 53 3a 20 7b 0a 2b 20 20 ST_UMINUS: {.+
8490: 20 20 43 41 53 45 28 49 4e 53 54 5f 55 4d 49 4e CASE(INST_UMIN
84a0: 55 53 29 3a 20 7b 0a 20 09 43 6c 69 65 6e 74 44 US): {. .ClientD
84b0: 61 74 61 20 70 74 72 3b 0a 20 09 69 6e 74 20 74 ata ptr;. .int t
84c0: 79 70 65 3b 0a 20 09 54 63 6c 5f 4f 62 6a 20 2a ype;. .Tcl_Obj *
84d0: 76 61 6c 75 65 50 74 72 20 3d 20 4f 42 4a 5f 41 valuePtr = OBJ_A
84e0: 54 5f 54 4f 53 3b 0a 40 40 20 2d 35 39 39 39 2c T_TOS;.@@ -5999,
84f0: 38 20 2b 36 32 30 32 2c 38 20 40 40 20 54 63 6c 8 +6202,8 @@ Tcl
8500: 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 28 ExecuteByteCode(
8510: 0a 20 09 7d 0a 20 20 20 20 20 7d 0a 20 0a 2d 20 . .}. }. .-
8520: 20 20 20 63 61 73 65 20 49 4e 53 54 5f 55 50 4c case INST_UPL
8530: 55 53 3a 0a 2d 20 20 20 20 63 61 73 65 20 49 4e US:.- case IN
8540: 53 54 5f 54 52 59 5f 43 56 54 5f 54 4f 5f 4e 55 ST_TRY_CVT_TO_NU
8550: 4d 45 52 49 43 3a 20 7b 0a 2b 20 20 20 20 43 41 MERIC: {.+ CA
8560: 53 45 28 49 4e 53 54 5f 55 50 4c 55 53 29 3a 0a SE(INST_UPLUS):.
8570: 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 54 + CASE(INST_T
8580: 52 59 5f 43 56 54 5f 54 4f 5f 4e 55 4d 45 52 49 RY_CVT_TO_NUMERI
8590: 43 29 3a 20 7b 0a 20 09 2f 2a 0a 20 09 20 2a 20 C): {. ./*. . *
85a0: 54 72 79 20 74 6f 20 63 6f 6e 76 65 72 74 20 74 Try to convert t
85b0: 68 65 20 74 6f 70 6d 6f 73 74 20 73 74 61 63 6b he topmost stack
85c0: 20 6f 62 6a 65 63 74 20 74 6f 20 6e 75 6d 65 72 object to numer
85d0: 69 63 20 6f 62 6a 65 63 74 2e 20 54 68 69 73 20 ic object. This
85e0: 69 73 0a 20 09 20 2a 20 64 6f 6e 65 20 69 6e 20 is. . * done in
85f0: 6f 72 64 65 72 20 74 6f 20 73 75 70 70 6f 72 74 order to support
8600: 20 5b 65 78 70 72 5d 27 73 20 70 6f 6c 69 63 79 [expr]'s policy
8610: 20 6f 66 20 69 6e 74 65 72 70 72 65 74 69 6e 67 of interpreting
8620: 20 6f 70 65 72 61 6e 64 73 0a 40 40 20 2d 36 30 operands.@@ -60
8630: 38 35 2c 37 20 2b 36 32 38 38 2c 37 20 40 40 20 85,7 +6288,7 @@
8640: 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f TclExecuteByteCo
8650: 64 65 28 0a 20 09 4e 45 58 54 5f 49 4e 53 54 5f de(. .NEXT_INST_
8660: 46 28 31 2c 20 30 2c 20 30 29 3b 0a 20 20 20 20 F(1, 0, 0);.
8670: 20 7d 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 }. .- case I
8680: 4e 53 54 5f 42 52 45 41 4b 3a 0a 2b 20 20 20 20 NST_BREAK:.+
8690: 43 41 53 45 28 49 4e 53 54 5f 42 52 45 41 4b 29 CASE(INST_BREAK)
86a0: 3a 0a 20 09 2f 2a 0a 20 09 44 45 43 41 43 48 45 :. ./*. .DECACHE
86b0: 5f 53 54 41 43 4b 5f 49 4e 46 4f 28 29 3b 0a 20 _STACK_INFO();.
86c0: 09 54 63 6c 5f 52 65 73 65 74 52 65 73 75 6c 74 .Tcl_ResetResult
86d0: 28 69 6e 74 65 72 70 29 3b 0a 40 40 20 2d 36 30 (interp);.@@ -60
86e0: 39 35 2c 37 20 2b 36 32 39 38 2c 37 20 40 40 20 95,7 +6298,7 @@
86f0: 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f TclExecuteByteCo
8700: 64 65 28 0a 20 09 63 6c 65 61 6e 75 70 20 3d 20 de(. .cleanup =
8710: 30 3b 0a 20 09 67 6f 74 6f 20 70 72 6f 63 65 73 0;. .goto proces
8720: 73 45 78 63 65 70 74 69 6f 6e 52 65 74 75 72 6e sExceptionReturn
8730: 3b 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e ;. .- case IN
8740: 53 54 5f 43 4f 4e 54 49 4e 55 45 3a 0a 2b 20 20 ST_CONTINUE:.+
8750: 20 20 43 41 53 45 28 49 4e 53 54 5f 43 4f 4e 54 CASE(INST_CONT
8760: 49 4e 55 45 29 3a 0a 20 09 2f 2a 0a 20 09 44 45 INUE):. ./*. .DE
8770: 43 41 43 48 45 5f 53 54 41 43 4b 5f 49 4e 46 4f CACHE_STACK_INFO
8780: 28 29 3b 0a 20 09 54 63 6c 5f 52 65 73 65 74 52 ();. .Tcl_ResetR
8790: 65 73 75 6c 74 28 69 6e 74 65 72 70 29 3b 0a 40 esult(interp);.@
87a0: 40 20 2d 36 31 30 35 2c 37 20 2b 36 33 30 38 2c @ -6105,7 +6308,
87b0: 37 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 7 @@ TclExecuteB
87c0: 79 74 65 43 6f 64 65 28 0a 20 09 63 6c 65 61 6e yteCode(. .clean
87d0: 75 70 20 3d 20 30 3b 0a 20 09 67 6f 74 6f 20 70 up = 0;. .goto p
87e0: 72 6f 63 65 73 73 45 78 63 65 70 74 69 6f 6e 52 rocessExceptionR
87f0: 65 74 75 72 6e 3b 0a 20 0a 2d 20 20 20 20 63 61 eturn;. .- ca
8800: 73 65 20 49 4e 53 54 5f 46 4f 52 45 41 43 48 5f se INST_FOREACH_
8810: 53 54 41 52 54 34 3a 20 7b 0a 2b 20 20 20 20 43 START4: {.+ C
8820: 41 53 45 28 49 4e 53 54 5f 46 4f 52 45 41 43 48 ASE(INST_FOREACH
8830: 5f 53 54 41 52 54 34 29 3a 20 7b 0a 20 09 2f 2a _START4): {. ./*
8840: 0a 20 09 20 2a 20 49 6e 69 74 69 61 6c 69 7a 65 . . * Initialize
8850: 20 74 68 65 20 74 65 6d 70 6f 72 61 72 79 20 6c the temporary l
8860: 6f 63 61 6c 20 76 61 72 20 74 68 61 74 20 68 6f ocal var that ho
8870: 6c 64 73 20 74 68 65 20 63 6f 75 6e 74 20 6f 66 lds the count of
8880: 20 74 68 65 0a 20 09 20 2a 20 6e 75 6d 62 65 72 the. . * number
8890: 20 6f 66 20 69 74 65 72 61 74 69 6f 6e 73 20 6f of iterations o
88a0: 66 20 74 68 65 20 6c 6f 6f 70 20 62 6f 64 79 20 f the loop body
88b0: 74 6f 20 2d 31 2e 0a 40 40 20 2d 36 31 34 34 2c to -1..@@ -6144,
88c0: 37 20 2b 36 33 34 37 2c 37 20 40 40 20 54 63 6c 7 +6347,7 @@ Tcl
88d0: 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 28 ExecuteByteCode(
88e0: 0a 20 23 65 6e 64 69 66 0a 20 20 20 20 20 7d 0a . #endif. }.
88f0: 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 .- case INST
8900: 5f 46 4f 52 45 41 43 48 5f 53 54 45 50 34 3a 20 _FOREACH_STEP4:
8910: 7b 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 {.+ CASE(INST
8920: 5f 46 4f 52 45 41 43 48 5f 53 54 45 50 34 29 3a _FOREACH_STEP4):
8930: 20 7b 0a 20 09 2f 2a 0a 20 09 20 2a 20 22 53 74 {. ./*. . * "St
8940: 65 70 22 20 61 20 66 6f 72 65 61 63 68 20 6c 6f ep" a foreach lo
8950: 6f 70 20 28 69 2e 65 2e 2c 20 62 65 67 69 6e 20 op (i.e., begin
8960: 69 74 73 20 6e 65 78 74 20 69 74 65 72 61 74 69 its next iterati
8970: 6f 6e 29 20 62 79 20 61 73 73 69 67 6e 69 6e 67 on) by assigning
8980: 0a 20 09 20 2a 20 74 68 65 20 6e 65 78 74 20 76 . . * the next v
8990: 61 6c 75 65 20 6c 69 73 74 20 65 6c 65 6d 65 6e alue list elemen
89a0: 74 20 74 6f 20 65 61 63 68 20 6c 6f 6f 70 20 76 t to each loop v
89b0: 61 72 2e 0a 40 40 20 2d 36 32 37 36 2c 37 20 2b ar..@@ -6276,7 +
89c0: 36 34 37 39 2c 37 20 40 40 20 54 63 6c 45 78 65 6479,7 @@ TclExe
89d0: 63 75 74 65 42 79 74 65 43 6f 64 65 28 0a 20 09 cuteByteCode(. .
89e0: 7d 0a 20 20 20 20 20 7d 0a 20 0a 2d 20 20 20 20 }. }. .-
89f0: 63 61 73 65 20 49 4e 53 54 5f 42 45 47 49 4e 5f case INST_BEGIN_
8a00: 43 41 54 43 48 34 3a 0a 2b 20 20 20 20 43 41 53 CATCH4:.+ CAS
8a10: 45 28 49 4e 53 54 5f 42 45 47 49 4e 5f 43 41 54 E(INST_BEGIN_CAT
8a20: 43 48 34 29 3a 0a 20 09 2f 2a 0a 20 09 20 2a 20 CH4):. ./*. . *
8a30: 52 65 63 6f 72 64 20 73 74 61 72 74 20 6f 66 20 Record start of
8a40: 74 68 65 20 63 61 74 63 68 20 63 6f 6d 6d 61 6e the catch comman
8a50: 64 20 77 69 74 68 20 65 78 63 65 70 74 69 6f 6e d with exception
8a60: 20 72 61 6e 67 65 20 69 6e 64 65 78 20 65 71 75 range index equ
8a70: 61 6c 0a 20 09 20 2a 20 74 6f 20 74 68 65 20 6f al. . * to the o
8a80: 70 65 72 61 6e 64 2e 20 50 75 73 68 20 74 68 65 perand. Push the
8a90: 20 63 75 72 72 65 6e 74 20 73 74 61 63 6b 20 64 current stack d
8aa0: 65 70 74 68 20 6f 6e 74 6f 20 74 68 65 20 73 70 epth onto the sp
8ab0: 65 63 69 61 6c 20 63 61 74 63 68 0a 40 40 20 2d ecial catch.@@ -
8ac0: 36 32 38 39 2c 31 34 20 2b 36 34 39 32 2c 31 34 6289,14 +6492,14
8ad0: 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 @@ TclExecuteBy
8ae0: 74 65 43 6f 64 65 28 0a 20 09 09 28 69 6e 74 29 teCode(. ..(int)
8af0: 20 43 55 52 52 5f 44 45 50 54 48 29 29 3b 0a 20 CURR_DEPTH));.
8b00: 09 4e 45 58 54 5f 49 4e 53 54 5f 46 28 35 2c 20 .NEXT_INST_F(5,
8b10: 30 2c 20 30 29 3b 0a 20 0a 2d 20 20 20 20 63 61 0, 0);. .- ca
8b20: 73 65 20 49 4e 53 54 5f 45 4e 44 5f 43 41 54 43 se INST_END_CATC
8b30: 48 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 H:.+ CASE(INS
8b40: 54 5f 45 4e 44 5f 43 41 54 43 48 29 3a 0a 20 09 T_END_CATCH):. .
8b50: 63 61 74 63 68 54 6f 70 2d 2d 3b 0a 20 09 54 63 catchTop--;. .Tc
8b60: 6c 5f 52 65 73 65 74 52 65 73 75 6c 74 28 69 6e l_ResetResult(in
8b70: 74 65 72 70 29 3b 0a 20 09 72 65 73 75 6c 74 20 terp);. .result
8b80: 3d 20 54 43 4c 5f 4f 4b 3b 0a 20 09 54 52 41 43 = TCL_OK;. .TRAC
8b90: 45 28 28 22 3d 3e 20 63 61 74 63 68 54 6f 70 3d E(("=> catchTop=
8ba0: 25 64 5c 6e 22 2c 20 28 63 61 74 63 68 54 6f 70 %d\n", (catchTop
8bb0: 20 2d 20 69 6e 69 74 43 61 74 63 68 54 6f 70 20 - initCatchTop
8bc0: 2d 20 31 29 29 29 3b 0a 20 09 4e 45 58 54 5f 49 - 1)));. .NEXT_I
8bd0: 4e 53 54 5f 46 28 31 2c 20 30 2c 20 30 29 3b 0a NST_F(1, 0, 0);.
8be0: 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 .- case INST
8bf0: 5f 50 55 53 48 5f 52 45 53 55 4c 54 3a 0a 2b 20 _PUSH_RESULT:.+
8c00: 20 20 20 43 41 53 45 28 49 4e 53 54 5f 50 55 53 CASE(INST_PUS
8c10: 48 5f 52 45 53 55 4c 54 29 3a 0a 20 09 6f 62 6a H_RESULT):. .obj
8c20: 52 65 73 75 6c 74 50 74 72 20 3d 20 54 63 6c 5f ResultPtr = Tcl_
8c30: 47 65 74 4f 62 6a 52 65 73 75 6c 74 28 69 6e 74 GetObjResult(int
8c40: 65 72 70 29 3b 0a 20 09 54 52 41 43 45 5f 57 49 erp);. .TRACE_WI
8c50: 54 48 5f 4f 42 4a 28 28 22 3d 3e 20 22 29 2c 20 TH_OBJ(("=> "),
8c60: 6f 62 6a 52 65 73 75 6c 74 50 74 72 29 3b 0a 20 objResultPtr);.
8c70: 0a 40 40 20 2d 36 33 31 33 2c 31 32 20 2b 36 35 .@@ -6313,12 +65
8c80: 31 36 2c 31 32 20 40 40 20 54 63 6c 45 78 65 63 16,12 @@ TclExec
8c90: 75 74 65 42 79 74 65 43 6f 64 65 28 0a 20 0a 20 uteByteCode(. .
8ca0: 09 4e 45 58 54 5f 49 4e 53 54 5f 46 28 31 2c 20 .NEXT_INST_F(1,
8cb0: 30 2c 20 2d 31 29 3b 0a 20 0a 2d 20 20 20 20 63 0, -1);. .- c
8cc0: 61 73 65 20 49 4e 53 54 5f 50 55 53 48 5f 52 45 ase INST_PUSH_RE
8cd0: 54 55 52 4e 5f 43 4f 44 45 3a 0a 2b 20 20 20 20 TURN_CODE:.+
8ce0: 43 41 53 45 28 49 4e 53 54 5f 50 55 53 48 5f 52 CASE(INST_PUSH_R
8cf0: 45 54 55 52 4e 5f 43 4f 44 45 29 3a 0a 20 09 54 ETURN_CODE):. .T
8d00: 63 6c 4e 65 77 49 6e 74 4f 62 6a 28 6f 62 6a 52 clNewIntObj(objR
8d10: 65 73 75 6c 74 50 74 72 2c 20 72 65 73 75 6c 74 esultPtr, result
8d20: 29 3b 0a 20 09 54 52 41 43 45 28 28 22 3d 3e 20 );. .TRACE(("=>
8d30: 25 75 5c 6e 22 2c 20 72 65 73 75 6c 74 29 29 3b %u\n", result));
8d40: 0a 20 09 4e 45 58 54 5f 49 4e 53 54 5f 46 28 31 . .NEXT_INST_F(1
8d50: 2c 20 30 2c 20 31 29 3b 0a 20 0a 2d 20 20 20 20 , 0, 1);. .-
8d60: 63 61 73 65 20 49 4e 53 54 5f 50 55 53 48 5f 52 case INST_PUSH_R
8d70: 45 54 55 52 4e 5f 4f 50 54 49 4f 4e 53 3a 0a 2b ETURN_OPTIONS:.+
8d80: 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 50 55 CASE(INST_PU
8d90: 53 48 5f 52 45 54 55 52 4e 5f 4f 50 54 49 4f 4e SH_RETURN_OPTION
8da0: 53 29 3a 0a 20 09 6f 62 6a 52 65 73 75 6c 74 50 S):. .objResultP
8db0: 74 72 20 3d 20 54 63 6c 5f 47 65 74 52 65 74 75 tr = Tcl_GetRetu
8dc0: 72 6e 4f 70 74 69 6f 6e 73 28 69 6e 74 65 72 70 rnOptions(interp
8dd0: 2c 20 72 65 73 75 6c 74 29 3b 0a 20 09 54 52 41 , result);. .TRA
8de0: 43 45 5f 57 49 54 48 5f 4f 42 4a 28 28 22 3d 3e CE_WITH_OBJ(("=>
8df0: 20 22 29 2c 20 6f 62 6a 52 65 73 75 6c 74 50 74 "), objResultPt
8e00: 72 29 3b 0a 20 09 4e 45 58 54 5f 49 4e 53 54 5f r);. .NEXT_INST_
8e10: 46 28 31 2c 20 30 2c 20 31 29 3b 0a 40 40 20 2d F(1, 0, 1);.@@ -
8e20: 36 33 32 39 2c 37 20 2b 36 35 33 32 2c 37 20 40 6329,7 +6532,7 @
8e30: 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 @ TclExecuteByte
8e40: 43 6f 64 65 28 0a 20 09 54 63 6c 5f 4f 62 6a 20 Code(. .Tcl_Obj
8e50: 2a 64 69 63 74 50 74 72 2c 20 2a 76 61 6c 50 74 *dictPtr, *valPt
8e60: 72 3b 0a 20 09 56 61 72 20 2a 76 61 72 50 74 72 r;. .Var *varPtr
8e70: 3b 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e ;. .- case IN
8e80: 53 54 5f 44 49 43 54 5f 47 45 54 3a 0a 2b 20 20 ST_DICT_GET:.+
8e90: 20 20 43 41 53 45 28 49 4e 53 54 5f 44 49 43 54 CASE(INST_DICT
8ea0: 5f 47 45 54 29 3a 0a 20 09 6f 70 6e 64 20 3d 20 _GET):. .opnd =
8eb0: 54 63 6c 47 65 74 55 49 6e 74 34 41 74 50 74 72 TclGetUInt4AtPtr
8ec0: 28 70 63 2b 31 29 3b 0a 20 09 54 52 41 43 45 28 (pc+1);. .TRACE(
8ed0: 28 22 25 75 20 3d 3e 20 22 2c 20 6f 70 6e 64 29 ("%u => ", opnd)
8ee0: 29 3b 0a 20 09 64 69 63 74 50 74 72 20 3d 20 4f );. .dictPtr = O
8ef0: 42 4a 5f 41 54 5f 44 45 50 54 48 28 6f 70 6e 64 BJ_AT_DEPTH(opnd
8f00: 29 3b 0a 40 40 20 2d 36 33 36 33 2c 39 20 2b 36 );.@@ -6363,9 +6
8f10: 35 36 36 2c 39 20 40 40 20 54 63 6c 45 78 65 63 566,9 @@ TclExec
8f20: 75 74 65 42 79 74 65 43 6f 64 65 28 0a 20 09 7d uteByteCode(. .}
8f30: 0a 20 09 67 6f 74 6f 20 63 68 65 63 6b 46 6f 72 . .goto checkFor
8f40: 43 61 74 63 68 3b 0a 20 0a 2d 20 20 20 20 63 61 Catch;. .- ca
8f50: 73 65 20 49 4e 53 54 5f 44 49 43 54 5f 53 45 54 se INST_DICT_SET
8f60: 3a 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 :.- case INST
8f70: 5f 44 49 43 54 5f 55 4e 53 45 54 3a 0a 2d 20 20 _DICT_UNSET:.-
8f80: 20 20 63 61 73 65 20 49 4e 53 54 5f 44 49 43 54 case INST_DICT
8f90: 5f 49 4e 43 52 5f 49 4d 4d 3a 0a 2b 20 20 20 20 _INCR_IMM:.+
8fa0: 43 41 53 45 28 49 4e 53 54 5f 44 49 43 54 5f 53 CASE(INST_DICT_S
8fb0: 45 54 29 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 ET):.+ CASE(I
8fc0: 4e 53 54 5f 44 49 43 54 5f 55 4e 53 45 54 29 3a NST_DICT_UNSET):
8fd0: 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f .+ CASE(INST_
8fe0: 44 49 43 54 5f 49 4e 43 52 5f 49 4d 4d 29 3a 0a DICT_INCR_IMM):.
8ff0: 20 09 6f 70 6e 64 20 3d 20 54 63 6c 47 65 74 55 .opnd = TclGetU
9000: 49 6e 74 34 41 74 50 74 72 28 70 63 2b 31 29 3b Int4AtPtr(pc+1);
9010: 0a 20 09 6f 70 6e 64 32 20 3d 20 54 63 6c 47 65 . .opnd2 = TclGe
9020: 74 55 49 6e 74 34 41 74 50 74 72 28 70 63 2b 35 tUInt4AtPtr(pc+5
9030: 29 3b 0a 20 0a 40 40 20 2d 36 34 37 33 2c 38 20 );. .@@ -6473,8
9040: 2b 36 36 37 36 2c 38 20 40 40 20 54 63 6c 45 78 +6676,8 @@ TclEx
9050: 65 63 75 74 65 42 79 74 65 43 6f 64 65 28 0a 20 ecuteByteCode(.
9060: 09 54 52 41 43 45 5f 41 50 50 45 4e 44 28 28 22 .TRACE_APPEND(("
9070: 25 2e 33 30 73 5c 6e 22 2c 20 4f 32 53 28 6f 62 %.30s\n", O2S(ob
9080: 6a 52 65 73 75 6c 74 50 74 72 29 29 29 3b 0a 20 jResultPtr)));.
9090: 09 4e 45 58 54 5f 49 4e 53 54 5f 56 28 39 2c 20 .NEXT_INST_V(9,
90a0: 63 6c 65 61 6e 75 70 2c 20 31 29 3b 0a 20 0a 2d cleanup, 1);. .-
90b0: 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 44 49 case INST_DI
90c0: 43 54 5f 41 50 50 45 4e 44 3a 0a 2d 20 20 20 20 CT_APPEND:.-
90d0: 63 61 73 65 20 49 4e 53 54 5f 44 49 43 54 5f 4c case INST_DICT_L
90e0: 41 50 50 45 4e 44 3a 0a 2b 20 20 20 20 43 41 53 APPEND:.+ CAS
90f0: 45 28 49 4e 53 54 5f 44 49 43 54 5f 41 50 50 45 E(INST_DICT_APPE
9100: 4e 44 29 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 ND):.+ CASE(I
9110: 4e 53 54 5f 44 49 43 54 5f 4c 41 50 50 45 4e 44 NST_DICT_LAPPEND
9120: 29 3a 0a 20 09 6f 70 6e 64 20 3d 20 54 63 6c 47 ):. .opnd = TclG
9130: 65 74 55 49 6e 74 34 41 74 50 74 72 28 70 63 2b etUInt4AtPtr(pc+
9140: 31 29 3b 0a 20 0a 20 09 76 61 72 50 74 72 20 3d 1);. . .varPtr =
9150: 20 26 28 63 6f 6d 70 69 6c 65 64 4c 6f 63 61 6c &(compiledLocal
9160: 73 5b 6f 70 6e 64 5d 29 3b 0a 40 40 20 2d 36 35 s[opnd]);.@@ -65
9170: 39 37 2c 37 20 2b 36 38 30 30 2c 37 20 40 40 20 97,7 +6800,7 @@
9180: 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f TclExecuteByteCo
9190: 64 65 28 0a 20 09 56 61 72 20 2a 76 61 72 50 74 de(. .Var *varPt
91a0: 72 3b 0a 20 09 54 63 6c 5f 44 69 63 74 53 65 61 r;. .Tcl_DictSea
91b0: 72 63 68 20 2a 73 65 61 72 63 68 50 74 72 3b 0a rch *searchPtr;.
91c0: 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 .- case INST
91d0: 5f 44 49 43 54 5f 46 49 52 53 54 3a 0a 2b 20 20 _DICT_FIRST:.+
91e0: 20 20 43 41 53 45 28 49 4e 53 54 5f 44 49 43 54 CASE(INST_DICT
91f0: 5f 46 49 52 53 54 29 3a 0a 20 09 6f 70 6e 64 20 _FIRST):. .opnd
9200: 3d 20 54 63 6c 47 65 74 55 49 6e 74 34 41 74 50 = TclGetUInt4AtP
9210: 74 72 28 70 63 2b 31 29 3b 0a 20 09 54 52 41 43 tr(pc+1);. .TRAC
9220: 45 28 28 22 25 75 20 3d 3e 20 22 2c 20 6f 70 6e E(("%u => ", opn
9230: 64 29 29 3b 0a 20 09 64 69 63 74 50 74 72 20 3d d));. .dictPtr =
9240: 20 50 4f 50 5f 4f 42 4a 45 43 54 28 29 3b 0a 40 POP_OBJECT();.@
9250: 40 20 2d 36 36 32 34 2c 37 20 2b 36 38 32 37 2c @ -6624,7 +6827,
9260: 37 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 7 @@ TclExecuteB
9270: 79 74 65 43 6f 64 65 28 0a 20 09 54 63 6c 5f 49 yteCode(. .Tcl_I
9280: 6e 63 72 52 65 66 43 6f 75 6e 74 28 73 74 61 74 ncrRefCount(stat
9290: 65 50 74 72 29 3b 0a 20 09 67 6f 74 6f 20 70 75 ePtr);. .goto pu
92a0: 73 68 44 69 63 74 49 74 65 72 61 74 6f 72 52 65 shDictIteratorRe
92b0: 73 75 6c 74 3b 0a 20 0a 2d 20 20 20 20 63 61 73 sult;. .- cas
92c0: 65 20 49 4e 53 54 5f 44 49 43 54 5f 4e 45 58 54 e INST_DICT_NEXT
92d0: 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 :.+ CASE(INST
92e0: 5f 44 49 43 54 5f 4e 45 58 54 29 3a 0a 20 09 6f _DICT_NEXT):. .o
92f0: 70 6e 64 20 3d 20 54 63 6c 47 65 74 55 49 6e 74 pnd = TclGetUInt
9300: 34 41 74 50 74 72 28 70 63 2b 31 29 3b 0a 20 09 4AtPtr(pc+1);. .
9310: 54 52 41 43 45 28 28 22 25 75 20 3d 3e 20 22 2c TRACE(("%u => ",
9320: 20 6f 70 6e 64 29 29 3b 0a 20 09 73 74 61 74 65 opnd));. .state
9330: 50 74 72 20 3d 20 63 6f 6d 70 69 6c 65 64 4c 6f Ptr = compiledLo
9340: 63 61 6c 73 5b 6f 70 6e 64 5d 2e 76 61 6c 75 65 cals[opnd].value
9350: 2e 6f 62 6a 50 74 72 3b 0a 40 40 20 2d 36 36 34 .objPtr;.@@ -664
9360: 38 2c 37 20 2b 36 38 35 31 2c 37 20 40 40 20 54 8,7 +6851,7 @@ T
9370: 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 clExecuteByteCod
9380: 65 28 0a 20 09 2f 2a 20 54 4f 44 4f 3a 20 63 6f e(. ./* TODO: co
9390: 6e 73 69 64 65 72 20 6f 70 74 20 6c 69 6b 65 20 nsider opt like
93a0: 49 4e 53 54 5f 46 4f 52 45 41 43 48 5f 53 54 45 INST_FOREACH_STE
93b0: 50 34 20 2a 2f 0a 20 09 4e 45 58 54 5f 49 4e 53 P4 */. .NEXT_INS
93c0: 54 5f 46 28 35 2c 20 30 2c 20 31 29 3b 0a 20 0a T_F(5, 0, 1);. .
93d0: 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 44 - case INST_D
93e0: 49 43 54 5f 44 4f 4e 45 3a 0a 2b 20 20 20 20 43 ICT_DONE:.+ C
93f0: 41 53 45 28 49 4e 53 54 5f 44 49 43 54 5f 44 4f ASE(INST_DICT_DO
9400: 4e 45 29 3a 0a 20 09 6f 70 6e 64 20 3d 20 54 63 NE):. .opnd = Tc
9410: 6c 47 65 74 55 49 6e 74 34 41 74 50 74 72 28 70 lGetUInt4AtPtr(p
9420: 63 2b 31 29 3b 0a 20 09 54 52 41 43 45 28 28 22 c+1);. .TRACE(("
9430: 25 75 20 3d 3e 20 22 2c 20 6f 70 6e 64 29 29 3b %u => ", opnd));
9440: 0a 20 09 73 74 61 74 65 50 74 72 20 3d 20 63 6f . .statePtr = co
9450: 6d 70 69 6c 65 64 4c 6f 63 61 6c 73 5b 6f 70 6e mpiledLocals[opn
9460: 64 5d 2e 76 61 6c 75 65 2e 6f 62 6a 50 74 72 3b d].value.objPtr;
9470: 0a 40 40 20 2d 36 36 38 39 2c 37 20 2b 36 38 39 .@@ -6689,7 +689
9480: 32 2c 37 20 40 40 20 54 63 6c 45 78 65 63 75 74 2,7 @@ TclExecut
9490: 65 42 79 74 65 43 6f 64 65 28 0a 20 09 44 69 63 eByteCode(. .Dic
94a0: 74 55 70 64 61 74 65 49 6e 66 6f 20 2a 64 75 69 tUpdateInfo *dui
94b0: 50 74 72 3b 0a 20 09 56 61 72 20 2a 76 61 72 50 Ptr;. .Var *varP
94c0: 74 72 3b 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 tr;. .- case
94d0: 49 4e 53 54 5f 44 49 43 54 5f 55 50 44 41 54 45 INST_DICT_UPDATE
94e0: 5f 53 54 41 52 54 3a 0a 2b 20 20 20 20 43 41 53 _START:.+ CAS
94f0: 45 28 49 4e 53 54 5f 44 49 43 54 5f 55 50 44 41 E(INST_DICT_UPDA
9500: 54 45 5f 53 54 41 52 54 29 3a 0a 20 09 6f 70 6e TE_START):. .opn
9510: 64 20 3d 20 54 63 6c 47 65 74 55 49 6e 74 34 41 d = TclGetUInt4A
9520: 74 50 74 72 28 70 63 2b 31 29 3b 0a 20 09 6f 70 tPtr(pc+1);. .op
9530: 6e 64 32 20 3d 20 54 63 6c 47 65 74 55 49 6e 74 nd2 = TclGetUInt
9540: 34 41 74 50 74 72 28 70 63 2b 35 29 3b 0a 20 09 4AtPtr(pc+5);. .
9550: 76 61 72 50 74 72 20 3d 20 26 28 63 6f 6d 70 69 varPtr = &(compi
9560: 6c 65 64 4c 6f 63 61 6c 73 5b 6f 70 6e 64 5d 29 ledLocals[opnd])
9570: 3b 0a 40 40 20 2d 36 37 34 34 2c 37 20 2b 36 39 ;.@@ -6744,7 +69
9580: 34 37 2c 37 20 40 40 20 54 63 6c 45 78 65 63 75 47,7 @@ TclExecu
9590: 74 65 42 79 74 65 43 6f 64 65 28 0a 20 09 7d 0a teByteCode(. .}.
95a0: 20 09 4e 45 58 54 5f 49 4e 53 54 5f 46 28 39 2c .NEXT_INST_F(9,
95b0: 20 30 2c 20 30 29 3b 0a 20 0a 2d 20 20 20 20 63 0, 0);. .- c
95c0: 61 73 65 20 49 4e 53 54 5f 44 49 43 54 5f 55 50 ase INST_DICT_UP
95d0: 44 41 54 45 5f 45 4e 44 3a 0a 2b 20 20 20 20 43 DATE_END:.+ C
95e0: 41 53 45 28 49 4e 53 54 5f 44 49 43 54 5f 55 50 ASE(INST_DICT_UP
95f0: 44 41 54 45 5f 45 4e 44 29 3a 0a 20 09 6f 70 6e DATE_END):. .opn
9600: 64 20 3d 20 54 63 6c 47 65 74 55 49 6e 74 34 41 d = TclGetUInt4A
9610: 74 50 74 72 28 70 63 2b 31 29 3b 0a 20 09 6f 70 tPtr(pc+1);. .op
9620: 6e 64 32 20 3d 20 54 63 6c 47 65 74 55 49 6e 74 nd2 = TclGetUInt
9630: 34 41 74 50 74 72 28 70 63 2b 35 29 3b 0a 20 09 4AtPtr(pc+5);. .
9640: 76 61 72 50 74 72 20 3d 20 26 28 63 6f 6d 70 69 varPtr = &(compi
9650: 6c 65 64 4c 6f 63 61 6c 73 5b 6f 70 6e 64 5d 29 ledLocals[opnd])
9660: 3b 0a 40 40 20 2d 36 38 31 38 2c 37 20 2b 37 30 ;.@@ -6818,7 +70
9670: 32 31 2c 37 20 40 40 20 54 63 6c 45 78 65 63 75 21,7 @@ TclExecu
9680: 74 65 42 79 74 65 43 6f 64 65 28 0a 20 09 4e 45 teByteCode(. .NE
9690: 58 54 5f 49 4e 53 54 5f 46 28 39 2c 20 31 2c 20 XT_INST_F(9, 1,
96a0: 30 29 3b 0a 20 20 20 20 20 7d 0a 20 0a 2d 20 20 0);. }. .-
96b0: 20 20 64 65 66 61 75 6c 74 3a 0a 2b 20 20 20 20 default:.+
96c0: 42 41 44 5f 49 4e 53 54 28 29 3a 0a 20 09 54 63 BAD_INST():. .Tc
96d0: 6c 5f 50 61 6e 69 63 28 22 54 63 6c 45 78 65 63 l_Panic("TclExec
96e0: 75 74 65 42 79 74 65 43 6f 64 65 3a 20 75 6e 72 uteByteCode: unr
96f0: 65 63 6f 67 6e 69 7a 65 64 20 6f 70 43 6f 64 65 ecognized opCode
9700: 20 25 75 22 2c 20 2a 70 63 29 3b 0a 20 20 20 20 %u", *pc);.
9710: 20 7d 20 2f 2a 20 65 6e 64 20 6f 66 20 73 77 69 } /* end of swi
9720: 74 63 68 20 6f 6e 20 6f 70 43 6f 64 65 20 2a 2f tch on opCode */
9730: 0a 20 0a 49 6e 64 65 78 3a 20 75 6e 69 78 2f 63 . .Index: unix/c
9740: 6f 6e 66 69 67 75 72 65 0a 3d 3d 3d 3d 3d 3d 3d onfigure.=======
9750: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
9760: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
9770: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
9780: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 52 43 53 ============.RCS
9790: 20 66 69 6c 65 3a 20 2f 63 76 73 72 6f 6f 74 2f file: /cvsroot/
97a0: 74 63 6c 2f 74 63 6c 2f 75 6e 69 78 2f 63 6f 6e tcl/tcl/unix/con
97b0: 66 69 67 75 72 65 2c 76 0a 72 65 74 72 69 65 76 figure,v.retriev
97c0: 69 6e 67 20 72 65 76 69 73 69 6f 6e 20 31 2e 32 ing revision 1.2
97d0: 30 39 0a 64 69 66 66 20 2d 75 20 2d 70 20 2d 72 09.diff -u -p -r
97e0: 31 2e 32 30 39 20 63 6f 6e 66 69 67 75 72 65 0a 1.209 configure.
97f0: 2d 2d 2d 20 75 6e 69 78 2f 63 6f 6e 66 69 67 75 --- unix/configu
9800: 72 65 09 33 30 20 4f 63 74 20 32 30 30 37 20 31 re.30 Oct 2007 1
9810: 39 3a 30 33 3a 35 36 20 2d 30 30 30 30 09 31 2e 9:03:56 -0000.1.
9820: 32 30 39 0a 2b 2b 2b 20 75 6e 69 78 2f 63 6f 6e 209.+++ unix/con
9830: 66 69 67 75 72 65 09 39 20 4e 6f 76 20 32 30 30 figure.9 Nov 200
9840: 37 20 31 39 3a 30 32 3a 31 37 20 2d 30 30 30 30 7 19:02:17 -0000
9850: 0a 40 40 20 2d 31 37 36 37 39 2c 36 20 2b 31 37 .@@ -17679,6 +17
9860: 36 37 39 2c 31 33 39 20 40 40 20 65 63 68 6f 20 679,139 @@ echo
9870: 22 24 7b 45 43 48 4f 5f 54 7d 73 75 70 70 6c 69 "${ECHO_T}suppli
9880: 65 64 20 62 79 20 54 63 6c 22 20 3e 26 36 0a 20 ed by Tcl" >&6.
9890: 20 20 20 20 49 4e 53 54 41 4c 4c 5f 54 5a 44 41 INSTALL_TZDA
98a0: 54 41 3d 69 6e 73 74 61 6c 6c 2d 74 7a 64 61 74 TA=install-tzdat
98b0: 61 0a 20 66 69 0a 20 0a 2b 23 2d 2d 2d 2d 2d 2d a. fi. .+#------
98c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
98d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
98e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
98f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
9900: 2d 2d 0a 2b 23 09 43 68 65 63 6b 20 66 6f 72 20 --.+#.Check for
9910: 63 6f 6d 70 75 74 65 64 20 67 6f 74 6f 20 61 6e computed goto an
9920: 64 20 5f 5f 62 75 69 6c 74 69 6e 5f 65 78 70 65 d __builtin_expe
9930: 63 74 20 73 75 70 70 6f 72 74 2e 0a 2b 23 2d 2d ct support..+#--
9940: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
9950: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
9960: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
9970: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
9980: 2d 2d 2d 2d 2d 2d 0a 2b 0a 2b 65 63 68 6f 20 22 ------.+.+echo "
9990: 24 61 73 5f 6d 65 3a 24 4c 49 4e 45 4e 4f 3a 20 $as_me:$LINENO:
99a0: 63 68 65 63 6b 69 6e 67 20 66 6f 72 20 63 6f 6d checking for com
99b0: 70 75 74 65 64 20 67 6f 74 6f 22 20 3e 26 35 0a puted goto" >&5.
99c0: 2b 65 63 68 6f 20 24 45 43 48 4f 5f 4e 20 22 63 +echo $ECHO_N "c
99d0: 68 65 63 6b 69 6e 67 20 66 6f 72 20 63 6f 6d 70 hecking for comp
99e0: 75 74 65 64 20 67 6f 74 6f 2e 2e 2e 20 24 45 43 uted goto... $EC
99f0: 48 4f 5f 43 22 20 3e 26 36 0a 2b 69 66 20 74 65 HO_C" >&6.+if te
9a00: 73 74 20 22 24 7b 74 63 6c 5f 63 76 5f 63 63 5f st "${tcl_cv_cc_
9a10: 63 6f 6d 70 75 74 65 64 5f 67 6f 74 6f 2b 73 65 computed_goto+se
9a20: 74 7d 22 20 3d 20 73 65 74 3b 20 74 68 65 6e 0a t}" = set; then.
9a30: 2b 20 20 65 63 68 6f 20 24 45 43 48 4f 5f 4e 20 + echo $ECHO_N
9a40: 22 28 63 61 63 68 65 64 29 20 24 45 43 48 4f 5f "(cached) $ECHO_
9a50: 43 22 20 3e 26 36 0a 2b 65 6c 73 65 0a 2b 0a 2b C" >&6.+else.+.+
9a60: 20 20 20 20 63 61 74 20 3e 63 6f 6e 66 74 65 73 cat >conftes
9a70: 74 2e 24 61 63 5f 65 78 74 20 3c 3c 5f 41 43 45 t.$ac_ext <<_ACE
9a80: 4f 46 0a 2b 2f 2a 20 63 6f 6e 66 64 65 66 73 2e OF.+/* confdefs.
9a90: 68 2e 20 20 2a 2f 0a 2b 5f 41 43 45 4f 46 0a 2b h. */.+_ACEOF.+
9aa0: 63 61 74 20 63 6f 6e 66 64 65 66 73 2e 68 20 3e cat confdefs.h >
9ab0: 3e 63 6f 6e 66 74 65 73 74 2e 24 61 63 5f 65 78 >conftest.$ac_ex
9ac0: 74 0a 2b 63 61 74 20 3e 3e 63 6f 6e 66 74 65 73 t.+cat >>conftes
9ad0: 74 2e 24 61 63 5f 65 78 74 20 3c 3c 5f 41 43 45 t.$ac_ext <<_ACE
9ae0: 4f 46 0a 2b 2f 2a 20 65 6e 64 20 63 6f 6e 66 64 OF.+/* end confd
9af0: 65 66 73 2e 68 2e 20 20 2a 2f 0a 2b 23 69 6e 63 efs.h. */.+#inc
9b00: 6c 75 64 65 20 3c 73 74 64 64 65 66 2e 68 3e 0a lude <stddef.h>.
9b10: 2b 69 6e 74 0a 2b 6d 61 69 6e 20 28 29 0a 2b 7b +int.+main ().+{
9b20: 0a 2b 0a 2b 09 69 6e 74 20 61 3b 20 70 74 72 64 .+.+.int a; ptrd
9b30: 69 66 66 5f 74 20 6f 66 66 73 65 74 20 3d 20 28 iff_t offset = (
9b40: 63 68 61 72 2a 29 20 26 26 6c 20 2d 20 28 63 68 char*) &&l - (ch
9b50: 61 72 2a 29 20 26 26 74 3b 0a 2b 09 67 6f 74 6f ar*) &&t;.+.goto
9b60: 20 2a 28 76 6f 69 64 2a 29 28 6f 66 66 73 65 74 *(void*)(offset
9b70: 20 2b 20 28 63 68 61 72 2a 29 20 26 26 74 29 3b + (char*) &&t);
9b80: 20 74 3a 20 61 20 3d 20 30 3b 20 6c 3a 20 61 20 t: a = 0; l: a
9b90: 3d 20 31 3b 0a 2b 0a 2b 20 20 3b 0a 2b 20 20 72 = 1;.+.+ ;.+ r
9ba0: 65 74 75 72 6e 20 30 3b 0a 2b 7d 0a 2b 5f 41 43 eturn 0;.+}.+_AC
9bb0: 45 4f 46 0a 2b 72 6d 20 2d 66 20 63 6f 6e 66 74 EOF.+rm -f conft
9bc0: 65 73 74 2e 24 61 63 5f 6f 62 6a 65 78 74 0a 2b est.$ac_objext.+
9bd0: 69 66 20 7b 20 28 65 76 61 6c 20 65 63 68 6f 20 if { (eval echo
9be0: 22 24 61 73 5f 6d 65 3a 24 4c 49 4e 45 4e 4f 3a "$as_me:$LINENO:
9bf0: 20 5c 22 24 61 63 5f 63 6f 6d 70 69 6c 65 5c 22 \"$ac_compile\"
9c00: 22 29 20 3e 26 35 0a 2b 20 20 28 65 76 61 6c 20 ") >&5.+ (eval
9c10: 24 61 63 5f 63 6f 6d 70 69 6c 65 29 20 32 3e 63 $ac_compile) 2>c
9c20: 6f 6e 66 74 65 73 74 2e 65 72 31 0a 2b 20 20 61 onftest.er1.+ a
9c30: 63 5f 73 74 61 74 75 73 3d 24 3f 0a 2b 20 20 67 c_status=$?.+ g
9c40: 72 65 70 20 2d 76 20 27 5e 20 2a 2b 27 20 63 6f rep -v '^ *+' co
9c50: 6e 66 74 65 73 74 2e 65 72 31 20 3e 63 6f 6e 66 nftest.er1 >conf
9c60: 74 65 73 74 2e 65 72 72 0a 2b 20 20 72 6d 20 2d test.err.+ rm -
9c70: 66 20 63 6f 6e 66 74 65 73 74 2e 65 72 31 0a 2b f conftest.er1.+
9c80: 20 20 63 61 74 20 63 6f 6e 66 74 65 73 74 2e 65 cat conftest.e
9c90: 72 72 20 3e 26 35 0a 2b 20 20 65 63 68 6f 20 22 rr >&5.+ echo "
9ca0: 24 61 73 5f 6d 65 3a 24 4c 49 4e 45 4e 4f 3a 20 $as_me:$LINENO:
9cb0: 5c 24 3f 20 3d 20 24 61 63 5f 73 74 61 74 75 73 \$? = $ac_status
9cc0: 22 20 3e 26 35 0a 2b 20 20 28 65 78 69 74 20 24 " >&5.+ (exit $
9cd0: 61 63 5f 73 74 61 74 75 73 29 3b 20 7d 20 26 26 ac_status); } &&
9ce0: 0a 2b 09 20 7b 20 61 63 5f 74 72 79 3d 27 74 65 .+. { ac_try='te
9cf0: 73 74 20 2d 7a 20 22 24 61 63 5f 63 5f 77 65 72 st -z "$ac_c_wer
9d00: 72 6f 72 5f 66 6c 61 67 22 0a 2b 09 09 09 20 7c ror_flag".+... |
9d10: 7c 20 74 65 73 74 20 21 20 2d 73 20 63 6f 6e 66 | test ! -s conf
9d20: 74 65 73 74 2e 65 72 72 27 0a 2b 20 20 7b 20 28 test.err'.+ { (
9d30: 65 76 61 6c 20 65 63 68 6f 20 22 24 61 73 5f 6d eval echo "$as_m
9d40: 65 3a 24 4c 49 4e 45 4e 4f 3a 20 5c 22 24 61 63 e:$LINENO: \"$ac
9d50: 5f 74 72 79 5c 22 22 29 20 3e 26 35 0a 2b 20 20 _try\"") >&5.+
9d60: 28 65 76 61 6c 20 24 61 63 5f 74 72 79 29 20 32 (eval $ac_try) 2
9d70: 3e 26 35 0a 2b 20 20 61 63 5f 73 74 61 74 75 73 >&5.+ ac_status
9d80: 3d 24 3f 0a 2b 20 20 65 63 68 6f 20 22 24 61 73 =$?.+ echo "$as
9d90: 5f 6d 65 3a 24 4c 49 4e 45 4e 4f 3a 20 5c 24 3f _me:$LINENO: \$?
9da0: 20 3d 20 24 61 63 5f 73 74 61 74 75 73 22 20 3e = $ac_status" >
9db0: 26 35 0a 2b 20 20 28 65 78 69 74 20 24 61 63 5f &5.+ (exit $ac_
9dc0: 73 74 61 74 75 73 29 3b 20 7d 3b 20 7d 20 26 26 status); }; } &&
9dd0: 0a 2b 09 20 7b 20 61 63 5f 74 72 79 3d 27 74 65 .+. { ac_try='te
9de0: 73 74 20 2d 73 20 63 6f 6e 66 74 65 73 74 2e 24 st -s conftest.$
9df0: 61 63 5f 6f 62 6a 65 78 74 27 0a 2b 20 20 7b 20 ac_objext'.+ {
9e00: 28 65 76 61 6c 20 65 63 68 6f 20 22 24 61 73 5f (eval echo "$as_
9e10: 6d 65 3a 24 4c 49 4e 45 4e 4f 3a 20 5c 22 24 61 me:$LINENO: \"$a
9e20: 63 5f 74 72 79 5c 22 22 29 20 3e 26 35 0a 2b 20 c_try\"") >&5.+
9e30: 20 28 65 76 61 6c 20 24 61 63 5f 74 72 79 29 20 (eval $ac_try)
9e40: 32 3e 26 35 0a 2b 20 20 61 63 5f 73 74 61 74 75 2>&5.+ ac_statu
9e50: 73 3d 24 3f 0a 2b 20 20 65 63 68 6f 20 22 24 61 s=$?.+ echo "$a
9e60: 73 5f 6d 65 3a 24 4c 49 4e 45 4e 4f 3a 20 5c 24 s_me:$LINENO: \$
9e70: 3f 20 3d 20 24 61 63 5f 73 74 61 74 75 73 22 20 ? = $ac_status"
9e80: 3e 26 35 0a 2b 20 20 28 65 78 69 74 20 24 61 63 >&5.+ (exit $ac
9e90: 5f 73 74 61 74 75 73 29 3b 20 7d 3b 20 7d 3b 20 _status); }; };
9ea0: 74 68 65 6e 0a 2b 20 20 74 63 6c 5f 63 76 5f 63 then.+ tcl_cv_c
9eb0: 63 5f 63 6f 6d 70 75 74 65 64 5f 67 6f 74 6f 3d c_computed_goto=
9ec0: 79 65 73 0a 2b 65 6c 73 65 0a 2b 20 20 65 63 68 yes.+else.+ ech
9ed0: 6f 20 22 24 61 73 5f 6d 65 3a 20 66 61 69 6c 65 o "$as_me: faile
9ee0: 64 20 70 72 6f 67 72 61 6d 20 77 61 73 3a 22 20 d program was:"
9ef0: 3e 26 35 0a 2b 73 65 64 20 27 73 2f 5e 2f 7c 20 >&5.+sed 's/^/|
9f00: 2f 27 20 63 6f 6e 66 74 65 73 74 2e 24 61 63 5f /' conftest.$ac_
9f10: 65 78 74 20 3e 26 35 0a 2b 0a 2b 74 63 6c 5f 63 ext >&5.+.+tcl_c
9f20: 76 5f 63 63 5f 63 6f 6d 70 75 74 65 64 5f 67 6f v_cc_computed_go
9f30: 74 6f 3d 6e 6f 0a 2b 66 69 0a 2b 72 6d 20 2d 66 to=no.+fi.+rm -f
9f40: 20 63 6f 6e 66 74 65 73 74 2e 65 72 72 20 63 6f conftest.err co
9f50: 6e 66 74 65 73 74 2e 24 61 63 5f 6f 62 6a 65 78 nftest.$ac_objex
9f60: 74 20 63 6f 6e 66 74 65 73 74 2e 24 61 63 5f 65 t conftest.$ac_e
9f70: 78 74 0a 2b 66 69 0a 2b 65 63 68 6f 20 22 24 61 xt.+fi.+echo "$a
9f80: 73 5f 6d 65 3a 24 4c 49 4e 45 4e 4f 3a 20 72 65 s_me:$LINENO: re
9f90: 73 75 6c 74 3a 20 24 74 63 6c 5f 63 76 5f 63 63 sult: $tcl_cv_cc
9fa0: 5f 63 6f 6d 70 75 74 65 64 5f 67 6f 74 6f 22 20 _computed_goto"
9fb0: 3e 26 35 0a 2b 65 63 68 6f 20 22 24 7b 45 43 48 >&5.+echo "${ECH
9fc0: 4f 5f 54 7d 24 74 63 6c 5f 63 76 5f 63 63 5f 63 O_T}$tcl_cv_cc_c
9fd0: 6f 6d 70 75 74 65 64 5f 67 6f 74 6f 22 20 3e 26 omputed_goto" >&
9fe0: 36 0a 2b 69 66 20 74 65 73 74 20 24 74 63 6c 5f 6.+if test $tcl_
9ff0: 63 76 5f 63 63 5f 63 6f 6d 70 75 74 65 64 5f 67 cv_cc_computed_g
a000: 6f 74 6f 20 3d 20 79 65 73 3b 20 74 68 65 6e 0a oto = yes; then.
a010: 2b 0a 2b 63 61 74 20 3e 3e 63 6f 6e 66 64 65 66 +.+cat >>confdef
a020: 73 2e 68 20 3c 3c 5c 5f 41 43 45 4f 46 0a 2b 23 s.h <<\_ACEOF.+#
a030: 64 65 66 69 6e 65 20 48 41 56 45 5f 43 4f 4d 50 define HAVE_COMP
a040: 55 54 45 44 5f 47 4f 54 4f 20 31 0a 2b 5f 41 43 UTED_GOTO 1.+_AC
a050: 45 4f 46 0a 2b 0a 2b 66 69 0a 2b 0a 2b 65 63 68 EOF.+.+fi.+.+ech
a060: 6f 20 22 24 61 73 5f 6d 65 3a 24 4c 49 4e 45 4e o "$as_me:$LINEN
a070: 4f 3a 20 63 68 65 63 6b 69 6e 67 20 66 6f 72 20 O: checking for
a080: 5f 5f 62 75 69 6c 74 69 6e 5f 65 78 70 65 63 74 __builtin_expect
a090: 22 20 3e 26 35 0a 2b 65 63 68 6f 20 24 45 43 48 " >&5.+echo $ECH
a0a0: 4f 5f 4e 20 22 63 68 65 63 6b 69 6e 67 20 66 6f O_N "checking fo
a0b0: 72 20 5f 5f 62 75 69 6c 74 69 6e 5f 65 78 70 65 r __builtin_expe
a0c0: 63 74 2e 2e 2e 20 24 45 43 48 4f 5f 43 22 20 3e ct... $ECHO_C" >
a0d0: 26 36 0a 2b 69 66 20 74 65 73 74 20 22 24 7b 74 &6.+if test "${t
a0e0: 63 6c 5f 63 76 5f 63 63 5f 62 75 69 6c 74 69 6e cl_cv_cc_builtin
a0f0: 5f 65 78 70 65 63 74 2b 73 65 74 7d 22 20 3d 20 _expect+set}" =
a100: 73 65 74 3b 20 74 68 65 6e 0a 2b 20 20 65 63 68 set; then.+ ech
a110: 6f 20 24 45 43 48 4f 5f 4e 20 22 28 63 61 63 68 o $ECHO_N "(cach
a120: 65 64 29 20 24 45 43 48 4f 5f 43 22 20 3e 26 36 ed) $ECHO_C" >&6
a130: 0a 2b 65 6c 73 65 0a 2b 0a 2b 20 20 20 20 63 61 .+else.+.+ ca
a140: 74 20 3e 63 6f 6e 66 74 65 73 74 2e 24 61 63 5f t >conftest.$ac_
a150: 65 78 74 20 3c 3c 5f 41 43 45 4f 46 0a 2b 2f 2a ext <<_ACEOF.+/*
a160: 20 63 6f 6e 66 64 65 66 73 2e 68 2e 20 20 2a 2f confdefs.h. */
a170: 0a 2b 5f 41 43 45 4f 46 0a 2b 63 61 74 20 63 6f .+_ACEOF.+cat co
a180: 6e 66 64 65 66 73 2e 68 20 3e 3e 63 6f 6e 66 74 nfdefs.h >>conft
a190: 65 73 74 2e 24 61 63 5f 65 78 74 0a 2b 63 61 74 est.$ac_ext.+cat
a1a0: 20 3e 3e 63 6f 6e 66 74 65 73 74 2e 24 61 63 5f >>conftest.$ac_
a1b0: 65 78 74 20 3c 3c 5f 41 43 45 4f 46 0a 2b 2f 2a ext <<_ACEOF.+/*
a1c0: 20 65 6e 64 20 63 6f 6e 66 64 65 66 73 2e 68 2e end confdefs.h.
a1d0: 20 20 2a 2f 0a 2b 0a 2b 69 6e 74 0a 2b 6d 61 69 */.+.+int.+mai
a1e0: 6e 20 28 29 0a 2b 7b 0a 2b 0a 2b 09 69 6e 74 20 n ().+{.+.+.int
a1f0: 61 20 3d 20 31 3b 20 69 66 20 28 5f 5f 62 75 69 a = 1; if (__bui
a200: 6c 74 69 6e 5f 65 78 70 65 63 74 28 61 2c 20 31 ltin_expect(a, 1
a210: 29 29 20 7b 61 20 3d 20 30 3b 7d 0a 2b 0a 2b 20 )) {a = 0;}.+.+
a220: 20 3b 0a 2b 20 20 72 65 74 75 72 6e 20 30 3b 0a ;.+ return 0;.
a230: 2b 7d 0a 2b 5f 41 43 45 4f 46 0a 2b 72 6d 20 2d +}.+_ACEOF.+rm -
a240: 66 20 63 6f 6e 66 74 65 73 74 2e 24 61 63 5f 6f f conftest.$ac_o
a250: 62 6a 65 78 74 0a 2b 69 66 20 7b 20 28 65 76 61 bjext.+if { (eva
a260: 6c 20 65 63 68 6f 20 22 24 61 73 5f 6d 65 3a 24 l echo "$as_me:$
a270: 4c 49 4e 45 4e 4f 3a 20 5c 22 24 61 63 5f 63 6f LINENO: \"$ac_co
a280: 6d 70 69 6c 65 5c 22 22 29 20 3e 26 35 0a 2b 20 mpile\"") >&5.+
a290: 20 28 65 76 61 6c 20 24 61 63 5f 63 6f 6d 70 69 (eval $ac_compi
a2a0: 6c 65 29 20 32 3e 63 6f 6e 66 74 65 73 74 2e 65 le) 2>conftest.e
a2b0: 72 31 0a 2b 20 20 61 63 5f 73 74 61 74 75 73 3d r1.+ ac_status=
a2c0: 24 3f 0a 2b 20 20 67 72 65 70 20 2d 76 20 27 5e $?.+ grep -v '^
a2d0: 20 2a 2b 27 20 63 6f 6e 66 74 65 73 74 2e 65 72 *+' conftest.er
a2e0: 31 20 3e 63 6f 6e 66 74 65 73 74 2e 65 72 72 0a 1 >conftest.err.
a2f0: 2b 20 20 72 6d 20 2d 66 20 63 6f 6e 66 74 65 73 + rm -f conftes
a300: 74 2e 65 72 31 0a 2b 20 20 63 61 74 20 63 6f 6e t.er1.+ cat con
a310: 66 74 65 73 74 2e 65 72 72 20 3e 26 35 0a 2b 20 ftest.err >&5.+
a320: 20 65 63 68 6f 20 22 24 61 73 5f 6d 65 3a 24 4c echo "$as_me:$L
a330: 49 4e 45 4e 4f 3a 20 5c 24 3f 20 3d 20 24 61 63 INENO: \$? = $ac
a340: 5f 73 74 61 74 75 73 22 20 3e 26 35 0a 2b 20 20 _status" >&5.+
a350: 28 65 78 69 74 20 24 61 63 5f 73 74 61 74 75 73 (exit $ac_status
a360: 29 3b 20 7d 20 26 26 0a 2b 09 20 7b 20 61 63 5f ); } &&.+. { ac_
a370: 74 72 79 3d 27 74 65 73 74 20 2d 7a 20 22 24 61 try='test -z "$a
a380: 63 5f 63 5f 77 65 72 72 6f 72 5f 66 6c 61 67 22 c_c_werror_flag"
a390: 0a 2b 09 09 09 20 7c 7c 20 74 65 73 74 20 21 20 .+... || test !
a3a0: 2d 73 20 63 6f 6e 66 74 65 73 74 2e 65 72 72 27 -s conftest.err'
a3b0: 0a 2b 20 20 7b 20 28 65 76 61 6c 20 65 63 68 6f .+ { (eval echo
a3c0: 20 22 24 61 73 5f 6d 65 3a 24 4c 49 4e 45 4e 4f "$as_me:$LINENO
a3d0: 3a 20 5c 22 24 61 63 5f 74 72 79 5c 22 22 29 20 : \"$ac_try\"")
a3e0: 3e 26 35 0a 2b 20 20 28 65 76 61 6c 20 24 61 63 >&5.+ (eval $ac
a3f0: 5f 74 72 79 29 20 32 3e 26 35 0a 2b 20 20 61 63 _try) 2>&5.+ ac
a400: 5f 73 74 61 74 75 73 3d 24 3f 0a 2b 20 20 65 63 _status=$?.+ ec
a410: 68 6f 20 22 24 61 73 5f 6d 65 3a 24 4c 49 4e 45 ho "$as_me:$LINE
a420: 4e 4f 3a 20 5c 24 3f 20 3d 20 24 61 63 5f 73 74 NO: \$? = $ac_st
a430: 61 74 75 73 22 20 3e 26 35 0a 2b 20 20 28 65 78 atus" >&5.+ (ex
a440: 69 74 20 24 61 63 5f 73 74 61 74 75 73 29 3b 20 it $ac_status);
a450: 7d 3b 20 7d 20 26 26 0a 2b 09 20 7b 20 61 63 5f }; } &&.+. { ac_
a460: 74 72 79 3d 27 74 65 73 74 20 2d 73 20 63 6f 6e try='test -s con
a470: 66 74 65 73 74 2e 24 61 63 5f 6f 62 6a 65 78 74 ftest.$ac_objext
a480: 27 0a 2b 20 20 7b 20 28 65 76 61 6c 20 65 63 68 '.+ { (eval ech
a490: 6f 20 22 24 61 73 5f 6d 65 3a 24 4c 49 4e 45 4e o "$as_me:$LINEN
a4a0: 4f 3a 20 5c 22 24 61 63 5f 74 72 79 5c 22 22 29 O: \"$ac_try\"")
a4b0: 20 3e 26 35 0a 2b 20 20 28 65 76 61 6c 20 24 61 >&5.+ (eval $a
a4c0: 63 5f 74 72 79 29 20 32 3e 26 35 0a 2b 20 20 61 c_try) 2>&5.+ a
a4d0: 63 5f 73 74 61 74 75 73 3d 24 3f 0a 2b 20 20 65 c_status=$?.+ e
a4e0: 63 68 6f 20 22 24 61 73 5f 6d 65 3a 24 4c 49 4e cho "$as_me:$LIN
a4f0: 45 4e 4f 3a 20 5c 24 3f 20 3d 20 24 61 63 5f 73 ENO: \$? = $ac_s
a500: 74 61 74 75 73 22 20 3e 26 35 0a 2b 20 20 28 65 tatus" >&5.+ (e
a510: 78 69 74 20 24 61 63 5f 73 74 61 74 75 73 29 3b xit $ac_status);
a520: 20 7d 3b 20 7d 3b 20 74 68 65 6e 0a 2b 20 20 74 }; }; then.+ t
a530: 63 6c 5f 63 76 5f 63 63 5f 62 75 69 6c 74 69 6e cl_cv_cc_builtin
a540: 5f 65 78 70 65 63 74 3d 79 65 73 0a 2b 65 6c 73 _expect=yes.+els
a550: 65 0a 2b 20 20 65 63 68 6f 20 22 24 61 73 5f 6d e.+ echo "$as_m
a560: 65 3a 20 66 61 69 6c 65 64 20 70 72 6f 67 72 61 e: failed progra
a570: 6d 20 77 61 73 3a 22 20 3e 26 35 0a 2b 73 65 64 m was:" >&5.+sed
a580: 20 27 73 2f 5e 2f 7c 20 2f 27 20 63 6f 6e 66 74 's/^/| /' conft
a590: 65 73 74 2e 24 61 63 5f 65 78 74 20 3e 26 35 0a est.$ac_ext >&5.
a5a0: 2b 0a 2b 74 63 6c 5f 63 76 5f 63 63 5f 62 75 69 +.+tcl_cv_cc_bui
a5b0: 6c 74 69 6e 5f 65 78 70 65 63 74 3d 6e 6f 0a 2b ltin_expect=no.+
a5c0: 66 69 0a 2b 72 6d 20 2d 66 20 63 6f 6e 66 74 65 fi.+rm -f confte
a5d0: 73 74 2e 65 72 72 20 63 6f 6e 66 74 65 73 74 2e st.err conftest.
a5e0: 24 61 63 5f 6f 62 6a 65 78 74 20 63 6f 6e 66 74 $ac_objext conft
a5f0: 65 73 74 2e 24 61 63 5f 65 78 74 0a 2b 66 69 0a est.$ac_ext.+fi.
a600: 2b 65 63 68 6f 20 22 24 61 73 5f 6d 65 3a 24 4c +echo "$as_me:$L
a610: 49 4e 45 4e 4f 3a 20 72 65 73 75 6c 74 3a 20 24 INENO: result: $
a620: 74 63 6c 5f 63 76 5f 63 63 5f 62 75 69 6c 74 69 tcl_cv_cc_builti
a630: 6e 5f 65 78 70 65 63 74 22 20 3e 26 35 0a 2b 65 n_expect" >&5.+e
a640: 63 68 6f 20 22 24 7b 45 43 48 4f 5f 54 7d 24 74 cho "${ECHO_T}$t
a650: 63 6c 5f 63 76 5f 63 63 5f 62 75 69 6c 74 69 6e cl_cv_cc_builtin
a660: 5f 65 78 70 65 63 74 22 20 3e 26 36 0a 2b 69 66 _expect" >&6.+if
a670: 20 74 65 73 74 20 24 74 63 6c 5f 63 76 5f 63 63 test $tcl_cv_cc
a680: 5f 62 75 69 6c 74 69 6e 5f 65 78 70 65 63 74 20 _builtin_expect
a690: 3d 20 79 65 73 3b 20 74 68 65 6e 0a 2b 0a 2b 63 = yes; then.+.+c
a6a0: 61 74 20 3e 3e 63 6f 6e 66 64 65 66 73 2e 68 20 at >>confdefs.h
a6b0: 3c 3c 5c 5f 41 43 45 4f 46 0a 2b 23 64 65 66 69 <<\_ACEOF.+#defi
a6c0: 6e 65 20 48 41 56 45 5f 42 55 49 4c 54 49 4e 5f ne HAVE_BUILTIN_
a6d0: 45 58 50 45 43 54 20 31 0a 2b 5f 41 43 45 4f 46 EXPECT 1.+_ACEOF
a6e0: 0a 2b 0a 2b 66 69 0a 2b 0a 20 23 2d 2d 2d 2d 2d .+.+fi.+. #-----
a6f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
a700: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
a710: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
a720: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a ---------------.
a730: 20 23 09 44 54 72 61 63 65 20 73 75 70 70 6f 72 #.DTrace suppor
a740: 74 0a 20 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d t. #------------
a750: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
a760: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
a770: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
a780: 2d 2d 2d 2d 2d 2d 2d 2d 0a 49 6e 64 65 78 3a 20 --------.Index:
a790: 75 6e 69 78 2f 63 6f 6e 66 69 67 75 72 65 2e 69 unix/configure.i
a7a0: 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d n.==============
a7b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
a7c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
a7d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
a7e0: 3d 3d 3d 3d 3d 0a 52 43 53 20 66 69 6c 65 3a 20 =====.RCS file:
a7f0: 2f 63 76 73 72 6f 6f 74 2f 74 63 6c 2f 74 63 6c /cvsroot/tcl/tcl
a800: 2f 75 6e 69 78 2f 63 6f 6e 66 69 67 75 72 65 2e /unix/configure.
a810: 69 6e 2c 76 0a 72 65 74 72 69 65 76 69 6e 67 20 in,v.retrieving
a820: 72 65 76 69 73 69 6f 6e 20 31 2e 31 36 37 0a 64 revision 1.167.d
a830: 69 66 66 20 2d 75 20 2d 70 20 2d 72 31 2e 31 36 iff -u -p -r1.16
a840: 37 20 63 6f 6e 66 69 67 75 72 65 2e 69 6e 0a 2d 7 configure.in.-
a850: 2d 2d 20 75 6e 69 78 2f 63 6f 6e 66 69 67 75 72 -- unix/configur
a860: 65 2e 69 6e 09 33 30 20 4f 63 74 20 32 30 30 37 e.in.30 Oct 2007
a870: 20 31 39 3a 30 33 3a 35 37 20 2d 30 30 30 30 09 19:03:57 -0000.
a880: 31 2e 31 36 37 0a 2b 2b 2b 20 75 6e 69 78 2f 63 1.167.+++ unix/c
a890: 6f 6e 66 69 67 75 72 65 2e 69 6e 09 39 20 4e 6f onfigure.in.9 No
a8a0: 76 20 32 30 30 37 20 31 39 3a 30 32 3a 31 37 20 v 2007 19:02:17
a8b0: 2d 30 30 30 30 0a 40 40 20 2d 36 33 31 2c 36 20 -0000.@@ -631,6
a8c0: 2b 36 33 31 2c 32 37 20 40 40 20 74 68 65 6e 0a +631,27 @@ then.
a8d0: 20 20 20 20 20 49 4e 53 54 41 4c 4c 5f 54 5a 44 INSTALL_TZD
a8e0: 41 54 41 3d 69 6e 73 74 61 6c 6c 2d 74 7a 64 61 ATA=install-tzda
a8f0: 74 61 0a 20 66 69 0a 20 0a 2b 23 2d 2d 2d 2d 2d ta. fi. .+#-----
a900: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
a910: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
a920: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
a930: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
a940: 2d 2d 2d 0a 2b 23 09 43 68 65 63 6b 20 66 6f 72 ---.+#.Check for
a950: 20 63 6f 6d 70 75 74 65 64 20 67 6f 74 6f 20 61 computed goto a
a960: 6e 64 20 5f 5f 62 75 69 6c 74 69 6e 5f 65 78 70 nd __builtin_exp
a970: 65 63 74 20 73 75 70 70 6f 72 74 2e 0a 2b 23 2d ect support..+#-
a980: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
a990: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
a9a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
a9b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
a9c0: 2d 2d 2d 2d 2d 2d 2d 0a 2b 0a 2b 41 43 5f 43 41 -------.+.+AC_CA
a9d0: 43 48 45 5f 43 48 45 43 4b 28 5b 66 6f 72 20 63 CHE_CHECK([for c
a9e0: 6f 6d 70 75 74 65 64 20 67 6f 74 6f 5d 2c 20 74 omputed goto], t
a9f0: 63 6c 5f 63 76 5f 63 63 5f 63 6f 6d 70 75 74 65 cl_cv_cc_compute
aa00: 64 5f 67 6f 74 6f 2c 20 5b 0a 2b 20 20 20 20 41 d_goto, [.+ A
aa10: 43 5f 54 52 59 5f 43 4f 4d 50 49 4c 45 28 5b 23 C_TRY_COMPILE([#
aa20: 69 6e 63 6c 75 64 65 20 3c 73 74 64 64 65 66 2e include <stddef.
aa30: 68 3e 5d 2c 20 5b 0a 2b 09 69 6e 74 20 61 3b 20 h>], [.+.int a;
aa40: 70 74 72 64 69 66 66 5f 74 20 6f 66 66 73 65 74 ptrdiff_t offset
aa50: 20 3d 20 28 63 68 61 72 2a 29 20 26 26 6c 20 2d = (char*) &&l -
aa60: 20 28 63 68 61 72 2a 29 20 26 26 74 3b 0a 2b 09 (char*) &&t;.+.
aa70: 67 6f 74 6f 20 2a 28 76 6f 69 64 2a 29 28 6f 66 goto *(void*)(of
aa80: 66 73 65 74 20 2b 20 28 63 68 61 72 2a 29 20 26 fset + (char*) &
aa90: 26 74 29 3b 20 74 3a 20 61 20 3d 20 30 3b 20 6c &t); t: a = 0; l
aaa0: 3a 20 61 20 3d 20 31 3b 0a 2b 09 5d 2c 20 74 63 : a = 1;.+.], tc
aab0: 6c 5f 63 76 5f 63 63 5f 63 6f 6d 70 75 74 65 64 l_cv_cc_computed
aac0: 5f 67 6f 74 6f 3d 79 65 73 2c 20 74 63 6c 5f 63 _goto=yes, tcl_c
aad0: 76 5f 63 63 5f 63 6f 6d 70 75 74 65 64 5f 67 6f v_cc_computed_go
aae0: 74 6f 3d 6e 6f 29 5d 29 0a 2b 69 66 20 74 65 73 to=no)]).+if tes
aaf0: 74 20 24 74 63 6c 5f 63 76 5f 63 63 5f 63 6f 6d t $tcl_cv_cc_com
ab00: 70 75 74 65 64 5f 67 6f 74 6f 20 3d 20 79 65 73 puted_goto = yes
ab10: 3b 20 74 68 65 6e 0a 2b 20 20 20 20 41 43 5f 44 ; then.+ AC_D
ab20: 45 46 49 4e 45 28 48 41 56 45 5f 43 4f 4d 50 55 EFINE(HAVE_COMPU
ab30: 54 45 44 5f 47 4f 54 4f 2c 20 31 2c 20 5b 49 73 TED_GOTO, 1, [Is
ab40: 20 63 6f 6d 70 75 74 65 64 20 67 6f 74 6f 20 61 computed goto a
ab50: 76 61 69 6c 61 62 6c 65 3f 5d 29 0a 2b 66 69 0a vailable?]).+fi.
ab60: 2b 0a 2b 41 43 5f 43 41 43 48 45 5f 43 48 45 43 +.+AC_CACHE_CHEC
ab70: 4b 28 5b 66 6f 72 20 5f 5f 62 75 69 6c 74 69 6e K([for __builtin
ab80: 5f 65 78 70 65 63 74 5d 2c 20 74 63 6c 5f 63 76 _expect], tcl_cv
ab90: 5f 63 63 5f 62 75 69 6c 74 69 6e 5f 65 78 70 65 _cc_builtin_expe
aba0: 63 74 2c 20 5b 0a 2b 20 20 20 20 41 43 5f 54 52 ct, [.+ AC_TR
abb0: 59 5f 43 4f 4d 50 49 4c 45 28 2c 20 5b 0a 2b 09 Y_COMPILE(, [.+.
abc0: 69 6e 74 20 61 20 3d 20 31 3b 20 69 66 20 28 5f int a = 1; if (_
abd0: 5f 62 75 69 6c 74 69 6e 5f 65 78 70 65 63 74 28 _builtin_expect(
abe0: 61 2c 20 31 29 29 20 7b 61 20 3d 20 30 3b 7d 0a a, 1)) {a = 0;}.
abf0: 2b 09 5d 2c 20 74 63 6c 5f 63 76 5f 63 63 5f 62 +.], tcl_cv_cc_b
ac00: 75 69 6c 74 69 6e 5f 65 78 70 65 63 74 3d 79 65 uiltin_expect=ye
ac10: 73 2c 20 74 63 6c 5f 63 76 5f 63 63 5f 62 75 69 s, tcl_cv_cc_bui
ac20: 6c 74 69 6e 5f 65 78 70 65 63 74 3d 6e 6f 29 5d ltin_expect=no)]
ac30: 29 0a 2b 69 66 20 74 65 73 74 20 24 74 63 6c 5f ).+if test $tcl_
ac40: 63 76 5f 63 63 5f 62 75 69 6c 74 69 6e 5f 65 78 cv_cc_builtin_ex
ac50: 70 65 63 74 20 3d 20 79 65 73 3b 20 74 68 65 6e pect = yes; then
ac60: 0a 2b 20 20 20 20 41 43 5f 44 45 46 49 4e 45 28 .+ AC_DEFINE(
ac70: 48 41 56 45 5f 42 55 49 4c 54 49 4e 5f 45 58 50 HAVE_BUILTIN_EXP
ac80: 45 43 54 2c 20 31 2c 20 5b 49 73 20 5f 5f 62 75 ECT, 1, [Is __bu
ac90: 69 6c 74 69 6e 5f 65 78 70 65 63 74 20 61 76 61 iltin_expect ava
aca0: 69 6c 61 62 6c 65 3f 5d 29 0a 2b 66 69 0a 2b 0a ilable?]).+fi.+.
acb0: 20 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d #--------------
acc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
acd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
ace0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
acf0: 2d 2d 2d 2d 2d 2d 0a 20 23 09 44 54 72 61 63 65 ------. #.DTrace
ad00: 20 73 75 70 70 6f 72 74 0a 20 23 2d 2d 2d 2d 2d support. #-----
ad10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
ad20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
ad30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
ad40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a ---------------.