Posted to tcl by miguel at Sat Nov 24 12:33:17 GMT 2007view raw
- % proc foo {} {
- set apa {a {}b c d}
- catch {dict lappend apa a 5}
- catch {dict append apa a 5}
- }
- % tcl::unsupported::disassemble proc foo
- ByteCode 0x0x81e9430, refCt 1, epoch 3, interp 0x0x81854f8 (epoch 3)
- Source "\n set apa {a {}b c d}\n "
- Cmds 5, src 154, inst 87, litObjs 4, aux 0, stkDepth 2, code/src 1.84
- Code 284 = header 104+inst 87+litObj 16+exc 56+aux 0+cmdMap 20
- Proc 0x0x81bad20, refCt 1, args 0, compiled locals 2
- slot 0, scalar, "apa"
- slot 1, scalar, "a"
- Exception ranges 2, depth 1:
- 0: level 0, catch, pc 19-36, catch 42
- 1: level 0, catch, pc 59-78, catch 84
- Commands 5:
- 1: pc 0-4, src 20-38 2: pc 5-44, src 59-87
- 3: pc 19-36, src 66-86 4: pc 45-85, src 108-136
- 5: pc 59-78, src 115-135
- Command 1: "set apa {a {}b c d}"
- (0) push1 0 # "a {}b c d"
- (2) storeScalar1 %v0 # var "apa"
- (4) pop
- Command 2: "catch {dict lappend apa a 5}"
- (5) startCommand +39 1 # next cmd at pc 44
- (14) beginCatch4 0
- Command 3: "dict lappend apa a 5"
- (19) startCommand +18 1 # next cmd at pc 37
- (28) push1 1 # "a"
- (30) push1 2 # "5"
- (32) dictLappend %v0 # var "apa"
- (37) pop
- (38) push1 3 # "0"
- (40) jump1 +3 # pc 43
- (42) pushReturnCode
- (43) endCatch
- (44) pop
- Command 4: "catch {dict append apa a 5}"
- (45) startCommand +41 1 # next cmd at pc 86
- (54) beginCatch4 1
- Command 5: "dict append apa a 5"
- (59) startCommand +20 1 # next cmd at pc 79
- (68) push1 2 # "5"
- (70) push1 2 # "5"
- (72) concat1 2
- (74) dictAppend %v1 # var "a"
- (79) pop
- (80) push1 3 # "0"
- (82) jump1 +3 # pc 85
- (84) pushReturnCode
- (85) endCatch
- (86) done