Skip to content

Instantly share code, notes, and snippets.

@timfel
Last active January 3, 2017 10:22
Show Gist options
  • Save timfel/3fdb2425bb4732460ec8389b6d028c09 to your computer and use it in GitHub Desktop.
Save timfel/3fdb2425bb4732460ec8389b6d028c09 to your computer and use it in GitHub Desktop.
"These to:do: loops are not message sends, and are compiled
into comparisons and jump bytecodes. The inner loop is jitted,
the outer isn't, but we get a bridge that executes from the end of the inner loop
over the jump to the beginning of the inner loop"
i := 0.
1 to: 2000 do: [:a |
1 to: 1000 do: [:b |
i := i + b abs.
]
].
"Here, timesRepeat: is a method that implements a to:do: loop
and calls the closure argument. The inner loop is jitted, we also
get a bridge out of the inner loop that does the return from timesRepeat:,
but then compiling the outer loop fails with with ABORT_ESCAPE when the
backjump occurs inside of timesRepeat:"
i := 0.
1 to: 2000 do: [:a |
1000 timesRepeat: [:b |
i := i + b abs.
]
]
[2bd6619b817bb] {jit-tracing
(Integer >> #timesRepeat:) [2]: <0x11>pushTemporaryVariableBytecode(1)
(Integer >> #timesRepeat:) [3]: <0x70>pushReceiverBytecode
(Integer >> #timesRepeat:) [4]: <0xb4>bytecodePrimLessOrEqual
(Integer >> #timesRepeat:) [5]: <0xac>longJumpIfFalseBytecode(0)
(Integer >> #timesRepeat:) [7]: <0x10>pushTemporaryVariableBytecode(0)
(Integer >> #timesRepeat:) [8]: <0xc9>bytecodePrimValue
(AAA class >> #test4) [21]: <0x8c>pushRemoteTempLongBytecode
(AAA class >> #test4) [24]: <0x10>pushTemporaryVariableBytecode(0)
(AAA class >> #test4) [25]: <0xd2>sendLiteralSelectorBytecode(2)
(Number >> #abs) [0]: <0x70>pushReceiverBytecode
(Number >> #abs) [1]: <0x75>pushConstantZeroBytecode
(Number >> #abs) [2]: <0xb2>bytecodePrimLessThan
(Number >> #abs) [3]: <0x9a>shortConditionalJumpBytecode(2)
(Number >> #abs) [7]: <0x78>returnReceiverBytecode
(AAA class >> #test4) [26]: <0xb0>bytecodePrimAdd
(AAA class >> #test4) [27]: <0x8d>storeRemoteTempLongBytecode
(AAA class >> #test4) [30]: <0x7d>returnTopFromBlockBytecode
(Integer >> #timesRepeat:) [9]: <0x87>popStackBytecode
(Integer >> #timesRepeat:) [10]: <0x11>pushTemporaryVariableBytecode(1)
(Integer >> #timesRepeat:) [11]: <0x76>pushConstantOneBytecode
(Integer >> #timesRepeat:) [12]: <0xb0>bytecodePrimAdd
(Integer >> #timesRepeat:) [13]: <0x69>storeAndPopTemporaryVariableBytecode(1)
(Integer >> #timesRepeat:) [14]: <0xa3>longUnconditionalJumpBytecode(3)
(Integer >> #timesRepeat:) [2]: <0x11>pushTemporaryVariableBytecode(1)
compiled new loop
[2bd661b2ade62] {jit-log-opt-loop
# Loop 2 ((Integer >> #timesRepeat:) [2]: <0x11>pushTemporaryVariableBytecode(1)) : loop with 235 ops
[p0]
+526: p1 = getfield_gc_r(p0, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst__w_self 64>)
+537: i2 = getfield_gc_i(p0, descr=<FieldS rsqueakvm.storage_contexts.ContextPartShadow.inst__w_self_size 72>)
+541: i3 = getfield_gc_i(p0, descr=<FieldU rsqueakvm.storage_contexts.ContextPartShadow.inst__state_stackptr_pc 32>)
+545: p4 = getfield_gc_r(p0, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst__s_sender 24>)
+549: p5 = getfield_gc_r(p0, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst_closure 80>)
+553: p6 = getfield_gc_r(p0, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst__w_receiver 56>)
+557: p7 = getfield_gc_r(p0, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst__w_method 48>)
+561: p8 = getfield_gc_r(p0, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst_extra_data 88>)
+565: p9 = getfield_gc_r(p0, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst__temps_and_stack 40>)
+569: p11 = getarrayitem_gc_r(p9, 0, descr=<ArrayP 8>)
+574: p13 = getarrayitem_gc_r(p9, 1, descr=<ArrayP 8>)
+579: p15 = getarrayitem_gc_r(p9, 2, descr=<ArrayP 8>)
+584: p17 = getarrayitem_gc_r(p9, 3, descr=<ArrayP 8>)
+589: p19 = getarrayitem_gc_r(p9, 4, descr=<ArrayP 8>)
+601: p21 = getarrayitem_gc_r(p9, 5, descr=<ArrayP 8>)
+613: p23 = getarrayitem_gc_r(p9, 6, descr=<ArrayP 8>)
+625: p25 = getarrayitem_gc_r(p9, 7, descr=<ArrayP 8>)
+637: p27 = getarrayitem_gc_r(p9, 8, descr=<ArrayP 8>)
+649: p29 = getarrayitem_gc_r(p9, 9, descr=<ArrayP 8>)
+661: p31 = getarrayitem_gc_r(p9, 10, descr=<ArrayP 8>)
+673: p33 = getarrayitem_gc_r(p9, 11, descr=<ArrayP 8>)
+685: p35 = getarrayitem_gc_r(p9, 12, descr=<ArrayP 8>)
+697: p37 = getarrayitem_gc_r(p9, 13, descr=<ArrayP 8>)
+709: p39 = getarrayitem_gc_r(p9, 14, descr=<ArrayP 8>)
+724: p41 = getarrayitem_gc_r(p9, 15, descr=<ArrayP 8>)
+739: p43 = getarrayitem_gc_r(p9, 16, descr=<ArrayP 8>)
+754: label(p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, descr=TargetToken(319222096))
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [2]: <0x11>pushTemporaryVariableBytecode(1)')
+768: guard_value(i3, 1082130434, descr=<Guard0x99f2638>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43]
+781: guard_not_invalidated(descr=<Guard0xa32ee30>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43]
+788: guard_value(p7, ConstPtr(ptr45), descr=<Guard0xa32ede8>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43]
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [3]: <0x70>pushReceiverBytecode')
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [4]: <0xb4>bytecodePrimLessOrEqual')
+797: guard_class(p13, 13519152, descr=<Guard0xa32eda0>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43]
+810: i47 = getfield_gc_i(p13, descr=<FieldS rsqueakvm.model.numeric.W_SmallInteger.inst_value 8 pure>)
+814: guard_class(p6, 13519152, descr=<Guard0xa32ed58>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43]
+835: i49 = getfield_gc_i(p6, descr=<FieldS rsqueakvm.model.numeric.W_SmallInteger.inst_value 8 pure>)
+847: i50 = int_le(i47, i49)
+850: guard_true(i50, descr=<Guard0xa32ed10>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43]
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [5]: <0xac>longJumpIfFalseBytecode(0)')
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [7]: <0x10>pushTemporaryVariableBytecode(0)')
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [8]: <0xc9>bytecodePrimValue')
+856: guard_class(p11, ConstClass(W_BlockClosure), descr=<Guard0xa32ecc8>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43]
+882: i52 = getfield_gc_i(p11, descr=<FieldS rsqueakvm.model.block_closure.W_BlockClosure.inst__numArgs 24 pure>)
+893: i54 = int_eq(i52, 0)
+897: guard_true(i54, descr=<Guard0xa32ec80>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43]
+903: p55 = getfield_gc_r(p11, descr=<FieldP rsqueakvm.model.block_closure.W_BlockClosure.inst__w_outerContext 56 pure>)
+907: p56 = getfield_gc_r(p55, descr=<FieldP rsqueakvm.model.pointers.W_PointersObject.inst_strategy 32>)
+918: guard_nonnull_class(p56, ConstClass(ContextPartShadow), descr=<Guard0x99f26a0>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43]
+936: p58 = getfield_gc_r(p11, descr=<FieldP rsqueakvm.model.block_closure.W_BlockClosure.inst__w_method 48 pure>)
+947: i59 = ptr_eq(p56, p0)
+954: guard_false(i59, descr=<Guard0xa32ebf0>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43]
+960: p60 = getfield_gc_r(p56, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.vable_token 16>)
+964: i62 = ptr_ne(p60, ConstPtr(null))
+968: cond_call(i62, 6396656, p56, descr=<Callv 0 r EF=2 OS=121>)
+1029: p64 = getfield_gc_r(p56, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst__w_receiver 56>)
+1040: guard_value(p58, ConstPtr(ptr65), descr=<Guard0x99f2568>) [p0, p1, i2, p4, p5, p6, p8, p11, p13, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, p64, p58]
+1056: p67 = getfield_gc_r(ConstPtr(ptr66), descr=<FieldP rsqueakvm.model.pointers.W_PointersObject.inst_strategy 32>)
+1074: guard_value(p67, ConstPtr(ptr68), descr=<Guard0x99f25d0>) [p0, p1, i2, p4, p5, p6, p8, p11, p13, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, p64, p58]
+1083: p69 = getfield_gc_r(p11, descr=<FieldP rsqueakvm.model.block_closure.W_BlockClosure.inst__stack 32 pure>)
+1087: i70 = arraylen_gc(p69, descr=<ArrayP 8>)
+1091: i72 = int_lshift(i70, 22)
+1095: guard_value(i72, 8388608, descr=<Guard0xa32eb60>) [p0, p1, i2, p4, p5, p6, p8, p11, p13, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, p64, p58]
+1108: i74 = getfield_gc_i(p11, descr=<FieldS rsqueakvm.model.block_closure.W_BlockClosure.inst__startpc 40 pure>)
+1112: guard_value(i74, 54, descr=<Guard0xa32eb18>) [p0, p1, i2, p4, p5, p6, p8, p11, p13, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, p64, p58]
+1122: p77 = getarrayitem_gc_r(p69, 0, descr=<ArrayP 8>)
+1126: p79 = getarrayitem_gc_r(p69, 1, descr=<ArrayP 8>)
+1130: p80 = getfield_gc_r(p0, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst__temps_and_stack 40>)
+1148: p81 = force_token()
+1158: enter_portal_frame(1, 0)
debug_merge_point(1, 1, '(AAA class >> #test4) [21]: <0x8c>pushRemoteTempLongBytecode')
+1158: setfield_gc(p0, ConstPtr(null), descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.vable_token 16>)
+1188: setfield_gc(p0, p6, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst__w_receiver 56>)
+1199: setfield_gc(p0, p1, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst__w_self 64>)
+1217: setfield_gc(p0, i2, descr=<FieldS rsqueakvm.storage_contexts.ContextPartShadow.inst__w_self_size 72>)
+1235: setfield_gc(p0, 1086324745, descr=<FieldU rsqueakvm.storage_contexts.ContextPartShadow.inst__state_stackptr_pc 32>)
+1243: setfield_gc(p0, p4, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst__s_sender 24>)
+1261: setfield_gc(p0, p5, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst_closure 80>)
+1279: setfield_gc(p0, ConstPtr(ptr86), descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst__w_method 48>)
+1283: setfield_gc(p0, p8, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst_extra_data 88>)
+1332: setarrayitem_gc(p80, 0, p11, descr=<ArrayP 8>)
+1374: setarrayitem_gc(p80, 1, p13, descr=<ArrayP 8>)
+1409: setarrayitem_gc(p80, 2, p11, descr=<ArrayP 8>)
+1451: setarrayitem_gc(p80, 3, ConstPtr(ptr91), descr=<ArrayP 8>)
+1486: setarrayitem_gc(p80, 4, p19, descr=<ArrayP 8>)
+1528: setarrayitem_gc(p80, 5, p21, descr=<ArrayP 8>)
+1570: setarrayitem_gc(p80, 6, p23, descr=<ArrayP 8>)
+1612: setarrayitem_gc(p80, 7, p25, descr=<ArrayP 8>)
+1654: setarrayitem_gc(p80, 8, p27, descr=<ArrayP 8>)
+1696: setarrayitem_gc(p80, 9, p29, descr=<ArrayP 8>)
+1738: setarrayitem_gc(p80, 10, p31, descr=<ArrayP 8>)
+1780: setarrayitem_gc(p80, 11, p33, descr=<ArrayP 8>)
+1822: setarrayitem_gc(p80, 12, p35, descr=<ArrayP 8>)
+1864: setarrayitem_gc(p80, 13, p37, descr=<ArrayP 8>)
+1906: setarrayitem_gc(p80, 14, p39, descr=<ArrayP 8>)
+1951: setarrayitem_gc(p80, 15, p41, descr=<ArrayP 8>)
+1996: setarrayitem_gc(p80, 16, p43, descr=<ArrayP 8>)
+2010: guard_class(p79, ConstClass(W_PointersObject), descr=<Guard0x9b9bd60>) [p0, p1, i2, p4, p5, p6, p8, p11, p13, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, p79, p77, p64, p81]
+2022: p106 = getfield_gc_r(p79, descr=<FieldP rsqueakvm.model.pointers.W_PointersObject.inst_strategy 32>)
+2033: guard_value(p106, ConstPtr(ptr107), descr=<Guard0x99f2500>) [p0, p1, i2, p4, p5, p6, p8, p11, p13, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, p79, p77, p64, p81]
+2049: p109 = getfield_gc_r(ConstPtr(ptr108), descr=<FieldP rsqueakvm.model.pointers.W_PointersObject.inst_strategy 32>)
+2060: guard_value(p109, ConstPtr(ptr110), descr=<Guard0x9b9be98>) [p0, p1, i2, p4, p5, p6, p8, p11, p13, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, p79, p77, p64, p81]
+2069: p111 = getfield_gc_r(p79, descr=<FieldP rsqueakvm.model.pointers.W_PointersObject.inst__storage 24>)
+2073: i113 = getarrayitem_gc_i(p111, 0, descr=<ArrayS 8>)
+2077: i115 = int_eq(i113, 9223372036854775807)
+2090: guard_false(i115, descr=<Guard0xa32ea88>) [p0, p1, i2, p4, p5, p6, p8, p11, p13, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, p79, p77, p64, p81]
debug_merge_point(1, 1, '(AAA class >> #test4) [24]: <0x10>pushTemporaryVariableBytecode(0)')
debug_merge_point(1, 1, '(AAA class >> #test4) [25]: <0xd2>sendLiteralSelectorBytecode(2)')
+2096: guard_class(p77, 13519152, descr=<Guard0xa32ea40>) [p0, p1, i2, p4, p5, p6, p8, p11, p13, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, p79, p77, p64, p81]
+2116: p118 = getfield_gc_r(ConstPtr(ptr117), descr=<FieldP rsqueakvm.model.pointers.W_PointersObject.inst_strategy 32>)
+2127: guard_value(p118, ConstPtr(ptr119), descr=<Guard0x9b9be30>) [p0, p1, i2, p4, p5, p6, p8, p11, p13, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, p79, p77, p64, p81]
+2136: p120 = force_token()
+2136: enter_portal_frame(1, 0)
debug_merge_point(2, 2, '(Number >> #abs) [0]: <0x70>pushReceiverBytecode')
debug_merge_point(2, 2, '(Number >> #abs) [1]: <0x75>pushConstantZeroBytecode')
debug_merge_point(2, 2, '(Number >> #abs) [2]: <0xb2>bytecodePrimLessThan')
+2136: i123 = getfield_gc_i(p77, descr=<FieldS rsqueakvm.model.numeric.W_SmallInteger.inst_value 8 pure>)
+2140: i125 = int_lt(i123, 0)
+2144: guard_false(i125, descr=<Guard0xa32e9f8>) [p0, p1, i2, p4, p5, p6, p8, p11, p13, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, p79, p77, p64, p81]
debug_merge_point(2, 2, '(Number >> #abs) [3]: <0x9a>shortConditionalJumpBytecode(2)')
debug_merge_point(2, 2, '(Number >> #abs) [7]: <0x78>returnReceiverBytecode')
+2150: leave_portal_frame(1)
debug_merge_point(1, 1, '(AAA class >> #test4) [26]: <0xb0>bytecodePrimAdd')
+2150: i127 = int_add_ovf(i113, i123)
+2153: guard_no_overflow(descr=<Guard0xa32e9b0>) [p0, p1, i2, p4, p5, p6, p8, p11, p13, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, p79, p77, p64, p81]
debug_merge_point(1, 1, '(AAA class >> #test4) [27]: <0x8d>storeRemoteTempLongBytecode')
+2159: i129 = int_ne(i127, 9223372036854775807)
+2172: guard_true(i129, descr=<Guard0xa32e968>) [p0, p1, i2, p4, p5, p6, p8, p11, p13, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, p79, p77, p64, p81]
debug_merge_point(1, 1, '(AAA class >> #test4) [30]: <0x7d>returnTopFromBlockBytecode')
+2178: leave_portal_frame(1)
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [9]: <0x87>popStackBytecode')
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [10]: <0x11>pushTemporaryVariableBytecode(1)')
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [11]: <0x76>pushConstantOneBytecode')
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [12]: <0xb0>bytecodePrimAdd')
+2178: setarrayitem_gc(p111, 0, i127, descr=<ArrayS 8>)
+2182: i133 = int_add_ovf(i47, 1)
+2189: guard_no_overflow(descr=<Guard0x9b9bc28>) [p0, p1, i2, p4, p5, p6, p8, p11, p13, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, i47, None, None, None]
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [13]: <0x69>storeAndPopTemporaryVariableBytecode(1)')
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [14]: <0xa3>longUnconditionalJumpBytecode(3)')
+2202: i136 = getfield_gc_i(ConstPtr(ptr135), descr=<FieldS rsqueakvm.interpreter.Interpreter.inst_interrupt_check_counter 24>)
+2206: i138 = int_sub(i136, 1)
+2210: setfield_gc(ConstPtr(ptr139), i138, descr=<FieldS rsqueakvm.interpreter.Interpreter.inst_interrupt_check_counter 24>)
+2214: i141 = int_le(i138, 0)
+2218: guard_false(i141, descr=<Guard0x9b9bb58>) [p0, p1, i2, p4, p5, p6, p8, p11, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, i138, i133, None, None, None]
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [2]: <0x11>pushTemporaryVariableBytecode(1)')
+2224: label(p0, p1, i2, p4, p5, p6, p8, p11, i133, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, i49, p55, p56, p69, p80, i138, descr=TargetToken(319223376))
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [2]: <0x11>pushTemporaryVariableBytecode(1)')
+2224: guard_not_invalidated(descr=<Guard0x99f2910>) [p0, p1, i2, p4, p5, p6, p8, p11, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, i133]
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [3]: <0x70>pushReceiverBytecode')
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [4]: <0xb4>bytecodePrimLessOrEqual')
+2224: i142 = int_le(i133, i49)
+2231: guard_true(i142, descr=<Guard0x649c0b0>) [p0, p1, i2, p4, p5, p6, p8, p11, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, i133]
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [5]: <0xac>longJumpIfFalseBytecode(0)')
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [7]: <0x10>pushTemporaryVariableBytecode(0)')
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [8]: <0xc9>bytecodePrimValue')
+2237: p143 = getfield_gc_r(p56, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.vable_token 16>)
+2248: i145 = ptr_ne(p143, ConstPtr(null))
+2252: cond_call(i145, 6396656, p56, descr=<Callv 0 r EF=2 OS=121>)
+2309: p147 = getfield_gc_r(p56, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst__w_receiver 56>)
+2313: p149 = getarrayitem_gc_r(p69, 0, descr=<ArrayP 8>)
+2324: p151 = getarrayitem_gc_r(p69, 1, descr=<ArrayP 8>)
+2328: p152 = force_token()
+2331: enter_portal_frame(1, 0)
debug_merge_point(1, 1, '(AAA class >> #test4) [21]: <0x8c>pushRemoteTempLongBytecode')
+2360: setfield_gc(p0, p1, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst__w_self 64>)
+2371: setfield_gc(p0, i2, descr=<FieldS rsqueakvm.storage_contexts.ContextPartShadow.inst__w_self_size 72>)
+2389: setfield_gc(p0, p4, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst__s_sender 24>)
+2407: setfield_gc(p0, p5, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst_closure 80>)
+2425: setfield_gc(p0, p6, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst__w_receiver 56>)
+2436: setfield_gc(p0, p8, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst_extra_data 88>)
+2485: setarrayitem_gc(p80, 2, p11, descr=<ArrayP 8>)
+2527: setarrayitem_gc(p80, 0, p11, descr=<ArrayP 8>)
+2562: setarrayitem_gc(p80, 4, p19, descr=<ArrayP 8>)
+2604: setarrayitem_gc(p80, 5, p21, descr=<ArrayP 8>)
+2646: setarrayitem_gc(p80, 6, p23, descr=<ArrayP 8>)
+2688: setarrayitem_gc(p80, 7, p25, descr=<ArrayP 8>)
+2730: setarrayitem_gc(p80, 8, p27, descr=<ArrayP 8>)
+2772: setarrayitem_gc(p80, 9, p29, descr=<ArrayP 8>)
+2814: setarrayitem_gc(p80, 10, p31, descr=<ArrayP 8>)
+2856: setarrayitem_gc(p80, 11, p33, descr=<ArrayP 8>)
+2898: setarrayitem_gc(p80, 12, p35, descr=<ArrayP 8>)
+2940: setarrayitem_gc(p80, 13, p37, descr=<ArrayP 8>)
+2982: setarrayitem_gc(p80, 14, p39, descr=<ArrayP 8>)
+3027: setarrayitem_gc(p80, 15, p41, descr=<ArrayP 8>)
+3072: setarrayitem_gc(p80, 16, p43, descr=<ArrayP 8>)
+3086: guard_class(p151, ConstClass(W_PointersObject), descr=<Guard0x99f2840>) [p0, p1, i2, p4, p5, p6, p8, p11, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, p151, p80, p149, p147, p152, i133]
+3099: p171 = getfield_gc_r(p151, descr=<FieldP rsqueakvm.model.pointers.W_PointersObject.inst_strategy 32>)
+3110: guard_value(p171, ConstPtr(ptr172), descr=<Guard0x99f28a8>) [p0, p1, i2, p4, p5, p6, p8, p11, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, p151, p80, p149, p147, p152, i133]
+3119: p173 = getfield_gc_r(p151, descr=<FieldP rsqueakvm.model.pointers.W_PointersObject.inst__storage 24>)
+3123: i175 = getarrayitem_gc_i(p173, 0, descr=<ArrayS 8>)
+3127: i177 = int_eq(i175, 9223372036854775807)
+3140: guard_false(i177, descr=<Guard0x649c068>) [p0, p1, i2, p4, p5, p6, p8, p11, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, p151, p80, p149, p147, p152, i133]
debug_merge_point(1, 1, '(AAA class >> #test4) [24]: <0x10>pushTemporaryVariableBytecode(0)')
debug_merge_point(1, 1, '(AAA class >> #test4) [25]: <0xd2>sendLiteralSelectorBytecode(2)')
+3146: guard_class(p149, 13519152, descr=<Guard0x649c140>) [p0, p1, i2, p4, p5, p6, p8, p11, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, p151, p80, p149, p147, p152, i133]
+3159: p179 = force_token()
+3159: enter_portal_frame(1, 0)
debug_merge_point(2, 2, '(Number >> #abs) [0]: <0x70>pushReceiverBytecode')
debug_merge_point(2, 2, '(Number >> #abs) [1]: <0x75>pushConstantZeroBytecode')
debug_merge_point(2, 2, '(Number >> #abs) [2]: <0xb2>bytecodePrimLessThan')
+3159: i182 = getfield_gc_i(p149, descr=<FieldS rsqueakvm.model.numeric.W_SmallInteger.inst_value 8 pure>)
+3163: i184 = int_lt(i182, 0)
+3167: guard_false(i184, descr=<Guard0x649c188>) [p0, p1, i2, p4, p5, p6, p8, p11, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, p151, p80, p149, p147, p152, i133]
debug_merge_point(2, 2, '(Number >> #abs) [3]: <0x9a>shortConditionalJumpBytecode(2)')
debug_merge_point(2, 2, '(Number >> #abs) [7]: <0x78>returnReceiverBytecode')
+3173: leave_portal_frame(1)
debug_merge_point(1, 1, '(AAA class >> #test4) [26]: <0xb0>bytecodePrimAdd')
+3173: i186 = int_add_ovf(i175, i182)
+3176: guard_no_overflow(descr=<Guard0x649c1d0>) [p0, p1, i2, p4, p5, p6, p8, p11, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, p151, p80, p149, p147, p152, i133]
debug_merge_point(1, 1, '(AAA class >> #test4) [27]: <0x8d>storeRemoteTempLongBytecode')
+3182: i188 = int_ne(i186, 9223372036854775807)
+3195: guard_true(i188, descr=<Guard0x649c218>) [p0, p1, i2, p4, p5, p6, p8, p11, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, p151, p80, p149, p147, p152, i133]
debug_merge_point(1, 1, '(AAA class >> #test4) [30]: <0x7d>returnTopFromBlockBytecode')
+3201: leave_portal_frame(1)
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [9]: <0x87>popStackBytecode')
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [10]: <0x11>pushTemporaryVariableBytecode(1)')
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [11]: <0x76>pushConstantOneBytecode')
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [12]: <0xb0>bytecodePrimAdd')
+3201: setarrayitem_gc(p173, 0, i186, descr=<ArrayS 8>)
+3205: i192 = int_add_ovf(i133, 1)
+3212: guard_no_overflow(descr=<Guard0x99f3678>) [p0, p1, i2, p4, p5, p6, p8, p11, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, i133, p80, None, None, None, None]
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [13]: <0x69>storeAndPopTemporaryVariableBytecode(1)')
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [14]: <0xa3>longUnconditionalJumpBytecode(3)')
+3218: i194 = int_sub(i138, 1)
+3229: setfield_gc(ConstPtr(ptr195), i194, descr=<FieldS rsqueakvm.interpreter.Interpreter.inst_interrupt_check_counter 24>)
+3233: i197 = int_le(i194, 0)
+3237: guard_false(i197, descr=<Guard0x99f37b0>) [p0, p1, i2, p4, p5, p6, p8, p11, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, i194, i192, p80, None, None, None, i133]
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [2]: <0x11>pushTemporaryVariableBytecode(1)')
+3243: i198 = arraylen_gc(p80, descr=<ArrayP 8>)
+3243: p200 = getarrayitem_gc_r(p80, 3, descr=<ArrayP 8>)
+3261: guard_value(p200, ConstPtr(ptr91), descr=<Guard0x99f3818>) [p0, p1, i2, p4, p5, p6, p8, p11, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, i192, p80, None, None, None, i133]
+3270: p201 = new_with_vtable(descr=<SizeDescr 16>)
+3337: setfield_gc(p201, i133, descr=<FieldS rsqueakvm.model.numeric.W_SmallInteger.inst_value 8 pure>)
+3369: setarrayitem_gc(p80, 1, p201, descr=<ArrayP 8>)
+3373: jump(p0, p1, i2, p4, p5, p6, p8, p11, i192, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, i49, p55, p56, p69, p80, i194, descr=TargetToken(319223376))
+3408: --end of the loop--
[2bd661b5cafa0] jit-log-opt-loop}
[2bd661b5ebf89] jit-tracing}
[2bd661c9f2d75] {jit-tracing
(Integer >> #timesRepeat:) [3]: <0x70>pushReceiverBytecode
(Integer >> #timesRepeat:) [4]: <0xb4>bytecodePrimLessOrEqual
(Integer >> #timesRepeat:) [5]: <0xac>longJumpIfFalseBytecode(0)
(Integer >> #timesRepeat:) [16]: <0x78>returnReceiverBytecode
compiled new bridge
[2bd661cc579c0] {jit-log-opt-bridge
# bridge out of Guard 0x649c0b0 with 17 ops
[p0, p1, i2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, i21]
+94: guard_not_invalidated(descr=<Guard0x99f38e8>) [p0, p1, i2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, i21]
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [3]: <0x70>pushReceiverBytecode')
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [4]: <0xb4>bytecodePrimLessOrEqual')
+94: guard_class(p5, 13519152, descr=<Guard0x649c890>) [p0, p1, i2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, i21]
+114: i23 = getfield_gc_i(p5, descr=<FieldS rsqueakvm.model.numeric.W_SmallInteger.inst_value 8 pure>)
+118: i24 = int_le(i21, i23)
+121: guard_false(i24, descr=<Guard0x649c8d8>) [p0, p1, i2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, i21]
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [5]: <0xac>longJumpIfFalseBytecode(0)')
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [16]: <0x78>returnReceiverBytecode')
+127: guard_isnull(p4, descr=<Guard0x649c920>) [p0, p1, i2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, i21]
+141: leave_portal_frame(1)
+141: p26 = force_token()
+173: setfield_gc(p0, p26, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.vable_token 16>)
+177: p27 = new_with_vtable(descr=<SizeDescr 16>)
+247: setfield_gc(p27, i23, descr=<FieldS rsqueakvm.interpreter.IntLocalReturn.inst__value 8 pure>)
+251: guard_not_forced_2(descr=<Guard0x1be7d910>) [p0, p1, i2, p3, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, i21]
+297: finish(p27, descr=<ExitFrameWithExceptionDescrRef object at 0xeae800>)
+416: --end of the loop--
[2bd661cce6d73] jit-log-opt-bridge}
[2bd661cceb857] jit-tracing}
[2bd661e072edf] {jit-tracing
(AAA class >> #test4) [21]: <0x8c>pushRemoteTempLongBytecode
(AAA class >> #test4) [24]: <0x10>pushTemporaryVariableBytecode(0)
(AAA class >> #test4) [25]: <0xd2>sendLiteralSelectorBytecode(2)
(Number >> #abs) [0]: <0x70>pushReceiverBytecode
(Number >> #abs) [1]: <0x75>pushConstantZeroBytecode
(Number >> #abs) [2]: <0xb2>bytecodePrimLessThan
(Number >> #abs) [3]: <0x9a>shortConditionalJumpBytecode(2)
(Number >> #abs) [7]: <0x78>returnReceiverBytecode
(AAA class >> #test4) [26]: <0xb0>bytecodePrimAdd
(AAA class >> #test4) [27]: <0x8d>storeRemoteTempLongBytecode
(AAA class >> #test4) [30]: <0x7d>returnTopFromBlockBytecode
compiled new entry bridge
[2bd661e38a443] {jit-log-opt-loop
# Loop 4 ((AAA class >> #test4) [21]: <0x8c>pushRemoteTempLongBytecode) : entry bridge with 73 ops
[p0]
+350: p1 = getfield_gc_r(p0, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst__w_self 64>)
+361: i2 = getfield_gc_i(p0, descr=<FieldS rsqueakvm.storage_contexts.ContextPartShadow.inst__w_self_size 72>)
+365: i3 = getfield_gc_i(p0, descr=<FieldU rsqueakvm.storage_contexts.ContextPartShadow.inst__state_stackptr_pc 32>)
+369: p4 = getfield_gc_r(p0, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst__s_sender 24>)
+373: p5 = getfield_gc_r(p0, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst_closure 80>)
+377: p6 = getfield_gc_r(p0, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst__w_receiver 56>)
+381: p7 = getfield_gc_r(p0, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst__w_method 48>)
+385: p8 = getfield_gc_r(p0, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst_extra_data 88>)
+389: p9 = getfield_gc_r(p0, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst__temps_and_stack 40>)
+393: p11 = getarrayitem_gc_r(p9, 0, descr=<ArrayP 8>)
+398: p13 = getarrayitem_gc_r(p9, 1, descr=<ArrayP 8>)
+403: p15 = getarrayitem_gc_r(p9, 2, descr=<ArrayP 8>)
+408: p17 = getarrayitem_gc_r(p9, 3, descr=<ArrayP 8>)
+413: p19 = getarrayitem_gc_r(p9, 4, descr=<ArrayP 8>)
+425: p21 = getarrayitem_gc_r(p9, 5, descr=<ArrayP 8>)
+437: p23 = getarrayitem_gc_r(p9, 6, descr=<ArrayP 8>)
+449: p25 = getarrayitem_gc_r(p9, 7, descr=<ArrayP 8>)
+461: p27 = getarrayitem_gc_r(p9, 8, descr=<ArrayP 8>)
+473: p29 = getarrayitem_gc_r(p9, 9, descr=<ArrayP 8>)
+485: p31 = getarrayitem_gc_r(p9, 10, descr=<ArrayP 8>)
+497: p33 = getarrayitem_gc_r(p9, 11, descr=<ArrayP 8>)
+509: p35 = getarrayitem_gc_r(p9, 12, descr=<ArrayP 8>)
+521: p37 = getarrayitem_gc_r(p9, 13, descr=<ArrayP 8>)
+533: p39 = getarrayitem_gc_r(p9, 14, descr=<ArrayP 8>)
+548: p41 = getarrayitem_gc_r(p9, 15, descr=<ArrayP 8>)
debug_merge_point(0, 0, '(AAA class >> #test4) [21]: <0x8c>pushRemoteTempLongBytecode')
+563: guard_value(i3, 1082130453, descr=<Guard0x99f3af0>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41]
+576: guard_not_invalidated(descr=<Guard0x649c9b0>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41]
+583: guard_value(p7, ConstPtr(ptr43), descr=<Guard0x649c9f8>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41]
+592: guard_class(p13, ConstClass(W_PointersObject), descr=<Guard0x649ca40>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41]
+613: p45 = getfield_gc_r(p13, descr=<FieldP rsqueakvm.model.pointers.W_PointersObject.inst_strategy 32>)
+639: guard_value(p45, ConstPtr(ptr46), descr=<Guard0x99f3bc0>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41]
+655: p48 = getfield_gc_r(ConstPtr(ptr47), descr=<FieldP rsqueakvm.model.pointers.W_PointersObject.inst_strategy 32>)
+666: guard_value(p48, ConstPtr(ptr49), descr=<Guard0x99f3d60>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41]
+675: p50 = getfield_gc_r(p13, descr=<FieldP rsqueakvm.model.pointers.W_PointersObject.inst__storage 24>)
+680: i52 = getarrayitem_gc_i(p50, 0, descr=<ArrayS 8>)
+684: i54 = int_eq(i52, 9223372036854775807)
+697: guard_false(i54, descr=<Guard0x649ca88>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41]
debug_merge_point(0, 0, '(AAA class >> #test4) [24]: <0x10>pushTemporaryVariableBytecode(0)')
debug_merge_point(0, 0, '(AAA class >> #test4) [25]: <0xd2>sendLiteralSelectorBytecode(2)')
+703: guard_class(p11, 13519152, descr=<Guard0x649cad0>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41]
+745: p57 = getfield_gc_r(ConstPtr(ptr56), descr=<FieldP rsqueakvm.model.pointers.W_PointersObject.inst_strategy 32>)
+763: guard_value(p57, ConstPtr(ptr58), descr=<Guard0x99f3dc8>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41]
+779: p60 = getfield_gc_r(ConstPtr(ptr59), descr=<FieldP rsqueakvm.model.pointers.W_PointersObject.inst_strategy 32>)
+790: guard_value(p60, ConstPtr(ptr61), descr=<Guard0x99f3e30>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41]
+799: guard_nonnull(p0, descr=<Guard0x649cb18>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41]
+813: p62 = force_token()
+813: enter_portal_frame(1, 0)
debug_merge_point(1, 1, '(Number >> #abs) [0]: <0x70>pushReceiverBytecode')
debug_merge_point(1, 1, '(Number >> #abs) [1]: <0x75>pushConstantZeroBytecode')
debug_merge_point(1, 1, '(Number >> #abs) [2]: <0xb2>bytecodePrimLessThan')
+813: i65 = getfield_gc_i(p11, descr=<FieldS rsqueakvm.model.numeric.W_SmallInteger.inst_value 8 pure>)
+817: i67 = int_lt(i65, 0)
+821: guard_false(i67, descr=<Guard0x649cbf0>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41]
debug_merge_point(1, 1, '(Number >> #abs) [3]: <0x9a>shortConditionalJumpBytecode(2)')
debug_merge_point(1, 1, '(Number >> #abs) [7]: <0x78>returnReceiverBytecode')
+827: leave_portal_frame(1)
debug_merge_point(0, 0, '(AAA class >> #test4) [26]: <0xb0>bytecodePrimAdd')
+827: i69 = int_add_ovf(i52, i65)
+830: guard_no_overflow(descr=<Guard0x649cc38>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41]
debug_merge_point(0, 0, '(AAA class >> #test4) [27]: <0x8d>storeRemoteTempLongBytecode')
+836: i71 = int_ne(i69, 9223372036854775807)
+849: guard_true(i71, descr=<Guard0x649cc80>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41]
debug_merge_point(0, 0, '(AAA class >> #test4) [30]: <0x7d>returnTopFromBlockBytecode')
+855: setarrayitem_gc(p50, 0, i69, descr=<ArrayS 8>)
+859: guard_nonnull(p5, descr=<Guard0x99f3e98>) [p0, p1, i2, p4, p5, p6, p8, p11, p13, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, i69]
+873: leave_portal_frame(1)
+873: p74 = force_token()
+903: setfield_gc(p0, p74, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.vable_token 16>)
+907: p75 = new_with_vtable(descr=<SizeDescr 16>)
+977: setfield_gc(p75, i69, descr=<FieldS rsqueakvm.interpreter.IntLocalReturn.inst__value 8 pure>)
+981: guard_not_forced_2(descr=<Guard0x1be7d980>) [p0, p1, i2, p4, p5, p6, p8, p11, p13, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, i69]
+1027: finish(p75, descr=<ExitFrameWithExceptionDescrRef object at 0xeae800>)
+1152: --end of the loop--
[2bd661e44fda3] jit-log-opt-loop}
[2bd661e4549a1] jit-tracing}
[2bd66202c0b24] {jit-tracing
(AAA class >> #test4) [9]: <0x10>pushTemporaryVariableBytecode(0)
(AAA class >> #test4) [10]: <0x23>pushLiteralConstantBytecode(3)
(AAA class >> #test4) [11]: <0xb4>bytecodePrimLessOrEqual
(AAA class >> #test4) [12]: <0xac>longJumpIfFalseBytecode(0)
(AAA class >> #test4) [14]: <0x21>pushLiteralConstantBytecode(1)
(AAA class >> #test4) [15]: <0x10>pushTemporaryVariableBytecode(0)
(AAA class >> #test4) [16]: <0x11>pushTemporaryVariableBytecode(1)
(AAA class >> #test4) [17]: <0x8f>pushClosureCopyCopiedValuesBytecode
(AAA class >> #test4) [31]: <0xe0>sendLiteralSelectorBytecode(16)
(Integer >> #timesRepeat:) [0]: <0x76>pushConstantOneBytecode
(Integer >> #timesRepeat:) [1]: <0x69>storeAndPopTemporaryVariableBytecode(1)
(Integer >> #timesRepeat:) [2]: <0x11>pushTemporaryVariableBytecode(1)
(Integer >> #timesRepeat:) [3]: <0x70>pushReceiverBytecode
(Integer >> #timesRepeat:) [4]: <0xb4>bytecodePrimLessOrEqual
(Integer >> #timesRepeat:) [5]: <0xac>longJumpIfFalseBytecode(0)
(Integer >> #timesRepeat:) [7]: <0x10>pushTemporaryVariableBytecode(0)
(Integer >> #timesRepeat:) [8]: <0xc9>bytecodePrimValue
(AAA class >> #test4) [21]: <0x8c>pushRemoteTempLongBytecode
(AAA class >> #test4) [24]: <0x10>pushTemporaryVariableBytecode(0)
(AAA class >> #test4) [25]: <0xd2>sendLiteralSelectorBytecode(2)
(Number >> #abs) [0]: <0x70>pushReceiverBytecode
(Number >> #abs) [1]: <0x75>pushConstantZeroBytecode
(Number >> #abs) [2]: <0xb2>bytecodePrimLessThan
(Number >> #abs) [3]: <0x9a>shortConditionalJumpBytecode(2)
(Number >> #abs) [7]: <0x78>returnReceiverBytecode
(AAA class >> #test4) [26]: <0xb0>bytecodePrimAdd
(AAA class >> #test4) [27]: <0x8d>storeRemoteTempLongBytecode
(AAA class >> #test4) [30]: <0x7d>returnTopFromBlockBytecode
(Integer >> #timesRepeat:) [9]: <0x87>popStackBytecode
(Integer >> #timesRepeat:) [10]: <0x11>pushTemporaryVariableBytecode(1)
(Integer >> #timesRepeat:) [11]: <0x76>pushConstantOneBytecode
(Integer >> #timesRepeat:) [12]: <0xb0>bytecodePrimAdd
(Integer >> #timesRepeat:) [13]: <0x69>storeAndPopTemporaryVariableBytecode(1)
(Integer >> #timesRepeat:) [14]: <0xa3>longUnconditionalJumpBytecode(3)
(Integer >> #timesRepeat:) [2]: <0x11>pushTemporaryVariableBytecode(1)
vable escaped during a call in Interpreter.loop_bytecodes to 0x5a7f80
~~~ ABORTING TRACING ABORT_ESCAPE
[2bd6620580d2c] jit-tracing}
[2bd6622304168] {jit-tracing
(Integer >> #timesRepeat:) [0]: <0x76>pushConstantOneBytecode
(Integer >> #timesRepeat:) [1]: <0x69>storeAndPopTemporaryVariableBytecode(1)
(Integer >> #timesRepeat:) [2]: <0x11>pushTemporaryVariableBytecode(1)
compiled new entry bridge
[2bd662247a778] {jit-log-opt-loop
# Loop 5 ((Integer >> #timesRepeat:) [0]: <0x76>pushConstantOneBytecode) : entry bridge with 33 ops
[p0]
+190: p1 = getfield_gc_r(p0, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst__w_self 64>)
+201: i2 = getfield_gc_i(p0, descr=<FieldS rsqueakvm.storage_contexts.ContextPartShadow.inst__w_self_size 72>)
+205: i3 = getfield_gc_i(p0, descr=<FieldU rsqueakvm.storage_contexts.ContextPartShadow.inst__state_stackptr_pc 32>)
+209: p4 = getfield_gc_r(p0, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst__s_sender 24>)
+213: p5 = getfield_gc_r(p0, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst_closure 80>)
+217: p6 = getfield_gc_r(p0, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst__w_receiver 56>)
+221: p7 = getfield_gc_r(p0, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst__w_method 48>)
+225: p8 = getfield_gc_r(p0, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst_extra_data 88>)
+229: p9 = getfield_gc_r(p0, descr=<FieldP rsqueakvm.storage_contexts.ContextPartShadow.inst__temps_and_stack 40>)
+233: p11 = getarrayitem_gc_r(p9, 0, descr=<ArrayP 8>)
+238: p13 = getarrayitem_gc_r(p9, 1, descr=<ArrayP 8>)
+243: p15 = getarrayitem_gc_r(p9, 2, descr=<ArrayP 8>)
+248: p17 = getarrayitem_gc_r(p9, 3, descr=<ArrayP 8>)
+253: p19 = getarrayitem_gc_r(p9, 4, descr=<ArrayP 8>)
+265: p21 = getarrayitem_gc_r(p9, 5, descr=<ArrayP 8>)
+277: p23 = getarrayitem_gc_r(p9, 6, descr=<ArrayP 8>)
+289: p25 = getarrayitem_gc_r(p9, 7, descr=<ArrayP 8>)
+301: p27 = getarrayitem_gc_r(p9, 8, descr=<ArrayP 8>)
+313: p29 = getarrayitem_gc_r(p9, 9, descr=<ArrayP 8>)
+325: p31 = getarrayitem_gc_r(p9, 10, descr=<ArrayP 8>)
+337: p33 = getarrayitem_gc_r(p9, 11, descr=<ArrayP 8>)
+349: p35 = getarrayitem_gc_r(p9, 12, descr=<ArrayP 8>)
+361: p37 = getarrayitem_gc_r(p9, 13, descr=<ArrayP 8>)
+373: p39 = getarrayitem_gc_r(p9, 14, descr=<ArrayP 8>)
+388: p41 = getarrayitem_gc_r(p9, 15, descr=<ArrayP 8>)
+403: p43 = getarrayitem_gc_r(p9, 16, descr=<ArrayP 8>)
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [0]: <0x76>pushConstantOneBytecode')
+418: guard_value(i3, 1082130432, descr=<Guard0x97c4430>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43]
+431: guard_not_invalidated(descr=<Guard0x649cfe0>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43]
+438: guard_value(p7, ConstPtr(ptr45), descr=<Guard0x649cf50>) [p0, p1, i2, i3, p4, p5, p6, p7, p8, p11, p13, p15, p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43]
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [1]: <0x69>storeAndPopTemporaryVariableBytecode(1)')
debug_merge_point(0, 0, '(Integer >> #timesRepeat:) [2]: <0x11>pushTemporaryVariableBytecode(1)')
+454: jump(p0, p1, i2, 1082130434, p4, p5, p6, ConstPtr(ptr47), p8, p11, ConstPtr(ptr48), ConstPtr(ptr49), p17, p19, p21, p23, p25, p27, p29, p31, p33, p35, p37, p39, p41, p43, descr=TargetToken(319222096))
+608: --end of the loop--
[2bd66224d4626] jit-log-opt-loop}
[2bd66224dea53] jit-tracing}
def timesRepeat(f):
for b in range(1000):
f(b)
def run():
i = 0
for a in range(2000):
timesRepeat(lambda b: i + abs(b))
run() 
[2bf93bb49299a] {jit-tracing
JIT starting (x86)
(tuple.contains: no get_printable_location)
compiled new entry bridge
[2bf93bbb4d277] {jit-log-opt-loop
# Loop 1 ((tuple.contains: no get_printable_location)) : entry bridge with 21 ops
[p0, p1, p2]
debug_merge_point(0, 0, '(tuple.contains: no get_printable_location)')
+209: guard_class(p2, ConstClass(W_BytesObject), descr=<Guard0x7f4d23837f68>) [p1, p0, p2]
+228: guard_nonnull_class(p0, ConstClass(W_BytesObject), descr=<Guard0x7f4d236e0020>) [p1, p0, p2]
+253: i5 = instance_ptr_eq(p2, p0)
+256: guard_false(i5, descr=<Guard0x7f4d23685cd0>) [p1, p0, p2]
+262: p6 = getfield_gc_r(p2, descr=<FieldP pypy.objspace.std.bytesobject.W_BytesObject.inst__value 8 pure>)
+266: p7 = getfield_gc_r(p0, descr=<FieldP pypy.objspace.std.bytesobject.W_BytesObject.inst__value 8 pure>)
+270: i8 = strlen(p7)
+274: i10 = int_gt(i8, 1)
+278: guard_false(i10, descr=<Guard0x7f4d23685c88>) [p1, p0, p2]
+284: i12 = call_i(ConstClass(ll_streq__rpy_stringPtr_rpy_stringPtr), p6, p7, descr=<Calli 1 rr EF=0 OS=24>)
+316: guard_false(i12, descr=<Guard0x7f4d23837f00>) [p1, p0, i12, p2]
+325: i14 = call_i(ConstClass(ll_streq__rpy_stringPtr_rpy_stringPtr), p7, p6, descr=<Calli 1 rr EF=0 OS=24>)
+348: guard_false(i14, descr=<Guard0x7f4d23837e98>) [p1, p0, p2, i14]
+357: p15 = getfield_gc_r(p1, descr=<FieldP listiter.list 8>)
+369: i16 = getfield_gc_i(p1, descr=<FieldS listiter.index 16>)
+374: i17 = arraylen_gc(p15, descr=<ArrayP 8>)
+378: i18 = int_ge(i16, i17)
+381: guard_true(i18, descr=<Guard0x7f4d23685c40>) [p1, p0, p2, i14]
+387: leave_portal_frame(87)
+394: finish(ConstPtr(ptr20), descr=<DoneWithThisFrameDescrRef object at 0x7f4d22437a60>)
+496: --end of the loop--
[2bf93bbc96f59] jit-log-opt-loop}
[2bf93bbca1d43] jit-tracing}
[2bf93bc67a3b5] {jit-tracing
(tuple.contains: no get_printable_location)
compiled new bridge
[2bf93bc8207ff] {jit-log-opt-bridge
# bridge out of Guard 0x7f4d23685c88 with 34 ops
[p0, p1, p2]
+158: guard_class(p2, ConstClass(W_BytesObject), descr=<Guard0x7f4d236e0430>) [p0, p1, p2]
+170: guard_nonnull_class(p1, ConstClass(W_BytesObject), descr=<Guard0x7f4d236e0498>) [p0, p1, p2]
+188: i5 = instance_ptr_eq(p2, p1)
+191: guard_false(i5, descr=<Guard0x7f4d23685da8>) [p0, p1, p2]
+197: p6 = getfield_gc_r(p2, descr=<FieldP pypy.objspace.std.bytesobject.W_BytesObject.inst__value 8 pure>)
+201: p7 = getfield_gc_r(p1, descr=<FieldP pypy.objspace.std.bytesobject.W_BytesObject.inst__value 8 pure>)
+205: i8 = strlen(p7)
+209: i10 = int_gt(i8, 1)
+213: guard_true(i10, descr=<Guard0x7f4d23685df0>) [p0, p1, p2]
+219: i11 = ptr_eq(p6, p7)
+222: guard_false(i11, descr=<Guard0x7f4d23685e38>) [p0, p1, p2]
+228: i13 = call_i(ConstClass(ll_streq__rpy_stringPtr_rpy_stringPtr), p7, p6, descr=<Calli 1 rr EF=0 OS=24>)
+257: guard_false(i13, descr=<Guard0x7f4d236e0500>) [p0, p1, p2, i13]
+266: p14 = getfield_gc_r(p0, descr=<FieldP listiter.list 8>)
+277: i15 = getfield_gc_i(p0, descr=<FieldS listiter.index 16>)
+281: i16 = arraylen_gc(p14, descr=<ArrayP 8>)
+285: i17 = int_ge(i15, i16)
+288: guard_false(i17, descr=<Guard0x7f4d23685e80>) [p0, p1, p2, i13]
+294: i19 = int_add(i15, 1)
+298: p20 = getarrayitem_gc_r(p14, i15, descr=<ArrayP 8>)
debug_merge_point(0, 0, '(tuple.contains: no get_printable_location)')
+303: setfield_gc(p0, i19, descr=<FieldS listiter.index 16>)
+307: guard_class(p20, ConstClass(W_BytesObject), descr=<Guard0x7f4d236e0568>) [p0, p1, p20]
+321: i22 = instance_ptr_eq(p20, p1)
+324: guard_false(i22, descr=<Guard0x7f4d23685ec8>) [p0, p1, p20]
+330: p23 = getfield_gc_r(p20, descr=<FieldP pypy.objspace.std.bytesobject.W_BytesObject.inst__value 8 pure>)
+334: i24 = ptr_eq(p23, p7)
+337: guard_false(i24, descr=<Guard0x7f4d23685f10>) [p0, p1, p20]
+343: i26 = call_i(ConstClass(ll_streq__rpy_stringPtr_rpy_stringPtr), p7, p23, descr=<Calli 1 rr EF=0 OS=24>)
+376: guard_false(i26, descr=<Guard0x7f4d236e05d0>) [p0, p1, p20, i26]
+385: i27 = int_ge(i19, i16)
+392: guard_true(i27, descr=<Guard0x7f4d23685f58>) [p0, p1, p20, i26]
+398: leave_portal_frame(87)
+405: finish(ConstPtr(ptr29), descr=<DoneWithThisFrameDescrRef object at 0x7f4d22437a60>)
+512: --end of the loop--
[2bf93bc868bc1] jit-log-opt-bridge}
[2bf93bc86ae85] jit-tracing}
[2bf93bf0fb241] {jit-tracing
<code object timesRepeat, file 'test2.py', line 1> #13 FOR_ITER
<code object timesRepeat, file 'test2.py', line 1> #16 STORE_FAST
<code object timesRepeat, file 'test2.py', line 1> #19 LOAD_FAST
<code object timesRepeat, file 'test2.py', line 1> #22 LOAD_FAST
<code object timesRepeat, file 'test2.py', line 1> #25 CALL_FUNCTION
<code object <lambda>, file 'test2.py', line 8> #0 LOAD_GLOBAL
<code object <lambda>, file 'test2.py', line 8> #3 LOAD_GLOBAL
<code object <lambda>, file 'test2.py', line 8> #6 LOAD_FAST
<code object <lambda>, file 'test2.py', line 8> #9 CALL_FUNCTION
<code object <lambda>, file 'test2.py', line 8> #12 BINARY_ADD
<code object <lambda>, file 'test2.py', line 8> #13 RETURN_VALUE
<code object timesRepeat, file 'test2.py', line 1> #28 POP_TOP
<code object timesRepeat, file 'test2.py', line 1> #29 JUMP_ABSOLUTE
<code object timesRepeat, file 'test2.py', line 1> #13 FOR_ITER
compiled new loop
[2bf93bf5c84eb] {jit-log-opt-loop
# Loop 3 (<code object timesRepeat, file 'test2.py', line 1> #13 FOR_ITER) : loop with 94 ops
[p0, p1]
+305: i2 = getfield_gc_i(p0, descr=<FieldS pypy.interpreter.pyframe.PyFrame.inst_last_instr 40>)
+316: p3 = getfield_gc_r(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_pycode 64>)
+320: i4 = getfield_gc_i(p0, descr=<FieldS pypy.interpreter.pyframe.PyFrame.inst_valuestackdepth 72>)
+324: p5 = getfield_gc_r(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_debugdata 16>)
+328: p6 = getfield_gc_r(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_last_exception 32>)
+332: p7 = getfield_gc_r(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_lastblock 48>)
+336: p8 = getfield_gc_r(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_locals_cells_stack_w 56>)
+340: p10 = getarrayitem_gc_r(p8, 0, descr=<ArrayP 8>)
+344: p12 = getarrayitem_gc_r(p8, 1, descr=<ArrayP 8>)
+348: p14 = getarrayitem_gc_r(p8, 2, descr=<ArrayP 8>)
+352: p16 = getarrayitem_gc_r(p8, 3, descr=<ArrayP 8>)
+356: p18 = getarrayitem_gc_r(p8, 4, descr=<ArrayP 8>)
+360: label(p0, p1, i2, p3, i4, p5, p6, p7, p10, p12, p14, p16, p18, descr=TargetToken(139969283504336))
debug_merge_point(0, 0, '<code object timesRepeat. file 'test2.py'. line 1> #13 FOR_ITER')
+416: guard_value(i4, 3, descr=<Guard0x7f4d236e0e58>) [p0, i2, p3, i4, p5, p6, p7, p10, p12, p14, p16, p18, p1]
+426: guard_isnull(p5, descr=<Guard0x7f4d236e6338>) [p0, i2, p3, i4, p5, p6, p7, p10, p12, p14, p16, p18, p1]
+435: p20 = getfield_gc_r(p3, descr=<FieldP pypy.interpreter.pycode.PyCode.inst_co_cellvars 80 pure>)
+435: p21 = getfield_gc_r(p3, descr=<FieldP pypy.interpreter.pycode.PyCode.inst_co_freevars 128 pure>)
+435: guard_class(p14, 139969260627800, descr=<Guard0x7f4d236e6380>) [p0, i2, p3, i4, p5, p6, p7, p10, p12, p14, p16, p18, p1]
+449: p23 = getfield_gc_r(p14, descr=<FieldP pypy.objspace.std.iterobject.W_AbstractSeqIterObject.inst_w_seq 16>)
+453: guard_nonnull(p23, descr=<Guard0x7f4d236e63c8>) [p0, i2, p3, i4, p5, p6, p7, p10, p12, p14, p16, p18, p1]
+462: i24 = getfield_gc_i(p14, descr=<FieldS pypy.objspace.std.iterobject.W_AbstractSeqIterObject.inst_index 8>)
+466: p25 = getfield_gc_r(p23, descr=<FieldP pypy.objspace.std.listobject.W_ListObject.inst_strategy 16>)
+470: guard_class(p25, 139969260751312, descr=<Guard0x7f4d236e6410>) [p0, i2, p3, i4, p5, p6, p7, p10, p12, p14, p16, p18, p1]
+484: p27 = getfield_gc_r(p23, descr=<FieldP pypy.objspace.std.listobject.W_ListObject.inst_lstorage 8>)
+488: i28 = getfield_gc_i(p27, descr=<FieldS tuple1.item0 8 pure>)
+493: i30 = int_lt(i24, 0)
+497: guard_false(i30, descr=<Guard0x7f4d236e6458>) [p0, i2, p3, i4, p5, p6, p7, p10, p12, p14, p16, p18, p1]
+503: i31 = int_ge(i24, i28)
+506: guard_false(i31, descr=<Guard0x7f4d236e64a0>) [p0, i2, p3, i4, p5, p6, p7, p10, p12, p14, p16, p18, p1]
+512: i33 = int_add(i24, 1)
debug_merge_point(0, 0, '<code object timesRepeat. file 'test2.py'. line 1> #16 STORE_FAST')
debug_merge_point(0, 0, '<code object timesRepeat. file 'test2.py'. line 1> #19 LOAD_FAST')
+516: setfield_gc(p14, i33, descr=<FieldS pypy.objspace.std.iterobject.W_AbstractSeqIterObject.inst_index 8>)
+520: guard_nonnull_class(p10, ConstClass(Function), descr=<Guard0x7f4d236e0ec0>) [p0, p3, p6, p7, p10, p14, p18, p1, i24]
debug_merge_point(0, 0, '<code object timesRepeat. file 'test2.py'. line 1> #22 LOAD_FAST')
debug_merge_point(0, 0, '<code object timesRepeat. file 'test2.py'. line 1> #25 CALL_FUNCTION')
+539: p35 = getfield_gc_r(p10, descr=<FieldP pypy.interpreter.function.Function.inst_code 24 pure>)
+550: guard_value(p35, ConstPtr(ptr36), descr=<Guard0x7f4d236e64e8>) [p0, p3, p6, p7, p10, p14, p18, p1, i24]
+559: p37 = getfield_gc_r(p10, descr=<FieldP pypy.interpreter.function.Function.inst_w_func_globals 64 pure>)
+563: guard_not_invalidated(descr=<Guard0x7f4d236e6530>) [p0, p3, p6, p7, p10, p14, p18, p1, i24]
+570: i39 = instance_ptr_eq(ConstPtr(ptr38), p37)
+573: guard_true(i39, descr=<Guard0x7f4d236e6578>) [p0, p3, p6, p7, p10, p14, p18, p1, i24]
+579: p42 = call_r(ConstClass(_ll_1_threadlocalref_get__Ptr_GcStruct_objectLlT_Signed), 64, descr=<Callr 8 i EF=1 OS=5>)
+595: p43 = getfield_gc_r(p42, descr=<FieldP pypy.interpreter.executioncontext.ExecutionContext.inst_topframeref 88>)
+599: p44 = force_token()
+602: p45 = getfield_gc_r(p42, descr=<FieldP pypy.interpreter.executioncontext.ExecutionContext.inst_w_tracefunc 104 pure>)
+606: guard_value(p45, ConstPtr(null), descr=<Guard0x7f4d236e0f28>) [p0, p3, p6, p7, p10, p14, p1, p42, p45, p44, p43, i24]
+616: i47 = getfield_gc_i(p42, descr=<FieldU pypy.interpreter.executioncontext.ExecutionContext.inst_profilefunc 72 pure>)
+627: i48 = int_is_zero(i47)
+630: guard_true(i48, descr=<Guard0x7f4d236e65c0>) [p0, p3, p6, p7, p10, p14, p1, p42, p45, p44, p43, i24]
+636: enter_portal_frame(5, 4900)
debug_merge_point(1, 1, '<code object <lambda>. file 'test2.py'. line 8> #0 LOAD_GLOBAL')
debug_merge_point(1, 1, '<code object <lambda>. file 'test2.py'. line 8> #3 LOAD_GLOBAL')
debug_merge_point(1, 1, '<code object <lambda>. file 'test2.py'. line 8> #6 LOAD_FAST')
debug_merge_point(1, 1, '<code object <lambda>. file 'test2.py'. line 8> #9 CALL_FUNCTION')
debug_merge_point(1, 1, '<code object <lambda>. file 'test2.py'. line 8> #12 BINARY_ADD')
debug_merge_point(1, 1, '<code object <lambda>. file 'test2.py'. line 8> #13 RETURN_VALUE')
+636: leave_portal_frame(5)
debug_merge_point(0, 0, '<code object timesRepeat. file 'test2.py'. line 1> #28 POP_TOP')
debug_merge_point(0, 0, '<code object timesRepeat. file 'test2.py'. line 1> #29 JUMP_ABSOLUTE')
+636: i53 = getfield_raw_i(139969282623360, descr=<FieldS pypysig_long_struct.c_value 0>)
+649: i55 = int_lt(i53, 0)
+653: guard_false(i55, descr=<Guard0x7f4d236e6608>) [p0, p3, p6, p7, p10, p14, p1, p42, p45, p44, p43, i24]
+666: guard_value(p3, ConstPtr(ptr56), descr=<Guard0x7f4d236e6650>) [p0, p3, p6, p7, p10, p14, p1, p42, p45, p44, p43, i24]
debug_merge_point(0, 0, '<code object timesRepeat. file 'test2.py'. line 1> #13 FOR_ITER')
+675: i57 = same_as_i(i33)
+678: label(p0, p1, p6, p7, p10, i24, p14, p23, p27, i57, i28, p37, p42, descr=TargetToken(139969283504416))
debug_merge_point(0, 0, '<code object timesRepeat. file 'test2.py'. line 1> #13 FOR_ITER')
+720: i58 = int_ge(i57, i28)
+723: guard_false(i58, descr=<Guard0x7f4d236e0f90>) [p0, p6, p7, p10, p14, p1, i57, i28, i24]
+729: i60 = int_add(i57, 1)
debug_merge_point(0, 0, '<code object timesRepeat. file 'test2.py'. line 1> #16 STORE_FAST')
debug_merge_point(0, 0, '<code object timesRepeat. file 'test2.py'. line 1> #19 LOAD_FAST')
debug_merge_point(0, 0, '<code object timesRepeat. file 'test2.py'. line 1> #22 LOAD_FAST')
debug_merge_point(0, 0, '<code object timesRepeat. file 'test2.py'. line 1> #25 CALL_FUNCTION')
+733: setfield_gc(p14, i60, descr=<FieldS pypy.objspace.std.iterobject.W_AbstractSeqIterObject.inst_index 8>)
+737: guard_not_invalidated(descr=<Guard0x7f4d236e0ff8>) [p0, p6, p7, p10, p14, p1, p37, i57, None]
+737: p62 = force_token()
+737: enter_portal_frame(5, 4900)
debug_merge_point(1, 1, '<code object <lambda>. file 'test2.py'. line 8> #0 LOAD_GLOBAL')
debug_merge_point(1, 1, '<code object <lambda>. file 'test2.py'. line 8> #3 LOAD_GLOBAL')
debug_merge_point(1, 1, '<code object <lambda>. file 'test2.py'. line 8> #6 LOAD_FAST')
debug_merge_point(1, 1, '<code object <lambda>. file 'test2.py'. line 8> #9 CALL_FUNCTION')
debug_merge_point(1, 1, '<code object <lambda>. file 'test2.py'. line 8> #12 BINARY_ADD')
debug_merge_point(1, 1, '<code object <lambda>. file 'test2.py'. line 8> #13 RETURN_VALUE')
+737: leave_portal_frame(5)
debug_merge_point(0, 0, '<code object timesRepeat. file 'test2.py'. line 1> #28 POP_TOP')
debug_merge_point(0, 0, '<code object timesRepeat. file 'test2.py'. line 1> #29 JUMP_ABSOLUTE')
+737: i67 = getfield_raw_i(139969282623360, descr=<FieldS pypysig_long_struct.c_value 0>)
+750: i69 = int_lt(i67, 0)
+754: guard_false(i69, descr=<Guard0x7f4d236e6698>) [p0, p6, p7, p10, p14, p1, p37, i57, None]
debug_merge_point(0, 0, '<code object timesRepeat. file 'test2.py'. line 1> #13 FOR_ITER')
+760: jump(p0, p1, p6, p7, p10, i57, p14, p23, p27, i60, i28, p37, p42, descr=TargetToken(139969283504416))
+784: --end of the loop--
[2bf93bf69145d] jit-log-opt-loop}
[2bf93bf69843f] jit-tracing}
[2bf93bf879eeb] {jit-tracing
<code object timesRepeat, file 'test2.py', line 1> #32 POP_BLOCK
<code object timesRepeat, file 'test2.py', line 1> #33 LOAD_CONST
<code object timesRepeat, file 'test2.py', line 1> #36 RETURN_VALUE
compiled new bridge
[2bf93bf9cb31b] {jit-log-opt-bridge
# bridge out of Guard 0x7f4d236e0f90 with 16 ops
[p0, p1, p2, p3, p4, p5, i6, i7, i8]
+94: i9 = int_ge(i6, i7)
+97: guard_true(i9, descr=<Guard0x7f4d236e1748>) [p0, p1, p2, p3, p4, p5, i6, i7, i8]
debug_merge_point(0, 0, '<code object timesRepeat. file 'test2.py'. line 1> #32 POP_BLOCK')
+103: p10 = getfield_gc_r(p2, descr=<FieldP pypy.interpreter.pyopcode.FrameBlock.inst_previous 16 pure>)
+114: i11 = getfield_gc_i(p2, descr=<FieldS pypy.interpreter.pyopcode.FrameBlock.inst_valuestackdepth 24 pure>)
+118: setfield_gc(p4, ConstPtr(null), descr=<FieldP pypy.objspace.std.iterobject.W_AbstractSeqIterObject.inst_w_seq 16>)
+126: guard_value(i11, 2, descr=<Guard0x7f4d236e17b0>) [p0, p1, p10, p3, p5, i11, i8]
debug_merge_point(0, 0, '<code object timesRepeat. file 'test2.py'. line 1> #33 LOAD_CONST')
debug_merge_point(0, 0, '<code object timesRepeat. file 'test2.py'. line 1> #36 RETURN_VALUE')
+136: guard_isnull(p10, descr=<Guard0x7f4d236e6728>) [p0, p1, p10, p3, p5, i11, i8]
+145: leave_portal_frame(5)
+145: p15 = force_token()
+148: setfield_gc(p0, 1, descr=<FieldU pypy.interpreter.pyframe.PyFrame.inst_frame_finished_execution 81>)
+182: setfield_gc(p0, p15, descr=<FieldP pypy.interpreter.pyframe.PyFrame.vable_token 8>)
+186: guard_not_forced_2(descr=<Guard0x7f4d23855910>) [p0, p3, i8]
+204: finish(ConstPtr(ptr17), descr=<DoneWithThisFrameDescrRef object at 0x7f4d22437a60>)
+304: --end of the loop--
[2bf93bf9f2e9f] jit-log-opt-bridge}
[2bf93bf9f44e5] jit-tracing}
[2bf93bfc7c197] {jit-tracing
<code object <lambda>, file 'test2.py', line 8> #0 LOAD_GLOBAL
<code object <lambda>, file 'test2.py', line 8> #3 LOAD_GLOBAL
<code object <lambda>, file 'test2.py', line 8> #6 LOAD_FAST
<code object <lambda>, file 'test2.py', line 8> #9 CALL_FUNCTION
<code object <lambda>, file 'test2.py', line 8> #12 BINARY_ADD
<code object <lambda>, file 'test2.py', line 8> #13 RETURN_VALUE
compiled new entry bridge
[2bf93bfd5b221] {jit-log-opt-loop
# Loop 5 (<code object <lambda>, file 'test2.py', line 8> #0 LOAD_GLOBAL) : entry bridge with 34 ops
[p0, p1]
+209: i2 = getfield_gc_i(p0, descr=<FieldS pypy.interpreter.pyframe.PyFrame.inst_last_instr 40>)
+220: p3 = getfield_gc_r(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_pycode 64>)
+224: i4 = getfield_gc_i(p0, descr=<FieldS pypy.interpreter.pyframe.PyFrame.inst_valuestackdepth 72>)
+228: p5 = getfield_gc_r(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_debugdata 16>)
+232: p6 = getfield_gc_r(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_last_exception 32>)
+236: p7 = getfield_gc_r(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_lastblock 48>)
+240: p8 = getfield_gc_r(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_locals_cells_stack_w 56>)
+244: p10 = getarrayitem_gc_r(p8, 0, descr=<ArrayP 8>)
+248: p12 = getarrayitem_gc_r(p8, 1, descr=<ArrayP 8>)
+252: p14 = getarrayitem_gc_r(p8, 2, descr=<ArrayP 8>)
+256: p16 = getarrayitem_gc_r(p8, 3, descr=<ArrayP 8>)
debug_merge_point(0, 0, '<code object <lambda>. file 'test2.py'. line 8> #0 LOAD_GLOBAL')
+260: guard_value(i4, 1, descr=<Guard0x7f4d236e1818>) [p0, i2, p3, i4, p5, p6, p7, p10, p12, p14, p16, p1]
+270: guard_isnull(p5, descr=<Guard0x7f4d236e6770>) [p0, i2, p3, i4, p5, p6, p7, p10, p12, p14, p16, p1]
+286: guard_value(p3, ConstPtr(ptr18), descr=<Guard0x7f4d236e67b8>) [p0, i2, p3, i4, p5, p6, p7, p10, p12, p14, p16, p1]
+295: guard_not_invalidated(descr=<Guard0x7f4d236e6800>) [p0, i2, p3, i4, p5, p6, p7, p10, p12, p14, p16, p1]
debug_merge_point(0, 0, '<code object <lambda>. file 'test2.py'. line 8> #3 LOAD_GLOBAL')
debug_merge_point(0, 0, '<code object <lambda>. file 'test2.py'. line 8> #6 LOAD_FAST')
+295: guard_nonnull_class(p10, ConstClass(W_IntObject), descr=<Guard0x7f4d236e1880>) [p0, i2, p3, i4, p5, p6, p7, p10, p12, p14, p16, p1]
debug_merge_point(0, 0, '<code object <lambda>. file 'test2.py'. line 8> #9 CALL_FUNCTION')
+314: i20 = getfield_gc_i(p10, descr=<FieldS pypy.objspace.std.intobject.W_IntObject.inst_intval 8 pure>)
+318: i22 = int_ge(i20, 0)
+322: guard_true(i22, descr=<Guard0x7f4d236e6848>) [p0, i2, p3, i4, p5, p6, p7, p10, p12, p14, p16, p1]
debug_merge_point(0, 0, '<code object <lambda>. file 'test2.py'. line 8> #12 BINARY_ADD')
debug_merge_point(0, 0, '<code object <lambda>. file 'test2.py'. line 8> #13 RETURN_VALUE')
+328: guard_isnull(p7, descr=<Guard0x7f4d236e6890>) [p0, i2, p3, i4, p5, p6, p7, p10, p12, p14, p16, p1]
+337: leave_portal_frame(5)
+337: p24 = force_token()
+340: setfield_gc(p0, 1, descr=<FieldU pypy.interpreter.pyframe.PyFrame.inst_frame_finished_execution 81>)
+365: setfield_gc(p0, p24, descr=<FieldP pypy.interpreter.pyframe.PyFrame.vable_token 8>)
+369: p26 = new_with_vtable(descr=<SizeDescr 16>)
+451: setfield_gc(p26, i20, descr=<FieldS pypy.objspace.std.intobject.W_IntObject.inst_intval 8 pure>)
+455: guard_not_forced_2(descr=<Guard0x7f4d23855980>) [p0, p10]
+480: finish(p26, descr=<DoneWithThisFrameDescrRef object at 0x7f4d22437a60>)
+592: --end of the loop--
[2bf93bfda6069] jit-log-opt-loop}
[2bf93bfda8f1e] jit-tracing}
[2bf93bffec9bb] {jit-tracing
<code object <module>, file 'test2.py', line 1> #28 FOR_ITER
<code object <module>, file 'test2.py', line 1> #31 STORE_NAME
<code object <module>, file 'test2.py', line 1> #34 LOAD_NAME
<code object <module>, file 'test2.py', line 1> #37 LOAD_CONST
<code object <module>, file 'test2.py', line 1> #40 MAKE_FUNCTION
<code object <module>, file 'test2.py', line 1> #43 CALL_FUNCTION
<code object timesRepeat, file 'test2.py', line 1> #0 SETUP_LOOP
<code object timesRepeat, file 'test2.py', line 1> #3 LOAD_GLOBAL
<code object timesRepeat, file 'test2.py', line 1> #6 LOAD_CONST
<code object timesRepeat, file 'test2.py', line 1> #9 CALL_FUNCTION
<code object timesRepeat, file 'test2.py', line 1> #12 GET_ITER
<code object timesRepeat, file 'test2.py', line 1> #13 FOR_ITER
<code object timesRepeat, file 'test2.py', line 1> #16 STORE_FAST
<code object timesRepeat, file 'test2.py', line 1> #19 LOAD_FAST
<code object timesRepeat, file 'test2.py', line 1> #22 LOAD_FAST
<code object timesRepeat, file 'test2.py', line 1> #25 CALL_FUNCTION
<code object <lambda>, file 'test2.py', line 8> #0 LOAD_GLOBAL
<code object <lambda>, file 'test2.py', line 8> #3 LOAD_GLOBAL
<code object <lambda>, file 'test2.py', line 8> #6 LOAD_FAST
<code object <lambda>, file 'test2.py', line 8> #9 CALL_FUNCTION
<code object <lambda>, file 'test2.py', line 8> #12 BINARY_ADD
<code object <lambda>, file 'test2.py', line 8> #13 RETURN_VALUE
<code object timesRepeat, file 'test2.py', line 1> #28 POP_TOP
<code object timesRepeat, file 'test2.py', line 1> #29 JUMP_ABSOLUTE
<code object timesRepeat, file 'test2.py', line 1> #13 FOR_ITER
<code object <module>, file 'test2.py', line 1> #46 POP_TOP
<code object <module>, file 'test2.py', line 1> #47 JUMP_ABSOLUTE
<code object <module>, file 'test2.py', line 1> #28 FOR_ITER
compiled new loop
[2bf93c05065a7] {jit-log-opt-loop
# Loop 6 (<code object <module>, file 'test2.py', line 1> #28 FOR_ITER) : loop with 264 ops
[p0, p1]
+577: i2 = getfield_gc_i(p0, descr=<FieldS pypy.interpreter.pyframe.PyFrame.inst_last_instr 40>)
+588: p3 = getfield_gc_r(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_pycode 64>)
+592: i4 = getfield_gc_i(p0, descr=<FieldS pypy.interpreter.pyframe.PyFrame.inst_valuestackdepth 72>)
+596: p5 = getfield_gc_r(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_debugdata 16>)
+600: p6 = getfield_gc_r(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_last_exception 32>)
+604: p7 = getfield_gc_r(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_lastblock 48>)
+608: p8 = getfield_gc_r(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_locals_cells_stack_w 56>)
+612: p10 = getarrayitem_gc_r(p8, 0, descr=<ArrayP 8>)
+616: p12 = getarrayitem_gc_r(p8, 1, descr=<ArrayP 8>)
+620: p14 = getarrayitem_gc_r(p8, 2, descr=<ArrayP 8>)
+624: label(p0, p1, i2, p3, i4, p5, p6, p7, p10, p12, p14, descr=TargetToken(139969169400160))
debug_merge_point(0, 0, '<code object <module>. file 'test2.py'. line 1> #28 FOR_ITER')
+672: guard_value(i4, 1, descr=<Guard0x7f4d1c9f8c50>) [p0, i2, p3, i4, p5, p6, p7, p10, p12, p14, p1]
+682: guard_nonnull(p5, descr=<Guard0x7f4d236e68d8>) [p0, i2, p3, i4, p5, p6, p7, p10, p12, p14, p1]
+691: p16 = getfield_gc_r(p5, descr=<FieldP pypy.interpreter.pyframe.FrameDebugData.inst_w_f_trace 40>)
+695: guard_isnull(p16, descr=<Guard0x7f4d236e6920>) [p0, i2, p3, i4, p5, p6, p7, p10, p12, p14, p1]
+704: p17 = getfield_gc_r(p3, descr=<FieldP pypy.interpreter.pycode.PyCode.inst_co_cellvars 80 pure>)
+704: p18 = getfield_gc_r(p3, descr=<FieldP pypy.interpreter.pycode.PyCode.inst_co_freevars 128 pure>)
+704: guard_class(p10, 139969260627800, descr=<Guard0x7f4d236e6968>) [p0, i2, p3, i4, p5, p6, p7, p10, p12, p14, p1]
+717: p20 = getfield_gc_r(p10, descr=<FieldP pypy.objspace.std.iterobject.W_AbstractSeqIterObject.inst_w_seq 16>)
+721: guard_nonnull(p20, descr=<Guard0x7f4d236e69b0>) [p0, i2, p3, i4, p5, p6, p7, p10, p12, p14, p1]
+730: i21 = getfield_gc_i(p10, descr=<FieldS pypy.objspace.std.iterobject.W_AbstractSeqIterObject.inst_index 8>)
+734: p22 = getfield_gc_r(p20, descr=<FieldP pypy.objspace.std.listobject.W_ListObject.inst_strategy 16>)
+738: guard_class(p22, 139969260751312, descr=<Guard0x7f4d236e69f8>) [p0, i2, p3, i4, p5, p6, p7, p10, p12, p14, p1]
+751: p24 = getfield_gc_r(p20, descr=<FieldP pypy.objspace.std.listobject.W_ListObject.inst_lstorage 8>)
+755: i25 = getfield_gc_i(p24, descr=<FieldS tuple1.item0 8 pure>)
+759: i27 = int_lt(i21, 0)
+763: guard_false(i27, descr=<Guard0x7f4d236e6a40>) [p0, i2, p3, i4, p5, p6, p7, p10, p12, p14, p1]
+769: i28 = int_ge(i21, i25)
+772: guard_false(i28, descr=<Guard0x7f4d236e6a88>) [p0, i2, p3, i4, p5, p6, p7, p10, p12, p14, p1]
+778: i30 = int_add(i21, 1)
+783: i31 = getfield_gc_i(p5, descr=<FieldU pypy.interpreter.pyframe.FrameDebugData.inst_is_being_profiled 64>)
+788: setfield_gc(p10, i30, descr=<FieldS pypy.objspace.std.iterobject.W_AbstractSeqIterObject.inst_index 8>)
+792: guard_value(i31, 0, descr=<Guard0x7f4d1c9f8cb8>) [p0, p3, p5, p6, p7, p10, p14, i31, p1, i21]
debug_merge_point(0, 0, '<code object <module>. file 'test2.py'. line 1> #31 STORE_NAME')
+809: guard_value(p3, ConstPtr(ptr33), descr=<Guard0x7f4d236e6ad0>) [p0, p3, p5, p6, p7, p10, p14, i31, p1, i21]
+818: p34 = getfield_gc_r(p5, descr=<FieldP pypy.interpreter.pyframe.FrameDebugData.inst_w_locals 56>)
+829: guard_value(p34, ConstPtr(ptr35), descr=<Guard0x7f4d1c9f8d20>) [p0, p3, p5, p6, p7, p10, p14, i31, p1, i21]
+838: p36 = getfield_gc_r(p34, descr=<FieldP pypy.objspace.std.dictmultiobject.W_ModuleDictObject.inst_mstrategy 16 pure>)
+849: guard_value(p36, ConstPtr(ptr37), descr=<Guard0x7f4d1c9f8d88>) [p0, p3, p5, p6, p7, p10, p14, i31, p1, i21]
+858: guard_not_invalidated(descr=<Guard0x7f4d236e6b18>) [p0, p3, p5, p6, p7, p10, p14, i31, p1, i21]
debug_merge_point(0, 0, '<code object <module>. file 'test2.py'. line 1> #34 LOAD_NAME')
+858: p38 = getfield_gc_r(p5, descr=<FieldP pypy.interpreter.pyframe.FrameDebugData.inst_w_globals 48>)
+869: setfield_gc(ConstPtr(ptr39), i21, descr=<FieldS pypy.objspace.std.typeobject.IntMutableCell.inst_intvalue 8>)
+879: i41 = instance_ptr_eq(ConstPtr(ptr40), p38)
guard_true(i41, descr=<Guard0x7f4d1c9f8df0>) [p0, p5, p6, p7, p10, p14, p1, i41, None]
+900: guard_value(p38, ConstPtr(ptr43), descr=<Guard0x7f4d1c9f8e58>) [p0, p5, p6, p7, p10, p14, p1, i41, None]
+909: p44 = getfield_gc_r(p38, descr=<FieldP pypy.objspace.std.dictmultiobject.W_ModuleDictObject.inst_mstrategy 16 pure>)
+913: guard_value(p44, ConstPtr(ptr45), descr=<Guard0x7f4d1c9f8ec0>) [p0, p5, p6, p7, p10, p14, p1, i41, None]
debug_merge_point(0, 0, '<code object <module>. file 'test2.py'. line 1> #37 LOAD_CONST')
debug_merge_point(0, 0, '<code object <module>. file 'test2.py'. line 1> #40 MAKE_FUNCTION')
debug_merge_point(0, 0, '<code object <module>. file 'test2.py'. line 1> #43 CALL_FUNCTION')
+922: p48 = call_r(ConstClass(_ll_1_threadlocalref_get__Ptr_GcStruct_objectLlT_Signed), 64, descr=<Callr 8 i EF=1 OS=5>)
+938: p49 = getfield_gc_r(p48, descr=<FieldP pypy.interpreter.executioncontext.ExecutionContext.inst_topframeref 88>)
+942: p50 = force_token()
+945: p51 = getfield_gc_r(p48, descr=<FieldP pypy.interpreter.executioncontext.ExecutionContext.inst_w_tracefunc 104 pure>)
+949: guard_value(p51, ConstPtr(null), descr=<Guard0x7f4d1c9f8f28>) [p0, p5, p6, p7, p10, p1, p48, p51, p50, p49, None]
+959: i53 = getfield_gc_i(p48, descr=<FieldU pypy.interpreter.executioncontext.ExecutionContext.inst_profilefunc 72 pure>)
+963: i54 = int_is_zero(i53)
+966: guard_true(i54, descr=<Guard0x7f4d236e6b60>) [p0, p5, p6, p7, p10, p1, p48, p51, p50, p49, None]
+972: enter_portal_frame(5, 4896)
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #0 SETUP_LOOP')
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #3 LOAD_GLOBAL')
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #6 LOAD_CONST')
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #9 CALL_FUNCTION')
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #12 GET_ITER')
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #13 FOR_ITER')
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #16 STORE_FAST')
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #19 LOAD_FAST')
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #22 LOAD_FAST')
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #25 CALL_FUNCTION')
+972: p57 = force_token()
+972: enter_portal_frame(5, 4900)
debug_merge_point(2, 2, '<code object <lambda>. file 'test2.py'. line 8> #0 LOAD_GLOBAL')
debug_merge_point(2, 2, '<code object <lambda>. file 'test2.py'. line 8> #3 LOAD_GLOBAL')
debug_merge_point(2, 2, '<code object <lambda>. file 'test2.py'. line 8> #6 LOAD_FAST')
debug_merge_point(2, 2, '<code object <lambda>. file 'test2.py'. line 8> #9 CALL_FUNCTION')
debug_merge_point(2, 2, '<code object <lambda>. file 'test2.py'. line 8> #12 BINARY_ADD')
debug_merge_point(2, 2, '<code object <lambda>. file 'test2.py'. line 8> #13 RETURN_VALUE')
+972: leave_portal_frame(5)
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #28 POP_TOP')
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #29 JUMP_ABSOLUTE')
+972: i62 = getfield_raw_i(139969282623360, descr=<FieldS pypysig_long_struct.c_value 0>)
+985: i64 = int_lt(i62, 0)
+989: guard_false(i64, descr=<Guard0x7f4d236e6ba8>) [p0, p5, p6, p7, p10, p1, p48, p51, p50, p49, None]
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #13 FOR_ITER')
+995: p65 = force_token()
+998: p66 = new_with_vtable(descr=<SizeDescr 88>)
+1086: p68 = new_array_clear(5, descr=<ArrayP 8>)
+1114: p69 = new_with_vtable(descr=<SizeDescr 120>)
+1125: setfield_gc(p69, ConstPtr(null), descr=<FieldP pypy.interpreter.function.Function.inst_closure 16 pure>)
+1140: setfield_gc(p69, ConstPtr(ptr71), descr=<FieldP pypy.interpreter.function.Function.inst_code 24 pure>)
+1144: p73 = new_array_clear(0, descr=<ArrayP 8>)
+1163: setfield_gc(p69, p73, descr=<FieldP pypy.interpreter.function.Function.inst_defs_w 32 pure>)
+1174: setfield_gc(p69, ConstPtr(ptr74), descr=<FieldP pypy.interpreter.function.Function.inst_name 40 pure>)
+1178: setfield_gc(p69, ConstPtr(null), descr=<FieldP pypy.interpreter.function.Function.inst_w_doc 48>)
+1186: setfield_gc(p69, ConstPtr(null), descr=<FieldP pypy.interpreter.function.Function.inst_w_func_dict 56>)
+1194: setfield_gc(p69, ConstPtr(ptr77), descr=<FieldP pypy.interpreter.function.Function.inst_w_func_globals 64 pure>)
+1198: setfield_gc(p69, ConstPtr(null), descr=<FieldP pypy.interpreter.function.Function.inst_w_module 72>)
+1206: setarrayitem_gc(p68, 0, p69, descr=<ArrayP 8>)
+1210: p80 = new_with_vtable(descr=<SizeDescr 16>)
+1221: setfield_gc(p80, 0, descr=<FieldS pypy.objspace.std.intobject.W_IntObject.inst_intval 8 pure>)
+1229: setarrayitem_gc(p68, 1, p80, descr=<ArrayP 8>)
+1233: p83 = new_with_vtable(descr=<SizeDescr 24>)
+1244: setfield_gc(p83, 1, descr=<FieldS pypy.objspace.std.iterobject.W_AbstractSeqIterObject.inst_index 8>)
+1252: p85 = new_with_vtable(descr=<SizeDescr 24>)
+1270: setfield_gc(p85, ConstPtr(ptr86), descr=<FieldP pypy.objspace.std.listobject.W_ListObject.inst_lstorage 8>)
+1281: setfield_gc(p85, ConstPtr(ptr87), descr=<FieldP pypy.objspace.std.listobject.W_ListObject.inst_strategy 16>)
+1285: setfield_gc(p83, p85, descr=<FieldP pypy.objspace.std.iterobject.W_AbstractSeqIterObject.inst_w_seq 16>)
+1289: setarrayitem_gc(p68, 2, p83, descr=<ArrayP 8>)
+1293: p89 = new_with_vtable(descr=<SizeDescr 24>)
+1304: setfield_gc(p89, p50, descr=<FieldP JitVirtualRef.virtual_token 8>)
+1308: setfield_gc(p89, ConstPtr(null), descr=<FieldP JitVirtualRef.forced 16>)
+1336: setfield_gc(p48, p89, descr=<FieldP pypy.interpreter.executioncontext.ExecutionContext.inst_topframeref 88>)
+1362: setfield_gc(p0, p65, descr=<FieldP pypy.interpreter.pyframe.PyFrame.vable_token 8>)
+1366: setfield_gc(p66, p49, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_f_backref 24>)
+1370: setfield_gc(p66, 13, descr=<FieldS pypy.interpreter.pyframe.PyFrame.inst_last_instr 40>)
+1385: setfield_gc(p66, ConstPtr(ptr92), descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_lastblock 48>)
+1389: setfield_gc(p66, p68, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_locals_cells_stack_w 56>)
+1400: setfield_gc(p66, ConstPtr(ptr93), descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_pycode 64>)
+1404: setfield_gc(p66, 3, descr=<FieldS pypy.interpreter.pyframe.PyFrame.inst_valuestackdepth 72>)
+1412: setfield_gc(p66, 0, descr=<FieldU pypy.interpreter.pyframe.PyFrame.inst_escaped 80>)
+1417: setfield_gc(p66, 0, descr=<FieldU pypy.interpreter.pyframe.PyFrame.inst_frame_finished_execution 81>)
+1681: p97 = call_assembler_r(p66, p48, descr=<Loop3>)
+1896: guard_not_forced(descr=<Guard0x7f4d23855b40>) [p0, p5, p6, p7, p10, p69, p66, p89, p1, p48, p97]
+1907: keepalive(p66)
+1907: guard_no_exception(descr=<Guard0x7f4d1c9f8f90>) [p0, p5, p6, p7, p10, p69, p66, p89, p1, p48, p97]
+1927: leave_portal_frame(5)
+1927: p99 = getfield_gc_r(p48, descr=<FieldP pypy.interpreter.executioncontext.ExecutionContext.inst_topframeref 88>)
+1938: p100 = getfield_gc_r(p66, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_f_backref 24>)
+1949: i101 = getfield_gc_i(p66, descr=<FieldU pypy.interpreter.pyframe.PyFrame.inst_escaped 80>)
+1976: setfield_gc(p48, p100, descr=<FieldP pypy.interpreter.executioncontext.ExecutionContext.inst_topframeref 88>)
+1980: guard_false(i101, descr=<Guard0x7f4d1c9f8ff8>) [p0, p5, p6, p7, p10, p69, p66, p89, p1, p97, i101, p99]
+1989: i102 = getfield_gc_i(p5, descr=<FieldU pypy.interpreter.pyframe.FrameDebugData.inst_is_being_profiled 64>)
+2001: setfield_gc(p89, ConstPtr(null), descr=<FieldP JitVirtualRef.virtual_token 8>)
+2016: guard_value(i102, 0, descr=<Guard0x7f4d1c9f9060>) [p0, p5, p6, p7, p10, p97, i102, p1]
debug_merge_point(0, 0, '<code object <module>. file 'test2.py'. line 1> #46 POP_TOP')
+2026: p105 = getfield_gc_r(p5, descr=<FieldP pypy.interpreter.pyframe.FrameDebugData.inst_w_f_trace 40>)
+2030: guard_isnull(p105, descr=<Guard0x7f4d236e6bf0>) [p0, p5, p6, p7, p10, p97, i102, p1]
debug_merge_point(0, 0, '<code object <module>. file 'test2.py'. line 1> #47 JUMP_ABSOLUTE')
+2039: guard_not_invalidated(descr=<Guard0x7f4d236e6c38>) [p0, p5, p6, p7, p10, p97, i102, p1]
+2039: i107 = getfield_raw_i(139969282623360, descr=<FieldS pypysig_long_struct.c_value 0>)
+2052: i109 = int_lt(i107, 0)
+2056: guard_false(i109, descr=<Guard0x7f4d236e6c80>) [p0, p5, p6, p7, p10, p97, i102, p1]
debug_merge_point(0, 0, '<code object <module>. file 'test2.py'. line 1> #28 FOR_ITER')
+2062: label(p0, p1, p5, p6, p7, p10, p48, p100, descr=TargetToken(139969169400240))
debug_merge_point(0, 0, '<code object <module>. file 'test2.py'. line 1> #28 FOR_ITER')
+2064: p110 = getfield_gc_r(p10, descr=<FieldP pypy.objspace.std.iterobject.W_AbstractSeqIterObject.inst_w_seq 16>)
+2076: guard_nonnull(p110, descr=<Guard0x7f4d1c9f90c8>) [p0, p5, p6, p7, p10, p1, p110]
+2085: i111 = getfield_gc_i(p10, descr=<FieldS pypy.objspace.std.iterobject.W_AbstractSeqIterObject.inst_index 8>)
+2090: p112 = getfield_gc_r(p110, descr=<FieldP pypy.objspace.std.listobject.W_ListObject.inst_strategy 16>)
+2094: guard_class(p112, 139969260751312, descr=<Guard0x7f4d236e6cc8>) [p0, p5, p6, p7, p10, p1, p110]
+2106: p114 = getfield_gc_r(p110, descr=<FieldP pypy.objspace.std.listobject.W_ListObject.inst_lstorage 8>)
+2110: i115 = getfield_gc_i(p114, descr=<FieldS tuple1.item0 8 pure>)
+2114: i117 = int_lt(i111, 0)
+2118: guard_false(i117, descr=<Guard0x7f4d236e6d10>) [p0, p5, p6, p7, p10, p1, p110]
+2124: i118 = int_ge(i111, i115)
+2127: guard_false(i118, descr=<Guard0x7f4d236e6d58>) [p0, p5, p6, p7, p10, p1, p110]
+2133: i120 = int_add(i111, 1)
debug_merge_point(0, 0, '<code object <module>. file 'test2.py'. line 1> #31 STORE_NAME')
+2137: p121 = getfield_gc_r(p5, descr=<FieldP pypy.interpreter.pyframe.FrameDebugData.inst_w_locals 56>)
+2141: setfield_gc(p10, i120, descr=<FieldS pypy.objspace.std.iterobject.W_AbstractSeqIterObject.inst_index 8>)
+2153: guard_value(p121, ConstPtr(ptr122), descr=<Guard0x7f4d1c9f9130>) [p0, p5, p6, p7, p10, p1, p121, i111]
+2162: p123 = getfield_gc_r(p121, descr=<FieldP pypy.objspace.std.dictmultiobject.W_ModuleDictObject.inst_mstrategy 16 pure>)
+2173: guard_value(p123, ConstPtr(ptr124), descr=<Guard0x7f4d1c9f9198>) [p0, p5, p6, p7, p10, p1, p121, i111]
+2182: guard_not_invalidated(descr=<Guard0x7f4d236e6da0>) [p0, p5, p6, p7, p10, p1, p121, i111]
debug_merge_point(0, 0, '<code object <module>. file 'test2.py'. line 1> #34 LOAD_NAME')
+2182: p125 = getfield_gc_r(p5, descr=<FieldP pypy.interpreter.pyframe.FrameDebugData.inst_w_globals 48>)
+2193: setfield_gc(ConstPtr(ptr126), i111, descr=<FieldS pypy.objspace.std.typeobject.IntMutableCell.inst_intvalue 8>)
+2203: i128 = instance_ptr_eq(ConstPtr(ptr127), p125)
guard_true(i128, descr=<Guard0x7f4d1c9f9200>) [p0, p5, p6, p7, p10, p1, i128, None]
+2224: guard_value(p125, ConstPtr(ptr129), descr=<Guard0x7f4d1c9f9268>) [p0, p5, p6, p7, p10, p1, i128, None]
+2233: p130 = getfield_gc_r(p125, descr=<FieldP pypy.objspace.std.dictmultiobject.W_ModuleDictObject.inst_mstrategy 16 pure>)
+2237: guard_value(p130, ConstPtr(ptr131), descr=<Guard0x7f4d1c9f92d0>) [p0, p5, p6, p7, p10, p1, i128, None]
debug_merge_point(0, 0, '<code object <module>. file 'test2.py'. line 1> #37 LOAD_CONST')
debug_merge_point(0, 0, '<code object <module>. file 'test2.py'. line 1> #40 MAKE_FUNCTION')
debug_merge_point(0, 0, '<code object <module>. file 'test2.py'. line 1> #43 CALL_FUNCTION')
+2246: p132 = force_token()
+2249: enter_portal_frame(5, 4896)
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #0 SETUP_LOOP')
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #3 LOAD_GLOBAL')
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #6 LOAD_CONST')
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #9 CALL_FUNCTION')
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #12 GET_ITER')
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #13 FOR_ITER')
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #16 STORE_FAST')
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #19 LOAD_FAST')
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #22 LOAD_FAST')
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #25 CALL_FUNCTION')
+2249: p135 = force_token()
+2249: enter_portal_frame(5, 4900)
debug_merge_point(2, 2, '<code object <lambda>. file 'test2.py'. line 8> #0 LOAD_GLOBAL')
debug_merge_point(2, 2, '<code object <lambda>. file 'test2.py'. line 8> #3 LOAD_GLOBAL')
debug_merge_point(2, 2, '<code object <lambda>. file 'test2.py'. line 8> #6 LOAD_FAST')
debug_merge_point(2, 2, '<code object <lambda>. file 'test2.py'. line 8> #9 CALL_FUNCTION')
debug_merge_point(2, 2, '<code object <lambda>. file 'test2.py'. line 8> #12 BINARY_ADD')
debug_merge_point(2, 2, '<code object <lambda>. file 'test2.py'. line 8> #13 RETURN_VALUE')
+2249: leave_portal_frame(5)
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #28 POP_TOP')
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #29 JUMP_ABSOLUTE')
+2249: i140 = getfield_raw_i(139969282623360, descr=<FieldS pypysig_long_struct.c_value 0>)
+2262: i142 = int_lt(i140, 0)
+2266: guard_false(i142, descr=<Guard0x7f4d236e6de8>) [p0, p5, p6, p7, p10, p1, i128, None]
debug_merge_point(1, 1, '<code object timesRepeat. file 'test2.py'. line 1> #13 FOR_ITER')
+2272: p143 = force_token()
+2275: p144 = new_with_vtable(descr=<SizeDescr 88>)
+2360: p146 = new_array_clear(5, descr=<ArrayP 8>)
+2388: p147 = new_with_vtable(descr=<SizeDescr 120>)
+2399: setfield_gc(p147, ConstPtr(null), descr=<FieldP pypy.interpreter.function.Function.inst_closure 16 pure>)
+2414: setfield_gc(p147, ConstPtr(ptr149), descr=<FieldP pypy.interpreter.function.Function.inst_code 24 pure>)
+2418: p151 = new_array_clear(0, descr=<ArrayP 8>)
+2437: setfield_gc(p147, p151, descr=<FieldP pypy.interpreter.function.Function.inst_defs_w 32 pure>)
+2448: setfield_gc(p147, ConstPtr(ptr152), descr=<FieldP pypy.interpreter.function.Function.inst_name 40 pure>)
+2452: setfield_gc(p147, ConstPtr(null), descr=<FieldP pypy.interpreter.function.Function.inst_w_doc 48>)
+2460: setfield_gc(p147, ConstPtr(null), descr=<FieldP pypy.interpreter.function.Function.inst_w_func_dict 56>)
+2468: setfield_gc(p147, ConstPtr(ptr155), descr=<FieldP pypy.interpreter.function.Function.inst_w_func_globals 64 pure>)
+2472: setfield_gc(p147, ConstPtr(null), descr=<FieldP pypy.interpreter.function.Function.inst_w_module 72>)
+2480: setarrayitem_gc(p146, 0, p147, descr=<ArrayP 8>)
+2484: p158 = new_with_vtable(descr=<SizeDescr 16>)
+2495: setfield_gc(p158, 0, descr=<FieldS pypy.objspace.std.intobject.W_IntObject.inst_intval 8 pure>)
+2503: setarrayitem_gc(p146, 1, p158, descr=<ArrayP 8>)
+2507: p161 = new_with_vtable(descr=<SizeDescr 24>)
+2518: setfield_gc(p161, 1, descr=<FieldS pypy.objspace.std.iterobject.W_AbstractSeqIterObject.inst_index 8>)
+2526: p163 = new_with_vtable(descr=<SizeDescr 24>)
+2544: setfield_gc(p163, ConstPtr(ptr164), descr=<FieldP pypy.objspace.std.listobject.W_ListObject.inst_lstorage 8>)
+2555: setfield_gc(p163, ConstPtr(ptr165), descr=<FieldP pypy.objspace.std.listobject.W_ListObject.inst_strategy 16>)
+2559: setfield_gc(p161, p163, descr=<FieldP pypy.objspace.std.iterobject.W_AbstractSeqIterObject.inst_w_seq 16>)
+2563: setarrayitem_gc(p146, 2, p161, descr=<ArrayP 8>)
+2567: p167 = new_with_vtable(descr=<SizeDescr 24>)
+2578: setfield_gc(p167, p132, descr=<FieldP JitVirtualRef.virtual_token 8>)
+2582: setfield_gc(p167, ConstPtr(null), descr=<FieldP JitVirtualRef.forced 16>)
+2612: setfield_gc(p48, p167, descr=<FieldP pypy.interpreter.executioncontext.ExecutionContext.inst_topframeref 88>)
+2645: setfield_gc(p0, p143, descr=<FieldP pypy.interpreter.pyframe.PyFrame.vable_token 8>)
+2649: setfield_gc(p144, p100, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_f_backref 24>)
+2653: setfield_gc(p144, 13, descr=<FieldS pypy.interpreter.pyframe.PyFrame.inst_last_instr 40>)
+2668: setfield_gc(p144, ConstPtr(ptr169), descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_lastblock 48>)
+2672: setfield_gc(p144, p146, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_locals_cells_stack_w 56>)
+2683: setfield_gc(p144, ConstPtr(ptr170), descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_pycode 64>)
+2687: setfield_gc(p144, 3, descr=<FieldS pypy.interpreter.pyframe.PyFrame.inst_valuestackdepth 72>)
+2695: setfield_gc(p144, 0, descr=<FieldU pypy.interpreter.pyframe.PyFrame.inst_escaped 80>)
+2700: setfield_gc(p144, 0, descr=<FieldU pypy.interpreter.pyframe.PyFrame.inst_frame_finished_execution 81>)
+2964: p174 = call_assembler_r(p144, p48, descr=<Loop3>)
+3165: guard_not_forced(descr=<Guard0x7f4d23855d70>) [p0, p5, p6, p7, p10, p147, p144, p167, p1, p48, p174]
+3176: keepalive(p144)
+3176: guard_no_exception(descr=<Guard0x7f4d1c9f9540>) [p0, p5, p6, p7, p10, p147, p144, p167, p1, p48, p174]
+3196: leave_portal_frame(5)
+3196: p176 = getfield_gc_r(p48, descr=<FieldP pypy.interpreter.executioncontext.ExecutionContext.inst_topframeref 88>)
+3207: p177 = getfield_gc_r(p144, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_f_backref 24>)
+3219: i178 = getfield_gc_i(p144, descr=<FieldU pypy.interpreter.pyframe.PyFrame.inst_escaped 80>)
+3247: setfield_gc(p48, p177, descr=<FieldP pypy.interpreter.executioncontext.ExecutionContext.inst_topframeref 88>)
+3251: guard_false(i178, descr=<Guard0x7f4d1c9f9470>) [p0, p5, p6, p7, p10, p147, p144, p167, p1, p174, i178, p176]
+3260: i179 = getfield_gc_i(p5, descr=<FieldU pypy.interpreter.pyframe.FrameDebugData.inst_is_being_profiled 64>)
+3272: setfield_gc(p167, ConstPtr(null), descr=<FieldP JitVirtualRef.virtual_token 8>)
+3288: guard_value(i179, 0, descr=<Guard0x7f4d1c9f9408>) [p0, p5, p6, p7, p10, p174, i179, p1]
debug_merge_point(0, 0, '<code object <module>. file 'test2.py'. line 1> #46 POP_TOP')
+3298: p181 = getfield_gc_r(p5, descr=<FieldP pypy.interpreter.pyframe.FrameDebugData.inst_w_f_trace 40>)
+3302: guard_isnull(p181, descr=<Guard0x7f4d236e6ec0>) [p0, p5, p6, p7, p10, p174, i179, p1]
debug_merge_point(0, 0, '<code object <module>. file 'test2.py'. line 1> #47 JUMP_ABSOLUTE')
+3311: guard_not_invalidated(descr=<Guard0x7f4d236e6e78>) [p0, p5, p6, p7, p10, p174, i179, p1]
+3311: i183 = getfield_raw_i(139969282623360, descr=<FieldS pypysig_long_struct.c_value 0>)
+3324: i185 = int_lt(i183, 0)
+3328: guard_false(i185, descr=<Guard0x7f4d236e6e30>) [p0, p5, p6, p7, p10, p174, i179, p1]
debug_merge_point(0, 0, '<code object <module>. file 'test2.py'. line 1> #28 FOR_ITER')
+3334: jump(p0, p1, p5, p6, p7, p10, p48, p177, descr=TargetToken(139969169400240))
+3344: --end of the loop--
[2bf93c076c2dc] jit-log-opt-loop}
[2bf93c077545c] jit-tracing}
# inner loop
(Integer >> #timesRepeat:) [2]: <0x11>pushTemporaryVariableBytecode(1)
(Integer >> #timesRepeat:) [3]: <0x70>pushReceiverBytecode
(Integer >> #timesRepeat:) [4]: <0xb4>bytecodePrimLessOrEqual
(Integer >> #timesRepeat:) [5]: <0xac>longJumpIfFalseBytecode(0)
(Integer >> #timesRepeat:) [7]: <0x10>pushTemporaryVariableBytecode(0)
(Integer >> #timesRepeat:) [8]: <0xc9>bytecodePrimValue
(AAA class >> #test4) [21]: <0x8c>pushRemoteTempLongBytecode
(AAA class >> #test4) [24]: <0x10>pushTemporaryVariableBytecode(0)
(AAA class >> #test4) [25]: <0xd2>sendLiteralSelectorBytecode(2)
(Number >> #abs) [0]: <0x70>pushReceiverBytecode
(Number >> #abs) [1]: <0x75>pushConstantZeroBytecode
(Number >> #abs) [2]: <0xb2>bytecodePrimLessThan
(Number >> #abs) [3]: <0x9a>shortConditionalJumpBytecode(2)
(Number >> #abs) [7]: <0x78>returnReceiverBytecode
(AAA class >> #test4) [26]: <0xb0>bytecodePrimAdd
(AAA class >> #test4) [27]: <0x8d>storeRemoteTempLongBytecode
(AAA class >> #test4) [30]: <0x7d>returnTopFromBlockBytecode
(Integer >> #timesRepeat:) [9]: <0x87>popStackBytecode
(Integer >> #timesRepeat:) [10]: <0x11>pushTemporaryVariableBytecode(1)
(Integer >> #timesRepeat:) [11]: <0x76>pushConstantOneBytecode
(Integer >> #timesRepeat:) [12]: <0xb0>bytecodePrimAdd
(Integer >> #timesRepeat:) [13]: <0x69>storeAndPopTemporaryVariableBytecode(1)
(Integer >> #timesRepeat:) [14]: <0xa3>longUnconditionalJumpBytecode(3)
(Integer >> #timesRepeat:) [2]: <0x11>pushTemporaryVariableBytecode(1)
# bridge to return out of inner loop method
(Integer >> #timesRepeat:) [3]: <0x70>pushReceiverBytecode
(Integer >> #timesRepeat:) [4]: <0xb4>bytecodePrimLessOrEqual
(Integer >> #timesRepeat:) [5]: <0xac>longJumpIfFalseBytecode(0)
(Integer >> #timesRepeat:) [16]: <0x78>returnReceiverBytecode
# entry bridge
(AAA class >> #test4) [21]: <0x8c>pushRemoteTempLongBytecode
(AAA class >> #test4) [24]: <0x10>pushTemporaryVariableBytecode(0)
(AAA class >> #test4) [25]: <0xd2>sendLiteralSelectorBytecode(2)
(Number >> #abs) [0]: <0x70>pushReceiverBytecode
(Number >> #abs) [1]: <0x75>pushConstantZeroBytecode
(Number >> #abs) [2]: <0xb2>bytecodePrimLessThan
(Number >> #abs) [3]: <0x9a>shortConditionalJumpBytecode(2)
(Number >> #abs) [7]: <0x78>returnReceiverBytecode
(AAA class >> #test4) [26]: <0xb0>bytecodePrimAdd
(AAA class >> #test4) [27]: <0x8d>storeRemoteTempLongBytecode
(AAA class >> #test4) [30]: <0x7d>returnTopFromBlockBytecode
# outer loop trace attempt
(AAA class >> #test4) [9]: <0x10>pushTemporaryVariableBytecode(0)
(AAA class >> #test4) [10]: <0x23>pushLiteralConstantBytecode(3)
(AAA class >> #test4) [11]: <0xb4>bytecodePrimLessOrEqual
(AAA class >> #test4) [12]: <0xac>longJumpIfFalseBytecode(0)
(AAA class >> #test4) [14]: <0x21>pushLiteralConstantBytecode(1)
(AAA class >> #test4) [15]: <0x10>pushTemporaryVariableBytecode(0)
(AAA class >> #test4) [16]: <0x11>pushTemporaryVariableBytecode(1)
(AAA class >> #test4) [17]: <0x8f>pushClosureCopyCopiedValuesBytecode
(AAA class >> #test4) [31]: <0xe0>sendLiteralSelectorBytecode(16)
(Integer >> #timesRepeat:) [0]: <0x76>pushConstantOneBytecode
(Integer >> #timesRepeat:) [1]: <0x69>storeAndPopTemporaryVariableBytecode(1)
(Integer >> #timesRepeat:) [2]: <0x11>pushTemporaryVariableBytecode(1)
(Integer >> #timesRepeat:) [3]: <0x70>pushReceiverBytecode
(Integer >> #timesRepeat:) [4]: <0xb4>bytecodePrimLessOrEqual
(Integer >> #timesRepeat:) [5]: <0xac>longJumpIfFalseBytecode(0)
(Integer >> #timesRepeat:) [7]: <0x10>pushTemporaryVariableBytecode(0)
(Integer >> #timesRepeat:) [8]: <0xc9>bytecodePrimValue
(AAA class >> #test4) [21]: <0x8c>pushRemoteTempLongBytecode
(AAA class >> #test4) [24]: <0x10>pushTemporaryVariableBytecode(0)
(AAA class >> #test4) [25]: <0xd2>sendLiteralSelectorBytecode(2)
(Number >> #abs) [0]: <0x70>pushReceiverBytecode
(Number >> #abs) [1]: <0x75>pushConstantZeroBytecode
(Number >> #abs) [2]: <0xb2>bytecodePrimLessThan
(Number >> #abs) [3]: <0x9a>shortConditionalJumpBytecode(2)
(Number >> #abs) [7]: <0x78>returnReceiverBytecode
(AAA class >> #test4) [26]: <0xb0>bytecodePrimAdd
(AAA class >> #test4) [27]: <0x8d>storeRemoteTempLongBytecode
(AAA class >> #test4) [30]: <0x7d>returnTopFromBlockBytecode
(Integer >> #timesRepeat:) [9]: <0x87>popStackBytecode
(Integer >> #timesRepeat:) [10]: <0x11>pushTemporaryVariableBytecode(1)
(Integer >> #timesRepeat:) [11]: <0x76>pushConstantOneBytecode
(Integer >> #timesRepeat:) [12]: <0xb0>bytecodePrimAdd
(Integer >> #timesRepeat:) [13]: <0x69>storeAndPopTemporaryVariableBytecode(1)
(Integer >> #timesRepeat:) [14]: <0xa3>longUnconditionalJumpBytecode(3)
(Integer >> #timesRepeat:) [2]: <0x11>pushTemporaryVariableBytecode(1)
vable escaped during a call in Interpreter.loop_bytecodes to 0x5a7f80
~~~ ABORTING TRACING ABORT_ESCAPE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment