Last active
January 3, 2017 10:22
-
-
Save timfel/3fdb2425bb4732460ec8389b6d028c09 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"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. | |
] | |
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[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} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[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} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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