Attachment "tclExecute-compgoto.diff" to
ticket [1820448fff]
added by
das
2007-10-26 11:23:11.
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 33 39 0a 64 69 66 66 ision 1.339.diff
00b0: 20 2d 75 20 2d 70 20 2d 72 31 2e 33 33 39 20 74 -u -p -r1.339 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 32 30 20 4f 63 74 20 32 30 30 37 te.c.20 Oct 2007
00f0: 20 30 32 3a 31 35 3a 30 35 20 2d 30 30 30 30 09 02:15:05 -0000.
0100: 31 2e 33 33 39 0a 2b 2b 2b 20 67 65 6e 65 72 69 1.339.+++ generi
0110: 63 2f 74 63 6c 45 78 65 63 75 74 65 2e 63 09 32 c/tclExecute.c.2
0120: 36 20 4f 63 74 20 32 30 30 37 20 30 33 3a 35 39 6 Oct 2007 03:59
0130: 3a 33 35 20 2d 30 30 30 30 0a 40 40 20 2d 31 38 :35 -0000.@@ -18
0140: 37 2c 36 20 2b 31 38 37 2c 32 37 20 40 40 20 56 7,6 +187,27 @@ V
0150: 61 72 48 61 73 68 43 72 65 61 74 65 56 61 72 28 arHashCreateVar(
0160: 0a 20 20 20 20 20 56 61 72 48 61 73 68 43 72 65 . VarHashCre
0170: 61 74 65 56 61 72 28 28 74 61 62 6c 65 50 74 72 ateVar((tablePtr
0180: 29 2c 20 28 6b 65 79 29 2c 20 4e 55 4c 4c 29 0a ), (key), NULL).
0190: 20 0a 20 2f 2a 0a 2b 20 2a 20 55 73 65 20 63 6f . /*.+ * Use co
01a0: 6d 70 75 74 65 64 20 67 6f 74 6f 20 69 6e 73 74 mputed goto inst
01b0: 65 61 64 20 6f 66 20 62 69 67 20 73 77 69 74 63 ead of big switc
01c0: 68 20 69 6e 20 54 45 42 43 20 77 68 65 6e 20 61 h in TEBC when a
01d0: 76 61 69 6c 61 62 6c 65 2e 0a 2b 20 2a 2f 0a 2b vailable..+ */.+
01e0: 0a 2b 23 64 65 66 69 6e 65 20 55 53 45 5f 43 4f .+#define USE_CO
01f0: 4d 50 55 54 45 44 5f 47 4f 54 4f 20 31 0a 2b 0a MPUTED_GOTO 1.+.
0200: 2b 23 69 66 6e 64 65 66 20 55 53 45 5f 43 4f 4d +#ifndef USE_COM
0210: 50 55 54 45 44 5f 47 4f 54 4f 0a 2b 23 20 20 20 PUTED_GOTO.+#
0220: 69 66 64 65 66 20 48 41 56 45 5f 43 4f 4d 50 55 ifdef HAVE_COMPU
0230: 54 45 44 5f 47 4f 54 4f 0a 2b 23 09 64 65 66 69 TED_GOTO.+#.defi
0240: 6e 65 20 55 53 45 5f 43 4f 4d 50 55 54 45 44 5f ne USE_COMPUTED_
0250: 47 4f 54 4f 20 31 0a 2b 23 20 20 20 65 6c 73 65 GOTO 1.+# else
0260: 0a 2b 23 09 64 65 66 69 6e 65 20 55 53 45 5f 43 .+#.define USE_C
0270: 4f 4d 50 55 54 45 44 5f 47 4f 54 4f 20 30 0a 2b OMPUTED_GOTO 0.+
0280: 23 20 20 20 65 6e 64 69 66 0a 2b 23 65 6e 64 69 # endif.+#endi
0290: 66 0a 2b 0a 2b 23 69 66 20 55 53 45 5f 43 4f 4d f.+.+#if USE_COM
02a0: 50 55 54 45 44 5f 47 4f 54 4f 0a 2b 23 20 20 20 PUTED_GOTO.+#
02b0: 64 65 66 69 6e 65 20 43 41 53 45 28 69 29 20 6c define CASE(i) l
02c0: 5f 23 23 69 0a 2b 23 20 20 20 64 65 66 69 6e 65 _##i.+# define
02d0: 20 43 41 44 52 28 69 29 20 28 28 63 68 61 72 2a CADR(i) ((char*
02e0: 29 20 26 26 6c 5f 23 23 69 20 2d 20 28 63 68 61 ) &&l_##i - (cha
02f0: 72 2a 29 20 26 26 74 6f 70 29 0a 2b 23 65 6c 73 r*) &&top).+#els
0300: 65 0a 2b 23 20 20 20 64 65 66 69 6e 65 20 43 41 e.+# define CA
0310: 53 45 28 69 29 20 63 61 73 65 20 69 0a 2b 23 65 SE(i) case i.+#e
0320: 6e 64 69 66 0a 2b 0a 2b 2f 2a 0a 20 20 2a 20 54 ndif.+.+/*. * T
0330: 68 65 20 6e 65 77 20 6d 61 63 72 6f 20 66 6f 72 he new macro for
0340: 20 65 6e 64 69 6e 67 20 61 6e 20 69 6e 73 74 72 ending an instr
0350: 75 63 74 69 6f 6e 3b 20 6e 6f 74 65 20 74 68 61 uction; note tha
0360: 74 20 61 20 72 65 61 73 6f 6e 61 62 6c 65 20 43 t a reasonable C
0370: 2d 6f 70 74 69 6d 69 73 65 72 0a 20 20 2a 20 77 -optimiser. * w
0380: 69 6c 6c 20 72 65 73 6f 6c 76 65 20 61 6c 6c 20 ill resolve all
0390: 62 72 61 6e 63 68 65 73 20 61 74 20 63 6f 6d 70 branches at comp
03a0: 69 6c 65 20 74 69 6d 65 2e 20 28 72 65 73 75 6c ile time. (resul
03b0: 74 29 20 69 73 20 61 6c 77 61 79 73 20 61 20 63 t) is always a c
03c0: 6f 6e 73 74 61 6e 74 3b 0a 20 20 2a 20 74 68 65 onstant;. * the
03d0: 20 6d 61 63 72 6f 20 4e 45 58 54 5f 49 4e 53 54 macro NEXT_INST
03e0: 5f 46 20 68 61 6e 64 6c 65 73 20 63 6f 6e 73 74 _F handles const
03f0: 61 6e 74 20 28 6e 43 6c 65 61 6e 75 70 29 2c 20 ant (nCleanup),
0400: 4e 45 58 54 5f 49 4e 53 54 5f 56 20 69 73 20 72 NEXT_INST_V is r
0410: 65 73 6f 6c 76 65 64 0a 40 40 20 2d 31 35 38 34 esolved.@@ -1584
0420: 2c 36 20 2b 31 36 30 35 2c 37 35 20 40 40 20 54 ,6 +1605,75 @@ T
0430: 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 clExecuteByteCod
0440: 65 28 0a 20 23 65 6e 64 69 66 0a 20 20 20 20 20 e(. #endif.
0450: 63 68 61 72 20 2a 63 75 72 49 6e 73 74 4e 61 6d char *curInstNam
0460: 65 20 3d 20 4e 55 4c 4c 3b 0a 20 0a 2b 23 69 66 e = NULL;. .+#if
0470: 20 55 53 45 5f 43 4f 4d 50 55 54 45 44 5f 47 4f USE_COMPUTED_GO
0480: 54 4f 0a 2b 20 20 20 20 73 74 61 74 69 63 20 63 TO.+ static c
0490: 6f 6e 73 74 20 70 74 72 64 69 66 66 5f 74 20 69 onst ptrdiff_t i
04a0: 6e 73 74 4a 75 6d 70 74 61 62 6c 65 5b 5d 20 3d nstJumptable[] =
04b0: 20 7b 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 44 {.+.CADR(INST_D
04c0: 4f 4e 45 29 2c 09 09 43 41 44 52 28 49 4e 53 54 ONE),..CADR(INST
04d0: 5f 50 55 53 48 31 29 2c 0a 2b 09 43 41 44 52 28 _PUSH1),.+.CADR(
04e0: 49 4e 53 54 5f 50 55 53 48 34 29 2c 09 09 43 41 INST_PUSH4),..CA
04f0: 44 52 28 49 4e 53 54 5f 50 4f 50 29 2c 0a 2b 09 DR(INST_POP),.+.
0500: 43 41 44 52 28 49 4e 53 54 5f 44 55 50 29 2c 09 CADR(INST_DUP),.
0510: 09 09 43 41 44 52 28 49 4e 53 54 5f 43 4f 4e 43 ..CADR(INST_CONC
0520: 41 54 31 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 AT1),.+.CADR(INS
0530: 54 5f 49 4e 56 4f 4b 45 5f 53 54 4b 31 29 2c 09 T_INVOKE_STK1),.
0540: 09 43 41 44 52 28 49 4e 53 54 5f 49 4e 56 4f 4b .CADR(INST_INVOK
0550: 45 5f 53 54 4b 34 29 2c 0a 2b 09 43 41 44 52 28 E_STK4),.+.CADR(
0560: 49 4e 53 54 5f 45 56 41 4c 5f 53 54 4b 29 2c 09 INST_EVAL_STK),.
0570: 09 43 41 44 52 28 49 4e 53 54 5f 45 58 50 52 5f .CADR(INST_EXPR_
0580: 53 54 4b 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 STK),.+.CADR(INS
0590: 54 5f 4c 4f 41 44 5f 53 43 41 4c 41 52 31 29 2c T_LOAD_SCALAR1),
05a0: 09 43 41 44 52 28 49 4e 53 54 5f 4c 4f 41 44 5f .CADR(INST_LOAD_
05b0: 53 43 41 4c 41 52 34 29 2c 0a 2b 09 43 41 44 52 SCALAR4),.+.CADR
05c0: 28 49 4e 53 54 5f 4c 4f 41 44 5f 53 43 41 4c 41 (INST_LOAD_SCALA
05d0: 52 5f 53 54 4b 29 2c 09 43 41 44 52 28 49 4e 53 R_STK),.CADR(INS
05e0: 54 5f 4c 4f 41 44 5f 41 52 52 41 59 31 29 2c 0a T_LOAD_ARRAY1),.
05f0: 2b 09 43 41 44 52 28 49 4e 53 54 5f 4c 4f 41 44 +.CADR(INST_LOAD
0600: 5f 41 52 52 41 59 34 29 2c 09 09 43 41 44 52 28 _ARRAY4),..CADR(
0610: 49 4e 53 54 5f 4c 4f 41 44 5f 41 52 52 41 59 5f INST_LOAD_ARRAY_
0620: 53 54 4b 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 STK),.+.CADR(INS
0630: 54 5f 4c 4f 41 44 5f 53 54 4b 29 2c 09 09 43 41 T_LOAD_STK),..CA
0640: 44 52 28 49 4e 53 54 5f 53 54 4f 52 45 5f 53 43 DR(INST_STORE_SC
0650: 41 4c 41 52 31 29 2c 0a 2b 09 43 41 44 52 28 49 ALAR1),.+.CADR(I
0660: 4e 53 54 5f 53 54 4f 52 45 5f 53 43 41 4c 41 52 NST_STORE_SCALAR
0670: 34 29 2c 09 43 41 44 52 28 49 4e 53 54 5f 53 54 4),.CADR(INST_ST
0680: 4f 52 45 5f 53 43 41 4c 41 52 5f 53 54 4b 29 2c ORE_SCALAR_STK),
0690: 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 53 54 4f .+.CADR(INST_STO
06a0: 52 45 5f 41 52 52 41 59 31 29 2c 09 43 41 44 52 RE_ARRAY1),.CADR
06b0: 28 49 4e 53 54 5f 53 54 4f 52 45 5f 41 52 52 41 (INST_STORE_ARRA
06c0: 59 34 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 54 Y4),.+.CADR(INST
06d0: 5f 53 54 4f 52 45 5f 41 52 52 41 59 5f 53 54 4b _STORE_ARRAY_STK
06e0: 29 2c 09 43 41 44 52 28 49 4e 53 54 5f 53 54 4f ),.CADR(INST_STO
06f0: 52 45 5f 53 54 4b 29 2c 0a 2b 09 43 41 44 52 28 RE_STK),.+.CADR(
0700: 49 4e 53 54 5f 49 4e 43 52 5f 53 43 41 4c 41 52 INST_INCR_SCALAR
0710: 31 29 2c 09 43 41 44 52 28 49 4e 53 54 5f 49 4e 1),.CADR(INST_IN
0720: 43 52 5f 53 43 41 4c 41 52 5f 53 54 4b 29 2c 0a CR_SCALAR_STK),.
0730: 2b 09 43 41 44 52 28 49 4e 53 54 5f 49 4e 43 52 +.CADR(INST_INCR
0740: 5f 41 52 52 41 59 31 29 2c 09 09 43 41 44 52 28 _ARRAY1),..CADR(
0750: 49 4e 53 54 5f 49 4e 43 52 5f 41 52 52 41 59 5f INST_INCR_ARRAY_
0760: 53 54 4b 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 STK),.+.CADR(INS
0770: 54 5f 49 4e 43 52 5f 53 54 4b 29 2c 09 09 43 41 T_INCR_STK),..CA
0780: 44 52 28 49 4e 53 54 5f 49 4e 43 52 5f 53 43 41 DR(INST_INCR_SCA
0790: 4c 41 52 31 5f 49 4d 4d 29 2c 0a 2b 09 43 41 44 LAR1_IMM),.+.CAD
07a0: 52 28 49 4e 53 54 5f 49 4e 43 52 5f 53 43 41 4c R(INST_INCR_SCAL
07b0: 41 52 5f 53 54 4b 5f 49 4d 4d 29 2c 09 43 41 44 AR_STK_IMM),.CAD
07c0: 52 28 49 4e 53 54 5f 49 4e 43 52 5f 41 52 52 41 R(INST_INCR_ARRA
07d0: 59 31 5f 49 4d 4d 29 2c 0a 2b 09 43 41 44 52 28 Y1_IMM),.+.CADR(
07e0: 49 4e 53 54 5f 49 4e 43 52 5f 41 52 52 41 59 5f INST_INCR_ARRAY_
07f0: 53 54 4b 5f 49 4d 4d 29 2c 09 43 41 44 52 28 49 STK_IMM),.CADR(I
0800: 4e 53 54 5f 49 4e 43 52 5f 53 54 4b 5f 49 4d 4d NST_INCR_STK_IMM
0810: 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 4a ),.+.CADR(INST_J
0820: 55 4d 50 31 29 2c 09 09 43 41 44 52 28 49 4e 53 UMP1),..CADR(INS
0830: 54 5f 4a 55 4d 50 34 29 2c 0a 2b 09 43 41 44 52 T_JUMP4),.+.CADR
0840: 28 49 4e 53 54 5f 4a 55 4d 50 5f 54 52 55 45 31 (INST_JUMP_TRUE1
0850: 29 2c 09 09 43 41 44 52 28 49 4e 53 54 5f 4a 55 ),..CADR(INST_JU
0860: 4d 50 5f 54 52 55 45 34 29 2c 0a 2b 09 43 41 44 MP_TRUE4),.+.CAD
0870: 52 28 49 4e 53 54 5f 4a 55 4d 50 5f 46 41 4c 53 R(INST_JUMP_FALS
0880: 45 31 29 2c 09 09 43 41 44 52 28 49 4e 53 54 5f E1),..CADR(INST_
0890: 4a 55 4d 50 5f 46 41 4c 53 45 34 29 2c 0a 2b 09 JUMP_FALSE4),.+.
08a0: 43 41 44 52 28 49 4e 53 54 5f 4c 4f 52 29 2c 09 CADR(INST_LOR),.
08b0: 09 09 43 41 44 52 28 49 4e 53 54 5f 4c 41 4e 44 ..CADR(INST_LAND
08c0: 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 42 ),.+.CADR(INST_B
08d0: 49 54 4f 52 29 2c 09 09 43 41 44 52 28 49 4e 53 ITOR),..CADR(INS
08e0: 54 5f 42 49 54 58 4f 52 29 2c 0a 2b 09 43 41 44 T_BITXOR),.+.CAD
08f0: 52 28 49 4e 53 54 5f 42 49 54 41 4e 44 29 2c 09 R(INST_BITAND),.
0900: 09 43 41 44 52 28 49 4e 53 54 5f 45 51 29 2c 0a .CADR(INST_EQ),.
0910: 2b 09 43 41 44 52 28 49 4e 53 54 5f 4e 45 51 29 +.CADR(INST_NEQ)
0920: 2c 09 09 09 43 41 44 52 28 49 4e 53 54 5f 4c 54 ,...CADR(INST_LT
0930: 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 47 ),.+.CADR(INST_G
0940: 54 29 2c 09 09 09 43 41 44 52 28 49 4e 53 54 5f T),...CADR(INST_
0950: 4c 45 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 54 LE),.+.CADR(INST
0960: 5f 47 45 29 2c 09 09 09 43 41 44 52 28 49 4e 53 _GE),...CADR(INS
0970: 54 5f 4c 53 48 49 46 54 29 2c 0a 2b 09 43 41 44 T_LSHIFT),.+.CAD
0980: 52 28 49 4e 53 54 5f 52 53 48 49 46 54 29 2c 09 R(INST_RSHIFT),.
0990: 09 43 41 44 52 28 49 4e 53 54 5f 41 44 44 29 2c .CADR(INST_ADD),
09a0: 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 53 55 42 .+.CADR(INST_SUB
09b0: 29 2c 09 09 09 43 41 44 52 28 49 4e 53 54 5f 4d ),...CADR(INST_M
09c0: 55 4c 54 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 ULT),.+.CADR(INS
09d0: 54 5f 44 49 56 29 2c 09 09 09 43 41 44 52 28 49 T_DIV),...CADR(I
09e0: 4e 53 54 5f 4d 4f 44 29 2c 0a 2b 09 43 41 44 52 NST_MOD),.+.CADR
09f0: 28 49 4e 53 54 5f 55 50 4c 55 53 29 2c 09 09 43 (INST_UPLUS),..C
0a00: 41 44 52 28 49 4e 53 54 5f 55 4d 49 4e 55 53 29 ADR(INST_UMINUS)
0a10: 2c 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 42 49 ,.+.CADR(INST_BI
0a20: 54 4e 4f 54 29 2c 09 09 43 41 44 52 28 49 4e 53 TNOT),..CADR(INS
0a30: 54 5f 4c 4e 4f 54 29 2c 0a 2b 09 43 41 44 52 28 T_LNOT),.+.CADR(
0a40: 49 4e 53 54 5f 43 41 4c 4c 5f 42 55 49 4c 54 49 INST_CALL_BUILTI
0a50: 4e 5f 46 55 4e 43 31 29 2c 09 43 41 44 52 28 49 N_FUNC1),.CADR(I
0a60: 4e 53 54 5f 43 41 4c 4c 5f 46 55 4e 43 31 29 2c NST_CALL_FUNC1),
0a70: 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 54 52 59 .+.CADR(INST_TRY
0a80: 5f 43 56 54 5f 54 4f 5f 4e 55 4d 45 52 49 43 29 _CVT_TO_NUMERIC)
0a90: 2c 09 43 41 44 52 28 49 4e 53 54 5f 42 52 45 41 ,.CADR(INST_BREA
0aa0: 4b 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f K),.+.CADR(INST_
0ab0: 43 4f 4e 54 49 4e 55 45 29 2c 09 09 43 41 44 52 CONTINUE),..CADR
0ac0: 28 49 4e 53 54 5f 46 4f 52 45 41 43 48 5f 53 54 (INST_FOREACH_ST
0ad0: 41 52 54 34 29 2c 0a 2b 09 43 41 44 52 28 49 4e ART4),.+.CADR(IN
0ae0: 53 54 5f 46 4f 52 45 41 43 48 5f 53 54 45 50 34 ST_FOREACH_STEP4
0af0: 29 2c 09 43 41 44 52 28 49 4e 53 54 5f 42 45 47 ),.CADR(INST_BEG
0b00: 49 4e 5f 43 41 54 43 48 34 29 2c 0a 2b 09 43 41 IN_CATCH4),.+.CA
0b10: 44 52 28 49 4e 53 54 5f 45 4e 44 5f 43 41 54 43 DR(INST_END_CATC
0b20: 48 29 2c 09 09 43 41 44 52 28 49 4e 53 54 5f 50 H),..CADR(INST_P
0b30: 55 53 48 5f 52 45 53 55 4c 54 29 2c 0a 2b 09 43 USH_RESULT),.+.C
0b40: 41 44 52 28 49 4e 53 54 5f 50 55 53 48 5f 52 45 ADR(INST_PUSH_RE
0b50: 54 55 52 4e 5f 43 4f 44 45 29 2c 09 43 41 44 52 TURN_CODE),.CADR
0b60: 28 49 4e 53 54 5f 53 54 52 5f 45 51 29 2c 0a 2b (INST_STR_EQ),.+
0b70: 09 43 41 44 52 28 49 4e 53 54 5f 53 54 52 5f 4e .CADR(INST_STR_N
0b80: 45 51 29 2c 09 09 43 41 44 52 28 49 4e 53 54 5f EQ),..CADR(INST_
0b90: 53 54 52 5f 43 4d 50 29 2c 0a 2b 09 43 41 44 52 STR_CMP),.+.CADR
0ba0: 28 49 4e 53 54 5f 53 54 52 5f 4c 45 4e 29 2c 09 (INST_STR_LEN),.
0bb0: 09 43 41 44 52 28 49 4e 53 54 5f 53 54 52 5f 49 .CADR(INST_STR_I
0bc0: 4e 44 45 58 29 2c 0a 2b 09 43 41 44 52 28 49 4e NDEX),.+.CADR(IN
0bd0: 53 54 5f 53 54 52 5f 4d 41 54 43 48 29 2c 09 09 ST_STR_MATCH),..
0be0: 43 41 44 52 28 49 4e 53 54 5f 4c 49 53 54 29 2c CADR(INST_LIST),
0bf0: 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 4c 49 53 .+.CADR(INST_LIS
0c00: 54 5f 49 4e 44 45 58 29 2c 09 09 43 41 44 52 28 T_INDEX),..CADR(
0c10: 49 4e 53 54 5f 4c 49 53 54 5f 4c 45 4e 47 54 48 INST_LIST_LENGTH
0c20: 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 41 ),.+.CADR(INST_A
0c30: 50 50 45 4e 44 5f 53 43 41 4c 41 52 31 29 2c 09 PPEND_SCALAR1),.
0c40: 43 41 44 52 28 49 4e 53 54 5f 41 50 50 45 4e 44 CADR(INST_APPEND
0c50: 5f 53 43 41 4c 41 52 34 29 2c 0a 2b 09 43 41 44 _SCALAR4),.+.CAD
0c60: 52 28 49 4e 53 54 5f 41 50 50 45 4e 44 5f 41 52 R(INST_APPEND_AR
0c70: 52 41 59 31 29 2c 09 43 41 44 52 28 49 4e 53 54 RAY1),.CADR(INST
0c80: 5f 41 50 50 45 4e 44 5f 41 52 52 41 59 34 29 2c _APPEND_ARRAY4),
0c90: 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 41 50 50 .+.CADR(INST_APP
0ca0: 45 4e 44 5f 41 52 52 41 59 5f 53 54 4b 29 2c 09 END_ARRAY_STK),.
0cb0: 43 41 44 52 28 49 4e 53 54 5f 41 50 50 45 4e 44 CADR(INST_APPEND
0cc0: 5f 53 54 4b 29 2c 0a 2b 09 43 41 44 52 28 49 4e _STK),.+.CADR(IN
0cd0: 53 54 5f 4c 41 50 50 45 4e 44 5f 53 43 41 4c 41 ST_LAPPEND_SCALA
0ce0: 52 31 29 2c 09 43 41 44 52 28 49 4e 53 54 5f 4c R1),.CADR(INST_L
0cf0: 41 50 50 45 4e 44 5f 53 43 41 4c 41 52 34 29 2c APPEND_SCALAR4),
0d00: 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 4c 41 50 .+.CADR(INST_LAP
0d10: 50 45 4e 44 5f 41 52 52 41 59 31 29 2c 09 43 41 PEND_ARRAY1),.CA
0d20: 44 52 28 49 4e 53 54 5f 4c 41 50 50 45 4e 44 5f DR(INST_LAPPEND_
0d30: 41 52 52 41 59 34 29 2c 0a 2b 09 43 41 44 52 28 ARRAY4),.+.CADR(
0d40: 49 4e 53 54 5f 4c 41 50 50 45 4e 44 5f 41 52 52 INST_LAPPEND_ARR
0d50: 41 59 5f 53 54 4b 29 2c 09 43 41 44 52 28 49 4e AY_STK),.CADR(IN
0d60: 53 54 5f 4c 41 50 50 45 4e 44 5f 53 54 4b 29 2c ST_LAPPEND_STK),
0d70: 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 4c 49 53 .+.CADR(INST_LIS
0d80: 54 5f 49 4e 44 45 58 5f 4d 55 4c 54 49 29 2c 09 T_INDEX_MULTI),.
0d90: 43 41 44 52 28 49 4e 53 54 5f 4f 56 45 52 29 2c CADR(INST_OVER),
0da0: 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 4c 53 45 .+.CADR(INST_LSE
0db0: 54 5f 4c 49 53 54 29 2c 09 09 43 41 44 52 28 49 T_LIST),..CADR(I
0dc0: 4e 53 54 5f 4c 53 45 54 5f 46 4c 41 54 29 2c 0a NST_LSET_FLAT),.
0dd0: 2b 09 43 41 44 52 28 49 4e 53 54 5f 52 45 54 55 +.CADR(INST_RETU
0de0: 52 4e 5f 49 4d 4d 29 2c 09 09 43 41 44 52 28 49 RN_IMM),..CADR(I
0df0: 4e 53 54 5f 45 58 50 4f 4e 29 2c 0a 2b 09 43 41 NST_EXPON),.+.CA
0e00: 44 52 28 49 4e 53 54 5f 45 58 50 41 4e 44 5f 53 DR(INST_EXPAND_S
0e10: 54 41 52 54 29 2c 09 43 41 44 52 28 49 4e 53 54 TART),.CADR(INST
0e20: 5f 45 58 50 41 4e 44 5f 53 54 4b 54 4f 50 29 2c _EXPAND_STKTOP),
0e30: 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 49 4e 56 .+.CADR(INST_INV
0e40: 4f 4b 45 5f 45 58 50 41 4e 44 45 44 29 2c 09 43 OKE_EXPANDED),.C
0e50: 41 44 52 28 49 4e 53 54 5f 4c 49 53 54 5f 49 4e ADR(INST_LIST_IN
0e60: 44 45 58 5f 49 4d 4d 29 2c 0a 2b 09 43 41 44 52 DEX_IMM),.+.CADR
0e70: 28 49 4e 53 54 5f 4c 49 53 54 5f 52 41 4e 47 45 (INST_LIST_RANGE
0e80: 5f 49 4d 4d 29 2c 09 43 41 44 52 28 49 4e 53 54 _IMM),.CADR(INST
0e90: 5f 53 54 41 52 54 5f 43 4d 44 29 2c 0a 2b 09 43 _START_CMD),.+.C
0ea0: 41 44 52 28 49 4e 53 54 5f 4c 49 53 54 5f 49 4e ADR(INST_LIST_IN
0eb0: 29 2c 09 09 43 41 44 52 28 49 4e 53 54 5f 4c 49 ),..CADR(INST_LI
0ec0: 53 54 5f 4e 4f 54 5f 49 4e 29 2c 0a 2b 09 43 41 ST_NOT_IN),.+.CA
0ed0: 44 52 28 49 4e 53 54 5f 50 55 53 48 5f 52 45 54 DR(INST_PUSH_RET
0ee0: 55 52 4e 5f 4f 50 54 49 4f 4e 53 29 2c 09 43 41 URN_OPTIONS),.CA
0ef0: 44 52 28 49 4e 53 54 5f 52 45 54 55 52 4e 5f 53 DR(INST_RETURN_S
0f00: 54 4b 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 54 TK),.+.CADR(INST
0f10: 5f 44 49 43 54 5f 47 45 54 29 2c 09 09 43 41 44 _DICT_GET),..CAD
0f20: 52 28 49 4e 53 54 5f 44 49 43 54 5f 53 45 54 29 R(INST_DICT_SET)
0f30: 2c 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 44 49 ,.+.CADR(INST_DI
0f40: 43 54 5f 55 4e 53 45 54 29 2c 09 09 43 41 44 52 CT_UNSET),..CADR
0f50: 28 49 4e 53 54 5f 44 49 43 54 5f 49 4e 43 52 5f (INST_DICT_INCR_
0f60: 49 4d 4d 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 IMM),.+.CADR(INS
0f70: 54 5f 44 49 43 54 5f 41 50 50 45 4e 44 29 2c 09 T_DICT_APPEND),.
0f80: 09 43 41 44 52 28 49 4e 53 54 5f 44 49 43 54 5f .CADR(INST_DICT_
0f90: 4c 41 50 50 45 4e 44 29 2c 0a 2b 09 43 41 44 52 LAPPEND),.+.CADR
0fa0: 28 49 4e 53 54 5f 44 49 43 54 5f 46 49 52 53 54 (INST_DICT_FIRST
0fb0: 29 2c 09 09 43 41 44 52 28 49 4e 53 54 5f 44 49 ),..CADR(INST_DI
0fc0: 43 54 5f 4e 45 58 54 29 2c 0a 2b 09 43 41 44 52 CT_NEXT),.+.CADR
0fd0: 28 49 4e 53 54 5f 44 49 43 54 5f 44 4f 4e 45 29 (INST_DICT_DONE)
0fe0: 2c 09 09 43 41 44 52 28 49 4e 53 54 5f 44 49 43 ,..CADR(INST_DIC
0ff0: 54 5f 55 50 44 41 54 45 5f 53 54 41 52 54 29 2c T_UPDATE_START),
1000: 0a 2b 09 43 41 44 52 28 49 4e 53 54 5f 44 49 43 .+.CADR(INST_DIC
1010: 54 5f 55 50 44 41 54 45 5f 45 4e 44 29 2c 09 43 T_UPDATE_END),.C
1020: 41 44 52 28 49 4e 53 54 5f 4a 55 4d 50 5f 54 41 ADR(INST_JUMP_TA
1030: 42 4c 45 29 2c 0a 2b 09 43 41 44 52 28 49 4e 53 BLE),.+.CADR(INS
1040: 54 5f 55 50 56 41 52 29 2c 09 09 43 41 44 52 28 T_UPVAR),..CADR(
1050: 49 4e 53 54 5f 4e 53 55 50 56 41 52 29 2c 0a 2b INST_NSUPVAR),.+
1060: 09 43 41 44 52 28 49 4e 53 54 5f 56 41 52 49 41 .CADR(INST_VARIA
1070: 42 4c 45 29 2c 09 09 43 41 44 52 28 49 4e 53 54 BLE),..CADR(INST
1080: 5f 53 59 4e 54 41 58 29 2c 0a 2b 09 43 41 44 52 _SYNTAX),.+.CADR
1090: 28 49 4e 53 54 5f 52 45 56 45 52 53 45 29 2c 0a (INST_REVERSE),.
10a0: 2b 20 20 20 20 7d 3b 0a 2b 23 65 6e 64 69 66 0a + };.+#endif.
10b0: 2b 0a 20 20 20 20 20 2f 2a 0a 20 20 20 20 20 20 +. /*.
10c0: 2a 20 54 68 65 20 65 78 65 63 75 74 69 6f 6e 20 * The execution
10d0: 75 73 65 73 20 61 20 75 6e 69 66 69 65 64 20 73 uses a unified s
10e0: 74 61 63 6b 3a 20 66 69 72 73 74 20 74 68 65 20 tack: first the
10f0: 63 61 74 63 68 20 73 74 61 63 6b 2c 20 69 6d 6d catch stack, imm
1100: 65 64 69 61 74 65 6c 79 0a 20 20 20 20 20 20 2a ediately. *
1110: 20 61 62 6f 76 65 20 69 74 20 61 20 43 6d 64 46 above it a CmdF
1120: 72 61 6d 65 2c 20 74 68 65 6e 20 74 68 65 20 65 rame, then the e
1130: 78 65 63 75 74 69 6f 6e 20 73 74 61 63 6b 2e 0a xecution stack..
1140: 40 40 20 2d 31 37 37 32 2c 31 30 20 2b 31 38 36 @@ -1772,10 +186
1150: 32 2c 32 30 20 40 40 20 54 63 6c 45 78 65 63 75 2,20 @@ TclExecu
1160: 74 65 42 79 74 65 43 6f 64 65 28 0a 20 20 20 20 teByteCode(.
1170: 20 7d 20 65 6c 73 65 20 69 66 20 28 2a 70 63 20 } else if (*pc
1180: 3d 3d 20 49 4e 53 54 5f 50 55 53 48 31 29 20 7b == INST_PUSH1) {
1190: 0a 20 09 67 6f 74 6f 20 69 6e 73 74 50 75 73 68 . .goto instPush
11a0: 31 50 65 65 70 68 6f 6c 65 3b 0a 20 20 20 20 20 1Peephole;.
11b0: 7d 0a 2d 20 20 20 20 0a 2d 20 20 20 20 73 77 69 }.- .- swi
11c0: 74 63 68 20 28 2a 70 63 29 20 7b 0a 2d 20 20 20 tch (*pc) {.-
11d0: 20 63 61 73 65 20 49 4e 53 54 5f 53 59 4e 54 41 case INST_SYNTA
11e0: 58 3a 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 X:.- case INS
11f0: 54 5f 52 45 54 55 52 4e 5f 49 4d 4d 3a 20 7b 0a T_RETURN_IMM: {.
1200: 2b 0a 2b 23 69 66 20 55 53 45 5f 43 4f 4d 50 55 +.+#if USE_COMPU
1210: 54 45 44 5f 47 4f 54 4f 0a 2b 20 20 20 20 69 66 TED_GOTO.+ if
1220: 20 28 2a 70 63 20 3c 3d 20 4c 41 53 54 5f 49 4e (*pc <= LAST_IN
1230: 53 54 5f 4f 50 43 4f 44 45 29 20 7b 0a 2b 09 67 ST_OPCODE) {.+.g
1240: 6f 74 6f 20 2a 28 76 6f 69 64 2a 29 28 69 6e 73 oto *(void*)(ins
1250: 74 4a 75 6d 70 74 61 62 6c 65 5b 2a 70 63 5d 20 tJumptable[*pc]
1260: 2b 20 28 63 68 61 72 2a 29 20 26 26 74 6f 70 29 + (char*) &&top)
1270: 3b 0a 2b 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a ;.+ } else {.
1280: 2b 09 54 63 6c 5f 50 61 6e 69 63 28 22 54 63 6c +.Tcl_Panic("Tcl
1290: 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 3a ExecuteByteCode:
12a0: 20 75 6e 72 65 63 6f 67 6e 69 7a 65 64 20 6f 70 unrecognized op
12b0: 43 6f 64 65 20 25 75 22 2c 20 2a 70 63 29 3b 0a Code %u", *pc);.
12c0: 2b 20 20 20 20 7d 0a 2b 20 20 20 20 74 6f 70 3a + }.+ top:
12d0: 0a 2b 23 65 6c 73 65 0a 2b 20 20 20 20 73 77 69 .+#else.+ swi
12e0: 74 63 68 20 28 2a 70 63 29 0a 2b 23 65 6e 64 69 tch (*pc).+#endi
12f0: 66 0a 2b 20 20 20 20 7b 0a 2b 20 20 20 20 43 41 f.+ {.+ CA
1300: 53 45 28 49 4e 53 54 5f 53 59 4e 54 41 58 29 3a SE(INST_SYNTAX):
1310: 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f .+ CASE(INST_
1320: 52 45 54 55 52 4e 5f 49 4d 4d 29 3a 20 7b 0a 20 RETURN_IMM): {.
1330: 09 69 6e 74 20 63 6f 64 65 20 3d 20 54 63 6c 47 .int code = TclG
1340: 65 74 49 6e 74 34 41 74 50 74 72 28 70 63 2b 31 etInt4AtPtr(pc+1
1350: 29 3b 0a 20 09 69 6e 74 20 6c 65 76 65 6c 20 3d );. .int level =
1360: 20 54 63 6c 47 65 74 55 49 6e 74 34 41 74 50 74 TclGetUInt4AtPt
1370: 72 28 70 63 2b 35 29 3b 0a 20 0a 40 40 20 2d 31 r(pc+5);. .@@ -1
1380: 37 39 39 2c 37 20 2b 31 38 39 39 2c 37 20 40 40 799,7 +1899,7 @@
1390: 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 TclExecuteByteC
13a0: 6f 64 65 28 0a 20 09 7d 0a 20 20 20 20 20 7d 0a ode(. .}. }.
13b0: 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 .- case INST
13c0: 5f 52 45 54 55 52 4e 5f 53 54 4b 3a 0a 2b 20 20 _RETURN_STK:.+
13d0: 20 20 43 41 53 45 28 49 4e 53 54 5f 52 45 54 55 CASE(INST_RETU
13e0: 52 4e 5f 53 54 4b 29 3a 0a 20 09 54 52 41 43 45 RN_STK):. .TRACE
13f0: 28 28 22 3d 3e 20 22 29 29 3b 0a 20 09 6f 62 6a (("=> "));. .obj
1400: 52 65 73 75 6c 74 50 74 72 20 3d 20 50 4f 50 5f ResultPtr = POP_
1410: 4f 42 4a 45 43 54 28 29 3b 0a 20 09 72 65 73 75 OBJECT();. .resu
1420: 6c 74 20 3d 20 54 63 6c 5f 53 65 74 52 65 74 75 lt = Tcl_SetRetu
1430: 72 6e 4f 70 74 69 6f 6e 73 28 69 6e 74 65 72 70 rnOptions(interp
1440: 2c 20 4f 42 4a 5f 41 54 5f 54 4f 53 29 3b 0a 40 , OBJ_AT_TOS);.@
1450: 40 20 2d 31 38 31 34 2c 37 20 2b 31 39 31 34 2c @ -1814,7 +1914,
1460: 37 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 7 @@ TclExecuteB
1470: 79 74 65 43 6f 64 65 28 0a 20 09 20 20 20 20 67 yteCode(. . g
1480: 6f 74 6f 20 70 72 6f 63 65 73 73 45 78 63 65 70 oto processExcep
1490: 74 69 6f 6e 52 65 74 75 72 6e 3b 0a 20 09 7d 0a tionReturn;. .}.
14a0: 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 .- case INST
14b0: 5f 44 4f 4e 45 3a 0a 2b 20 20 20 20 43 41 53 45 _DONE:.+ CASE
14c0: 28 49 4e 53 54 5f 44 4f 4e 45 29 3a 0a 20 09 69 (INST_DONE):. .i
14d0: 66 20 28 74 6f 73 50 74 72 20 3e 20 69 6e 69 74 f (tosPtr > init
14e0: 54 6f 73 50 74 72 29 20 7b 0a 20 09 20 20 20 20 TosPtr) {. .
14f0: 2f 2a 0a 20 09 20 20 20 20 20 2a 20 53 65 74 20 /*. . * Set
1500: 74 68 65 20 69 6e 74 65 72 70 72 65 74 65 72 27 the interpreter'
1510: 73 20 6f 62 6a 65 63 74 20 72 65 73 75 6c 74 20 s object result
1520: 74 6f 20 70 6f 69 6e 74 20 74 6f 20 74 68 65 20 to point to the
1530: 74 6f 70 6d 6f 73 74 0a 40 40 20 2d 31 38 33 37 topmost.@@ -1837
1540: 2c 37 20 2b 31 39 33 37 2c 37 20 40 40 20 54 63 ,7 +1937,7 @@ Tc
1550: 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 lExecuteByteCode
1560: 28 0a 20 09 20 20 20 20 67 6f 74 6f 20 61 62 6e (. . goto abn
1570: 6f 72 6d 61 6c 52 65 74 75 72 6e 3b 0a 20 09 7d ormalReturn;. .}
1580: 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 . .- case INS
1590: 54 5f 50 55 53 48 31 3a 0a 2b 20 20 20 20 43 41 T_PUSH1:.+ CA
15a0: 53 45 28 49 4e 53 54 5f 50 55 53 48 31 29 3a 0a SE(INST_PUSH1):.
15b0: 20 20 20 20 20 69 6e 73 74 50 75 73 68 31 50 65 instPush1Pe
15c0: 65 70 68 6f 6c 65 3a 0a 20 09 50 55 53 48 5f 4f ephole:. .PUSH_O
15d0: 42 4a 45 43 54 28 63 6f 64 65 50 74 72 2d 3e 6f BJECT(codePtr->o
15e0: 62 6a 41 72 72 61 79 50 74 72 5b 54 63 6c 47 65 bjArrayPtr[TclGe
15f0: 74 55 49 6e 74 31 41 74 50 74 72 28 70 63 2b 31 tUInt1AtPtr(pc+1
1600: 29 5d 29 3b 0a 20 09 54 52 41 43 45 5f 57 49 54 )]);. .TRACE_WIT
1610: 48 5f 4f 42 4a 28 28 22 25 75 20 3d 3e 20 22 2c H_OBJ(("%u => ",
1620: 20 54 63 6c 47 65 74 49 6e 74 31 41 74 50 74 72 TclGetInt1AtPtr
1630: 28 70 63 2b 31 29 29 2c 20 4f 42 4a 5f 41 54 5f (pc+1)), OBJ_AT_
1640: 54 4f 53 29 3b 0a 40 40 20 2d 31 38 35 34 2c 31 TOS);.@@ -1854,1
1650: 32 20 2b 31 39 35 34 2c 31 32 20 40 40 20 54 63 2 +1954,12 @@ Tc
1660: 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 lExecuteByteCode
1670: 28 0a 20 23 65 6e 64 69 66 0a 20 09 4e 45 58 54 (. #endif. .NEXT
1680: 5f 49 4e 53 54 5f 46 28 30 2c 20 30 2c 20 30 29 _INST_F(0, 0, 0)
1690: 3b 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e ;. .- case IN
16a0: 53 54 5f 50 55 53 48 34 3a 0a 2b 20 20 20 20 43 ST_PUSH4:.+ C
16b0: 41 53 45 28 49 4e 53 54 5f 50 55 53 48 34 29 3a ASE(INST_PUSH4):
16c0: 0a 20 09 6f 62 6a 52 65 73 75 6c 74 50 74 72 20 . .objResultPtr
16d0: 3d 20 63 6f 64 65 50 74 72 2d 3e 6f 62 6a 41 72 = codePtr->objAr
16e0: 72 61 79 50 74 72 5b 54 63 6c 47 65 74 55 49 6e rayPtr[TclGetUIn
16f0: 74 34 41 74 50 74 72 28 70 63 2b 31 29 5d 3b 0a t4AtPtr(pc+1)];.
1700: 20 09 54 52 41 43 45 5f 57 49 54 48 5f 4f 42 4a .TRACE_WITH_OBJ
1710: 28 28 22 25 75 20 3d 3e 20 22 2c 20 54 63 6c 47 (("%u => ", TclG
1720: 65 74 55 49 6e 74 34 41 74 50 74 72 28 70 63 2b etUInt4AtPtr(pc+
1730: 31 29 29 2c 20 6f 62 6a 52 65 73 75 6c 74 50 74 1)), objResultPt
1740: 72 29 3b 0a 20 09 4e 45 58 54 5f 49 4e 53 54 5f r);. .NEXT_INST_
1750: 46 28 35 2c 20 30 2c 20 31 29 3b 0a 20 0a 2d 20 F(5, 0, 1);. .-
1760: 20 20 20 63 61 73 65 20 49 4e 53 54 5f 50 4f 50 case INST_POP
1770: 3a 20 7b 0a 2b 20 20 20 20 43 41 53 45 28 49 4e : {.+ CASE(IN
1780: 53 54 5f 50 4f 50 29 3a 20 7b 0a 20 09 54 63 6c ST_POP): {. .Tcl
1790: 5f 4f 62 6a 20 2a 76 61 6c 75 65 50 74 72 3b 0a _Obj *valuePtr;.
17a0: 20 0a 20 09 54 52 41 43 45 5f 57 49 54 48 5f 4f . .TRACE_WITH_O
17b0: 42 4a 28 28 22 3d 3e 20 64 69 73 63 61 72 64 69 BJ(("=> discardi
17c0: 6e 67 20 22 29 2c 20 4f 42 4a 5f 41 54 5f 54 4f ng "), OBJ_AT_TO
17d0: 53 29 3b 0a 40 40 20 2d 31 38 38 32 2c 37 20 2b S);.@@ -1882,7 +
17e0: 31 39 38 32 2c 37 20 40 40 20 54 63 6c 45 78 65 1982,7 @@ TclExe
17f0: 63 75 74 65 42 79 74 65 43 6f 64 65 28 0a 20 09 cuteByteCode(. .
1800: 4e 45 58 54 5f 49 4e 53 54 5f 46 28 30 2c 20 30 NEXT_INST_F(0, 0
1810: 2c 20 30 29 3b 0a 20 20 20 20 20 7d 0a 20 0a 2d , 0);. }. .-
1820: 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 53 54 case INST_ST
1830: 41 52 54 5f 43 4d 44 3a 0a 2b 20 20 20 20 43 41 ART_CMD:.+ CA
1840: 53 45 28 49 4e 53 54 5f 53 54 41 52 54 5f 43 4d SE(INST_START_CM
1850: 44 29 3a 0a 20 23 69 66 20 21 54 43 4c 5f 43 4f D):. #if !TCL_CO
1860: 4d 50 49 4c 45 5f 44 45 42 55 47 0a 20 20 20 20 MPILE_DEBUG.
1870: 20 69 6e 73 74 53 74 61 72 74 43 6d 64 50 65 65 instStartCmdPee
1880: 70 68 6f 6c 65 3a 0a 20 23 65 6e 64 69 66 0a 40 phole:. #endif.@
1890: 40 20 2d 31 39 32 33 2c 31 32 20 2b 32 30 32 33 @ -1923,12 +2023
18a0: 2c 31 32 20 40 40 20 54 63 6c 45 78 65 63 75 74 ,12 @@ TclExecut
18b0: 65 42 79 74 65 43 6f 64 65 28 0a 20 09 20 20 20 eByteCode(. .
18c0: 20 4e 45 58 54 5f 49 4e 53 54 5f 56 28 6f 70 6e NEXT_INST_V(opn
18d0: 64 2c 20 30 2c 20 2d 31 29 3b 0a 20 09 7d 0a 20 d, 0, -1);. .}.
18e0: 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f .- case INST_
18f0: 44 55 50 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 DUP:.+ CASE(I
1900: 4e 53 54 5f 44 55 50 29 3a 0a 20 09 6f 62 6a 52 NST_DUP):. .objR
1910: 65 73 75 6c 74 50 74 72 20 3d 20 4f 42 4a 5f 41 esultPtr = OBJ_A
1920: 54 5f 54 4f 53 3b 0a 20 09 54 52 41 43 45 5f 57 T_TOS;. .TRACE_W
1930: 49 54 48 5f 4f 42 4a 28 28 22 3d 3e 20 22 29 2c ITH_OBJ(("=> "),
1940: 20 6f 62 6a 52 65 73 75 6c 74 50 74 72 29 3b 0a objResultPtr);.
1950: 20 09 4e 45 58 54 5f 49 4e 53 54 5f 46 28 31 2c .NEXT_INST_F(1,
1960: 20 30 2c 20 31 29 3b 0a 20 0a 2d 20 20 20 20 63 0, 1);. .- c
1970: 61 73 65 20 49 4e 53 54 5f 4f 56 45 52 3a 20 7b ase INST_OVER: {
1980: 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f .+ CASE(INST_
1990: 4f 56 45 52 29 3a 20 7b 0a 20 09 69 6e 74 20 6f OVER): {. .int o
19a0: 70 6e 64 3b 0a 20 0a 20 09 6f 70 6e 64 20 3d 20 pnd;. . .opnd =
19b0: 54 63 6c 47 65 74 55 49 6e 74 34 41 74 50 74 72 TclGetUInt4AtPtr
19c0: 28 70 63 2b 31 29 3b 0a 40 40 20 2d 31 39 33 37 (pc+1);.@@ -1937
19d0: 2c 37 20 2b 32 30 33 37 2c 37 20 40 40 20 54 63 ,7 +2037,7 @@ Tc
19e0: 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 lExecuteByteCode
19f0: 28 0a 20 09 4e 45 58 54 5f 49 4e 53 54 5f 46 28 (. .NEXT_INST_F(
1a00: 35 2c 20 30 2c 20 31 29 3b 0a 20 20 20 20 20 7d 5, 0, 1);. }
1a10: 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 . .- case INS
1a20: 54 5f 52 45 56 45 52 53 45 3a 20 7b 0a 2b 20 20 T_REVERSE: {.+
1a30: 20 20 43 41 53 45 28 49 4e 53 54 5f 52 45 56 45 CASE(INST_REVE
1a40: 52 53 45 29 3a 20 7b 0a 20 09 69 6e 74 20 6f 70 RSE): {. .int op
1a50: 6e 64 3b 0a 20 09 54 63 6c 5f 4f 62 6a 20 2a 2a nd;. .Tcl_Obj **
1a60: 61 2c 20 2a 2a 62 3b 0a 20 0a 40 40 20 2d 31 39 a, **b;. .@@ -19
1a70: 35 33 2c 37 20 2b 32 30 35 33 2c 37 20 40 40 20 53,7 +2053,7 @@
1a80: 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f TclExecuteByteCo
1a90: 64 65 28 0a 20 09 4e 45 58 54 5f 49 4e 53 54 5f de(. .NEXT_INST_
1aa0: 46 28 35 2c 20 30 2c 20 30 29 3b 0a 20 20 20 20 F(5, 0, 0);.
1ab0: 20 7d 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 }. .- case I
1ac0: 4e 53 54 5f 43 4f 4e 43 41 54 31 3a 20 7b 0a 2b NST_CONCAT1: {.+
1ad0: 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 43 4f CASE(INST_CO
1ae0: 4e 43 41 54 31 29 3a 20 7b 0a 20 09 69 6e 74 20 NCAT1): {. .int
1af0: 6f 70 6e 64 2c 20 6c 65 6e 67 74 68 2c 20 61 70 opnd, length, ap
1b00: 70 65 6e 64 4c 65 6e 20 3d 20 30 3b 0a 20 09 63 pendLen = 0;. .c
1b10: 68 61 72 20 2a 62 79 74 65 73 2c 20 2a 70 3b 0a har *bytes, *p;.
1b20: 20 09 54 63 6c 5f 4f 62 6a 20 2a 2a 63 75 72 72 .Tcl_Obj **curr
1b30: 50 74 72 3b 0a 40 40 20 2d 32 30 32 38 2c 37 20 Ptr;.@@ -2028,7
1b40: 2b 32 31 32 38 2c 37 20 40 40 20 54 63 6c 45 78 +2128,7 @@ TclEx
1b50: 65 63 75 74 65 42 79 74 65 43 6f 64 65 28 0a 20 ecuteByteCode(.
1b60: 09 4e 45 58 54 5f 49 4e 53 54 5f 56 28 32 2c 20 .NEXT_INST_V(2,
1b70: 6f 70 6e 64 2c 20 31 29 3b 0a 20 20 20 20 20 7d opnd, 1);. }
1b80: 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 . .- case INS
1b90: 54 5f 45 58 50 41 4e 44 5f 53 54 41 52 54 3a 20 T_EXPAND_START:
1ba0: 7b 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 {.+ CASE(INST
1bb0: 5f 45 58 50 41 4e 44 5f 53 54 41 52 54 29 3a 20 _EXPAND_START):
1bc0: 7b 0a 20 09 2f 2a 0a 20 09 20 2a 20 50 75 73 68 {. ./*. . * Push
1bd0: 20 61 6e 20 65 6c 65 6d 65 6e 74 20 74 6f 20 74 an element to t
1be0: 68 65 20 65 78 70 61 6e 64 4e 65 73 74 4c 69 73 he expandNestLis
1bf0: 74 2e 20 54 68 69 73 20 72 65 63 6f 72 64 73 20 t. This records
1c00: 74 68 65 20 63 75 72 72 65 6e 74 0a 20 09 20 2a the current. . *
1c10: 20 73 74 61 63 6b 20 64 65 70 74 68 20 2d 20 69 stack depth - i
1c20: 2e 65 2e 2c 20 74 68 65 20 70 6f 69 6e 74 20 69 .e., the point i
1c30: 6e 20 74 68 65 20 73 74 61 63 6b 20 77 68 65 72 n the stack wher
1c40: 65 20 74 68 65 20 65 78 70 61 6e 64 65 64 0a 40 e the expanded.@
1c50: 40 20 2d 32 30 35 31 2c 37 20 2b 32 31 35 31 2c @ -2051,7 +2151,
1c60: 37 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 7 @@ TclExecuteB
1c70: 79 74 65 43 6f 64 65 28 0a 20 09 4e 45 58 54 5f yteCode(. .NEXT_
1c80: 49 4e 53 54 5f 46 28 31 2c 20 30 2c 20 30 29 3b INST_F(1, 0, 0);
1c90: 0a 20 20 20 20 20 7d 0a 20 0a 2d 20 20 20 20 63 . }. .- c
1ca0: 61 73 65 20 49 4e 53 54 5f 45 58 50 41 4e 44 5f ase INST_EXPAND_
1cb0: 53 54 4b 54 4f 50 3a 20 7b 0a 2b 20 20 20 20 43 STKTOP: {.+ C
1cc0: 41 53 45 28 49 4e 53 54 5f 45 58 50 41 4e 44 5f ASE(INST_EXPAND_
1cd0: 53 54 4b 54 4f 50 29 3a 20 7b 0a 20 09 69 6e 74 STKTOP): {. .int
1ce0: 20 6f 62 6a 63 2c 20 6c 65 6e 67 74 68 2c 20 69 objc, length, i
1cf0: 3b 0a 20 09 54 63 6c 5f 4f 62 6a 20 2a 2a 6f 62 ;. .Tcl_Obj **ob
1d00: 6a 76 2c 20 2a 76 61 6c 75 65 50 74 72 3b 0a 20 jv, *valuePtr;.
1d10: 09 70 74 72 64 69 66 66 5f 74 20 6d 6f 76 65 64 .ptrdiff_t moved
1d20: 3b 0a 40 40 20 2d 32 31 31 35 2c 37 20 2b 32 32 ;.@@ -2115,7 +22
1d30: 31 35 2c 37 20 40 40 20 54 63 6c 45 78 65 63 75 15,7 @@ TclExecu
1d40: 74 65 42 79 74 65 43 6f 64 65 28 0a 20 0a 20 09 teByteCode(. . .
1d50: 69 6e 74 20 6f 62 6a 63 2c 20 70 63 41 64 6a 75 int objc, pcAdju
1d60: 73 74 6d 65 6e 74 3b 0a 20 0a 2d 20 20 20 20 63 stment;. .- c
1d70: 61 73 65 20 49 4e 53 54 5f 49 4e 56 4f 4b 45 5f ase INST_INVOKE_
1d80: 45 58 50 41 4e 44 45 44 3a 0a 2b 20 20 20 20 43 EXPANDED:.+ C
1d90: 41 53 45 28 49 4e 53 54 5f 49 4e 56 4f 4b 45 5f ASE(INST_INVOKE_
1da0: 45 58 50 41 4e 44 45 44 29 3a 0a 20 09 7b 0a 20 EXPANDED):. .{.
1db0: 09 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 6f 62 . Tcl_Obj *ob
1dc0: 6a 50 74 72 20 3d 20 65 78 70 61 6e 64 4e 65 73 jPtr = expandNes
1dd0: 74 4c 69 73 74 3b 0a 20 0a 40 40 20 2d 32 31 33 tList;. .@@ -213
1de0: 37 2c 31 32 20 2b 32 32 33 37 2c 31 32 20 40 40 7,12 +2237,12 @@
1df0: 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 TclExecuteByteC
1e00: 6f 64 65 28 0a 20 09 20 20 20 20 4e 45 58 54 5f ode(. . NEXT_
1e10: 49 4e 53 54 5f 46 28 31 2c 20 30 2c 20 31 29 3b INST_F(1, 0, 1);
1e20: 0a 20 09 7d 0a 20 0a 2d 20 20 20 20 63 61 73 65 . .}. .- case
1e30: 20 49 4e 53 54 5f 49 4e 56 4f 4b 45 5f 53 54 4b INST_INVOKE_STK
1e40: 34 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 4:.+ CASE(INS
1e50: 54 5f 49 4e 56 4f 4b 45 5f 53 54 4b 34 29 3a 0a T_INVOKE_STK4):.
1e60: 20 09 6f 62 6a 63 20 3d 20 54 63 6c 47 65 74 55 .objc = TclGetU
1e70: 49 6e 74 34 41 74 50 74 72 28 70 63 2b 31 29 3b Int4AtPtr(pc+1);
1e80: 0a 20 09 70 63 41 64 6a 75 73 74 6d 65 6e 74 20 . .pcAdjustment
1e90: 3d 20 35 3b 0a 20 09 67 6f 74 6f 20 64 6f 49 6e = 5;. .goto doIn
1ea0: 76 6f 63 61 74 69 6f 6e 3b 0a 20 0a 2d 20 20 20 vocation;. .-
1eb0: 20 63 61 73 65 20 49 4e 53 54 5f 49 4e 56 4f 4b case INST_INVOK
1ec0: 45 5f 53 54 4b 31 3a 0a 2b 20 20 20 20 43 41 53 E_STK1:.+ CAS
1ed0: 45 28 49 4e 53 54 5f 49 4e 56 4f 4b 45 5f 53 54 E(INST_INVOKE_ST
1ee0: 4b 31 29 3a 0a 20 09 6f 62 6a 63 20 3d 20 54 63 K1):. .objc = Tc
1ef0: 6c 47 65 74 55 49 6e 74 31 41 74 50 74 72 28 70 lGetUInt1AtPtr(p
1f00: 63 2b 31 29 3b 0a 20 09 70 63 41 64 6a 75 73 74 c+1);. .pcAdjust
1f10: 6d 65 6e 74 20 3d 20 32 3b 0a 20 0a 40 40 20 2d ment = 2;. .@@ -
1f20: 32 32 33 34 2c 37 20 2b 32 33 33 34 2c 37 20 40 2234,7 +2334,7 @
1f30: 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 @ TclExecuteByte
1f40: 43 6f 64 65 28 0a 20 09 7d 0a 20 0a 20 23 69 66 Code(. .}. . #if
1f50: 20 54 43 4c 5f 53 55 50 50 4f 52 54 5f 38 34 5f TCL_SUPPORT_84_
1f60: 42 59 54 45 43 4f 44 45 0a 2d 20 20 20 20 63 61 BYTECODE.- ca
1f70: 73 65 20 49 4e 53 54 5f 43 41 4c 4c 5f 42 55 49 se INST_CALL_BUI
1f80: 4c 54 49 4e 5f 46 55 4e 43 31 3a 20 7b 0a 2b 20 LTIN_FUNC1: {.+
1f90: 20 20 20 43 41 53 45 28 49 4e 53 54 5f 43 41 4c CASE(INST_CAL
1fa0: 4c 5f 42 55 49 4c 54 49 4e 5f 46 55 4e 43 31 29 L_BUILTIN_FUNC1)
1fb0: 3a 20 7b 0a 20 09 2f 2a 0a 20 09 20 2a 20 43 61 : {. ./*. . * Ca
1fc0: 6c 6c 20 6f 6e 65 20 6f 66 20 74 68 65 20 62 75 ll one of the bu
1fd0: 69 6c 74 2d 69 6e 20 70 72 65 2d 38 2e 35 20 54 ilt-in pre-8.5 T
1fe0: 63 6c 20 6d 61 74 68 20 66 75 6e 63 74 69 6f 6e cl math function
1ff0: 73 2e 20 54 68 69 73 0a 20 09 20 2a 20 74 72 61 s. This. . * tra
2000: 6e 73 6c 61 74 65 73 20 74 6f 20 49 4e 53 54 5f nslates to INST_
2010: 49 4e 56 4f 4b 45 5f 53 54 4b 31 20 77 69 74 68 INVOKE_STK1 with
2020: 20 74 68 65 20 66 69 72 73 74 20 61 72 67 75 6d the first argum
2030: 65 6e 74 20 6f 66 0a 40 40 20 2d 32 32 38 32 2c ent of.@@ -2282,
2040: 37 20 2b 32 33 38 32 2c 37 20 40 40 20 54 63 6c 7 +2382,7 @@ Tcl
2050: 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 28 ExecuteByteCode(
2060: 0a 20 09 67 6f 74 6f 20 64 6f 49 6e 76 6f 63 61 . .goto doInvoca
2070: 74 69 6f 6e 3b 0a 20 20 20 20 20 7d 0a 20 0a 2d tion;. }. .-
2080: 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 43 41 case INST_CA
2090: 4c 4c 5f 46 55 4e 43 31 3a 20 7b 0a 2b 20 20 20 LL_FUNC1: {.+
20a0: 20 43 41 53 45 28 49 4e 53 54 5f 43 41 4c 4c 5f CASE(INST_CALL_
20b0: 46 55 4e 43 31 29 3a 20 7b 0a 20 09 2f 2a 0a 20 FUNC1): {. ./*.
20c0: 09 20 2a 20 43 61 6c 6c 20 61 20 6e 6f 6e 2d 62 . * Call a non-b
20d0: 75 69 6c 74 69 6e 20 54 63 6c 20 6d 61 74 68 20 uiltin Tcl math
20e0: 66 75 6e 63 74 69 6f 6e 20 70 72 65 76 69 6f 75 function previou
20f0: 73 6c 79 20 72 65 67 69 73 74 65 72 65 64 20 62 sly registered b
2100: 79 20 61 0a 20 09 20 2a 20 63 61 6c 6c 20 74 6f y a. . * call to
2110: 20 54 63 6c 5f 43 72 65 61 74 65 4d 61 74 68 46 Tcl_CreateMathF
2120: 75 6e 63 20 70 72 65 2d 38 2e 35 2e 20 54 68 69 unc pre-8.5. Thi
2130: 73 20 69 73 20 65 73 73 65 6e 74 69 61 6c 6c 79 s is essentially
2140: 0a 40 40 20 2d 32 33 32 30 2c 31 34 20 2b 32 34 .@@ -2320,14 +24
2150: 32 30 2c 31 34 20 40 40 20 54 63 6c 45 78 65 63 20,14 @@ TclExec
2160: 75 74 65 42 79 74 65 43 6f 64 65 28 0a 20 20 20 uteByteCode(.
2170: 20 20 20 2a 20 72 65 6d 61 69 6e 73 20 66 6f 72 * remains for
2180: 20 65 78 69 73 74 69 6e 67 20 62 79 74 65 63 6f existing byteco
2190: 64 65 20 70 72 65 63 6f 6d 70 69 6c 65 64 20 66 de precompiled f
21a0: 69 6c 65 73 2e 0a 20 20 20 20 20 20 2a 2f 0a 20 iles.. */.
21b0: 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f .- case INST_
21c0: 43 41 4c 4c 5f 42 55 49 4c 54 49 4e 5f 46 55 4e CALL_BUILTIN_FUN
21d0: 43 31 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e C1:.+ CASE(IN
21e0: 53 54 5f 43 41 4c 4c 5f 42 55 49 4c 54 49 4e 5f ST_CALL_BUILTIN_
21f0: 46 55 4e 43 31 29 3a 0a 20 09 54 63 6c 5f 50 61 FUNC1):. .Tcl_Pa
2200: 6e 69 63 28 22 54 63 6c 45 78 65 63 75 74 65 42 nic("TclExecuteB
2210: 79 74 65 43 6f 64 65 3a 20 6f 62 73 6f 6c 65 74 yteCode: obsolet
2220: 65 20 49 4e 53 54 5f 43 41 4c 4c 5f 42 55 49 4c e INST_CALL_BUIL
2230: 54 49 4e 5f 46 55 4e 43 31 20 66 6f 75 6e 64 22 TIN_FUNC1 found"
2240: 29 3b 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 );.- case INS
2250: 54 5f 43 41 4c 4c 5f 46 55 4e 43 31 3a 0a 2b 20 T_CALL_FUNC1:.+
2260: 20 20 20 43 41 53 45 28 49 4e 53 54 5f 43 41 4c CASE(INST_CAL
2270: 4c 5f 46 55 4e 43 31 29 3a 0a 20 09 54 63 6c 5f L_FUNC1):. .Tcl_
2280: 50 61 6e 69 63 28 22 54 63 6c 45 78 65 63 75 74 Panic("TclExecut
2290: 65 42 79 74 65 43 6f 64 65 3a 20 6f 62 73 6f 6c eByteCode: obsol
22a0: 65 74 65 20 49 4e 53 54 5f 43 41 4c 4c 5f 46 55 ete INST_CALL_FU
22b0: 4e 43 31 20 66 6f 75 6e 64 22 29 3b 0a 20 23 65 NC1 found");. #e
22c0: 6e 64 69 66 0a 20 20 20 20 20 7d 0a 20 0a 2d 20 ndif. }. .-
22d0: 20 20 20 63 61 73 65 20 49 4e 53 54 5f 45 56 41 case INST_EVA
22e0: 4c 5f 53 54 4b 3a 20 7b 0a 2b 20 20 20 20 43 41 L_STK: {.+ CA
22f0: 53 45 28 49 4e 53 54 5f 45 56 41 4c 5f 53 54 4b SE(INST_EVAL_STK
2300: 29 3a 20 7b 0a 20 09 2f 2a 0a 20 09 20 2a 20 4e ): {. ./*. . * N
2310: 6f 74 65 20 74 6f 20 6d 61 69 6e 74 61 69 6e 65 ote to maintaine
2320: 72 73 3a 20 69 74 20 69 73 20 69 6d 70 6f 72 74 rs: it is import
2330: 61 6e 74 20 74 68 61 74 20 49 4e 53 54 5f 45 56 ant that INST_EV
2340: 41 4c 5f 53 54 4b 20 70 6f 70 20 69 74 73 0a 20 AL_STK pop its.
2350: 09 20 2a 20 61 72 67 75 6d 65 6e 74 20 66 72 6f . * argument fro
2360: 6d 20 74 68 65 20 73 74 61 63 6b 20 62 65 66 6f m the stack befo
2370: 72 65 20 6a 75 6d 70 69 6e 67 20 74 6f 20 63 68 re jumping to ch
2380: 65 63 6b 46 6f 72 43 61 74 63 68 21 20 44 4f 20 eckForCatch! DO
2390: 4e 4f 54 0a 40 40 20 2d 32 33 37 36 2c 37 20 2b NOT.@@ -2376,7 +
23a0: 32 34 37 36 2c 37 20 40 40 20 54 63 6c 45 78 65 2476,7 @@ TclExe
23b0: 63 75 74 65 42 79 74 65 43 6f 64 65 28 0a 20 09 cuteByteCode(. .
23c0: 7d 0a 20 20 20 20 20 7d 0a 20 0a 2d 20 20 20 20 }. }. .-
23d0: 63 61 73 65 20 49 4e 53 54 5f 45 58 50 52 5f 53 case INST_EXPR_S
23e0: 54 4b 3a 20 7b 0a 2b 20 20 20 20 43 41 53 45 28 TK: {.+ CASE(
23f0: 49 4e 53 54 5f 45 58 50 52 5f 53 54 4b 29 3a 20 INST_EXPR_STK):
2400: 7b 0a 20 09 54 63 6c 5f 4f 62 6a 20 2a 6f 62 6a {. .Tcl_Obj *obj
2410: 50 74 72 2c 20 2a 76 61 6c 75 65 50 74 72 3b 0a Ptr, *valuePtr;.
2420: 20 0a 20 09 6f 62 6a 50 74 72 20 3d 20 4f 42 4a . .objPtr = OBJ
2430: 5f 41 54 5f 54 4f 53 3b 0a 40 40 20 2d 32 34 30 _AT_TOS;.@@ -240
2440: 39 2c 37 20 2b 32 35 30 39 2c 37 20 40 40 20 54 9,7 +2509,7 @@ T
2450: 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 clExecuteByteCod
2460: 65 28 0a 20 09 56 61 72 20 2a 76 61 72 50 74 72 e(. .Var *varPtr
2470: 2c 20 2a 61 72 72 61 79 50 74 72 3b 0a 20 09 54 , *arrayPtr;. .T
2480: 63 6c 5f 4f 62 6a 20 2a 6f 62 6a 50 74 72 3b 0a cl_Obj *objPtr;.
2490: 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 .- case INST
24a0: 5f 4c 4f 41 44 5f 53 43 41 4c 41 52 31 3a 0a 2b _LOAD_SCALAR1:.+
24b0: 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 4c 4f CASE(INST_LO
24c0: 41 44 5f 53 43 41 4c 41 52 31 29 3a 0a 20 09 69 AD_SCALAR1):. .i
24d0: 6e 73 74 4c 6f 61 64 53 63 61 6c 61 72 31 3a 0a nstLoadScalar1:.
24e0: 20 09 6f 70 6e 64 20 3d 20 54 63 6c 47 65 74 55 .opnd = TclGetU
24f0: 49 6e 74 31 41 74 50 74 72 28 70 63 2b 31 29 3b Int1AtPtr(pc+1);
2500: 0a 20 09 76 61 72 50 74 72 20 3d 20 26 28 63 6f . .varPtr = &(co
2510: 6d 70 69 6c 65 64 4c 6f 63 61 6c 73 5b 6f 70 6e mpiledLocals[opn
2520: 64 5d 29 3b 0a 40 40 20 2d 32 34 33 32 2c 37 20 d]);.@@ -2432,7
2530: 2b 32 35 33 32 2c 37 20 40 40 20 54 63 6c 45 78 +2532,7 @@ TclEx
2540: 65 63 75 74 65 42 79 74 65 43 6f 64 65 28 0a 20 ecuteByteCode(.
2550: 09 70 61 72 74 31 50 74 72 20 3d 20 70 61 72 74 .part1Ptr = part
2560: 32 50 74 72 20 3d 20 4e 55 4c 4c 3b 0a 20 09 67 2Ptr = NULL;. .g
2570: 6f 74 6f 20 64 6f 43 61 6c 6c 50 74 72 47 65 74 oto doCallPtrGet
2580: 56 61 72 3b 0a 20 0a 2d 20 20 20 20 63 61 73 65 Var;. .- case
2590: 20 49 4e 53 54 5f 4c 4f 41 44 5f 53 43 41 4c 41 INST_LOAD_SCALA
25a0: 52 34 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e R4:.+ CASE(IN
25b0: 53 54 5f 4c 4f 41 44 5f 53 43 41 4c 41 52 34 29 ST_LOAD_SCALAR4)
25c0: 3a 0a 20 09 6f 70 6e 64 20 3d 20 54 63 6c 47 65 :. .opnd = TclGe
25d0: 74 55 49 6e 74 34 41 74 50 74 72 28 70 63 2b 31 tUInt4AtPtr(pc+1
25e0: 29 3b 0a 20 09 76 61 72 50 74 72 20 3d 20 26 28 );. .varPtr = &(
25f0: 63 6f 6d 70 69 6c 65 64 4c 6f 63 61 6c 73 5b 6f compiledLocals[o
2600: 70 6e 64 5d 29 3b 0a 20 09 77 68 69 6c 65 20 28 pnd]);. .while (
2610: 54 63 6c 49 73 56 61 72 4c 69 6e 6b 28 76 61 72 TclIsVarLink(var
2620: 50 74 72 29 29 20 7b 0a 40 40 20 2d 32 34 35 34 Ptr)) {.@@ -2454
2630: 2c 31 32 20 2b 32 35 35 34 2c 31 32 20 40 40 20 ,12 +2554,12 @@
2640: 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f TclExecuteByteCo
2650: 64 65 28 0a 20 09 70 61 72 74 31 50 74 72 20 3d de(. .part1Ptr =
2660: 20 70 61 72 74 32 50 74 72 20 3d 20 4e 55 4c 4c part2Ptr = NULL
2670: 3b 0a 20 09 67 6f 74 6f 20 64 6f 43 61 6c 6c 50 ;. .goto doCallP
2680: 74 72 47 65 74 56 61 72 3b 0a 20 0a 2d 20 20 20 trGetVar;. .-
2690: 20 63 61 73 65 20 49 4e 53 54 5f 4c 4f 41 44 5f case INST_LOAD_
26a0: 41 52 52 41 59 34 3a 0a 2b 20 20 20 20 43 41 53 ARRAY4:.+ CAS
26b0: 45 28 49 4e 53 54 5f 4c 4f 41 44 5f 41 52 52 41 E(INST_LOAD_ARRA
26c0: 59 34 29 3a 0a 20 09 6f 70 6e 64 20 3d 20 54 63 Y4):. .opnd = Tc
26d0: 6c 47 65 74 55 49 6e 74 34 41 74 50 74 72 28 70 lGetUInt4AtPtr(p
26e0: 63 2b 31 29 3b 0a 20 09 70 63 41 64 6a 75 73 74 c+1);. .pcAdjust
26f0: 6d 65 6e 74 20 3d 20 35 3b 0a 20 09 67 6f 74 6f ment = 5;. .goto
2700: 20 64 6f 4c 6f 61 64 41 72 72 61 79 3b 0a 20 0a doLoadArray;. .
2710: 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 4c - case INST_L
2720: 4f 41 44 5f 41 52 52 41 59 31 3a 0a 2b 20 20 20 OAD_ARRAY1:.+
2730: 20 43 41 53 45 28 49 4e 53 54 5f 4c 4f 41 44 5f CASE(INST_LOAD_
2740: 41 52 52 41 59 31 29 3a 0a 20 09 6f 70 6e 64 20 ARRAY1):. .opnd
2750: 3d 20 54 63 6c 47 65 74 55 49 6e 74 31 41 74 50 = TclGetUInt1AtP
2760: 74 72 28 70 63 2b 31 29 3b 0a 20 09 70 63 41 64 tr(pc+1);. .pcAd
2770: 6a 75 73 74 6d 65 6e 74 20 3d 20 32 3b 0a 20 0a justment = 2;. .
2780: 40 40 20 2d 32 34 39 34 2c 31 35 20 2b 32 35 39 @@ -2494,15 +259
2790: 34 2c 31 35 20 40 40 20 54 63 6c 45 78 65 63 75 4,15 @@ TclExecu
27a0: 74 65 42 79 74 65 43 6f 64 65 28 0a 20 09 63 6c teByteCode(. .cl
27b0: 65 61 6e 75 70 20 3d 20 31 3b 0a 20 09 67 6f 74 eanup = 1;. .got
27c0: 6f 20 64 6f 43 61 6c 6c 50 74 72 47 65 74 56 61 o doCallPtrGetVa
27d0: 72 3b 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 r;. .- case I
27e0: 4e 53 54 5f 4c 4f 41 44 5f 41 52 52 41 59 5f 53 NST_LOAD_ARRAY_S
27f0: 54 4b 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e TK:.+ CASE(IN
2800: 53 54 5f 4c 4f 41 44 5f 41 52 52 41 59 5f 53 54 ST_LOAD_ARRAY_ST
2810: 4b 29 3a 0a 20 09 63 6c 65 61 6e 75 70 20 3d 20 K):. .cleanup =
2820: 32 3b 0a 20 09 70 61 72 74 32 50 74 72 20 3d 20 2;. .part2Ptr =
2830: 4f 42 4a 5f 41 54 5f 54 4f 53 3b 09 09 2f 2a 20 OBJ_AT_TOS;../*
2840: 65 6c 65 6d 65 6e 74 20 6e 61 6d 65 20 2a 2f 0a element name */.
2850: 20 09 6f 62 6a 50 74 72 20 3d 20 4f 42 4a 5f 55 .objPtr = OBJ_U
2860: 4e 44 45 52 5f 54 4f 53 3b 09 09 2f 2a 20 61 72 NDER_TOS;../* ar
2870: 72 61 79 20 6e 61 6d 65 20 2a 2f 0a 20 09 54 52 ray name */. .TR
2880: 41 43 45 28 28 22 5c 22 25 2e 33 30 73 28 25 2e ACE(("\"%.30s(%.
2890: 33 30 73 29 5c 22 20 3d 3e 20 22 2c 20 4f 32 53 30s)\" => ", O2S
28a0: 28 6f 62 6a 50 74 72 29 2c 20 4f 32 53 28 70 61 (objPtr), O2S(pa
28b0: 72 74 32 50 74 72 29 29 29 3b 0a 20 09 67 6f 74 rt2Ptr)));. .got
28c0: 6f 20 64 6f 4c 6f 61 64 53 74 6b 3b 0a 20 0a 2d o doLoadStk;. .-
28d0: 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 4c 4f case INST_LO
28e0: 41 44 5f 53 54 4b 3a 0a 2d 20 20 20 20 63 61 73 AD_STK:.- cas
28f0: 65 20 49 4e 53 54 5f 4c 4f 41 44 5f 53 43 41 4c e INST_LOAD_SCAL
2900: 41 52 5f 53 54 4b 3a 0a 2b 20 20 20 20 43 41 53 AR_STK:.+ CAS
2910: 45 28 49 4e 53 54 5f 4c 4f 41 44 5f 53 54 4b 29 E(INST_LOAD_STK)
2920: 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 :.+ CASE(INST
2930: 5f 4c 4f 41 44 5f 53 43 41 4c 41 52 5f 53 54 4b _LOAD_SCALAR_STK
2940: 29 3a 0a 20 09 63 6c 65 61 6e 75 70 20 3d 20 31 ):. .cleanup = 1
2950: 3b 0a 20 09 70 61 72 74 32 50 74 72 20 3d 20 4e ;. .part2Ptr = N
2960: 55 4c 4c 3b 0a 20 09 6f 62 6a 50 74 72 20 3d 20 ULL;. .objPtr =
2970: 4f 42 4a 5f 41 54 5f 54 4f 53 3b 09 09 2f 2a 20 OBJ_AT_TOS;../*
2980: 76 61 72 69 61 62 6c 65 20 6e 61 6d 65 20 2a 2f variable name */
2990: 0a 40 40 20 2d 32 35 37 32 2c 31 32 20 2b 32 36 .@@ -2572,12 +26
29a0: 37 32 2c 31 32 20 40 40 20 54 63 6c 45 78 65 63 72,12 @@ TclExec
29b0: 75 74 65 42 79 74 65 43 6f 64 65 28 0a 20 09 56 uteByteCode(. .V
29c0: 61 72 20 2a 76 61 72 50 74 72 2c 20 2a 61 72 72 ar *varPtr, *arr
29d0: 61 79 50 74 72 3b 0a 20 09 54 63 6c 5f 4f 62 6a ayPtr;. .Tcl_Obj
29e0: 20 2a 6f 62 6a 50 74 72 2c 20 2a 76 61 6c 75 65 *objPtr, *value
29f0: 50 74 72 3b 0a 20 0a 2d 20 20 20 20 63 61 73 65 Ptr;. .- case
2a00: 20 49 4e 53 54 5f 53 54 4f 52 45 5f 41 52 52 41 INST_STORE_ARRA
2a10: 59 34 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e Y4:.+ CASE(IN
2a20: 53 54 5f 53 54 4f 52 45 5f 41 52 52 41 59 34 29 ST_STORE_ARRAY4)
2a30: 3a 0a 20 09 6f 70 6e 64 20 3d 20 54 63 6c 47 65 :. .opnd = TclGe
2a40: 74 55 49 6e 74 34 41 74 50 74 72 28 70 63 2b 31 tUInt4AtPtr(pc+1
2a50: 29 3b 0a 20 09 70 63 41 64 6a 75 73 74 6d 65 6e );. .pcAdjustmen
2a60: 74 20 3d 20 35 3b 0a 20 09 67 6f 74 6f 20 64 6f t = 5;. .goto do
2a70: 53 74 6f 72 65 41 72 72 61 79 44 69 72 65 63 74 StoreArrayDirect
2a80: 3b 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e ;. .- case IN
2a90: 53 54 5f 53 54 4f 52 45 5f 41 52 52 41 59 31 3a ST_STORE_ARRAY1:
2aa0: 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f .+ CASE(INST_
2ab0: 53 54 4f 52 45 5f 41 52 52 41 59 31 29 3a 0a 20 STORE_ARRAY1):.
2ac0: 09 6f 70 6e 64 20 3d 20 54 63 6c 47 65 74 55 49 .opnd = TclGetUI
2ad0: 6e 74 31 41 74 50 74 72 28 70 63 2b 31 29 3b 0a nt1AtPtr(pc+1);.
2ae0: 20 09 70 63 41 64 6a 75 73 74 6d 65 6e 74 20 3d .pcAdjustment =
2af0: 20 32 3b 0a 20 0a 40 40 20 2d 32 36 30 34 2c 31 2;. .@@ -2604,1
2b00: 32 20 2b 32 37 30 34 2c 31 32 20 40 40 20 54 63 2 +2704,12 @@ Tc
2b10: 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 lExecuteByteCode
2b20: 28 0a 20 09 70 61 72 74 31 50 74 72 20 3d 20 4e (. .part1Ptr = N
2b30: 55 4c 4c 3b 0a 20 09 67 6f 74 6f 20 64 6f 53 74 ULL;. .goto doSt
2b40: 6f 72 65 41 72 72 61 79 44 69 72 65 63 74 46 61 oreArrayDirectFa
2b50: 69 6c 65 64 3b 0a 20 0a 2d 20 20 20 20 63 61 73 iled;. .- cas
2b60: 65 20 49 4e 53 54 5f 53 54 4f 52 45 5f 53 43 41 e INST_STORE_SCA
2b70: 4c 41 52 34 3a 0a 2b 20 20 20 20 43 41 53 45 28 LAR4:.+ CASE(
2b80: 49 4e 53 54 5f 53 54 4f 52 45 5f 53 43 41 4c 41 INST_STORE_SCALA
2b90: 52 34 29 3a 0a 20 09 6f 70 6e 64 20 3d 20 54 63 R4):. .opnd = Tc
2ba0: 6c 47 65 74 55 49 6e 74 34 41 74 50 74 72 28 70 lGetUInt4AtPtr(p
2bb0: 63 2b 31 29 3b 0a 20 09 70 63 41 64 6a 75 73 74 c+1);. .pcAdjust
2bc0: 6d 65 6e 74 20 3d 20 35 3b 0a 20 09 67 6f 74 6f ment = 5;. .goto
2bd0: 20 64 6f 53 74 6f 72 65 53 63 61 6c 61 72 44 69 doStoreScalarDi
2be0: 72 65 63 74 3b 0a 20 0a 2d 20 20 20 20 63 61 73 rect;. .- cas
2bf0: 65 20 49 4e 53 54 5f 53 54 4f 52 45 5f 53 43 41 e INST_STORE_SCA
2c00: 4c 41 52 31 3a 0a 2b 20 20 20 20 43 41 53 45 28 LAR1:.+ CASE(
2c10: 49 4e 53 54 5f 53 54 4f 52 45 5f 53 43 41 4c 41 INST_STORE_SCALA
2c20: 52 31 29 3a 0a 20 09 6f 70 6e 64 20 3d 20 54 63 R1):. .opnd = Tc
2c30: 6c 47 65 74 55 49 6e 74 31 41 74 50 74 72 28 70 lGetUInt1AtPtr(p
2c40: 63 2b 31 29 3b 0a 20 09 70 63 41 64 6a 75 73 74 c+1);. .pcAdjust
2c50: 6d 65 6e 74 20 3d 20 32 3b 0a 20 0a 40 40 20 2d ment = 2;. .@@ -
2c60: 32 36 34 39 2c 34 30 20 2b 32 37 34 39 2c 34 30 2649,40 +2749,40
2c70: 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 @@ TclExecuteBy
2c80: 74 65 43 6f 64 65 28 0a 20 09 70 61 72 74 31 50 teCode(. .part1P
2c90: 74 72 20 3d 20 4e 55 4c 4c 3b 0a 20 09 67 6f 74 tr = NULL;. .got
2ca0: 6f 20 64 6f 53 74 6f 72 65 53 63 61 6c 61 72 3b o doStoreScalar;
2cb0: 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 . .- case INS
2cc0: 54 5f 4c 41 50 50 45 4e 44 5f 53 54 4b 3a 0a 2b T_LAPPEND_STK:.+
2cd0: 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 4c 41 CASE(INST_LA
2ce0: 50 50 45 4e 44 5f 53 54 4b 29 3a 0a 20 09 76 61 PPEND_STK):. .va
2cf0: 6c 75 65 50 74 72 20 3d 20 4f 42 4a 5f 41 54 5f luePtr = OBJ_AT_
2d00: 54 4f 53 3b 20 2f 2a 20 76 61 6c 75 65 20 74 6f TOS; /* value to
2d10: 20 61 70 70 65 6e 64 20 2a 2f 0a 20 09 70 61 72 append */. .par
2d20: 74 32 50 74 72 20 3d 20 4e 55 4c 4c 3b 0a 20 09 t2Ptr = NULL;. .
2d30: 73 74 6f 72 65 46 6c 61 67 73 20 3d 20 28 54 43 storeFlags = (TC
2d40: 4c 5f 4c 45 41 56 45 5f 45 52 52 5f 4d 53 47 20 L_LEAVE_ERR_MSG
2d50: 7c 20 54 43 4c 5f 41 50 50 45 4e 44 5f 56 41 4c | TCL_APPEND_VAL
2d60: 55 45 0a 20 09 09 7c 20 54 43 4c 5f 4c 49 53 54 UE. ..| TCL_LIST
2d70: 5f 45 4c 45 4d 45 4e 54 20 7c 20 54 43 4c 5f 54 _ELEMENT | TCL_T
2d80: 52 41 43 45 5f 52 45 41 44 53 29 3b 0a 20 09 67 RACE_READS);. .g
2d90: 6f 74 6f 20 64 6f 53 74 6f 72 65 53 74 6b 3b 0a oto doStoreStk;.
2da0: 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 .- case INST
2db0: 5f 4c 41 50 50 45 4e 44 5f 41 52 52 41 59 5f 53 _LAPPEND_ARRAY_S
2dc0: 54 4b 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e TK:.+ CASE(IN
2dd0: 53 54 5f 4c 41 50 50 45 4e 44 5f 41 52 52 41 59 ST_LAPPEND_ARRAY
2de0: 5f 53 54 4b 29 3a 0a 20 09 76 61 6c 75 65 50 74 _STK):. .valuePt
2df0: 72 20 3d 20 4f 42 4a 5f 41 54 5f 54 4f 53 3b 20 r = OBJ_AT_TOS;
2e00: 2f 2a 20 76 61 6c 75 65 20 74 6f 20 61 70 70 65 /* value to appe
2e10: 6e 64 20 2a 2f 0a 20 09 70 61 72 74 32 50 74 72 nd */. .part2Ptr
2e20: 20 3d 20 4f 42 4a 5f 55 4e 44 45 52 5f 54 4f 53 = OBJ_UNDER_TOS
2e30: 3b 0a 20 09 73 74 6f 72 65 46 6c 61 67 73 20 3d ;. .storeFlags =
2e40: 20 28 54 43 4c 5f 4c 45 41 56 45 5f 45 52 52 5f (TCL_LEAVE_ERR_
2e50: 4d 53 47 20 7c 20 54 43 4c 5f 41 50 50 45 4e 44 MSG | TCL_APPEND
2e60: 5f 56 41 4c 55 45 0a 20 09 09 7c 20 54 43 4c 5f _VALUE. ..| TCL_
2e70: 4c 49 53 54 5f 45 4c 45 4d 45 4e 54 20 7c 20 54 LIST_ELEMENT | T
2e80: 43 4c 5f 54 52 41 43 45 5f 52 45 41 44 53 29 3b CL_TRACE_READS);
2e90: 0a 20 09 67 6f 74 6f 20 64 6f 53 74 6f 72 65 53 . .goto doStoreS
2ea0: 74 6b 3b 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 tk;. .- case
2eb0: 49 4e 53 54 5f 41 50 50 45 4e 44 5f 53 54 4b 3a INST_APPEND_STK:
2ec0: 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f .+ CASE(INST_
2ed0: 41 50 50 45 4e 44 5f 53 54 4b 29 3a 0a 20 09 76 APPEND_STK):. .v
2ee0: 61 6c 75 65 50 74 72 20 3d 20 4f 42 4a 5f 41 54 aluePtr = OBJ_AT
2ef0: 5f 54 4f 53 3b 20 2f 2a 20 76 61 6c 75 65 20 74 _TOS; /* value t
2f00: 6f 20 61 70 70 65 6e 64 20 2a 2f 0a 20 09 70 61 o append */. .pa
2f10: 72 74 32 50 74 72 20 3d 20 4e 55 4c 4c 3b 0a 20 rt2Ptr = NULL;.
2f20: 09 73 74 6f 72 65 46 6c 61 67 73 20 3d 20 28 54 .storeFlags = (T
2f30: 43 4c 5f 4c 45 41 56 45 5f 45 52 52 5f 4d 53 47 CL_LEAVE_ERR_MSG
2f40: 20 7c 20 54 43 4c 5f 41 50 50 45 4e 44 5f 56 41 | TCL_APPEND_VA
2f50: 4c 55 45 29 3b 0a 20 09 67 6f 74 6f 20 64 6f 53 LUE);. .goto doS
2f60: 74 6f 72 65 53 74 6b 3b 0a 20 0a 2d 20 20 20 20 toreStk;. .-
2f70: 63 61 73 65 20 49 4e 53 54 5f 41 50 50 45 4e 44 case INST_APPEND
2f80: 5f 41 52 52 41 59 5f 53 54 4b 3a 0a 2b 20 20 20 _ARRAY_STK:.+
2f90: 20 43 41 53 45 28 49 4e 53 54 5f 41 50 50 45 4e CASE(INST_APPEN
2fa0: 44 5f 41 52 52 41 59 5f 53 54 4b 29 3a 0a 20 09 D_ARRAY_STK):. .
2fb0: 76 61 6c 75 65 50 74 72 20 3d 20 4f 42 4a 5f 41 valuePtr = OBJ_A
2fc0: 54 5f 54 4f 53 3b 20 2f 2a 20 76 61 6c 75 65 20 T_TOS; /* value
2fd0: 74 6f 20 61 70 70 65 6e 64 20 2a 2f 0a 20 09 70 to append */. .p
2fe0: 61 72 74 32 50 74 72 20 3d 20 4f 42 4a 5f 55 4e art2Ptr = OBJ_UN
2ff0: 44 45 52 5f 54 4f 53 3b 0a 20 09 73 74 6f 72 65 DER_TOS;. .store
3000: 46 6c 61 67 73 20 3d 20 28 54 43 4c 5f 4c 45 41 Flags = (TCL_LEA
3010: 56 45 5f 45 52 52 5f 4d 53 47 20 7c 20 54 43 4c VE_ERR_MSG | TCL
3020: 5f 41 50 50 45 4e 44 5f 56 41 4c 55 45 29 3b 0a _APPEND_VALUE);.
3030: 20 09 67 6f 74 6f 20 64 6f 53 74 6f 72 65 53 74 .goto doStoreSt
3040: 6b 3b 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 k;. .- case I
3050: 4e 53 54 5f 53 54 4f 52 45 5f 41 52 52 41 59 5f NST_STORE_ARRAY_
3060: 53 54 4b 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 STK:.+ CASE(I
3070: 4e 53 54 5f 53 54 4f 52 45 5f 41 52 52 41 59 5f NST_STORE_ARRAY_
3080: 53 54 4b 29 3a 0a 20 09 76 61 6c 75 65 50 74 72 STK):. .valuePtr
3090: 20 3d 20 4f 42 4a 5f 41 54 5f 54 4f 53 3b 0a 20 = OBJ_AT_TOS;.
30a0: 09 70 61 72 74 32 50 74 72 20 3d 20 4f 42 4a 5f .part2Ptr = OBJ_
30b0: 55 4e 44 45 52 5f 54 4f 53 3b 0a 20 09 73 74 6f UNDER_TOS;. .sto
30c0: 72 65 46 6c 61 67 73 20 3d 20 54 43 4c 5f 4c 45 reFlags = TCL_LE
30d0: 41 56 45 5f 45 52 52 5f 4d 53 47 3b 0a 20 09 67 AVE_ERR_MSG;. .g
30e0: 6f 74 6f 20 64 6f 53 74 6f 72 65 53 74 6b 3b 0a oto doStoreStk;.
30f0: 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 .- case INST
3100: 5f 53 54 4f 52 45 5f 53 54 4b 3a 0a 2d 20 20 20 _STORE_STK:.-
3110: 20 63 61 73 65 20 49 4e 53 54 5f 53 54 4f 52 45 case INST_STORE
3120: 5f 53 43 41 4c 41 52 5f 53 54 4b 3a 0a 2b 20 20 _SCALAR_STK:.+
3130: 20 20 43 41 53 45 28 49 4e 53 54 5f 53 54 4f 52 CASE(INST_STOR
3140: 45 5f 53 54 4b 29 3a 0a 2b 20 20 20 20 43 41 53 E_STK):.+ CAS
3150: 45 28 49 4e 53 54 5f 53 54 4f 52 45 5f 53 43 41 E(INST_STORE_SCA
3160: 4c 41 52 5f 53 54 4b 29 3a 0a 20 09 76 61 6c 75 LAR_STK):. .valu
3170: 65 50 74 72 20 3d 20 4f 42 4a 5f 41 54 5f 54 4f ePtr = OBJ_AT_TO
3180: 53 3b 0a 20 09 70 61 72 74 32 50 74 72 20 3d 20 S;. .part2Ptr =
3190: 4e 55 4c 4c 3b 0a 20 09 73 74 6f 72 65 46 6c 61 NULL;. .storeFla
31a0: 67 73 20 3d 20 54 43 4c 5f 4c 45 41 56 45 5f 45 gs = TCL_LEAVE_E
31b0: 52 52 5f 4d 53 47 3b 0a 40 40 20 2d 32 37 31 31 RR_MSG;.@@ -2711
31c0: 2c 32 37 20 2b 32 38 31 31 2c 32 37 20 40 40 20 ,27 +2811,27 @@
31d0: 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f TclExecuteByteCo
31e0: 64 65 28 0a 20 09 20 20 20 20 67 6f 74 6f 20 63 de(. . goto c
31f0: 68 65 63 6b 46 6f 72 43 61 74 63 68 3b 0a 20 09 heckForCatch;. .
3200: 7d 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e }. .- case IN
3210: 53 54 5f 4c 41 50 50 45 4e 44 5f 41 52 52 41 59 ST_LAPPEND_ARRAY
3220: 34 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 4:.+ CASE(INS
3230: 54 5f 4c 41 50 50 45 4e 44 5f 41 52 52 41 59 34 T_LAPPEND_ARRAY4
3240: 29 3a 0a 20 09 6f 70 6e 64 20 3d 20 54 63 6c 47 ):. .opnd = TclG
3250: 65 74 55 49 6e 74 34 41 74 50 74 72 28 70 63 2b etUInt4AtPtr(pc+
3260: 31 29 3b 0a 20 09 70 63 41 64 6a 75 73 74 6d 65 1);. .pcAdjustme
3270: 6e 74 20 3d 20 35 3b 0a 20 09 73 74 6f 72 65 46 nt = 5;. .storeF
3280: 6c 61 67 73 20 3d 20 28 54 43 4c 5f 4c 45 41 56 lags = (TCL_LEAV
3290: 45 5f 45 52 52 5f 4d 53 47 20 7c 20 54 43 4c 5f E_ERR_MSG | TCL_
32a0: 41 50 50 45 4e 44 5f 56 41 4c 55 45 0a 20 09 09 APPEND_VALUE. ..
32b0: 7c 20 54 43 4c 5f 4c 49 53 54 5f 45 4c 45 4d 45 | TCL_LIST_ELEME
32c0: 4e 54 20 7c 20 54 43 4c 5f 54 52 41 43 45 5f 52 NT | TCL_TRACE_R
32d0: 45 41 44 53 29 3b 0a 20 09 67 6f 74 6f 20 64 6f EADS);. .goto do
32e0: 53 74 6f 72 65 41 72 72 61 79 3b 0a 20 0a 2d 20 StoreArray;. .-
32f0: 20 20 20 63 61 73 65 20 49 4e 53 54 5f 4c 41 50 case INST_LAP
3300: 50 45 4e 44 5f 41 52 52 41 59 31 3a 0a 2b 20 20 PEND_ARRAY1:.+
3310: 20 20 43 41 53 45 28 49 4e 53 54 5f 4c 41 50 50 CASE(INST_LAPP
3320: 45 4e 44 5f 41 52 52 41 59 31 29 3a 0a 20 09 6f END_ARRAY1):. .o
3330: 70 6e 64 20 3d 20 54 63 6c 47 65 74 55 49 6e 74 pnd = TclGetUInt
3340: 31 41 74 50 74 72 28 70 63 2b 31 29 3b 0a 20 09 1AtPtr(pc+1);. .
3350: 70 63 41 64 6a 75 73 74 6d 65 6e 74 20 3d 20 32 pcAdjustment = 2
3360: 3b 0a 20 09 73 74 6f 72 65 46 6c 61 67 73 20 3d ;. .storeFlags =
3370: 20 28 54 43 4c 5f 4c 45 41 56 45 5f 45 52 52 5f (TCL_LEAVE_ERR_
3380: 4d 53 47 20 7c 20 54 43 4c 5f 41 50 50 45 4e 44 MSG | TCL_APPEND
3390: 5f 56 41 4c 55 45 0a 20 09 09 7c 20 54 43 4c 5f _VALUE. ..| TCL_
33a0: 4c 49 53 54 5f 45 4c 45 4d 45 4e 54 20 7c 20 54 LIST_ELEMENT | T
33b0: 43 4c 5f 54 52 41 43 45 5f 52 45 41 44 53 29 3b CL_TRACE_READS);
33c0: 0a 20 09 67 6f 74 6f 20 64 6f 53 74 6f 72 65 41 . .goto doStoreA
33d0: 72 72 61 79 3b 0a 20 0a 2d 20 20 20 20 63 61 73 rray;. .- cas
33e0: 65 20 49 4e 53 54 5f 41 50 50 45 4e 44 5f 41 52 e INST_APPEND_AR
33f0: 52 41 59 34 3a 0a 2b 20 20 20 20 43 41 53 45 28 RAY4:.+ CASE(
3400: 49 4e 53 54 5f 41 50 50 45 4e 44 5f 41 52 52 41 INST_APPEND_ARRA
3410: 59 34 29 3a 0a 20 09 6f 70 6e 64 20 3d 20 54 63 Y4):. .opnd = Tc
3420: 6c 47 65 74 55 49 6e 74 34 41 74 50 74 72 28 70 lGetUInt4AtPtr(p
3430: 63 2b 31 29 3b 0a 20 09 70 63 41 64 6a 75 73 74 c+1);. .pcAdjust
3440: 6d 65 6e 74 20 3d 20 35 3b 0a 20 09 73 74 6f 72 ment = 5;. .stor
3450: 65 46 6c 61 67 73 20 3d 20 28 54 43 4c 5f 4c 45 eFlags = (TCL_LE
3460: 41 56 45 5f 45 52 52 5f 4d 53 47 20 7c 20 54 43 AVE_ERR_MSG | TC
3470: 4c 5f 41 50 50 45 4e 44 5f 56 41 4c 55 45 29 3b L_APPEND_VALUE);
3480: 0a 20 09 67 6f 74 6f 20 64 6f 53 74 6f 72 65 41 . .goto doStoreA
3490: 72 72 61 79 3b 0a 20 0a 2d 20 20 20 20 63 61 73 rray;. .- cas
34a0: 65 20 49 4e 53 54 5f 41 50 50 45 4e 44 5f 41 52 e INST_APPEND_AR
34b0: 52 41 59 31 3a 0a 2b 20 20 20 20 43 41 53 45 28 RAY1:.+ CASE(
34c0: 49 4e 53 54 5f 41 50 50 45 4e 44 5f 41 52 52 41 INST_APPEND_ARRA
34d0: 59 31 29 3a 0a 20 09 6f 70 6e 64 20 3d 20 54 63 Y1):. .opnd = Tc
34e0: 6c 47 65 74 55 49 6e 74 31 41 74 50 74 72 28 70 lGetUInt1AtPtr(p
34f0: 63 2b 31 29 3b 0a 20 09 70 63 41 64 6a 75 73 74 c+1);. .pcAdjust
3500: 6d 65 6e 74 20 3d 20 32 3b 0a 20 09 73 74 6f 72 ment = 2;. .stor
3510: 65 46 6c 61 67 73 20 3d 20 28 54 43 4c 5f 4c 45 eFlags = (TCL_LE
3520: 41 56 45 5f 45 52 52 5f 4d 53 47 20 7c 20 54 43 AVE_ERR_MSG | TC
3530: 4c 5f 41 50 50 45 4e 44 5f 56 41 4c 55 45 29 3b L_APPEND_VALUE);
3540: 0a 40 40 20 2d 32 37 36 30 2c 32 37 20 2b 32 38 .@@ -2760,27 +28
3550: 36 30 2c 32 37 20 40 40 20 54 63 6c 45 78 65 63 60,27 @@ TclExec
3560: 75 74 65 42 79 74 65 43 6f 64 65 28 0a 20 09 20 uteByteCode(. .
3570: 20 20 20 67 6f 74 6f 20 63 68 65 63 6b 46 6f 72 goto checkFor
3580: 43 61 74 63 68 3b 0a 20 09 7d 0a 20 0a 2d 20 20 Catch;. .}. .-
3590: 20 20 63 61 73 65 20 49 4e 53 54 5f 4c 41 50 50 case INST_LAPP
35a0: 45 4e 44 5f 53 43 41 4c 41 52 34 3a 0a 2b 20 20 END_SCALAR4:.+
35b0: 20 20 43 41 53 45 28 49 4e 53 54 5f 4c 41 50 50 CASE(INST_LAPP
35c0: 45 4e 44 5f 53 43 41 4c 41 52 34 29 3a 0a 20 09 END_SCALAR4):. .
35d0: 6f 70 6e 64 20 3d 20 54 63 6c 47 65 74 55 49 6e opnd = TclGetUIn
35e0: 74 34 41 74 50 74 72 28 70 63 2b 31 29 3b 0a 20 t4AtPtr(pc+1);.
35f0: 09 70 63 41 64 6a 75 73 74 6d 65 6e 74 20 3d 20 .pcAdjustment =
3600: 35 3b 0a 20 09 73 74 6f 72 65 46 6c 61 67 73 20 5;. .storeFlags
3610: 3d 20 28 54 43 4c 5f 4c 45 41 56 45 5f 45 52 52 = (TCL_LEAVE_ERR
3620: 5f 4d 53 47 20 7c 20 54 43 4c 5f 41 50 50 45 4e _MSG | TCL_APPEN
3630: 44 5f 56 41 4c 55 45 0a 20 09 09 7c 20 54 43 4c D_VALUE. ..| TCL
3640: 5f 4c 49 53 54 5f 45 4c 45 4d 45 4e 54 20 7c 20 _LIST_ELEMENT |
3650: 54 43 4c 5f 54 52 41 43 45 5f 52 45 41 44 53 29 TCL_TRACE_READS)
3660: 3b 0a 20 09 67 6f 74 6f 20 64 6f 53 74 6f 72 65 ;. .goto doStore
3670: 53 63 61 6c 61 72 3b 0a 20 0a 2d 20 20 20 20 63 Scalar;. .- c
3680: 61 73 65 20 49 4e 53 54 5f 4c 41 50 50 45 4e 44 ase INST_LAPPEND
3690: 5f 53 43 41 4c 41 52 31 3a 0a 2b 20 20 20 20 43 _SCALAR1:.+ C
36a0: 41 53 45 28 49 4e 53 54 5f 4c 41 50 50 45 4e 44 ASE(INST_LAPPEND
36b0: 5f 53 43 41 4c 41 52 31 29 3a 0a 20 09 6f 70 6e _SCALAR1):. .opn
36c0: 64 20 3d 20 54 63 6c 47 65 74 55 49 6e 74 31 41 d = TclGetUInt1A
36d0: 74 50 74 72 28 70 63 2b 31 29 3b 0a 20 09 70 63 tPtr(pc+1);. .pc
36e0: 41 64 6a 75 73 74 6d 65 6e 74 20 3d 20 32 3b 0a Adjustment = 2;.
36f0: 20 09 73 74 6f 72 65 46 6c 61 67 73 20 3d 20 28 .storeFlags = (
3700: 54 43 4c 5f 4c 45 41 56 45 5f 45 52 52 5f 4d 53 TCL_LEAVE_ERR_MS
3710: 47 20 7c 20 54 43 4c 5f 41 50 50 45 4e 44 5f 56 G | TCL_APPEND_V
3720: 41 4c 55 45 0a 20 09 09 7c 20 54 43 4c 5f 4c 49 ALUE. ..| TCL_LI
3730: 53 54 5f 45 4c 45 4d 45 4e 54 20 7c 20 54 43 4c ST_ELEMENT | TCL
3740: 5f 54 52 41 43 45 5f 52 45 41 44 53 29 3b 0a 20 _TRACE_READS);.
3750: 09 67 6f 74 6f 20 64 6f 53 74 6f 72 65 53 63 61 .goto doStoreSca
3760: 6c 61 72 3b 0a 20 0a 2d 20 20 20 20 63 61 73 65 lar;. .- case
3770: 20 49 4e 53 54 5f 41 50 50 45 4e 44 5f 53 43 41 INST_APPEND_SCA
3780: 4c 41 52 34 3a 0a 2b 20 20 20 20 43 41 53 45 28 LAR4:.+ CASE(
3790: 49 4e 53 54 5f 41 50 50 45 4e 44 5f 53 43 41 4c INST_APPEND_SCAL
37a0: 41 52 34 29 3a 0a 20 09 6f 70 6e 64 20 3d 20 54 AR4):. .opnd = T
37b0: 63 6c 47 65 74 55 49 6e 74 34 41 74 50 74 72 28 clGetUInt4AtPtr(
37c0: 70 63 2b 31 29 3b 0a 20 09 70 63 41 64 6a 75 73 pc+1);. .pcAdjus
37d0: 74 6d 65 6e 74 20 3d 20 35 3b 0a 20 09 73 74 6f tment = 5;. .sto
37e0: 72 65 46 6c 61 67 73 20 3d 20 28 54 43 4c 5f 4c reFlags = (TCL_L
37f0: 45 41 56 45 5f 45 52 52 5f 4d 53 47 20 7c 20 54 EAVE_ERR_MSG | T
3800: 43 4c 5f 41 50 50 45 4e 44 5f 56 41 4c 55 45 29 CL_APPEND_VALUE)
3810: 3b 0a 20 09 67 6f 74 6f 20 64 6f 53 74 6f 72 65 ;. .goto doStore
3820: 53 63 61 6c 61 72 3b 0a 20 0a 2d 20 20 20 20 63 Scalar;. .- c
3830: 61 73 65 20 49 4e 53 54 5f 41 50 50 45 4e 44 5f ase INST_APPEND_
3840: 53 43 41 4c 41 52 31 3a 0a 2b 20 20 20 20 43 41 SCALAR1:.+ CA
3850: 53 45 28 49 4e 53 54 5f 41 50 50 45 4e 44 5f 53 SE(INST_APPEND_S
3860: 43 41 4c 41 52 31 29 3a 0a 20 09 6f 70 6e 64 20 CALAR1):. .opnd
3870: 3d 20 54 63 6c 47 65 74 55 49 6e 74 31 41 74 50 = TclGetUInt1AtP
3880: 74 72 28 70 63 2b 31 29 3b 0a 20 09 70 63 41 64 tr(pc+1);. .pcAd
3890: 6a 75 73 74 6d 65 6e 74 20 3d 20 32 3b 0a 20 09 justment = 2;. .
38a0: 73 74 6f 72 65 46 6c 61 67 73 20 3d 20 28 54 43 storeFlags = (TC
38b0: 4c 5f 4c 45 41 56 45 5f 45 52 52 5f 4d 53 47 20 L_LEAVE_ERR_MSG
38c0: 7c 20 54 43 4c 5f 41 50 50 45 4e 44 5f 56 41 4c | TCL_APPEND_VAL
38d0: 55 45 29 3b 0a 40 40 20 2d 32 38 34 33 2c 31 31 UE);.@@ -2843,11
38e0: 20 2b 32 39 34 33 2c 31 31 20 40 40 20 54 63 6c +2943,11 @@ Tcl
38f0: 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 28 ExecuteByteCode(
3900: 0a 20 09 54 63 6c 5f 4f 62 6a 20 2a 70 61 72 74 . .Tcl_Obj *part
3910: 31 50 74 72 2c 20 2a 70 61 72 74 32 50 74 72 3b 1Ptr, *part2Ptr;
3920: 0a 20 09 56 61 72 20 2a 76 61 72 50 74 72 2c 20 . .Var *varPtr,
3930: 2a 61 72 72 61 79 50 74 72 3b 0a 20 0a 2d 20 20 *arrayPtr;. .-
3940: 20 20 63 61 73 65 20 49 4e 53 54 5f 49 4e 43 52 case INST_INCR
3950: 5f 53 43 41 4c 41 52 31 3a 0a 2d 20 20 20 20 63 _SCALAR1:.- c
3960: 61 73 65 20 49 4e 53 54 5f 49 4e 43 52 5f 41 52 ase INST_INCR_AR
3970: 52 41 59 31 3a 0a 2d 20 20 20 20 63 61 73 65 20 RAY1:.- case
3980: 49 4e 53 54 5f 49 4e 43 52 5f 41 52 52 41 59 5f INST_INCR_ARRAY_
3990: 53 54 4b 3a 0a 2d 20 20 20 20 63 61 73 65 20 49 STK:.- case I
39a0: 4e 53 54 5f 49 4e 43 52 5f 53 43 41 4c 41 52 5f NST_INCR_SCALAR_
39b0: 53 54 4b 3a 0a 2d 20 20 20 20 63 61 73 65 20 49 STK:.- case I
39c0: 4e 53 54 5f 49 4e 43 52 5f 53 54 4b 3a 0a 2b 20 NST_INCR_STK:.+
39d0: 20 20 20 43 41 53 45 28 49 4e 53 54 5f 49 4e 43 CASE(INST_INC
39e0: 52 5f 53 43 41 4c 41 52 31 29 3a 0a 2b 20 20 20 R_SCALAR1):.+
39f0: 20 43 41 53 45 28 49 4e 53 54 5f 49 4e 43 52 5f CASE(INST_INCR_
3a00: 41 52 52 41 59 31 29 3a 0a 2b 20 20 20 20 43 41 ARRAY1):.+ CA
3a10: 53 45 28 49 4e 53 54 5f 49 4e 43 52 5f 41 52 52 SE(INST_INCR_ARR
3a20: 41 59 5f 53 54 4b 29 3a 0a 2b 20 20 20 20 43 41 AY_STK):.+ CA
3a30: 53 45 28 49 4e 53 54 5f 49 4e 43 52 5f 53 43 41 SE(INST_INCR_SCA
3a40: 4c 41 52 5f 53 54 4b 29 3a 0a 2b 20 20 20 20 43 LAR_STK):.+ C
3a50: 41 53 45 28 49 4e 53 54 5f 49 4e 43 52 5f 53 54 ASE(INST_INCR_ST
3a60: 4b 29 3a 0a 20 09 6f 70 6e 64 20 3d 20 54 63 6c K):. .opnd = Tcl
3a70: 47 65 74 55 49 6e 74 31 41 74 50 74 72 28 70 63 GetUInt1AtPtr(pc
3a80: 2b 31 29 3b 0a 20 09 69 6e 63 72 50 74 72 20 3d +1);. .incrPtr =
3a90: 20 50 4f 50 5f 4f 42 4a 45 43 54 28 29 3b 0a 20 POP_OBJECT();.
3aa0: 09 73 77 69 74 63 68 20 28 2a 70 63 29 20 7b 0a .switch (*pc) {.
3ab0: 40 40 20 2d 32 38 36 32 2c 39 20 2b 32 39 36 32 @@ -2862,9 +2962
3ac0: 2c 39 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 ,9 @@ TclExecute
3ad0: 42 79 74 65 43 6f 64 65 28 0a 20 09 20 20 20 20 ByteCode(. .
3ae0: 67 6f 74 6f 20 64 6f 49 6e 63 72 53 74 6b 3b 0a goto doIncrStk;.
3af0: 20 09 7d 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 .}. .- case
3b00: 49 4e 53 54 5f 49 4e 43 52 5f 41 52 52 41 59 5f INST_INCR_ARRAY_
3b10: 53 54 4b 5f 49 4d 4d 3a 0a 2d 20 20 20 20 63 61 STK_IMM:.- ca
3b20: 73 65 20 49 4e 53 54 5f 49 4e 43 52 5f 53 43 41 se INST_INCR_SCA
3b30: 4c 41 52 5f 53 54 4b 5f 49 4d 4d 3a 0a 2d 20 20 LAR_STK_IMM:.-
3b40: 20 20 63 61 73 65 20 49 4e 53 54 5f 49 4e 43 52 case INST_INCR
3b50: 5f 53 54 4b 5f 49 4d 4d 3a 0a 2b 20 20 20 20 43 _STK_IMM:.+ C
3b60: 41 53 45 28 49 4e 53 54 5f 49 4e 43 52 5f 41 52 ASE(INST_INCR_AR
3b70: 52 41 59 5f 53 54 4b 5f 49 4d 4d 29 3a 0a 2b 20 RAY_STK_IMM):.+
3b80: 20 20 20 43 41 53 45 28 49 4e 53 54 5f 49 4e 43 CASE(INST_INC
3b90: 52 5f 53 43 41 4c 41 52 5f 53 54 4b 5f 49 4d 4d R_SCALAR_STK_IMM
3ba0: 29 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 ):.+ CASE(INS
3bb0: 54 5f 49 4e 43 52 5f 53 54 4b 5f 49 4d 4d 29 3a T_INCR_STK_IMM):
3bc0: 0a 20 09 69 20 3d 20 54 63 6c 47 65 74 49 6e 74 . .i = TclGetInt
3bd0: 31 41 74 50 74 72 28 70 63 2b 31 29 3b 0a 20 09 1AtPtr(pc+1);. .
3be0: 69 6e 63 72 50 74 72 20 3d 20 54 63 6c 5f 4e 65 incrPtr = Tcl_Ne
3bf0: 77 49 6e 74 4f 62 6a 28 69 29 3b 0a 20 09 54 63 wIntObj(i);. .Tc
3c00: 6c 5f 49 6e 63 72 52 65 66 43 6f 75 6e 74 28 69 l_IncrRefCount(i
3c10: 6e 63 72 50 74 72 29 3b 0a 40 40 20 2d 32 38 39 ncrPtr);.@@ -289
3c20: 38 2c 37 20 2b 32 39 39 38 2c 37 20 40 40 20 54 8,7 +2998,7 @@ T
3c30: 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 clExecuteByteCod
3c40: 65 28 0a 20 09 20 20 20 20 67 6f 74 6f 20 63 68 e(. . goto ch
3c50: 65 63 6b 46 6f 72 43 61 74 63 68 3b 0a 20 09 7d eckForCatch;. .}
3c60: 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 . .- case INS
3c70: 54 5f 49 4e 43 52 5f 41 52 52 41 59 31 5f 49 4d T_INCR_ARRAY1_IM
3c80: 4d 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 M:.+ CASE(INS
3c90: 54 5f 49 4e 43 52 5f 41 52 52 41 59 31 5f 49 4d T_INCR_ARRAY1_IM
3ca0: 4d 29 3a 0a 20 09 6f 70 6e 64 20 3d 20 54 63 6c M):. .opnd = Tcl
3cb0: 47 65 74 55 49 6e 74 31 41 74 50 74 72 28 70 63 GetUInt1AtPtr(pc
3cc0: 2b 31 29 3b 0a 20 09 69 20 3d 20 54 63 6c 47 65 +1);. .i = TclGe
3cd0: 74 49 6e 74 31 41 74 50 74 72 28 70 63 2b 32 29 tInt1AtPtr(pc+2)
3ce0: 3b 0a 20 09 69 6e 63 72 50 74 72 20 3d 20 54 63 ;. .incrPtr = Tc
3cf0: 6c 5f 4e 65 77 49 6e 74 4f 62 6a 28 69 29 3b 0a l_NewIntObj(i);.
3d00: 40 40 20 2d 32 39 32 35 2c 37 20 2b 33 30 32 35 @@ -2925,7 +3025
3d10: 2c 37 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 ,7 @@ TclExecute
3d20: 42 79 74 65 43 6f 64 65 28 0a 20 09 20 20 20 20 ByteCode(. .
3d30: 67 6f 74 6f 20 63 68 65 63 6b 46 6f 72 43 61 74 goto checkForCat
3d40: 63 68 3b 0a 20 09 7d 0a 20 0a 2d 20 20 20 20 63 ch;. .}. .- c
3d50: 61 73 65 20 49 4e 53 54 5f 49 4e 43 52 5f 53 43 ase INST_INCR_SC
3d60: 41 4c 41 52 31 5f 49 4d 4d 3a 0a 2b 20 20 20 20 ALAR1_IMM:.+
3d70: 43 41 53 45 28 49 4e 53 54 5f 49 4e 43 52 5f 53 CASE(INST_INCR_S
3d80: 43 41 4c 41 52 31 5f 49 4d 4d 29 3a 0a 20 09 6f CALAR1_IMM):. .o
3d90: 70 6e 64 20 3d 20 54 63 6c 47 65 74 55 49 6e 74 pnd = TclGetUInt
3da0: 31 41 74 50 74 72 28 70 63 2b 31 29 3b 0a 20 09 1AtPtr(pc+1);. .
3db0: 69 20 3d 20 54 63 6c 47 65 74 49 6e 74 31 41 74 i = TclGetInt1At
3dc0: 50 74 72 28 70 63 2b 32 29 3b 0a 20 09 70 63 41 Ptr(pc+2);. .pcA
3dd0: 64 6a 75 73 74 6d 65 6e 74 20 3d 20 33 3b 0a 40 djustment = 3;.@
3de0: 40 20 2d 33 31 30 37 2c 37 20 2b 33 32 30 37 2c @ -3107,7 +3207,
3df0: 37 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 7 @@ TclExecuteB
3e00: 79 74 65 43 6f 64 65 28 0a 20 20 20 20 20 20 2a yteCode(. *
3e10: 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------
3e20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3e30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3e40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 20 ----------.
3e50: 20 2a 2f 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 */. .- case
3e60: 49 4e 53 54 5f 55 50 56 41 52 3a 20 7b 0a 2b 20 INST_UPVAR: {.+
3e70: 20 20 20 43 41 53 45 28 49 4e 53 54 5f 55 50 56 CASE(INST_UPV
3e80: 41 52 29 3a 20 7b 0a 20 09 69 6e 74 20 6f 70 6e AR): {. .int opn
3e90: 64 3b 0a 20 09 56 61 72 20 2a 76 61 72 50 74 72 d;. .Var *varPtr
3ea0: 2c 20 2a 6f 74 68 65 72 50 74 72 3b 0a 20 0a 40 , *otherPtr;. .@
3eb0: 40 20 2d 33 31 33 37 2c 37 20 2b 33 32 33 37 2c @ -3137,7 +3237,
3ec0: 37 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 7 @@ TclExecuteB
3ed0: 79 74 65 43 6f 64 65 28 0a 20 09 20 20 20 20 67 yteCode(. . g
3ee0: 6f 74 6f 20 63 68 65 63 6b 46 6f 72 43 61 74 63 oto checkForCatc
3ef0: 68 3b 0a 20 09 7d 0a 20 0a 2d 20 20 20 20 63 61 h;. .}. .- ca
3f00: 73 65 20 49 4e 53 54 5f 56 41 52 49 41 42 4c 45 se INST_VARIABLE
3f10: 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 :.+ CASE(INST
3f20: 5f 56 41 52 49 41 42 4c 45 29 3a 0a 20 09 54 52 _VARIABLE):. .TR
3f30: 41 43 45 28 28 22 76 61 72 69 61 62 6c 65 20 22 ACE(("variable "
3f40: 29 29 3b 0a 20 09 6f 74 68 65 72 50 74 72 20 3d ));. .otherPtr =
3f50: 20 54 63 6c 4f 62 6a 4c 6f 6f 6b 75 70 56 61 72 TclObjLookupVar
3f60: 45 78 28 69 6e 74 65 72 70 2c 20 4f 42 4a 5f 41 Ex(interp, OBJ_A
3f70: 54 5f 54 4f 53 2c 20 4e 55 4c 4c 2c 0a 20 09 09 T_TOS, NULL,. ..
3f80: 28 54 43 4c 5f 4e 41 4d 45 53 50 41 43 45 5f 4f (TCL_NAMESPACE_O
3f90: 4e 4c 59 20 7c 20 54 43 4c 5f 4c 45 41 56 45 5f NLY | TCL_LEAVE_
3fa0: 45 52 52 5f 4d 53 47 29 2c 20 22 61 63 63 65 73 ERR_MSG), "acces
3fb0: 73 22 2c 0a 40 40 20 2d 33 31 35 34 2c 37 20 2b s",.@@ -3154,7 +
3fc0: 33 32 35 34 2c 37 20 40 40 20 54 63 6c 45 78 65 3254,7 @@ TclExe
3fd0: 63 75 74 65 42 79 74 65 43 6f 64 65 28 0a 20 09 cuteByteCode(. .
3fe0: 72 65 73 75 6c 74 20 3d 20 54 43 4c 5f 45 52 52 result = TCL_ERR
3ff0: 4f 52 3b 0a 20 09 67 6f 74 6f 20 63 68 65 63 6b OR;. .goto check
4000: 46 6f 72 43 61 74 63 68 3b 0a 20 0a 2d 20 20 20 ForCatch;. .-
4010: 20 63 61 73 65 20 49 4e 53 54 5f 4e 53 55 50 56 case INST_NSUPV
4020: 41 52 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e AR:.+ CASE(IN
4030: 53 54 5f 4e 53 55 50 56 41 52 29 3a 0a 20 09 54 ST_NSUPVAR):. .T
4040: 52 41 43 45 5f 57 49 54 48 5f 4f 42 4a 28 28 22 RACE_WITH_OBJ(("
4050: 6e 73 75 70 76 61 72 20 22 29 2c 20 4f 42 4a 5f nsupvar "), OBJ_
4060: 55 4e 44 45 52 5f 54 4f 53 29 3b 0a 20 0a 20 09 UNDER_TOS);. . .
4070: 7b 0a 40 40 20 2d 33 32 32 36 2c 37 20 2b 33 33 {.@@ -3226,7 +33
4080: 32 36 2c 37 20 40 40 20 54 63 6c 45 78 65 63 75 26,7 @@ TclExecu
4090: 74 65 42 79 74 65 43 6f 64 65 28 0a 20 09 4e 45 teByteCode(. .NE
40a0: 58 54 5f 49 4e 53 54 5f 46 28 35 2c 20 31 2c 20 XT_INST_F(5, 1,
40b0: 30 29 3b 0a 20 20 20 20 20 7d 0a 20 0a 2d 20 20 0);. }. .-
40c0: 20 20 63 61 73 65 20 49 4e 53 54 5f 4a 55 4d 50 case INST_JUMP
40d0: 31 3a 20 7b 0a 2b 20 20 20 20 43 41 53 45 28 49 1: {.+ CASE(I
40e0: 4e 53 54 5f 4a 55 4d 50 31 29 3a 20 7b 0a 20 09 NST_JUMP1): {. .
40f0: 69 6e 74 20 6f 70 6e 64 3b 0a 20 0a 20 09 6f 70 int opnd;. . .op
4100: 6e 64 20 3d 20 54 63 6c 47 65 74 49 6e 74 31 41 nd = TclGetInt1A
4110: 74 50 74 72 28 70 63 2b 31 29 3b 0a 40 40 20 2d tPtr(pc+1);.@@ -
4120: 33 32 33 35 2c 37 20 2b 33 33 33 35 2c 37 20 40 3235,7 +3335,7 @
4130: 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 @ TclExecuteByte
4140: 43 6f 64 65 28 0a 20 09 4e 45 58 54 5f 49 4e 53 Code(. .NEXT_INS
4150: 54 5f 46 28 6f 70 6e 64 2c 20 30 2c 20 30 29 3b T_F(opnd, 0, 0);
4160: 0a 20 20 20 20 20 7d 0a 20 0a 2d 20 20 20 20 63 . }. .- c
4170: 61 73 65 20 49 4e 53 54 5f 4a 55 4d 50 34 3a 20 ase INST_JUMP4:
4180: 7b 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 {.+ CASE(INST
4190: 5f 4a 55 4d 50 34 29 3a 20 7b 0a 20 09 69 6e 74 _JUMP4): {. .int
41a0: 20 6f 70 6e 64 3b 0a 20 0a 20 09 6f 70 6e 64 20 opnd;. . .opnd
41b0: 3d 20 54 63 6c 47 65 74 49 6e 74 34 41 74 50 74 = TclGetInt4AtPt
41c0: 72 28 70 63 2b 31 29 3b 0a 40 40 20 2d 33 32 35 r(pc+1);.@@ -325
41d0: 30 2c 32 32 20 2b 33 33 35 30 2c 32 32 20 40 40 0,22 +3350,22 @@
41e0: 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 TclExecuteByteC
41f0: 6f 64 65 28 0a 20 0a 20 09 2f 2a 20 54 4f 44 4f ode(. . ./* TODO
4200: 3a 20 63 6f 6e 73 69 64 65 72 20 72 65 77 72 69 : consider rewri
4210: 74 65 20 73 6f 20 77 65 20 64 6f 6e 27 74 20 63 te so we don't c
4220: 6f 6d 70 75 74 65 20 74 68 65 20 6f 66 66 73 65 ompute the offse
4230: 74 20 77 65 27 72 65 20 6e 6f 74 0a 20 09 20 2a t we're not. . *
4240: 20 67 6f 69 6e 67 20 74 6f 20 74 61 6b 65 2e 20 going to take.
4250: 2a 2f 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 */.- case INS
4260: 54 5f 4a 55 4d 50 5f 46 41 4c 53 45 34 3a 0a 2b T_JUMP_FALSE4:.+
4270: 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 4a 55 CASE(INST_JU
4280: 4d 50 5f 46 41 4c 53 45 34 29 3a 0a 20 09 6a 6d MP_FALSE4):. .jm
4290: 70 4f 66 66 73 65 74 5b 30 5d 20 3d 20 54 63 6c pOffset[0] = Tcl
42a0: 47 65 74 49 6e 74 34 41 74 50 74 72 28 70 63 2b GetInt4AtPtr(pc+
42b0: 31 29 3b 09 2f 2a 20 46 41 4c 53 45 20 6f 66 66 1);./* FALSE off
42c0: 73 65 74 20 2a 2f 0a 20 09 6a 6d 70 4f 66 66 73 set */. .jmpOffs
42d0: 65 74 5b 31 5d 20 3d 20 35 3b 09 09 09 2f 2a 20 et[1] = 5;.../*
42e0: 54 52 55 45 20 6f 66 66 73 65 74 2a 2f 0a 20 09 TRUE offset*/. .
42f0: 67 6f 74 6f 20 64 6f 43 6f 6e 64 4a 75 6d 70 3b goto doCondJump;
4300: 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 . .- case INS
4310: 54 5f 4a 55 4d 50 5f 54 52 55 45 34 3a 0a 2b 20 T_JUMP_TRUE4:.+
4320: 20 20 20 43 41 53 45 28 49 4e 53 54 5f 4a 55 4d CASE(INST_JUM
4330: 50 5f 54 52 55 45 34 29 3a 0a 20 09 6a 6d 70 4f P_TRUE4):. .jmpO
4340: 66 66 73 65 74 5b 30 5d 20 3d 20 35 3b 0a 20 09 ffset[0] = 5;. .
4350: 6a 6d 70 4f 66 66 73 65 74 5b 31 5d 20 3d 20 54 jmpOffset[1] = T
4360: 63 6c 47 65 74 49 6e 74 34 41 74 50 74 72 28 70 clGetInt4AtPtr(p
4370: 63 2b 31 29 3b 0a 20 09 67 6f 74 6f 20 64 6f 43 c+1);. .goto doC
4380: 6f 6e 64 4a 75 6d 70 3b 0a 20 0a 2d 20 20 20 20 ondJump;. .-
4390: 63 61 73 65 20 49 4e 53 54 5f 4a 55 4d 50 5f 46 case INST_JUMP_F
43a0: 41 4c 53 45 31 3a 0a 2b 20 20 20 20 43 41 53 45 ALSE1:.+ CASE
43b0: 28 49 4e 53 54 5f 4a 55 4d 50 5f 46 41 4c 53 45 (INST_JUMP_FALSE
43c0: 31 29 3a 0a 20 09 6a 6d 70 4f 66 66 73 65 74 5b 1):. .jmpOffset[
43d0: 30 5d 20 3d 20 54 63 6c 47 65 74 49 6e 74 31 41 0] = TclGetInt1A
43e0: 74 50 74 72 28 70 63 2b 31 29 3b 0a 20 09 6a 6d tPtr(pc+1);. .jm
43f0: 70 4f 66 66 73 65 74 5b 31 5d 20 3d 20 32 3b 0a pOffset[1] = 2;.
4400: 20 09 67 6f 74 6f 20 64 6f 43 6f 6e 64 4a 75 6d .goto doCondJum
4410: 70 3b 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 p;. .- case I
4420: 4e 53 54 5f 4a 55 4d 50 5f 54 52 55 45 31 3a 0a NST_JUMP_TRUE1:.
4430: 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 4a + CASE(INST_J
4440: 55 4d 50 5f 54 52 55 45 31 29 3a 0a 20 09 6a 6d UMP_TRUE1):. .jm
4450: 70 4f 66 66 73 65 74 5b 30 5d 20 3d 20 32 3b 0a pOffset[0] = 2;.
4460: 20 09 6a 6d 70 4f 66 66 73 65 74 5b 31 5d 20 3d .jmpOffset[1] =
4470: 20 54 63 6c 47 65 74 49 6e 74 31 41 74 50 74 72 TclGetInt1AtPtr
4480: 28 70 63 2b 31 29 3b 0a 20 0a 40 40 20 2d 33 33 (pc+1);. .@@ -33
4490: 30 34 2c 37 20 2b 33 34 30 34 2c 37 20 40 40 20 04,7 +3404,7 @@
44a0: 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f TclExecuteByteCo
44b0: 64 65 28 0a 20 09 4e 45 58 54 5f 49 4e 53 54 5f de(. .NEXT_INST_
44c0: 46 28 6a 6d 70 4f 66 66 73 65 74 5b 62 5d 2c 20 F(jmpOffset[b],
44d0: 31 2c 20 30 29 3b 0a 20 20 20 20 20 7d 0a 20 0a 1, 0);. }. .
44e0: 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 4a - case INST_J
44f0: 55 4d 50 5f 54 41 42 4c 45 3a 20 7b 0a 2b 20 20 UMP_TABLE: {.+
4500: 20 20 43 41 53 45 28 49 4e 53 54 5f 4a 55 4d 50 CASE(INST_JUMP
4510: 5f 54 41 42 4c 45 29 3a 20 7b 0a 20 09 54 63 6c _TABLE): {. .Tcl
4520: 5f 48 61 73 68 45 6e 74 72 79 20 2a 68 50 74 72 _HashEntry *hPtr
4530: 3b 0a 20 09 4a 75 6d 70 74 61 62 6c 65 49 6e 66 ;. .JumptableInf
4540: 6f 20 2a 6a 74 50 74 72 3b 0a 20 09 69 6e 74 20 o *jtPtr;. .int
4550: 6f 70 6e 64 3b 0a 40 40 20 2d 33 33 33 35 2c 38 opnd;.@@ -3335,8
4560: 20 2b 33 34 33 35 2c 38 20 40 40 20 54 63 6c 45 +3435,8 @@ TclE
4570: 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 28 0a xecuteByteCode(.
4580: 20 20 20 20 20 20 2a 20 61 6e 64 20 4c 41 4e 44 * and LAND
4590: 20 69 73 20 6e 6f 77 20 68 61 6e 64 6c 65 64 20 is now handled
45a0: 62 79 20 74 68 65 20 65 78 70 72 65 73 73 69 6f by the expressio
45b0: 6e 20 63 6f 6d 70 69 6c 65 72 2e 0a 20 20 20 20 n compiler..
45c0: 20 20 2a 2f 0a 20 0a 2d 20 20 20 20 63 61 73 65 */. .- case
45d0: 20 49 4e 53 54 5f 4c 4f 52 3a 0a 2d 20 20 20 20 INST_LOR:.-
45e0: 63 61 73 65 20 49 4e 53 54 5f 4c 41 4e 44 3a 20 case INST_LAND:
45f0: 7b 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 {.+ CASE(INST
4600: 5f 4c 4f 52 29 3a 0a 2b 20 20 20 20 43 41 53 45 _LOR):.+ CASE
4610: 28 49 4e 53 54 5f 4c 41 4e 44 29 3a 20 7b 0a 20 (INST_LAND): {.
4620: 09 2f 2a 0a 20 09 20 2a 20 4f 70 65 72 61 6e 64 ./*. . * Operand
4630: 73 20 6d 75 73 74 20 62 65 20 62 6f 6f 6c 65 61 s must be boolea
4640: 6e 20 6f 72 20 6e 75 6d 65 72 69 63 2e 20 4e 6f n or numeric. No
4650: 20 69 6e 74 2d 3e 64 6f 75 62 6c 65 20 63 6f 6e int->double con
4660: 76 65 72 73 69 6f 6e 73 20 61 72 65 0a 20 09 20 versions are. .
4670: 2a 20 70 65 72 66 6f 72 6d 65 64 2e 0a 40 40 20 * performed..@@
4680: 2d 33 33 37 37 2c 37 20 2b 33 34 37 37 2c 37 20 -3377,7 +3477,7
4690: 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 @@ TclExecuteByt
46a0: 65 43 6f 64 65 28 0a 20 20 20 20 20 20 2a 09 20 eCode(. *.
46b0: 20 20 53 74 61 72 74 20 6f 66 20 49 4e 53 54 5f Start of INST_
46c0: 4c 49 53 54 20 61 6e 64 20 72 65 6c 61 74 65 64 LIST and related
46d0: 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 2e 0a 20 instructions..
46e0: 20 20 20 20 20 2a 2f 0a 20 0a 2d 20 20 20 20 63 */. .- c
46f0: 61 73 65 20 49 4e 53 54 5f 4c 49 53 54 3a 20 7b ase INST_LIST: {
4700: 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f .+ CASE(INST_
4710: 4c 49 53 54 29 3a 20 7b 0a 20 09 2f 2a 0a 20 09 LIST): {. ./*. .
4720: 20 2a 20 50 6f 70 20 74 68 65 20 6f 70 6e 64 20 * Pop the opnd
4730: 28 6f 62 6a 63 29 20 74 6f 70 20 73 74 61 63 6b (objc) top stack
4740: 20 65 6c 65 6d 65 6e 74 73 20 69 6e 74 6f 20 61 elements into a
4750: 20 6e 65 77 20 6c 69 73 74 20 6f 62 6a 20 61 6e new list obj an
4760: 64 20 74 68 65 6e 0a 20 09 20 2a 20 64 65 63 72 d then. . * decr
4770: 65 6d 65 6e 74 20 74 68 65 69 72 20 72 65 66 20 ement their ref
4780: 63 6f 75 6e 74 73 2e 0a 40 40 20 2d 33 33 39 31 counts..@@ -3391
4790: 2c 37 20 2b 33 34 39 31 2c 37 20 40 40 20 54 63 ,7 +3491,7 @@ Tc
47a0: 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 lExecuteByteCode
47b0: 28 0a 20 09 4e 45 58 54 5f 49 4e 53 54 5f 56 28 (. .NEXT_INST_V(
47c0: 35 2c 20 6f 70 6e 64 2c 20 31 29 3b 0a 20 20 20 5, opnd, 1);.
47d0: 20 20 7d 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 }. .- case
47e0: 49 4e 53 54 5f 4c 49 53 54 5f 4c 45 4e 47 54 48 INST_LIST_LENGTH
47f0: 3a 20 7b 0a 2b 20 20 20 20 43 41 53 45 28 49 4e : {.+ CASE(IN
4800: 53 54 5f 4c 49 53 54 5f 4c 45 4e 47 54 48 29 3a ST_LIST_LENGTH):
4810: 20 7b 0a 20 09 54 63 6c 5f 4f 62 6a 20 2a 76 61 {. .Tcl_Obj *va
4820: 6c 75 65 50 74 72 3b 0a 20 09 69 6e 74 20 6c 65 luePtr;. .int le
4830: 6e 67 74 68 3b 0a 20 0a 40 40 20 2d 33 34 30 39 ngth;. .@@ -3409
4840: 2c 37 20 2b 33 35 30 39 2c 37 20 40 40 20 54 63 ,7 +3509,7 @@ Tc
4850: 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 lExecuteByteCode
4860: 28 0a 20 09 7d 0a 20 20 20 20 20 7d 0a 20 0a 2d (. .}. }. .-
4870: 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 4c 49 case INST_LI
4880: 53 54 5f 49 4e 44 45 58 3a 20 7b 0a 2b 20 20 20 ST_INDEX: {.+
4890: 20 43 41 53 45 28 49 4e 53 54 5f 4c 49 53 54 5f CASE(INST_LIST_
48a0: 49 4e 44 45 58 29 3a 20 7b 0a 20 09 2f 2a 2a 2a INDEX): {. ./***
48b0: 20 6c 69 6e 64 65 78 20 77 69 74 68 20 6f 62 6a lindex with obj
48c0: 63 20 3d 3d 20 33 20 2a 2a 2a 2f 0a 20 0a 20 09 c == 3 ***/. . .
48d0: 54 63 6c 5f 4f 62 6a 20 2a 76 61 6c 75 65 50 74 Tcl_Obj *valuePt
48e0: 72 2c 20 2a 76 61 6c 75 65 32 50 74 72 3b 0a 40 r, *value2Ptr;.@
48f0: 40 20 2d 33 34 34 32 2c 37 20 2b 33 35 34 32 2c @ -3442,7 +3542,
4900: 37 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 7 @@ TclExecuteB
4910: 79 74 65 43 6f 64 65 28 0a 20 09 7d 0a 20 20 20 yteCode(. .}.
4920: 20 20 7d 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 }. .- case
4930: 49 4e 53 54 5f 4c 49 53 54 5f 49 4e 44 45 58 5f INST_LIST_INDEX_
4940: 49 4d 4d 3a 20 7b 0a 2b 20 20 20 20 43 41 53 45 IMM: {.+ CASE
4950: 28 49 4e 53 54 5f 4c 49 53 54 5f 49 4e 44 45 58 (INST_LIST_INDEX
4960: 5f 49 4d 4d 29 3a 20 7b 0a 20 09 2f 2a 2a 2a 20 _IMM): {. ./***
4970: 6c 69 6e 64 65 78 20 77 69 74 68 20 6f 62 6a 63 lindex with objc
4980: 3d 3d 33 20 61 6e 64 20 69 6e 64 65 78 20 69 6e ==3 and index in
4990: 20 62 79 74 65 63 6f 64 65 20 73 74 72 65 61 6d bytecode stream
49a0: 20 2a 2a 2a 2f 0a 20 0a 20 09 69 6e 74 20 6c 69 ***/. . .int li
49b0: 73 74 63 2c 20 69 64 78 2c 20 6f 70 6e 64 3b 0a stc, idx, opnd;.
49c0: 40 40 20 2d 33 34 38 39 2c 37 20 2b 33 35 38 39 @@ -3489,7 +3589
49d0: 2c 37 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 ,7 @@ TclExecute
49e0: 42 79 74 65 43 6f 64 65 28 0a 20 09 7d 0a 20 20 ByteCode(. .}.
49f0: 20 20 20 7d 0a 20 0a 2d 20 20 20 20 63 61 73 65 }. .- case
4a00: 20 49 4e 53 54 5f 4c 49 53 54 5f 49 4e 44 45 58 INST_LIST_INDEX
4a10: 5f 4d 55 4c 54 49 3a 20 7b 0a 2b 20 20 20 20 43 _MULTI: {.+ C
4a20: 41 53 45 28 49 4e 53 54 5f 4c 49 53 54 5f 49 4e ASE(INST_LIST_IN
4a30: 44 45 58 5f 4d 55 4c 54 49 29 3a 20 7b 0a 20 09 DEX_MULTI): {. .
4a40: 2f 2a 0a 20 09 20 2a 20 27 6c 69 6e 64 65 78 27 /*. . * 'lindex'
4a50: 20 77 69 74 68 20 6d 75 6c 74 69 70 6c 65 20 69 with multiple i
4a60: 6e 64 65 78 20 61 72 67 73 3a 0a 20 09 20 2a 0a ndex args:. . *.
4a70: 40 40 20 2d 33 35 32 36 2c 37 20 2b 33 36 32 36 @@ -3526,7 +3626
4a80: 2c 37 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 ,7 @@ TclExecute
4a90: 42 79 74 65 43 6f 64 65 28 0a 20 09 7d 0a 20 20 ByteCode(. .}.
4aa0: 20 20 20 7d 0a 20 0a 2d 20 20 20 20 63 61 73 65 }. .- case
4ab0: 20 49 4e 53 54 5f 4c 53 45 54 5f 46 4c 41 54 3a INST_LSET_FLAT:
4ac0: 20 7b 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 {.+ CASE(INS
4ad0: 54 5f 4c 53 45 54 5f 46 4c 41 54 29 3a 20 7b 0a T_LSET_FLAT): {.
4ae0: 20 09 2f 2a 0a 20 09 20 2a 20 4c 73 65 74 20 77 ./*. . * Lset w
4af0: 69 74 68 20 33 2c 20 35 2c 20 6f 72 20 6d 6f 72 ith 3, 5, or mor
4b00: 65 20 61 72 67 73 2e 20 47 65 74 20 74 68 65 20 e args. Get the
4b10: 6e 75 6d 62 65 72 20 6f 66 20 69 6e 64 65 78 20 number of index
4b20: 61 72 67 73 2e 0a 20 09 20 2a 2f 0a 40 40 20 2d args.. . */.@@ -
4b30: 33 35 37 38 2c 37 20 2b 33 36 37 38 2c 37 20 40 3578,7 +3678,7 @
4b40: 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 @ TclExecuteByte
4b50: 43 6f 64 65 28 0a 20 09 7d 0a 20 20 20 20 20 7d Code(. .}. }
4b60: 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 . .- case INS
4b70: 54 5f 4c 53 45 54 5f 4c 49 53 54 3a 20 7b 0a 2b T_LSET_LIST: {.+
4b80: 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 4c 53 CASE(INST_LS
4b90: 45 54 5f 4c 49 53 54 29 3a 20 7b 0a 20 09 2f 2a ET_LIST): {. ./*
4ba0: 0a 20 09 20 2a 20 27 6c 73 65 74 27 20 77 69 74 . . * 'lset' wit
4bb0: 68 20 34 20 61 72 67 73 2e 0a 20 09 20 2a 2f 0a h 4 args.. . */.
4bc0: 40 40 20 2d 33 36 32 37 2c 37 20 2b 33 37 32 37 @@ -3627,7 +3727
4bd0: 2c 37 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 ,7 @@ TclExecute
4be0: 42 79 74 65 43 6f 64 65 28 0a 20 09 7d 0a 20 20 ByteCode(. .}.
4bf0: 20 20 20 7d 0a 20 0a 2d 20 20 20 20 63 61 73 65 }. .- case
4c00: 20 49 4e 53 54 5f 4c 49 53 54 5f 52 41 4e 47 45 INST_LIST_RANGE
4c10: 5f 49 4d 4d 3a 20 7b 0a 2b 20 20 20 20 43 41 53 _IMM: {.+ CAS
4c20: 45 28 49 4e 53 54 5f 4c 49 53 54 5f 52 41 4e 47 E(INST_LIST_RANG
4c30: 45 5f 49 4d 4d 29 3a 20 7b 0a 20 09 2f 2a 2a 2a E_IMM): {. ./***
4c40: 20 6c 72 61 6e 67 65 20 77 69 74 68 20 6f 62 6a lrange with obj
4c50: 63 3d 3d 34 20 61 6e 64 20 62 6f 74 68 20 69 6e c==4 and both in
4c60: 64 69 63 65 73 20 69 6e 20 62 79 74 65 63 6f 64 dices in bytecod
4c70: 65 20 73 74 72 65 61 6d 20 2a 2a 2a 2f 0a 20 0a e stream ***/. .
4c80: 20 09 69 6e 74 20 6c 69 73 74 63 2c 20 66 72 6f .int listc, fro
4c90: 6d 49 64 78 2c 20 74 6f 49 64 78 3b 0a 40 40 20 mIdx, toIdx;.@@
4ca0: 2d 33 37 30 38 2c 38 20 2b 33 38 30 38 2c 38 20 -3708,8 +3808,8
4cb0: 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 @@ TclExecuteByt
4cc0: 65 43 6f 64 65 28 0a 20 09 4e 45 58 54 5f 49 4e eCode(. .NEXT_IN
4cd0: 53 54 5f 46 28 39 2c 20 31 2c 20 31 29 3b 0a 20 ST_F(9, 1, 1);.
4ce0: 20 20 20 20 7d 0a 20 0a 2d 20 20 20 20 63 61 73 }. .- cas
4cf0: 65 20 49 4e 53 54 5f 4c 49 53 54 5f 49 4e 3a 0a e INST_LIST_IN:.
4d00: 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 4c - case INST_L
4d10: 49 53 54 5f 4e 4f 54 5f 49 4e 3a 20 7b 0a 2b 20 IST_NOT_IN: {.+
4d20: 20 20 20 43 41 53 45 28 49 4e 53 54 5f 4c 49 53 CASE(INST_LIS
4d30: 54 5f 49 4e 29 3a 0a 2b 20 20 20 20 43 41 53 45 T_IN):.+ CASE
4d40: 28 49 4e 53 54 5f 4c 49 53 54 5f 4e 4f 54 5f 49 (INST_LIST_NOT_I
4d50: 4e 29 3a 20 7b 0a 20 09 2f 2a 0a 20 09 20 2a 20 N): {. ./*. . *
4d60: 42 61 73 69 63 20 6c 69 73 74 20 63 6f 6e 74 61 Basic list conta
4d70: 69 6e 6d 65 6e 74 20 6f 70 65 72 61 74 6f 72 73 inment operators
4d80: 2e 0a 20 09 20 2a 2f 0a 40 40 20 2d 33 37 38 35 .. . */.@@ -3785
4d90: 2c 38 20 2b 33 38 38 35 2c 38 20 40 40 20 54 63 ,8 +3885,8 @@ Tc
4da0: 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 lExecuteByteCode
4db0: 28 0a 20 20 20 20 20 20 2a 20 2d 2d 2d 2d 2d 2d (. * ------
4dc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4dd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4de0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4df0: 2d 2d 2d 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 2d ---. */. .-
4e00: 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 53 54 case INST_ST
4e10: 52 5f 45 51 3a 0a 2d 20 20 20 20 63 61 73 65 20 R_EQ:.- case
4e20: 49 4e 53 54 5f 53 54 52 5f 4e 45 51 3a 20 7b 0a INST_STR_NEQ: {.
4e30: 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 53 + CASE(INST_S
4e40: 54 52 5f 45 51 29 3a 0a 2b 20 20 20 20 43 41 53 TR_EQ):.+ CAS
4e50: 45 28 49 4e 53 54 5f 53 54 52 5f 4e 45 51 29 3a E(INST_STR_NEQ):
4e60: 20 7b 0a 20 09 2f 2a 0a 20 09 20 2a 20 53 74 72 {. ./*. . * Str
4e70: 69 6e 67 20 28 69 6e 29 65 71 75 61 6c 69 74 79 ing (in)equality
4e80: 20 63 68 65 63 6b 0a 20 09 20 2a 20 54 4f 44 4f check. . * TODO
4e90: 3a 20 43 6f 6e 73 69 64 65 72 20 6d 65 72 67 69 : Consider mergi
4ea0: 6e 67 20 69 6e 74 6f 20 49 4e 53 54 5f 53 54 52 ng into INST_STR
4eb0: 5f 43 4d 50 0a 40 40 20 2d 33 38 35 31 2c 37 20 _CMP.@@ -3851,7
4ec0: 2b 33 39 35 31 2c 37 20 40 40 20 54 63 6c 45 78 +3951,7 @@ TclEx
4ed0: 65 63 75 74 65 42 79 74 65 43 6f 64 65 28 0a 20 ecuteByteCode(.
4ee0: 09 4e 45 58 54 5f 49 4e 53 54 5f 46 28 30 2c 20 .NEXT_INST_F(0,
4ef0: 32 2c 20 31 29 3b 0a 20 20 20 20 20 7d 0a 20 0a 2, 1);. }. .
4f00: 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 53 - case INST_S
4f10: 54 52 5f 43 4d 50 3a 20 7b 0a 2b 20 20 20 20 43 TR_CMP: {.+ C
4f20: 41 53 45 28 49 4e 53 54 5f 53 54 52 5f 43 4d 50 ASE(INST_STR_CMP
4f30: 29 3a 20 7b 0a 20 09 2f 2a 0a 20 09 20 2a 20 53 ): {. ./*. . * S
4f40: 74 72 69 6e 67 20 63 6f 6d 70 61 72 65 2e 0a 20 tring compare..
4f50: 09 20 2a 2f 0a 40 40 20 2d 33 39 36 30 2c 37 20 . */.@@ -3960,7
4f60: 2b 34 30 36 30 2c 37 20 40 40 20 54 63 6c 45 78 +4060,7 @@ TclEx
4f70: 65 63 75 74 65 42 79 74 65 43 6f 64 65 28 0a 20 ecuteByteCode(.
4f80: 09 4e 45 58 54 5f 49 4e 53 54 5f 46 28 31 2c 20 .NEXT_INST_F(1,
4f90: 32 2c 20 31 29 3b 0a 20 20 20 20 20 7d 0a 20 0a 2, 1);. }. .
4fa0: 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 53 - case INST_S
4fb0: 54 52 5f 4c 45 4e 3a 20 7b 0a 2b 20 20 20 20 43 TR_LEN: {.+ C
4fc0: 41 53 45 28 49 4e 53 54 5f 53 54 52 5f 4c 45 4e ASE(INST_STR_LEN
4fd0: 29 3a 20 7b 0a 20 09 69 6e 74 20 6c 65 6e 67 74 ): {. .int lengt
4fe0: 68 3b 0a 20 09 54 63 6c 5f 4f 62 6a 20 2a 76 61 h;. .Tcl_Obj *va
4ff0: 6c 75 65 50 74 72 3b 0a 20 0a 40 40 20 2d 33 39 luePtr;. .@@ -39
5000: 37 36 2c 37 20 2b 34 30 37 36 2c 37 20 40 40 20 76,7 +4076,7 @@
5010: 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f TclExecuteByteCo
5020: 64 65 28 0a 20 09 4e 45 58 54 5f 49 4e 53 54 5f de(. .NEXT_INST_
5030: 46 28 31 2c 20 31 2c 20 31 29 3b 0a 20 20 20 20 F(1, 1, 1);.
5040: 20 7d 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 }. .- case I
5050: 4e 53 54 5f 53 54 52 5f 49 4e 44 45 58 3a 20 7b NST_STR_INDEX: {
5060: 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f .+ CASE(INST_
5070: 53 54 52 5f 49 4e 44 45 58 29 3a 20 7b 0a 20 09 STR_INDEX): {. .
5080: 2f 2a 0a 20 09 20 2a 20 53 74 72 69 6e 67 20 63 /*. . * String c
5090: 6f 6d 70 61 72 65 2e 0a 20 09 20 2a 2f 0a 40 40 ompare.. . */.@@
50a0: 20 2d 34 30 34 31 2c 37 20 2b 34 31 34 31 2c 37 -4041,7 +4141,7
50b0: 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 @@ TclExecuteBy
50c0: 74 65 43 6f 64 65 28 0a 20 09 4e 45 58 54 5f 49 teCode(. .NEXT_I
50d0: 4e 53 54 5f 46 28 31 2c 20 32 2c 20 31 29 3b 0a NST_F(1, 2, 1);.
50e0: 20 20 20 20 20 7d 0a 20 0a 2d 20 20 20 20 63 61 }. .- ca
50f0: 73 65 20 49 4e 53 54 5f 53 54 52 5f 4d 41 54 43 se INST_STR_MATC
5100: 48 3a 20 7b 0a 2b 20 20 20 20 43 41 53 45 28 49 H: {.+ CASE(I
5110: 4e 53 54 5f 53 54 52 5f 4d 41 54 43 48 29 3a 20 NST_STR_MATCH):
5120: 7b 0a 20 09 69 6e 74 20 6e 6f 63 61 73 65 2c 20 {. .int nocase,
5130: 6d 61 74 63 68 3b 0a 20 09 54 63 6c 5f 4f 62 6a match;. .Tcl_Obj
5140: 20 2a 76 61 6c 75 65 50 74 72 2c 20 2a 76 61 6c *valuePtr, *val
5150: 75 65 32 50 74 72 3b 0a 20 0a 40 40 20 2d 34 30 ue2Ptr;. .@@ -40
5160: 37 39 2c 31 32 20 2b 34 31 37 39 2c 31 32 20 40 79,12 +4179,12 @
5170: 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 @ TclExecuteByte
5180: 43 6f 64 65 28 0a 20 09 4e 45 58 54 5f 49 4e 53 Code(. .NEXT_INS
5190: 54 5f 46 28 32 2c 20 32 2c 20 31 29 3b 0a 20 20 T_F(2, 2, 1);.
51a0: 20 20 20 7d 0a 20 0a 2d 20 20 20 20 63 61 73 65 }. .- case
51b0: 20 49 4e 53 54 5f 45 51 3a 0a 2d 20 20 20 20 63 INST_EQ:.- c
51c0: 61 73 65 20 49 4e 53 54 5f 4e 45 51 3a 0a 2d 20 ase INST_NEQ:.-
51d0: 20 20 20 63 61 73 65 20 49 4e 53 54 5f 4c 54 3a case INST_LT:
51e0: 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f .- case INST_
51f0: 47 54 3a 0a 2d 20 20 20 20 63 61 73 65 20 49 4e GT:.- case IN
5200: 53 54 5f 4c 45 3a 0a 2d 20 20 20 20 63 61 73 65 ST_LE:.- case
5210: 20 49 4e 53 54 5f 47 45 3a 20 7b 0a 2b 20 20 20 INST_GE: {.+
5220: 20 43 41 53 45 28 49 4e 53 54 5f 45 51 29 3a 0a CASE(INST_EQ):.
5230: 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 4e + CASE(INST_N
5240: 45 51 29 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 EQ):.+ CASE(I
5250: 4e 53 54 5f 4c 54 29 3a 0a 2b 20 20 20 20 43 41 NST_LT):.+ CA
5260: 53 45 28 49 4e 53 54 5f 47 54 29 3a 0a 2b 20 20 SE(INST_GT):.+
5270: 20 20 43 41 53 45 28 49 4e 53 54 5f 4c 45 29 3a CASE(INST_LE):
5280: 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f .+ CASE(INST_
5290: 47 45 29 3a 20 7b 0a 20 09 54 63 6c 5f 4f 62 6a GE): {. .Tcl_Obj
52a0: 20 2a 76 61 6c 75 65 50 74 72 20 3d 20 4f 42 4a *valuePtr = OBJ
52b0: 5f 55 4e 44 45 52 5f 54 4f 53 3b 0a 20 09 54 63 _UNDER_TOS;. .Tc
52c0: 6c 5f 4f 62 6a 20 2a 76 61 6c 75 65 32 50 74 72 l_Obj *value2Ptr
52d0: 20 3d 20 4f 42 4a 5f 41 54 5f 54 4f 53 3b 0a 20 = OBJ_AT_TOS;.
52e0: 09 43 6c 69 65 6e 74 44 61 74 61 20 70 74 72 31 .ClientData ptr1
52f0: 2c 20 70 74 72 32 3b 0a 40 40 20 2d 34 33 39 36 , ptr2;.@@ -4396
5300: 2c 39 20 2b 34 34 39 36 2c 39 20 40 40 20 54 63 ,9 +4496,9 @@ Tc
5310: 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 lExecuteByteCode
5320: 28 0a 20 09 4e 45 58 54 5f 49 4e 53 54 5f 46 28 (. .NEXT_INST_F(
5330: 30 2c 20 32 2c 20 31 29 3b 0a 20 20 20 20 20 7d 0, 2, 1);. }
5340: 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 . .- case INS
5350: 54 5f 4d 4f 44 3a 0a 2d 20 20 20 20 63 61 73 65 T_MOD:.- case
5360: 20 49 4e 53 54 5f 4c 53 48 49 46 54 3a 0a 2d 20 INST_LSHIFT:.-
5370: 20 20 20 63 61 73 65 20 49 4e 53 54 5f 52 53 48 case INST_RSH
5380: 49 46 54 3a 20 7b 0a 2b 20 20 20 20 43 41 53 45 IFT: {.+ CASE
5390: 28 49 4e 53 54 5f 4d 4f 44 29 3a 0a 2b 20 20 20 (INST_MOD):.+
53a0: 20 43 41 53 45 28 49 4e 53 54 5f 4c 53 48 49 46 CASE(INST_LSHIF
53b0: 54 29 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e T):.+ CASE(IN
53c0: 53 54 5f 52 53 48 49 46 54 29 3a 20 7b 0a 20 09 ST_RSHIFT): {. .
53d0: 54 63 6c 5f 4f 62 6a 20 2a 76 61 6c 75 65 32 50 Tcl_Obj *value2P
53e0: 74 72 20 3d 20 4f 42 4a 5f 41 54 5f 54 4f 53 3b tr = OBJ_AT_TOS;
53f0: 0a 20 09 54 63 6c 5f 4f 62 6a 20 2a 76 61 6c 75 . .Tcl_Obj *valu
5400: 65 50 74 72 20 3d 20 4f 42 4a 5f 55 4e 44 45 52 ePtr = OBJ_UNDER
5410: 5f 54 4f 53 3b 0a 20 09 43 6c 69 65 6e 74 44 61 _TOS;. .ClientDa
5420: 74 61 20 70 74 72 31 2c 20 70 74 72 32 3b 0a 40 ta ptr1, ptr2;.@
5430: 40 20 2d 34 38 35 35 2c 39 20 2b 34 39 35 35 2c @ -4855,9 +4955,
5440: 39 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 9 @@ TclExecuteB
5450: 79 74 65 43 6f 64 65 28 0a 20 09 4e 45 58 54 5f yteCode(. .NEXT_
5460: 49 4e 53 54 5f 46 28 31 2c 20 32 2c 20 31 29 3b INST_F(1, 2, 1);
5470: 0a 20 20 20 20 20 7d 0a 20 0a 2d 20 20 20 20 63 . }. .- c
5480: 61 73 65 20 49 4e 53 54 5f 42 49 54 4f 52 3a 0a ase INST_BITOR:.
5490: 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 42 - case INST_B
54a0: 49 54 58 4f 52 3a 0a 2d 20 20 20 20 63 61 73 65 ITXOR:.- case
54b0: 20 49 4e 53 54 5f 42 49 54 41 4e 44 3a 20 7b 0a INST_BITAND: {.
54c0: 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 42 + CASE(INST_B
54d0: 49 54 4f 52 29 3a 0a 2b 20 20 20 20 43 41 53 45 ITOR):.+ CASE
54e0: 28 49 4e 53 54 5f 42 49 54 58 4f 52 29 3a 0a 2b (INST_BITXOR):.+
54f0: 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 42 49 CASE(INST_BI
5500: 54 41 4e 44 29 3a 20 7b 0a 20 09 43 6c 69 65 6e TAND): {. .Clien
5510: 74 44 61 74 61 20 70 74 72 31 2c 20 70 74 72 32 tData ptr1, ptr2
5520: 3b 0a 20 09 69 6e 74 20 74 79 70 65 31 2c 20 74 ;. .int type1, t
5530: 79 70 65 32 3b 0a 20 09 54 63 6c 5f 4f 62 6a 20 ype2;. .Tcl_Obj
5540: 2a 76 61 6c 75 65 32 50 74 72 20 3d 20 4f 42 4a *value2Ptr = OBJ
5550: 5f 41 54 5f 54 4f 53 3b 0a 40 40 20 2d 35 30 39 _AT_TOS;.@@ -509
5560: 38 2c 31 31 20 2b 35 31 39 38 2c 31 31 20 40 40 8,11 +5198,11 @@
5570: 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 TclExecuteByteC
5580: 6f 64 65 28 0a 20 09 7d 0a 20 20 20 20 20 7d 0a ode(. .}. }.
5590: 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 .- case INST
55a0: 5f 45 58 50 4f 4e 3a 0a 2d 20 20 20 20 63 61 73 _EXPON:.- cas
55b0: 65 20 49 4e 53 54 5f 41 44 44 3a 0a 2d 20 20 20 e INST_ADD:.-
55c0: 20 63 61 73 65 20 49 4e 53 54 5f 53 55 42 3a 0a case INST_SUB:.
55d0: 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 44 - case INST_D
55e0: 49 56 3a 0a 2d 20 20 20 20 63 61 73 65 20 49 4e IV:.- case IN
55f0: 53 54 5f 4d 55 4c 54 3a 20 7b 0a 2b 20 20 20 20 ST_MULT: {.+
5600: 43 41 53 45 28 49 4e 53 54 5f 45 58 50 4f 4e 29 CASE(INST_EXPON)
5610: 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 :.+ CASE(INST
5620: 5f 41 44 44 29 3a 0a 2b 20 20 20 20 43 41 53 45 _ADD):.+ CASE
5630: 28 49 4e 53 54 5f 53 55 42 29 3a 0a 2b 20 20 20 (INST_SUB):.+
5640: 20 43 41 53 45 28 49 4e 53 54 5f 44 49 56 29 3a CASE(INST_DIV):
5650: 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f .+ CASE(INST_
5660: 4d 55 4c 54 29 3a 20 7b 0a 20 09 43 6c 69 65 6e MULT): {. .Clien
5670: 74 44 61 74 61 20 70 74 72 31 2c 20 70 74 72 32 tData ptr1, ptr2
5680: 3b 0a 20 09 69 6e 74 20 74 79 70 65 31 2c 20 74 ;. .int type1, t
5690: 79 70 65 32 3b 0a 20 09 54 63 6c 5f 4f 62 6a 20 ype2;. .Tcl_Obj
56a0: 2a 76 61 6c 75 65 32 50 74 72 20 3d 20 4f 42 4a *value2Ptr = OBJ
56b0: 5f 41 54 5f 54 4f 53 3b 0a 40 40 20 2d 35 38 33 _AT_TOS;.@@ -583
56c0: 31 2c 37 20 2b 35 39 33 31 2c 37 20 40 40 20 54 1,7 +5931,7 @@ T
56d0: 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 clExecuteByteCod
56e0: 65 28 0a 20 09 7d 0a 20 20 20 20 20 7d 0a 20 0a e(. .}. }. .
56f0: 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 4c - case INST_L
5700: 4e 4f 54 3a 20 7b 0a 2b 20 20 20 20 43 41 53 45 NOT: {.+ CASE
5710: 28 49 4e 53 54 5f 4c 4e 4f 54 29 3a 20 7b 0a 20 (INST_LNOT): {.
5720: 09 69 6e 74 20 62 3b 0a 20 09 54 63 6c 5f 4f 62 .int b;. .Tcl_Ob
5730: 6a 20 2a 76 61 6c 75 65 50 74 72 20 3d 20 4f 42 j *valuePtr = OB
5740: 4a 5f 41 54 5f 54 4f 53 3b 0a 20 0a 40 40 20 2d J_AT_TOS;. .@@ -
5750: 35 38 34 39 2c 37 20 2b 35 39 34 39 2c 37 20 40 5849,7 +5949,7 @
5760: 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 @ TclExecuteByte
5770: 43 6f 64 65 28 0a 20 09 4e 45 58 54 5f 49 4e 53 Code(. .NEXT_INS
5780: 54 5f 46 28 31 2c 20 31 2c 20 31 29 3b 0a 20 20 T_F(1, 1, 1);.
5790: 20 20 20 7d 0a 20 0a 2d 20 20 20 20 63 61 73 65 }. .- case
57a0: 20 49 4e 53 54 5f 42 49 54 4e 4f 54 3a 20 7b 0a INST_BITNOT: {.
57b0: 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 42 + CASE(INST_B
57c0: 49 54 4e 4f 54 29 3a 20 7b 0a 20 09 6d 70 5f 69 ITNOT): {. .mp_i
57d0: 6e 74 20 62 69 67 3b 0a 20 09 43 6c 69 65 6e 74 nt big;. .Client
57e0: 44 61 74 61 20 70 74 72 3b 0a 20 09 69 6e 74 20 Data ptr;. .int
57f0: 74 79 70 65 3b 0a 40 40 20 2d 35 39 30 31 2c 37 type;.@@ -5901,7
5800: 20 2b 36 30 30 31 2c 37 20 40 40 20 54 63 6c 45 +6001,7 @@ TclE
5810: 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 28 0a xecuteByteCode(.
5820: 20 09 4e 45 58 54 5f 49 4e 53 54 5f 46 28 31 2c .NEXT_INST_F(1,
5830: 20 30 2c 20 30 29 3b 0a 20 20 20 20 20 7d 0a 20 0, 0);. }.
5840: 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f .- case INST_
5850: 55 4d 49 4e 55 53 3a 20 7b 0a 2b 20 20 20 20 43 UMINUS: {.+ C
5860: 41 53 45 28 49 4e 53 54 5f 55 4d 49 4e 55 53 29 ASE(INST_UMINUS)
5870: 3a 20 7b 0a 20 09 43 6c 69 65 6e 74 44 61 74 61 : {. .ClientData
5880: 20 70 74 72 3b 0a 20 09 69 6e 74 20 74 79 70 65 ptr;. .int type
5890: 3b 0a 20 09 54 63 6c 5f 4f 62 6a 20 2a 76 61 6c ;. .Tcl_Obj *val
58a0: 75 65 50 74 72 20 3d 20 4f 42 4a 5f 41 54 5f 54 uePtr = OBJ_AT_T
58b0: 4f 53 3b 0a 40 40 20 2d 35 39 39 32 2c 38 20 2b OS;.@@ -5992,8 +
58c0: 36 30 39 32 2c 38 20 40 40 20 54 63 6c 45 78 65 6092,8 @@ TclExe
58d0: 63 75 74 65 42 79 74 65 43 6f 64 65 28 0a 20 09 cuteByteCode(. .
58e0: 7d 0a 20 20 20 20 20 7d 0a 20 0a 2d 20 20 20 20 }. }. .-
58f0: 63 61 73 65 20 49 4e 53 54 5f 55 50 4c 55 53 3a case INST_UPLUS:
5900: 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f .- case INST_
5910: 54 52 59 5f 43 56 54 5f 54 4f 5f 4e 55 4d 45 52 TRY_CVT_TO_NUMER
5920: 49 43 3a 20 7b 0a 2b 20 20 20 20 43 41 53 45 28 IC: {.+ CASE(
5930: 49 4e 53 54 5f 55 50 4c 55 53 29 3a 0a 2b 20 20 INST_UPLUS):.+
5940: 20 20 43 41 53 45 28 49 4e 53 54 5f 54 52 59 5f CASE(INST_TRY_
5950: 43 56 54 5f 54 4f 5f 4e 55 4d 45 52 49 43 29 3a CVT_TO_NUMERIC):
5960: 20 7b 0a 20 09 2f 2a 0a 20 09 20 2a 20 54 72 79 {. ./*. . * Try
5970: 20 74 6f 20 63 6f 6e 76 65 72 74 20 74 68 65 20 to convert the
5980: 74 6f 70 6d 6f 73 74 20 73 74 61 63 6b 20 6f 62 topmost stack ob
5990: 6a 65 63 74 20 74 6f 20 6e 75 6d 65 72 69 63 20 ject to numeric
59a0: 6f 62 6a 65 63 74 2e 20 54 68 69 73 20 69 73 0a object. This is.
59b0: 20 09 20 2a 20 64 6f 6e 65 20 69 6e 20 6f 72 64 . * done in ord
59c0: 65 72 20 74 6f 20 73 75 70 70 6f 72 74 20 5b 65 er to support [e
59d0: 78 70 72 5d 27 73 20 70 6f 6c 69 63 79 20 6f 66 xpr]'s policy of
59e0: 20 69 6e 74 65 72 70 72 65 74 69 6e 67 20 6f 70 interpreting op
59f0: 65 72 61 6e 64 73 0a 40 40 20 2d 36 30 37 38 2c erands.@@ -6078,
5a00: 37 20 2b 36 31 37 38 2c 37 20 40 40 20 54 63 6c 7 +6178,7 @@ Tcl
5a10: 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 28 ExecuteByteCode(
5a20: 0a 20 09 4e 45 58 54 5f 49 4e 53 54 5f 46 28 31 . .NEXT_INST_F(1
5a30: 2c 20 30 2c 20 30 29 3b 0a 20 20 20 20 20 7d 0a , 0, 0);. }.
5a40: 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 .- case INST
5a50: 5f 42 52 45 41 4b 3a 0a 2b 20 20 20 20 43 41 53 _BREAK:.+ CAS
5a60: 45 28 49 4e 53 54 5f 42 52 45 41 4b 29 3a 0a 20 E(INST_BREAK):.
5a70: 09 2f 2a 0a 20 09 44 45 43 41 43 48 45 5f 53 54 ./*. .DECACHE_ST
5a80: 41 43 4b 5f 49 4e 46 4f 28 29 3b 0a 20 09 54 63 ACK_INFO();. .Tc
5a90: 6c 5f 52 65 73 65 74 52 65 73 75 6c 74 28 69 6e l_ResetResult(in
5aa0: 74 65 72 70 29 3b 0a 40 40 20 2d 36 30 38 38 2c terp);.@@ -6088,
5ab0: 37 20 2b 36 31 38 38 2c 37 20 40 40 20 54 63 6c 7 +6188,7 @@ Tcl
5ac0: 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 28 ExecuteByteCode(
5ad0: 0a 20 09 63 6c 65 61 6e 75 70 20 3d 20 30 3b 0a . .cleanup = 0;.
5ae0: 20 09 67 6f 74 6f 20 70 72 6f 63 65 73 73 45 78 .goto processEx
5af0: 63 65 70 74 69 6f 6e 52 65 74 75 72 6e 3b 0a 20 ceptionReturn;.
5b00: 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f .- case INST_
5b10: 43 4f 4e 54 49 4e 55 45 3a 0a 2b 20 20 20 20 43 CONTINUE:.+ C
5b20: 41 53 45 28 49 4e 53 54 5f 43 4f 4e 54 49 4e 55 ASE(INST_CONTINU
5b30: 45 29 3a 0a 20 09 2f 2a 0a 20 09 44 45 43 41 43 E):. ./*. .DECAC
5b40: 48 45 5f 53 54 41 43 4b 5f 49 4e 46 4f 28 29 3b HE_STACK_INFO();
5b50: 0a 20 09 54 63 6c 5f 52 65 73 65 74 52 65 73 75 . .Tcl_ResetResu
5b60: 6c 74 28 69 6e 74 65 72 70 29 3b 0a 40 40 20 2d lt(interp);.@@ -
5b70: 36 30 39 38 2c 37 20 2b 36 31 39 38 2c 37 20 40 6098,7 +6198,7 @
5b80: 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 @ TclExecuteByte
5b90: 43 6f 64 65 28 0a 20 09 63 6c 65 61 6e 75 70 20 Code(. .cleanup
5ba0: 3d 20 30 3b 0a 20 09 67 6f 74 6f 20 70 72 6f 63 = 0;. .goto proc
5bb0: 65 73 73 45 78 63 65 70 74 69 6f 6e 52 65 74 75 essExceptionRetu
5bc0: 72 6e 3b 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 rn;. .- case
5bd0: 49 4e 53 54 5f 46 4f 52 45 41 43 48 5f 53 54 41 INST_FOREACH_STA
5be0: 52 54 34 3a 20 7b 0a 2b 20 20 20 20 43 41 53 45 RT4: {.+ CASE
5bf0: 28 49 4e 53 54 5f 46 4f 52 45 41 43 48 5f 53 54 (INST_FOREACH_ST
5c00: 41 52 54 34 29 3a 20 7b 0a 20 09 2f 2a 0a 20 09 ART4): {. ./*. .
5c10: 20 2a 20 49 6e 69 74 69 61 6c 69 7a 65 20 74 68 * Initialize th
5c20: 65 20 74 65 6d 70 6f 72 61 72 79 20 6c 6f 63 61 e temporary loca
5c30: 6c 20 76 61 72 20 74 68 61 74 20 68 6f 6c 64 73 l var that holds
5c40: 20 74 68 65 20 63 6f 75 6e 74 20 6f 66 20 74 68 the count of th
5c50: 65 0a 20 09 20 2a 20 6e 75 6d 62 65 72 20 6f 66 e. . * number of
5c60: 20 69 74 65 72 61 74 69 6f 6e 73 20 6f 66 20 74 iterations of t
5c70: 68 65 20 6c 6f 6f 70 20 62 6f 64 79 20 74 6f 20 he loop body to
5c80: 2d 31 2e 0a 40 40 20 2d 36 31 33 37 2c 37 20 2b -1..@@ -6137,7 +
5c90: 36 32 33 37 2c 37 20 40 40 20 54 63 6c 45 78 65 6237,7 @@ TclExe
5ca0: 63 75 74 65 42 79 74 65 43 6f 64 65 28 0a 20 23 cuteByteCode(. #
5cb0: 65 6e 64 69 66 0a 20 20 20 20 20 7d 0a 20 0a 2d endif. }. .-
5cc0: 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 46 4f case INST_FO
5cd0: 52 45 41 43 48 5f 53 54 45 50 34 3a 20 7b 0a 2b REACH_STEP4: {.+
5ce0: 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 46 4f CASE(INST_FO
5cf0: 52 45 41 43 48 5f 53 54 45 50 34 29 3a 20 7b 0a REACH_STEP4): {.
5d00: 20 09 2f 2a 0a 20 09 20 2a 20 22 53 74 65 70 22 ./*. . * "Step"
5d10: 20 61 20 66 6f 72 65 61 63 68 20 6c 6f 6f 70 20 a foreach loop
5d20: 28 69 2e 65 2e 2c 20 62 65 67 69 6e 20 69 74 73 (i.e., begin its
5d30: 20 6e 65 78 74 20 69 74 65 72 61 74 69 6f 6e 29 next iteration)
5d40: 20 62 79 20 61 73 73 69 67 6e 69 6e 67 0a 20 09 by assigning. .
5d50: 20 2a 20 74 68 65 20 6e 65 78 74 20 76 61 6c 75 * the next valu
5d60: 65 20 6c 69 73 74 20 65 6c 65 6d 65 6e 74 20 74 e list element t
5d70: 6f 20 65 61 63 68 20 6c 6f 6f 70 20 76 61 72 2e o each loop var.
5d80: 0a 40 40 20 2d 36 32 36 39 2c 37 20 2b 36 33 36 .@@ -6269,7 +636
5d90: 39 2c 37 20 40 40 20 54 63 6c 45 78 65 63 75 74 9,7 @@ TclExecut
5da0: 65 42 79 74 65 43 6f 64 65 28 0a 20 09 7d 0a 20 eByteCode(. .}.
5db0: 20 20 20 20 7d 0a 20 0a 2d 20 20 20 20 63 61 73 }. .- cas
5dc0: 65 20 49 4e 53 54 5f 42 45 47 49 4e 5f 43 41 54 e INST_BEGIN_CAT
5dd0: 43 48 34 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 CH4:.+ CASE(I
5de0: 4e 53 54 5f 42 45 47 49 4e 5f 43 41 54 43 48 34 NST_BEGIN_CATCH4
5df0: 29 3a 0a 20 09 2f 2a 0a 20 09 20 2a 20 52 65 63 ):. ./*. . * Rec
5e00: 6f 72 64 20 73 74 61 72 74 20 6f 66 20 74 68 65 ord start of the
5e10: 20 63 61 74 63 68 20 63 6f 6d 6d 61 6e 64 20 77 catch command w
5e20: 69 74 68 20 65 78 63 65 70 74 69 6f 6e 20 72 61 ith exception ra
5e30: 6e 67 65 20 69 6e 64 65 78 20 65 71 75 61 6c 0a nge index equal.
5e40: 20 09 20 2a 20 74 6f 20 74 68 65 20 6f 70 65 72 . * to the oper
5e50: 61 6e 64 2e 20 50 75 73 68 20 74 68 65 20 63 75 and. Push the cu
5e60: 72 72 65 6e 74 20 73 74 61 63 6b 20 64 65 70 74 rrent stack dept
5e70: 68 20 6f 6e 74 6f 20 74 68 65 20 73 70 65 63 69 h onto the speci
5e80: 61 6c 20 63 61 74 63 68 0a 40 40 20 2d 36 32 38 al catch.@@ -628
5e90: 32 2c 31 34 20 2b 36 33 38 32 2c 31 34 20 40 40 2,14 +6382,14 @@
5ea0: 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 TclExecuteByteC
5eb0: 6f 64 65 28 0a 20 09 09 28 69 6e 74 29 20 43 55 ode(. ..(int) CU
5ec0: 52 52 5f 44 45 50 54 48 29 29 3b 0a 20 09 4e 45 RR_DEPTH));. .NE
5ed0: 58 54 5f 49 4e 53 54 5f 46 28 35 2c 20 30 2c 20 XT_INST_F(5, 0,
5ee0: 30 29 3b 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 0);. .- case
5ef0: 49 4e 53 54 5f 45 4e 44 5f 43 41 54 43 48 3a 0a INST_END_CATCH:.
5f00: 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 45 + CASE(INST_E
5f10: 4e 44 5f 43 41 54 43 48 29 3a 0a 20 09 63 61 74 ND_CATCH):. .cat
5f20: 63 68 54 6f 70 2d 2d 3b 0a 20 09 54 63 6c 5f 52 chTop--;. .Tcl_R
5f30: 65 73 65 74 52 65 73 75 6c 74 28 69 6e 74 65 72 esetResult(inter
5f40: 70 29 3b 0a 20 09 72 65 73 75 6c 74 20 3d 20 54 p);. .result = T
5f50: 43 4c 5f 4f 4b 3b 0a 20 09 54 52 41 43 45 28 28 CL_OK;. .TRACE((
5f60: 22 3d 3e 20 63 61 74 63 68 54 6f 70 3d 25 64 5c "=> catchTop=%d\
5f70: 6e 22 2c 20 28 63 61 74 63 68 54 6f 70 20 2d 20 n", (catchTop -
5f80: 69 6e 69 74 43 61 74 63 68 54 6f 70 20 2d 20 31 initCatchTop - 1
5f90: 29 29 29 3b 0a 20 09 4e 45 58 54 5f 49 4e 53 54 )));. .NEXT_INST
5fa0: 5f 46 28 31 2c 20 30 2c 20 30 29 3b 0a 20 0a 2d _F(1, 0, 0);. .-
5fb0: 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 50 55 case INST_PU
5fc0: 53 48 5f 52 45 53 55 4c 54 3a 0a 2b 20 20 20 20 SH_RESULT:.+
5fd0: 43 41 53 45 28 49 4e 53 54 5f 50 55 53 48 5f 52 CASE(INST_PUSH_R
5fe0: 45 53 55 4c 54 29 3a 0a 20 09 6f 62 6a 52 65 73 ESULT):. .objRes
5ff0: 75 6c 74 50 74 72 20 3d 20 54 63 6c 5f 47 65 74 ultPtr = Tcl_Get
6000: 4f 62 6a 52 65 73 75 6c 74 28 69 6e 74 65 72 70 ObjResult(interp
6010: 29 3b 0a 20 09 54 52 41 43 45 5f 57 49 54 48 5f );. .TRACE_WITH_
6020: 4f 42 4a 28 28 22 3d 3e 20 22 29 2c 20 6f 62 6a OBJ(("=> "), obj
6030: 52 65 73 75 6c 74 50 74 72 29 3b 0a 20 0a 40 40 ResultPtr);. .@@
6040: 20 2d 36 33 30 36 2c 31 32 20 2b 36 34 30 36 2c -6306,12 +6406,
6050: 31 32 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 12 @@ TclExecute
6060: 42 79 74 65 43 6f 64 65 28 0a 20 0a 20 09 4e 45 ByteCode(. . .NE
6070: 58 54 5f 49 4e 53 54 5f 46 28 31 2c 20 30 2c 20 XT_INST_F(1, 0,
6080: 2d 31 29 3b 0a 20 0a 2d 20 20 20 20 63 61 73 65 -1);. .- case
6090: 20 49 4e 53 54 5f 50 55 53 48 5f 52 45 54 55 52 INST_PUSH_RETUR
60a0: 4e 5f 43 4f 44 45 3a 0a 2b 20 20 20 20 43 41 53 N_CODE:.+ CAS
60b0: 45 28 49 4e 53 54 5f 50 55 53 48 5f 52 45 54 55 E(INST_PUSH_RETU
60c0: 52 4e 5f 43 4f 44 45 29 3a 0a 20 09 54 63 6c 4e RN_CODE):. .TclN
60d0: 65 77 49 6e 74 4f 62 6a 28 6f 62 6a 52 65 73 75 ewIntObj(objResu
60e0: 6c 74 50 74 72 2c 20 72 65 73 75 6c 74 29 3b 0a ltPtr, result);.
60f0: 20 09 54 52 41 43 45 28 28 22 3d 3e 20 25 75 5c .TRACE(("=> %u\
6100: 6e 22 2c 20 72 65 73 75 6c 74 29 29 3b 0a 20 09 n", result));. .
6110: 4e 45 58 54 5f 49 4e 53 54 5f 46 28 31 2c 20 30 NEXT_INST_F(1, 0
6120: 2c 20 31 29 3b 0a 20 0a 2d 20 20 20 20 63 61 73 , 1);. .- cas
6130: 65 20 49 4e 53 54 5f 50 55 53 48 5f 52 45 54 55 e INST_PUSH_RETU
6140: 52 4e 5f 4f 50 54 49 4f 4e 53 3a 0a 2b 20 20 20 RN_OPTIONS:.+
6150: 20 43 41 53 45 28 49 4e 53 54 5f 50 55 53 48 5f CASE(INST_PUSH_
6160: 52 45 54 55 52 4e 5f 4f 50 54 49 4f 4e 53 29 3a RETURN_OPTIONS):
6170: 0a 20 09 6f 62 6a 52 65 73 75 6c 74 50 74 72 20 . .objResultPtr
6180: 3d 20 54 63 6c 5f 47 65 74 52 65 74 75 72 6e 4f = Tcl_GetReturnO
6190: 70 74 69 6f 6e 73 28 69 6e 74 65 72 70 2c 20 72 ptions(interp, r
61a0: 65 73 75 6c 74 29 3b 0a 20 09 54 52 41 43 45 5f esult);. .TRACE_
61b0: 57 49 54 48 5f 4f 42 4a 28 28 22 3d 3e 20 22 29 WITH_OBJ(("=> ")
61c0: 2c 20 6f 62 6a 52 65 73 75 6c 74 50 74 72 29 3b , objResultPtr);
61d0: 0a 20 09 4e 45 58 54 5f 49 4e 53 54 5f 46 28 31 . .NEXT_INST_F(1
61e0: 2c 20 30 2c 20 31 29 3b 0a 40 40 20 2d 36 33 32 , 0, 1);.@@ -632
61f0: 32 2c 37 20 2b 36 34 32 32 2c 37 20 40 40 20 54 2,7 +6422,7 @@ T
6200: 63 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 clExecuteByteCod
6210: 65 28 0a 20 09 54 63 6c 5f 4f 62 6a 20 2a 64 69 e(. .Tcl_Obj *di
6220: 63 74 50 74 72 2c 20 2a 76 61 6c 50 74 72 3b 0a ctPtr, *valPtr;.
6230: 20 09 56 61 72 20 2a 76 61 72 50 74 72 3b 0a 20 .Var *varPtr;.
6240: 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f .- case INST_
6250: 44 49 43 54 5f 47 45 54 3a 0a 2b 20 20 20 20 43 DICT_GET:.+ C
6260: 41 53 45 28 49 4e 53 54 5f 44 49 43 54 5f 47 45 ASE(INST_DICT_GE
6270: 54 29 3a 0a 20 09 6f 70 6e 64 20 3d 20 54 63 6c T):. .opnd = Tcl
6280: 47 65 74 55 49 6e 74 34 41 74 50 74 72 28 70 63 GetUInt4AtPtr(pc
6290: 2b 31 29 3b 0a 20 09 54 52 41 43 45 28 28 22 25 +1);. .TRACE(("%
62a0: 75 20 3d 3e 20 22 2c 20 6f 70 6e 64 29 29 3b 0a u => ", opnd));.
62b0: 20 09 64 69 63 74 50 74 72 20 3d 20 4f 42 4a 5f .dictPtr = OBJ_
62c0: 41 54 5f 44 45 50 54 48 28 6f 70 6e 64 29 3b 0a AT_DEPTH(opnd);.
62d0: 40 40 20 2d 36 33 35 36 2c 39 20 2b 36 34 35 36 @@ -6356,9 +6456
62e0: 2c 39 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 ,9 @@ TclExecute
62f0: 42 79 74 65 43 6f 64 65 28 0a 20 09 7d 0a 20 09 ByteCode(. .}. .
6300: 67 6f 74 6f 20 63 68 65 63 6b 46 6f 72 43 61 74 goto checkForCat
6310: 63 68 3b 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 ch;. .- case
6320: 49 4e 53 54 5f 44 49 43 54 5f 53 45 54 3a 0a 2d INST_DICT_SET:.-
6330: 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 44 49 case INST_DI
6340: 43 54 5f 55 4e 53 45 54 3a 0a 2d 20 20 20 20 63 CT_UNSET:.- c
6350: 61 73 65 20 49 4e 53 54 5f 44 49 43 54 5f 49 4e ase INST_DICT_IN
6360: 43 52 5f 49 4d 4d 3a 0a 2b 20 20 20 20 43 41 53 CR_IMM:.+ CAS
6370: 45 28 49 4e 53 54 5f 44 49 43 54 5f 53 45 54 29 E(INST_DICT_SET)
6380: 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 :.+ CASE(INST
6390: 5f 44 49 43 54 5f 55 4e 53 45 54 29 3a 0a 2b 20 _DICT_UNSET):.+
63a0: 20 20 20 43 41 53 45 28 49 4e 53 54 5f 44 49 43 CASE(INST_DIC
63b0: 54 5f 49 4e 43 52 5f 49 4d 4d 29 3a 0a 20 09 6f T_INCR_IMM):. .o
63c0: 70 6e 64 20 3d 20 54 63 6c 47 65 74 55 49 6e 74 pnd = TclGetUInt
63d0: 34 41 74 50 74 72 28 70 63 2b 31 29 3b 0a 20 09 4AtPtr(pc+1);. .
63e0: 6f 70 6e 64 32 20 3d 20 54 63 6c 47 65 74 55 49 opnd2 = TclGetUI
63f0: 6e 74 34 41 74 50 74 72 28 70 63 2b 35 29 3b 0a nt4AtPtr(pc+5);.
6400: 20 0a 40 40 20 2d 36 34 36 36 2c 38 20 2b 36 35 .@@ -6466,8 +65
6410: 36 36 2c 38 20 40 40 20 54 63 6c 45 78 65 63 75 66,8 @@ TclExecu
6420: 74 65 42 79 74 65 43 6f 64 65 28 0a 20 09 54 52 teByteCode(. .TR
6430: 41 43 45 5f 41 50 50 45 4e 44 28 28 22 25 2e 33 ACE_APPEND(("%.3
6440: 30 73 5c 6e 22 2c 20 4f 32 53 28 6f 62 6a 52 65 0s\n", O2S(objRe
6450: 73 75 6c 74 50 74 72 29 29 29 3b 0a 20 09 4e 45 sultPtr)));. .NE
6460: 58 54 5f 49 4e 53 54 5f 56 28 39 2c 20 63 6c 65 XT_INST_V(9, cle
6470: 61 6e 75 70 2c 20 31 29 3b 0a 20 0a 2d 20 20 20 anup, 1);. .-
6480: 20 63 61 73 65 20 49 4e 53 54 5f 44 49 43 54 5f case INST_DICT_
6490: 41 50 50 45 4e 44 3a 0a 2d 20 20 20 20 63 61 73 APPEND:.- cas
64a0: 65 20 49 4e 53 54 5f 44 49 43 54 5f 4c 41 50 50 e INST_DICT_LAPP
64b0: 45 4e 44 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 END:.+ CASE(I
64c0: 4e 53 54 5f 44 49 43 54 5f 41 50 50 45 4e 44 29 NST_DICT_APPEND)
64d0: 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 4e 53 54 :.+ CASE(INST
64e0: 5f 44 49 43 54 5f 4c 41 50 50 45 4e 44 29 3a 0a _DICT_LAPPEND):.
64f0: 20 09 6f 70 6e 64 20 3d 20 54 63 6c 47 65 74 55 .opnd = TclGetU
6500: 49 6e 74 34 41 74 50 74 72 28 70 63 2b 31 29 3b Int4AtPtr(pc+1);
6510: 0a 20 0a 20 09 76 61 72 50 74 72 20 3d 20 26 28 . . .varPtr = &(
6520: 63 6f 6d 70 69 6c 65 64 4c 6f 63 61 6c 73 5b 6f compiledLocals[o
6530: 70 6e 64 5d 29 3b 0a 40 40 20 2d 36 35 39 30 2c pnd]);.@@ -6590,
6540: 37 20 2b 36 36 39 30 2c 37 20 40 40 20 54 63 6c 7 +6690,7 @@ Tcl
6550: 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 28 ExecuteByteCode(
6560: 0a 20 09 56 61 72 20 2a 76 61 72 50 74 72 3b 0a . .Var *varPtr;.
6570: 20 09 54 63 6c 5f 44 69 63 74 53 65 61 72 63 68 .Tcl_DictSearch
6580: 20 2a 73 65 61 72 63 68 50 74 72 3b 0a 20 0a 2d *searchPtr;. .-
6590: 20 20 20 20 63 61 73 65 20 49 4e 53 54 5f 44 49 case INST_DI
65a0: 43 54 5f 46 49 52 53 54 3a 0a 2b 20 20 20 20 43 CT_FIRST:.+ C
65b0: 41 53 45 28 49 4e 53 54 5f 44 49 43 54 5f 46 49 ASE(INST_DICT_FI
65c0: 52 53 54 29 3a 0a 20 09 6f 70 6e 64 20 3d 20 54 RST):. .opnd = T
65d0: 63 6c 47 65 74 55 49 6e 74 34 41 74 50 74 72 28 clGetUInt4AtPtr(
65e0: 70 63 2b 31 29 3b 0a 20 09 54 52 41 43 45 28 28 pc+1);. .TRACE((
65f0: 22 25 75 20 3d 3e 20 22 2c 20 6f 70 6e 64 29 29 "%u => ", opnd))
6600: 3b 0a 20 09 64 69 63 74 50 74 72 20 3d 20 50 4f ;. .dictPtr = PO
6610: 50 5f 4f 42 4a 45 43 54 28 29 3b 0a 40 40 20 2d P_OBJECT();.@@ -
6620: 36 36 31 37 2c 37 20 2b 36 37 31 37 2c 37 20 40 6617,7 +6717,7 @
6630: 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 74 65 @ TclExecuteByte
6640: 43 6f 64 65 28 0a 20 09 54 63 6c 5f 49 6e 63 72 Code(. .Tcl_Incr
6650: 52 65 66 43 6f 75 6e 74 28 73 74 61 74 65 50 74 RefCount(statePt
6660: 72 29 3b 0a 20 09 67 6f 74 6f 20 70 75 73 68 44 r);. .goto pushD
6670: 69 63 74 49 74 65 72 61 74 6f 72 52 65 73 75 6c ictIteratorResul
6680: 74 3b 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 t;. .- case I
6690: 4e 53 54 5f 44 49 43 54 5f 4e 45 58 54 3a 0a 2b NST_DICT_NEXT:.+
66a0: 20 20 20 20 43 41 53 45 28 49 4e 53 54 5f 44 49 CASE(INST_DI
66b0: 43 54 5f 4e 45 58 54 29 3a 0a 20 09 6f 70 6e 64 CT_NEXT):. .opnd
66c0: 20 3d 20 54 63 6c 47 65 74 55 49 6e 74 34 41 74 = TclGetUInt4At
66d0: 50 74 72 28 70 63 2b 31 29 3b 0a 20 09 54 52 41 Ptr(pc+1);. .TRA
66e0: 43 45 28 28 22 25 75 20 3d 3e 20 22 2c 20 6f 70 CE(("%u => ", op
66f0: 6e 64 29 29 3b 0a 20 09 73 74 61 74 65 50 74 72 nd));. .statePtr
6700: 20 3d 20 63 6f 6d 70 69 6c 65 64 4c 6f 63 61 6c = compiledLocal
6710: 73 5b 6f 70 6e 64 5d 2e 76 61 6c 75 65 2e 6f 62 s[opnd].value.ob
6720: 6a 50 74 72 3b 0a 40 40 20 2d 36 36 34 31 2c 37 jPtr;.@@ -6641,7
6730: 20 2b 36 37 34 31 2c 37 20 40 40 20 54 63 6c 45 +6741,7 @@ TclE
6740: 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 28 0a xecuteByteCode(.
6750: 20 09 2f 2a 20 54 4f 44 4f 3a 20 63 6f 6e 73 69 ./* TODO: consi
6760: 64 65 72 20 6f 70 74 20 6c 69 6b 65 20 49 4e 53 der opt like INS
6770: 54 5f 46 4f 52 45 41 43 48 5f 53 54 45 50 34 20 T_FOREACH_STEP4
6780: 2a 2f 0a 20 09 4e 45 58 54 5f 49 4e 53 54 5f 46 */. .NEXT_INST_F
6790: 28 35 2c 20 30 2c 20 31 29 3b 0a 20 0a 2d 20 20 (5, 0, 1);. .-
67a0: 20 20 63 61 73 65 20 49 4e 53 54 5f 44 49 43 54 case INST_DICT
67b0: 5f 44 4f 4e 45 3a 0a 2b 20 20 20 20 43 41 53 45 _DONE:.+ CASE
67c0: 28 49 4e 53 54 5f 44 49 43 54 5f 44 4f 4e 45 29 (INST_DICT_DONE)
67d0: 3a 0a 20 09 6f 70 6e 64 20 3d 20 54 63 6c 47 65 :. .opnd = TclGe
67e0: 74 55 49 6e 74 34 41 74 50 74 72 28 70 63 2b 31 tUInt4AtPtr(pc+1
67f0: 29 3b 0a 20 09 54 52 41 43 45 28 28 22 25 75 20 );. .TRACE(("%u
6800: 3d 3e 20 22 2c 20 6f 70 6e 64 29 29 3b 0a 20 09 => ", opnd));. .
6810: 73 74 61 74 65 50 74 72 20 3d 20 63 6f 6d 70 69 statePtr = compi
6820: 6c 65 64 4c 6f 63 61 6c 73 5b 6f 70 6e 64 5d 2e ledLocals[opnd].
6830: 76 61 6c 75 65 2e 6f 62 6a 50 74 72 3b 0a 40 40 value.objPtr;.@@
6840: 20 2d 36 36 38 32 2c 37 20 2b 36 37 38 32 2c 37 -6682,7 +6782,7
6850: 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 79 @@ TclExecuteBy
6860: 74 65 43 6f 64 65 28 0a 20 09 44 69 63 74 55 70 teCode(. .DictUp
6870: 64 61 74 65 49 6e 66 6f 20 2a 64 75 69 50 74 72 dateInfo *duiPtr
6880: 3b 0a 20 09 56 61 72 20 2a 76 61 72 50 74 72 3b ;. .Var *varPtr;
6890: 0a 20 0a 2d 20 20 20 20 63 61 73 65 20 49 4e 53 . .- case INS
68a0: 54 5f 44 49 43 54 5f 55 50 44 41 54 45 5f 53 54 T_DICT_UPDATE_ST
68b0: 41 52 54 3a 0a 2b 20 20 20 20 43 41 53 45 28 49 ART:.+ CASE(I
68c0: 4e 53 54 5f 44 49 43 54 5f 55 50 44 41 54 45 5f NST_DICT_UPDATE_
68d0: 53 54 41 52 54 29 3a 0a 20 09 6f 70 6e 64 20 3d START):. .opnd =
68e0: 20 54 63 6c 47 65 74 55 49 6e 74 34 41 74 50 74 TclGetUInt4AtPt
68f0: 72 28 70 63 2b 31 29 3b 0a 20 09 6f 70 6e 64 32 r(pc+1);. .opnd2
6900: 20 3d 20 54 63 6c 47 65 74 55 49 6e 74 34 41 74 = TclGetUInt4At
6910: 50 74 72 28 70 63 2b 35 29 3b 0a 20 09 76 61 72 Ptr(pc+5);. .var
6920: 50 74 72 20 3d 20 26 28 63 6f 6d 70 69 6c 65 64 Ptr = &(compiled
6930: 4c 6f 63 61 6c 73 5b 6f 70 6e 64 5d 29 3b 0a 40 Locals[opnd]);.@
6940: 40 20 2d 36 37 33 37 2c 37 20 2b 36 38 33 37 2c @ -6737,7 +6837,
6950: 37 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 42 7 @@ TclExecuteB
6960: 79 74 65 43 6f 64 65 28 0a 20 09 7d 0a 20 09 4e yteCode(. .}. .N
6970: 45 58 54 5f 49 4e 53 54 5f 46 28 39 2c 20 30 2c EXT_INST_F(9, 0,
6980: 20 30 29 3b 0a 20 0a 2d 20 20 20 20 63 61 73 65 0);. .- case
6990: 20 49 4e 53 54 5f 44 49 43 54 5f 55 50 44 41 54 INST_DICT_UPDAT
69a0: 45 5f 45 4e 44 3a 0a 2b 20 20 20 20 43 41 53 45 E_END:.+ CASE
69b0: 28 49 4e 53 54 5f 44 49 43 54 5f 55 50 44 41 54 (INST_DICT_UPDAT
69c0: 45 5f 45 4e 44 29 3a 0a 20 09 6f 70 6e 64 20 3d E_END):. .opnd =
69d0: 20 54 63 6c 47 65 74 55 49 6e 74 34 41 74 50 74 TclGetUInt4AtPt
69e0: 72 28 70 63 2b 31 29 3b 0a 20 09 6f 70 6e 64 32 r(pc+1);. .opnd2
69f0: 20 3d 20 54 63 6c 47 65 74 55 49 6e 74 34 41 74 = TclGetUInt4At
6a00: 50 74 72 28 70 63 2b 35 29 3b 0a 20 09 76 61 72 Ptr(pc+5);. .var
6a10: 50 74 72 20 3d 20 26 28 63 6f 6d 70 69 6c 65 64 Ptr = &(compiled
6a20: 4c 6f 63 61 6c 73 5b 6f 70 6e 64 5d 29 3b 0a 40 Locals[opnd]);.@
6a30: 40 20 2d 36 38 31 31 2c 38 20 2b 36 39 31 31 2c @ -6811,8 +6911,
6a40: 31 30 20 40 40 20 54 63 6c 45 78 65 63 75 74 65 10 @@ TclExecute
6a50: 42 79 74 65 43 6f 64 65 28 0a 20 09 4e 45 58 54 ByteCode(. .NEXT
6a60: 5f 49 4e 53 54 5f 46 28 39 2c 20 31 2c 20 30 29 _INST_F(9, 1, 0)
6a70: 3b 0a 20 20 20 20 20 7d 0a 20 0a 2b 23 69 66 20 ;. }. .+#if
6a80: 21 55 53 45 5f 43 4f 4d 50 55 54 45 44 5f 47 4f !USE_COMPUTED_GO
6a90: 54 4f 0a 20 20 20 20 20 64 65 66 61 75 6c 74 3a TO. default:
6aa0: 0a 20 09 54 63 6c 5f 50 61 6e 69 63 28 22 54 63 . .Tcl_Panic("Tc
6ab0: 6c 45 78 65 63 75 74 65 42 79 74 65 43 6f 64 65 lExecuteByteCode
6ac0: 3a 20 75 6e 72 65 63 6f 67 6e 69 7a 65 64 20 6f : unrecognized o
6ad0: 70 43 6f 64 65 20 25 75 22 2c 20 2a 70 63 29 3b pCode %u", *pc);
6ae0: 0a 2b 23 65 6e 64 69 66 0a 20 20 20 20 20 7d 20 .+#endif. }
6af0: 2f 2a 20 65 6e 64 20 6f 66 20 73 77 69 74 63 68 /* end of switch
6b00: 20 6f 6e 20 6f 70 43 6f 64 65 20 2a 2f 0a 20 0a on opCode */. .
6b10: 20 20 20 20 20 2f 2a 0a /*.