Tcl Source Code

Hex Artifact Content
Login

Artifact 281be40299518a8484135acc2979e37abb7dda2b:

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  ---------------.