Created
October 16, 2018 20:59
-
-
Save dogbert17/fddecf8d5abe740e4dfd038dbd9c818f to your computer and use it in GitHub Desktop.
Bisect
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
dogbert@dogbert-VirtualBox ~/repos/rakudo $ cat spesh-0567.txt | |
Specialization of 'push' (cuid: 4482) | |
Before: | |
Spesh of 'push' (cuid: 4482, file: SETTING::src/core/IterationBuffer.pm6:20) | |
BB 0 (0x7f151423d480): | |
line: 20 (pc 0) | |
Instructions: | |
no_op | |
Successors: 1 | |
Predecessors: | |
Dominance children: 1 | |
BB 1 (0x7f151423d508): | |
line: 20 (pc 0) | |
Instructions: | |
null r0(1) | |
null r1(1) | |
null r2(1) | |
null r3(1) | |
null r4(1) | |
null r5(1) | |
null r6(1) | |
null r7(1) | |
null r8(1) | |
null r10(1) | |
checkarity liti16(2), liti16(2) | |
param_rp_o r2(2), liti16(0) | |
hllize r6(2), r2(2) | |
Successors: 2 | |
Predecessors: 0 | |
Dominance children: 2 | |
BB 2 (0x7f151423d568): | |
line: 20 (pc 18) | |
Instructions: | |
set r2(3), r6(2) | |
[Annotation: INS Deopt One (idx 0 -> pc 30; line 20)] | |
[Annotation: Logged (bytecode offset 24)] | |
decont r6(3), r2(3) | |
Successors: 3 | |
Predecessors: 1 | |
Dominance children: 3 | |
BB 3 (0x7f151423d5c8): | |
line: 20 (pc 30) | |
Instructions: | |
set r8(2), r6(3) | |
wval r6(4), liti16(0), liti16(73) (VMArray: IterationBuffer) | |
istype r9(1), r8(2), r6(4) | |
Successors: 4 | |
Predecessors: 2 | |
Dominance children: 4 | |
BB 4 (0x7f151423d628): | |
line: 20 (pc 52) | |
Instructions: | |
assertparamcheck r9(1) | |
Successors: 5 | |
Predecessors: 3 | |
Dominance children: 5 | |
BB 5 (0x7f151423d688): | |
line: 20 (pc 56) | |
Instructions: | |
set r0(2), r8(2) | |
param_rp_o r3(2), liti16(1) | |
hllize r6(5), r3(2) | |
Successors: 6 | |
Predecessors: 4 | |
Dominance children: 6 | |
BB 6 (0x7f151423d6e8): | |
line: 20 (pc 74) | |
Instructions: | |
set r3(3), r6(5) | |
[Annotation: INS Deopt One (idx 1 -> pc 86; line 20)] | |
[Annotation: Logged (bytecode offset 80)] | |
decont r6(6), r3(3) | |
Successors: 7 | |
Predecessors: 5 | |
Dominance children: 7 | |
BB 7 (0x7f151423d748): | |
line: 20 (pc 86) | |
Instructions: | |
set r10(2), r6(6) | |
set r1(2), r3(3) | |
param_sn r4(2) | |
[Annotation: Line Number: SETTING::src/core/IterationBuffer.pm6:20] | |
takedispatcher r5(2) | |
[Annotation: Line Number: SETTING::src/core/IterationBuffer.pm6:20] | |
push_o r0(2), r1(2) | |
set r6(7), r1(2) | |
[Annotation: INS Deopt One (idx 2 -> pc 118; line 20)] | |
prepargs callsite(0x7f151efe4320, 1 arg, 1 pos, nonflattening, interned) | |
arg_o liti16(0), r6(7) | |
[Annotation: INS Deopt One (idx 3 -> pc 136; line 20)] | |
[Annotation: Logged (bytecode offset 128)] | |
speshresolve r7(2), lits(decontrv) | |
Successors: 8 | |
Predecessors: 6 | |
Dominance children: 8 | |
BB 8 (0x7f151423d7a8): | |
line: 20 (pc 136) | |
Instructions: | |
[Annotation: INS Deopt One (idx 4 -> pc 136; line 20)] | |
prepargs callsite(0x7f151efe4320, 1 arg, 1 pos, nonflattening, interned) | |
arg_o liti16(0), r6(7) | |
[Annotation: INS Deopt All (idx 6 -> pc 152; line 20)] | |
[Annotation: INS Deopt One (idx 5 -> pc 152; line 20)] | |
[Annotation: Logged (bytecode offset 146)] | |
invoke_o r7(3), r7(2) | |
Successors: 9 | |
Predecessors: 7 | |
Dominance children: 9 | |
BB 9 (0x7f151423d808): | |
line: 20 (pc 152) | |
Instructions: | |
return_o r7(3) | |
Successors: | |
Predecessors: 8 | |
Dominance children: | |
Facts: | |
r0(0): usages=0, flags=0 | |
r0(1): usages=0, flags=0 | |
r0(2): usages=0, flags=0 | |
r1(0): usages=0, flags=0 | |
r1(1): usages=0, flags=0 | |
r1(2): usages=0, flags=0 | |
r2(0): usages=0, flags=0 | |
r2(1): usages=0, flags=0 | |
r2(2): usages=0, flags=0 | |
r2(3): usages=0, flags=0 | |
r3(0): usages=0, flags=0 | |
r3(1): usages=0, flags=0 | |
r3(2): usages=0, flags=0 | |
r3(3): usages=0, flags=0 | |
r4(0): usages=0, flags=0 | |
r4(1): usages=0, flags=0 | |
r4(2): usages=0, flags=0 | |
r5(0): usages=0, flags=0 | |
r5(1): usages=0, flags=0 | |
r5(2): usages=0, flags=0 | |
r6(0): usages=0, flags=0 | |
r6(1): usages=0, flags=0 | |
r6(2): usages=0, flags=0 | |
r6(3): usages=0, flags=0 | |
r6(4): usages=0, flags=0 | |
r6(5): usages=0, flags=0 | |
r6(6): usages=0, flags=0 | |
r6(7): usages=0, flags=0 | |
r7(0): usages=0, flags=0 | |
r7(1): usages=0, flags=0 | |
r7(2): usages=0, flags=0 | |
r7(3): usages=0, flags=0 | |
r8(0): usages=0, flags=0 | |
r8(1): usages=0, flags=0 | |
r8(2): usages=0, flags=0 | |
r9(0): usages=0, flags=0 | |
r9(1): usages=0, flags=0 | |
r10(0): usages=0, flags=0 | |
r10(1): usages=0, flags=0 | |
r10(2): usages=0, flags=0 | |
Frame size: 300 bytes | |
JIT: Starting dump of JIT expression tree | |
========================================= | |
digraph { | |
n_0012 [label="TC"]; | |
n_0014 [label="ADDR(432)"]; | |
n_0014 -> n_0012; | |
n_0018 [label="LOAD(8)"]; | |
n_0018 -> n_0014; | |
n_0022 [label="ADDR(96)"]; | |
n_0022 -> n_0018; | |
n_0026 [label="LOAD(8)"]; | |
n_0026 -> n_0022; | |
n_0008 [label="CONST(0, 2)"]; | |
n_0030 [label="IDX(8)"]; | |
n_0030 -> n_0026; | |
n_0030 -> n_0008; | |
n_0035 [label="LOAD(8)"]; | |
n_0035 -> n_0030; | |
n_0045 [label="CONST_PTR(0)"]; | |
n_0048 [label="TC"]; | |
n_0050 [label="CARG(0)"]; | |
n_0050 -> n_0048; | |
n_0054 [label="CARG(0)"]; | |
n_0054 -> n_0035; | |
n_0058 [label="CONST_PTR(1)"]; | |
n_0061 [label="TC"]; | |
n_0063 [label="CARG(0)"]; | |
n_0063 -> n_0061; | |
n_0067 [label="ARGLIST"]; | |
n_0067 -> n_0063; | |
n_0070 [label="CALL(8)"]; | |
n_0070 -> n_0058; | |
n_0070 -> n_0067; | |
n_0075 [label="CARG(0)"]; | |
n_0075 -> n_0070; | |
n_0039 [label="LOCAL"]; | |
n_0041 [label="ADDR(16)"]; | |
n_0041 -> n_0039; | |
n_0079 [label="CARG(0)"]; | |
n_0079 -> n_0041; | |
n_0083 [label="ARGLIST"]; | |
n_0083 -> n_0050; | |
n_0083 -> n_0054; | |
n_0083 -> n_0075; | |
n_0083 -> n_0079; | |
n_0089 [label="CALLV"]; | |
n_0089 -> n_0045; | |
n_0089 -> n_0083; | |
n_0099 [label="LOCAL"]; | |
n_0101 [label="ADDR(16)"]; | |
n_0101 -> n_0099; | |
n_0105 [label="LOAD(8)"]; | |
n_0105 -> n_0101; | |
n_0109 [label="NZ"]; | |
n_0109 -> n_0105; | |
n_0112 [label="ADDR(12)"]; | |
n_0112 -> n_0105; | |
n_0116 [label="LOAD(2)"]; | |
n_0116 -> n_0112; | |
n_0120 [label="CONST(1, 2)"]; | |
n_0124 [label="AND"]; | |
n_0124 -> n_0116; | |
n_0124 -> n_0120; | |
n_0128 [label="ZR"]; | |
n_0128 -> n_0124; | |
n_0131 [label="ADDR(16)"]; | |
n_0131 -> n_0105; | |
n_0135 [label="LOAD(8)"]; | |
n_0135 -> n_0131; | |
n_0139 [label="ADDR(64)"]; | |
n_0139 -> n_0135; | |
n_0143 [label="LOAD(8)"]; | |
n_0143 -> n_0139; | |
n_0147 [label="NZ"]; | |
n_0147 -> n_0143; | |
n_0150 [label="ALL"]; | |
n_0150 -> n_0109; | |
n_0150 -> n_0128; | |
n_0150 -> n_0147; | |
n_0155 [label="ADDR(16)"]; | |
n_0155 -> n_0105; | |
n_0159 [label="LOAD(8)"]; | |
n_0159 -> n_0155; | |
n_0163 [label="ADDR(64)"]; | |
n_0163 -> n_0159; | |
n_0167 [label="LOAD(8)"]; | |
n_0167 -> n_0163; | |
n_0171 [label="ADDR(8)"]; | |
n_0171 -> n_0167; | |
n_0175 [label="LOAD(8)"]; | |
n_0175 -> n_0171; | |
n_0179 [label="TC"]; | |
n_0181 [label="CARG(0)"]; | |
n_0181 -> n_0179; | |
n_0185 [label="CARG(0)"]; | |
n_0185 -> n_0105; | |
n_0093 [label="LOCAL"]; | |
n_0095 [label="ADDR(48)"]; | |
n_0095 -> n_0093; | |
n_0189 [label="CARG(0)"]; | |
n_0189 -> n_0095; | |
n_0193 [label="ARGLIST"]; | |
n_0193 -> n_0181; | |
n_0193 -> n_0185; | |
n_0193 -> n_0189; | |
n_0198 [label="CALLV"]; | |
n_0198 -> n_0175; | |
n_0198 -> n_0193; | |
n_0202 [label="STORE(8)"]; | |
n_0202 -> n_0095; | |
n_0202 -> n_0105; | |
n_0207 [label="IFV"]; | |
n_0207 -> n_0150; | |
n_0207 -> n_0198; | |
n_0207 -> n_0202; | |
n_0212 [label="LOCAL"]; | |
n_0214 [label="ADDR(64)"]; | |
n_0214 -> n_0212; | |
n_0218 [label="LOCAL"]; | |
n_0220 [label="ADDR(48)"]; | |
n_0220 -> n_0218; | |
n_0224 [label="LOAD(8)"]; | |
n_0224 -> n_0220; | |
n_0228 [label="COPY"]; | |
n_0228 -> n_0224; | |
n_0310 [label="STORE(8)"]; | |
n_0310 -> n_0214; | |
n_0310 -> n_0228; | |
n_0231 [label="LOCAL"]; | |
n_0233 [label="ADDR(48)"]; | |
n_0233 -> n_0231; | |
n_0241 [label="TC"]; | |
n_0243 [label="ADDR(432)"]; | |
n_0243 -> n_0241; | |
n_0247 [label="LOAD(8)"]; | |
n_0247 -> n_0243; | |
n_0251 [label="ADDR(120)"]; | |
n_0251 -> n_0247; | |
n_0255 [label="LOAD(8)"]; | |
n_0255 -> n_0251; | |
n_0237 [label="CONST(1, 2)"]; | |
n_0259 [label="IDX(8)"]; | |
n_0259 -> n_0255; | |
n_0259 -> n_0237; | |
n_0264 [label="LOAD(8)"]; | |
n_0264 -> n_0259; | |
n_0305 [label="STORE(8)"]; | |
n_0305 -> n_0233; | |
n_0305 -> n_0264; | |
n_0274 [label="CONST_PTR(2)"]; | |
n_0277 [label="TC"]; | |
n_0279 [label="CARG(0)"]; | |
n_0279 -> n_0277; | |
n_0283 [label="CARG(0)"]; | |
n_0283 -> n_0228; | |
n_0287 [label="CARG(0)"]; | |
n_0287 -> n_0264; | |
n_0268 [label="LOCAL"]; | |
n_0270 [label="ADDR(72)"]; | |
n_0270 -> n_0268; | |
n_0291 [label="CARG(0)"]; | |
n_0291 -> n_0270; | |
n_0295 [label="ARGLIST"]; | |
n_0295 -> n_0279; | |
n_0295 -> n_0283; | |
n_0295 -> n_0287; | |
n_0295 -> n_0291; | |
n_0301 [label="CALLV"]; | |
n_0301 -> n_0274; | |
n_0301 -> n_0295; | |
n_0315 [label="LOCAL"]; | |
n_0317 [label="ADDR(72)"]; | |
n_0317 -> n_0315; | |
n_0321 [label="LOAD(8)"]; | |
n_0321 -> n_0317; | |
n_0325 [label="ZR"]; | |
n_0325 -> n_0321; | |
n_0328 [label="CONST_PTR(3)"]; | |
n_0331 [label="TC"]; | |
n_0333 [label="CARG(0)"]; | |
n_0333 -> n_0331; | |
n_0337 [label="ARGLIST"]; | |
n_0337 -> n_0333; | |
n_0340 [label="CALLV"]; | |
n_0340 -> n_0328; | |
n_0340 -> n_0337; | |
n_0344 [label="WHEN"]; | |
n_0344 -> n_0325; | |
n_0344 -> n_0340; | |
n_0348 [label="LOCAL"]; | |
n_0350 [label="ADDR(0)"]; | |
n_0350 -> n_0348; | |
n_0354 [label="LOCAL"]; | |
n_0356 [label="ADDR(64)"]; | |
n_0356 -> n_0354; | |
n_0360 [label="LOAD(8)"]; | |
n_0360 -> n_0356; | |
n_0364 [label="COPY"]; | |
n_0364 -> n_0360; | |
n_0458 [label="STORE(8)"]; | |
n_0458 -> n_0350; | |
n_0458 -> n_0364; | |
n_0367 [label="LOCAL"]; | |
n_0369 [label="ADDR(24)"]; | |
n_0369 -> n_0367; | |
n_0377 [label="TC"]; | |
n_0379 [label="ADDR(432)"]; | |
n_0379 -> n_0377; | |
n_0383 [label="LOAD(8)"]; | |
n_0383 -> n_0379; | |
n_0387 [label="ADDR(96)"]; | |
n_0387 -> n_0383; | |
n_0391 [label="LOAD(8)"]; | |
n_0391 -> n_0387; | |
n_0373 [label="CONST(1, 2)"]; | |
n_0395 [label="IDX(8)"]; | |
n_0395 -> n_0391; | |
n_0395 -> n_0373; | |
n_0400 [label="LOAD(8)"]; | |
n_0400 -> n_0395; | |
n_0463 [label="STORE(8)"]; | |
n_0463 -> n_0369; | |
n_0463 -> n_0400; | |
n_0410 [label="CONST_PTR(4)"]; | |
n_0413 [label="TC"]; | |
n_0415 [label="CARG(0)"]; | |
n_0415 -> n_0413; | |
n_0419 [label="CARG(0)"]; | |
n_0419 -> n_0400; | |
n_0423 [label="CONST_PTR(5)"]; | |
n_0426 [label="TC"]; | |
n_0428 [label="CARG(0)"]; | |
n_0428 -> n_0426; | |
n_0432 [label="ARGLIST"]; | |
n_0432 -> n_0428; | |
n_0435 [label="CALL(8)"]; | |
n_0435 -> n_0423; | |
n_0435 -> n_0432; | |
n_0440 [label="CARG(0)"]; | |
n_0440 -> n_0435; | |
n_0404 [label="LOCAL"]; | |
n_0406 [label="ADDR(8)"]; | |
n_0406 -> n_0404; | |
n_0444 [label="CARG(0)"]; | |
n_0444 -> n_0406; | |
n_0448 [label="ARGLIST"]; | |
n_0448 -> n_0415; | |
n_0448 -> n_0419; | |
n_0448 -> n_0440; | |
n_0448 -> n_0444; | |
n_0454 [label="CALLV"]; | |
n_0454 -> n_0410; | |
n_0454 -> n_0448; | |
n_0468 [label="LOCAL"]; | |
n_0470 [label="ADDR(40)"]; | |
n_0470 -> n_0468; | |
n_0474 [label="TC"]; | |
n_0476 [label="ADDR(632)"]; | |
n_0476 -> n_0474; | |
n_0480 [label="LOAD(8)"]; | |
n_0480 -> n_0476; | |
n_0484 [label="DISCARD"]; | |
n_0484 -> n_0480; | |
n_0487 [label="TC"]; | |
n_0489 [label="ADDR(640)"]; | |
n_0489 -> n_0487; | |
n_0493 [label="LOAD(8)"]; | |
n_0493 -> n_0489; | |
n_0497 [label="DISCARD"]; | |
n_0497 -> n_0493; | |
n_0500 [label="TC"]; | |
n_0502 [label="ADDR(432)"]; | |
n_0502 -> n_0500; | |
n_0506 [label="LOAD(8)"]; | |
n_0506 -> n_0502; | |
n_0510 [label="ADDR(72)"]; | |
n_0510 -> n_0506; | |
n_0514 [label="LOAD(8)"]; | |
n_0514 -> n_0510; | |
n_0518 [label="DISCARD"]; | |
n_0518 -> n_0514; | |
n_0521 [label="NZ"]; | |
n_0521 -> n_0480; | |
n_0524 [label="ZR"]; | |
n_0524 -> n_0493; | |
n_0527 [label="EQ"]; | |
n_0527 -> n_0493; | |
n_0527 -> n_0514; | |
n_0531 [label="ANY"]; | |
n_0531 -> n_0524; | |
n_0531 -> n_0527; | |
n_0535 [label="ALL"]; | |
n_0535 -> n_0521; | |
n_0535 -> n_0531; | |
n_0539 [label="TC"]; | |
n_0541 [label="ADDR(632)"]; | |
n_0541 -> n_0539; | |
n_0545 [label="LOAD(8)"]; | |
n_0545 -> n_0541; | |
n_0549 [label="CONST(0, 8)"]; | |
n_0553 [label="STORE(8)"]; | |
n_0553 -> n_0545; | |
n_0553 -> n_0549; | |
n_0558 [label="DO"]; | |
n_0558 -> n_0553; | |
n_0558 -> n_0480; | |
n_0562 [label="TC"]; | |
n_0564 [label="ADDR(16)"]; | |
n_0564 -> n_0562; | |
n_0568 [label="LOAD(8)"]; | |
n_0568 -> n_0564; | |
n_0572 [label="ADDR(1680)"]; | |
n_0572 -> n_0568; | |
n_0576 [label="LOAD(8)"]; | |
n_0576 -> n_0572; | |
n_0580 [label="IF"]; | |
n_0580 -> n_0535; | |
n_0580 -> n_0558; | |
n_0580 -> n_0576; | |
n_0585 [label="DO"]; | |
n_0585 -> n_0484; | |
n_0585 -> n_0497; | |
n_0585 -> n_0518; | |
n_0585 -> n_0580; | |
n_0723 [label="STORE(8)"]; | |
n_0723 -> n_0470; | |
n_0723 -> n_0585; | |
n_0591 [label="LOCAL"]; | |
n_0593 [label="ADDR(0)"]; | |
n_0593 -> n_0591; | |
n_0597 [label="LOAD(8)"]; | |
n_0597 -> n_0593; | |
n_0611 [label="ADDR(16)"]; | |
n_0611 -> n_0597; | |
n_0615 [label="LOAD(8)"]; | |
n_0615 -> n_0611; | |
n_0619 [label="ADDR(16)"]; | |
n_0619 -> n_0615; | |
n_0623 [label="LOAD(8)"]; | |
n_0623 -> n_0619; | |
n_0627 [label="ADDR(168)"]; | |
n_0627 -> n_0623; | |
n_0631 [label="LOAD(8)"]; | |
n_0631 -> n_0627; | |
n_0635 [label="TC"]; | |
n_0637 [label="CARG(0)"]; | |
n_0637 -> n_0635; | |
n_0641 [label="ADDR(16)"]; | |
n_0641 -> n_0597; | |
n_0645 [label="LOAD(8)"]; | |
n_0645 -> n_0641; | |
n_0649 [label="CARG(0)"]; | |
n_0649 -> n_0645; | |
n_0653 [label="CARG(0)"]; | |
n_0653 -> n_0597; | |
n_0657 [label="ADDR(24)"]; | |
n_0657 -> n_0597; | |
n_0661 [label="CARG(0)"]; | |
n_0661 -> n_0657; | |
n_0601 [label="LOCAL"]; | |
n_0603 [label="ADDR(8)"]; | |
n_0603 -> n_0601; | |
n_0607 [label="LOAD(8)"]; | |
n_0607 -> n_0603; | |
n_0665 [label="CARG(0)"]; | |
n_0665 -> n_0607; | |
n_0669 [label="CONST(8, 8)"]; | |
n_0673 [label="CARG(1)"]; | |
n_0673 -> n_0669; | |
n_0677 [label="ARGLIST"]; | |
n_0677 -> n_0637; | |
n_0677 -> n_0649; | |
n_0677 -> n_0653; | |
n_0677 -> n_0661; | |
n_0677 -> n_0665; | |
n_0677 -> n_0673; | |
n_0685 [label="CALLV"]; | |
n_0685 -> n_0631; | |
n_0685 -> n_0677; | |
n_0689 [label="CONST_PTR(6)"]; | |
n_0692 [label="TC"]; | |
n_0694 [label="CARG(0)"]; | |
n_0694 -> n_0692; | |
n_0698 [label="CARG(0)"]; | |
n_0698 -> n_0597; | |
n_0702 [label="ARGLIST"]; | |
n_0702 -> n_0694; | |
n_0702 -> n_0698; | |
n_0706 [label="CALLV"]; | |
n_0706 -> n_0689; | |
n_0706 -> n_0702; | |
n_0710 [label="DOV"]; | |
n_0710 -> n_0685; | |
n_0710 -> n_0706; | |
n_0714 [label="LOCAL"]; | |
n_0716 [label="ADDR(48)"]; | |
n_0716 -> n_0714; | |
n_0720 [label="COPY"]; | |
n_0720 -> n_0607; | |
n_0728 [label="STORE(8)"]; | |
n_0728 -> n_0716; | |
n_0728 -> n_0720; | |
} | |
End dump of JIT expression tree | |
=============================== | |
JIT: Starting tile list log | |
=========================== | |
Block{0} [0-16) | |
0: (tc) | |
1: (load (addr reg $ofs) $size) | |
2: (load (addr reg $ofs) $size) | |
3: (const $val $size) | |
4: (load (idx reg reg $scale) $size) | |
5: (tc) | |
6: (tc) | |
7: (arglist (carg reg)) | |
8: (call (const_ptr $ptr) c_args $size) | |
9: (local) | |
10: (addr reg $ofs) | |
11: (arglist (carg reg)) | |
12: (callv (const_ptr $ptr) c_args) | |
13: (local) | |
14: (nz (load (addr reg $ofs) $size)) | |
15: (conditional-branch :fail) | |
-> { 1, 4 } | |
Block{1} [16-19) | |
16: (load (addr reg $ofs) $size) | |
17: (zr (and (load (addr reg $ofs) $size) (const $val $size))) | |
18: (conditional-branch :fail) | |
-> { 2, 4 } | |
Block{2} [19-23) | |
19: (load (addr reg $ofs) $size) | |
20: (load (addr reg $ofs) $size) | |
21: (nz (load (addr reg $ofs) $size)) | |
22: (conditional-branch :fail) | |
-> { 3, 4 } | |
Block{3} [23-34) | |
23: (all flag) | |
24: (load (addr reg $ofs) $size) | |
25: (load (addr reg $ofs) $size) | |
26: (load (addr reg $ofs) $size) | |
27: (tc) | |
28: (load (addr reg $ofs) $size) | |
29: (local) | |
30: (addr reg $ofs) | |
31: (arglist (carg reg)) | |
32: (callv (load (addr reg $ofs) $sz) c_args) | |
33: (branch :after) | |
-> { 5 } | |
Block{4} [34-37) | |
34: (label :fail) | |
35: (load (addr reg $ofs) $size) | |
36: (store (addr reg $ofs) reg $size) | |
-> { 5 } | |
Block{5} [37-59) | |
37: (branch :after) | |
38: (ifv flag void) | |
39: (local) | |
40: (local) | |
41: (load (addr reg $ofs) $size) | |
42: (copy reg) | |
43: (store (addr reg $ofs) reg $size) | |
44: (local) | |
45: (tc) | |
46: (load (addr reg $ofs) $size) | |
47: (load (addr reg $ofs) $size) | |
48: (const $val $size) | |
49: (load (idx reg reg $scale) $size) | |
50: (store (addr reg $ofs) reg $size) | |
51: (tc) | |
52: (local) | |
53: (addr reg $ofs) | |
54: (arglist (carg reg)) | |
55: (callv (const_ptr $ptr) c_args) | |
56: (local) | |
57: (zr (load (addr reg $ofs) $size)) | |
58: (branch :fail) | |
-> { 6, 7 } | |
Block{6} [59-62) | |
59: (tc) | |
60: (arglist (carg reg)) | |
61: (callv (const_ptr $ptr) c_args) | |
-> { 7 } | |
Block{7} [62-97) | |
62: (label :fail) | |
63: (when flag void) | |
64: (local) | |
65: (local) | |
66: (load (addr reg $ofs) $size) | |
67: (copy reg) | |
68: (store (addr reg $ofs) reg $size) | |
69: (local) | |
70: (tc) | |
71: (load (addr reg $ofs) $size) | |
72: (load (addr reg $ofs) $size) | |
73: (const $val $size) | |
74: (load (idx reg reg $scale) $size) | |
75: (store (addr reg $ofs) reg $size) | |
76: (tc) | |
77: (tc) | |
78: (arglist (carg reg)) | |
79: (call (const_ptr $ptr) c_args $size) | |
80: (local) | |
81: (addr reg $ofs) | |
82: (arglist (carg reg)) | |
83: (callv (const_ptr $ptr) c_args) | |
84: (local) | |
85: (tc) | |
86: (load (addr reg $ofs) $size) | |
87: (discard reg) | |
88: (tc) | |
89: (load (addr reg $ofs) $size) | |
90: (discard reg) | |
91: (tc) | |
92: (load (addr reg $ofs) $size) | |
93: (load (addr reg $ofs) $size) | |
94: (discard reg) | |
95: (nz (load (addr reg $ofs) $size)) | |
96: (conditional-branch :fail) | |
-> { 8, 11 } | |
Block{8} [97-99) | |
97: (zr (load (addr reg $ofs) $size)) | |
98: (branch :success) | |
-> { 9, 10 } | |
Block{9} [99-103) | |
99: (eq reg reg) | |
100: (branch :success) | |
101: (any flag) | |
102: (branch :fail) # ALL | |
-> { 10, 11 } | |
Block{10} [103-111) | |
103: (label :success) # ANY | |
104: (all flag) | |
105: (tc) | |
106: (load (addr reg $ofs) $size) | |
107: (const $val $size) | |
108: (store reg reg $size) | |
109: (do void reg) | |
110: (branch :after) | |
-> { 12 } | |
Block{11} [111-115) | |
111: (label :fail) | |
112: (tc) | |
113: (load (addr reg $ofs) $size) | |
114: (load (addr reg $ofs) $size) | |
-> { 12 } | |
Block{12} [115-138) | |
115: (branch :after) | |
116: (if flag reg) | |
117: (do void reg) | |
118: (store (addr reg $ofs) reg $size) | |
119: (local) | |
120: (load (addr reg $ofs) $size) | |
121: (load (addr reg $ofs) $size) | |
122: (load (addr reg $ofs) $size) | |
123: (tc) | |
124: (load (addr reg $ofs) $size) | |
125: (addr reg $ofs) | |
126: (local) | |
127: (load (addr reg $ofs) $size) | |
128: (const $val $size) | |
129: (arglist (carg reg)) | |
130: (callv (load (addr reg $ofs) $sz) c_args) | |
131: (tc) | |
132: (arglist (carg reg)) | |
133: (callv (const_ptr $ptr) c_args) | |
134: (dov void void) | |
135: (local) | |
136: (copy reg) | |
137: (store (addr reg $ofs) reg $size) | |
-> {} | |
End of tile list log | |
==================== | |
After: | |
Spesh of 'push' (cuid: 4482, file: SETTING::src/core/IterationBuffer.pm6:20) | |
Callsite 0x7f151efe4340 (2 args, 2 pos) | |
Positional flags: obj, obj | |
BB 0 (0x7f151423d480): | |
line: 20 (pc 0) | |
Instructions: | |
no_op | |
Successors: 1 | |
Predecessors: | |
Dominance children: 1 | |
BB 1 (0x7f151423d508): | |
line: 20 (pc 0) | |
Instructions: | |
sp_getarg_o r2(2), liti16(0) # start of exprjit tree | |
hllize r2(3), r2(2) | |
[Annotation: INS Deopt One (idx 0 -> pc 30; line 20)] | |
[Annotation: Logged (bytecode offset 24)] | |
sp_decont r6(3), r2(3) | |
set r8(2), r6(3) | |
sp_getspeshslot r6(4), sslot(1) | |
istype r9(1), r8(2), r6(4) | |
assertparamcheck r9(1) | |
set r0(2), r8(2) | |
sp_getarg_o r3(2), liti16(1) | |
[Annotation: INS Deopt One (idx 1 -> pc 86; line 20)] | |
hllize r1(2), r3(2) | |
[Annotation: Line Number: SETTING::src/core/IterationBuffer.pm6:20] | |
takedispatcher r5(2) | |
[Annotation: Line Number: SETTING::src/core/IterationBuffer.pm6:20] | |
push_o r0(2), r1(2) | |
set r6(7), r1(2) | |
[Annotation: INS Deopt One (idx 2 -> pc 118; line 20)] | |
prepargs callsite(0x7f151efe4320, 1 arg, 1 pos, nonflattening, interned) # expr bail: Cannot get template for: prepargs | |
arg_o liti16(0), r6(7) | |
[Annotation: INS Deopt One (idx 3 -> pc 136; line 20)] | |
[Annotation: Logged (bytecode offset 128)] | |
sp_speshresolve r7(2), lits(decontrv), litui32(128), sslot(2) | |
[Annotation: INS Deopt One (idx 4 -> pc 136; line 20)] | |
prepargs callsite(0x7f151efe4320, 1 arg, 1 pos, nonflattening, interned) | |
arg_o liti16(0), r6(7) | |
[Annotation: INS Deopt All (idx 6 -> pc 152; line 20)] | |
[Annotation: INS Deopt One (idx 5 -> pc 152; line 20)] | |
[Annotation: Logged (bytecode offset 146)] | |
invoke_o r7(3), r7(2) | |
return_o r7(3) | |
Successors: | |
Predecessors: 0 | |
Dominance children: 2 | |
Facts: | |
r0(0): usages=0, flags=0 | |
r0(1): usages=0, flags=0 DeadWriter | |
r0(2): usages=1, flags=0 | |
r1(0): usages=0, flags=0 | |
r1(1): usages=0, flags=0 DeadWriter | |
r1(2): usages=2, flags=0 | |
r2(0): usages=0, flags=0 | |
r2(1): usages=0, flags=0 DeadWriter | |
r2(2): usages=1, flags=0 | |
r2(3): usages=1, flags=0 | |
r3(0): usages=0, flags=0 | |
r3(1): usages=0, flags=0 DeadWriter | |
r3(2): usages=1, flags=0 | |
r3(3): usages=0, flags=0 | |
r4(0): usages=0, flags=0 | |
r4(1): usages=0, flags=0 DeadWriter | |
r4(2): usages=0, flags=0 DeadWriter | |
r5(0): usages=0, flags=0 | |
r5(1): usages=0, flags=0 DeadWriter | |
r5(2): usages=0, flags=0 | |
r6(0): usages=0, flags=0 | |
r6(1): usages=0, flags=0 DeadWriter | |
r6(2): usages=0, flags=0 | |
r6(3): usages=1, deopt=0, flags=0 | |
r6(4): usages=1, flags=19 KnTyp KnVal TyObj | |
r6(5): usages=0, flags=0 | |
r6(6): usages=0, flags=0 DeadWriter | |
r6(7): usages=2, deopt=3, flags=0 | |
r7(0): usages=0, flags=0 | |
r7(1): usages=0, flags=0 DeadWriter | |
r7(2): usages=1, deopt=3, flags=0 | |
r7(3): usages=1, deopt=5,6, flags=0 | |
r8(0): usages=0, flags=0 | |
r8(1): usages=0, flags=0 DeadWriter | |
r8(2): usages=2, flags=0 | |
r9(0): usages=0, flags=0 | |
r9(1): usages=1, flags=0 | |
r10(0): usages=0, flags=0 | |
r10(1): usages=0, flags=0 DeadWriter | |
r10(2): usages=0, flags=0 DeadWriter | |
Spesh slots: | |
0 = STable (BOOTHash) | |
1 = Type Object (IterationBuffer) | |
2 = Instance (BOOTStaticFrame) - 'push' (4482) | |
Frame size: 182 bytes | |
Specialization took 18us (total 477us) | |
JIT was successful and compilation took 456us | |
Bytecode size: 940 byte | |
======== | |
Latest guard tree for 'push' (cuid: 4482, file: SETTING::src/core/IterationBuffer.pm6:20) | |
0: CALLSITE 0x7f151efe4340 | Y: 8, N: 0 | |
1: LOAD ARG 0 | Y: 2 | |
2: STABLE CONC Scalar | Y: 3, N: 0 | |
3: DEREF_VALUE 0 | Y: 4, N: 0 | |
4: STABLE CONC IterationBuffer | Y: 5, N: 0 | |
5: LOAD ARG 1 | Y: 6 | |
6: STABLE CONC Pair | Y: 7, N: 0 | |
7: RESULT 0 | |
8: CERTAIN RESULT 1 | |
======== |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment