Posted to tcl by miguel at Sat Nov 24 12:33:17 GMT 2007view raw

  1. % proc foo {} {
  2. set apa {a {}b c d}
  3. catch {dict lappend apa a 5}
  4. catch {dict append apa a 5}
  5. }
  6. % tcl::unsupported::disassemble proc foo
  7. ByteCode 0x0x81e9430, refCt 1, epoch 3, interp 0x0x81854f8 (epoch 3)
  8. Source "\n set apa {a {}b c d}\n "
  9. Cmds 5, src 154, inst 87, litObjs 4, aux 0, stkDepth 2, code/src 1.84
  10. Code 284 = header 104+inst 87+litObj 16+exc 56+aux 0+cmdMap 20
  11. Proc 0x0x81bad20, refCt 1, args 0, compiled locals 2
  12. slot 0, scalar, "apa"
  13. slot 1, scalar, "a"
  14. Exception ranges 2, depth 1:
  15. 0: level 0, catch, pc 19-36, catch 42
  16. 1: level 0, catch, pc 59-78, catch 84
  17. Commands 5:
  18. 1: pc 0-4, src 20-38 2: pc 5-44, src 59-87
  19. 3: pc 19-36, src 66-86 4: pc 45-85, src 108-136
  20. 5: pc 59-78, src 115-135
  21. Command 1: "set apa {a {}b c d}"
  22. (0) push1 0 # "a {}b c d"
  23. (2) storeScalar1 %v0 # var "apa"
  24. (4) pop
  25. Command 2: "catch {dict lappend apa a 5}"
  26. (5) startCommand +39 1 # next cmd at pc 44
  27. (14) beginCatch4 0
  28. Command 3: "dict lappend apa a 5"
  29. (19) startCommand +18 1 # next cmd at pc 37
  30. (28) push1 1 # "a"
  31. (30) push1 2 # "5"
  32. (32) dictLappend %v0 # var "apa"
  33. (37) pop
  34. (38) push1 3 # "0"
  35. (40) jump1 +3 # pc 43
  36. (42) pushReturnCode
  37. (43) endCatch
  38. (44) pop
  39. Command 4: "catch {dict append apa a 5}"
  40. (45) startCommand +41 1 # next cmd at pc 86
  41. (54) beginCatch4 1
  42. Command 5: "dict append apa a 5"
  43. (59) startCommand +20 1 # next cmd at pc 79
  44. (68) push1 2 # "5"
  45. (70) push1 2 # "5"
  46. (72) concat1 2
  47. (74) dictAppend %v1 # var "a"
  48. (79) pop
  49. (80) push1 3 # "0"
  50. (82) jump1 +3 # pc 85
  51. (84) pushReturnCode
  52. (85) endCatch
  53. (86) done