Skip to content

Instantly share code, notes, and snippets.

@dogbert17
Created October 16, 2018 20:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dogbert17/fddecf8d5abe740e4dfd038dbd9c818f to your computer and use it in GitHub Desktop.
Save dogbert17/fddecf8d5abe740e4dfd038dbd9c818f to your computer and use it in GitHub Desktop.
Bisect
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