Skip to content

Instantly share code, notes, and snippets.

@niner
Last active February 28, 2021 13:15
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 niner/0fa1f36ea49a64f3a8e6748b9e5f722c to your computer and use it in GitHub Desktop.
Save niner/0fa1f36ea49a64f3a8e6748b9e5f722c to your computer and use it in GitHub Desktop.
Specialization of 'is_type' (cuid: 197)
Before:
Spesh of 'is_type' (cuid: 197, file: gen/moar/World.nqp:4845)
BB 0 (0x7f13f5146d10):
line: 4845 (pc 0)
Instructions:
no_op
Successors: 1, 8
Predecessors:
Dominance children: 8, 1, 9
Dominance frontier:
Handler successors:
BB 1 (0x7f13f5146d98):
line: 4845 (pc 0)
Instructions:
null r0(1)
null r1(1)
null r2(1)
null r4(2)
null r6(1)
null r7(1)
null r8(1)
null r9(1)
getcode r6(2), coderef(???)
takeclosure r6(3), r6(2)
checkarity liti16(2), liti16(2)
param_rp_o r0(2), liti16(0)
param_rp_o r1(2), liti16(1)
paramnamesused
[Annotation: Line Number: gen/moar/World.nqp:4845]
const_i64_16 r3(1), liti16(0)
hllboxtype_i r4(3)
box_i r4(4), r3(1), r4(3)
set r2(2), r4(4)
set r5(1), r6(3)
Successors: 2
Predecessors: 0
Dominance children: 2
Dominance frontier: 9
Handler successors:
BB 2 (0x7f13f5146df8):
line: 4847 (pc 62)
Instructions:
[Annotation: FH Start (0)]
[Annotation: INS Deopt One (idx 0 -> pc 68; line 4847)]
[Annotation: Logged (bytecode offset 62)]
[Annotation: Line Number: gen/moar/World.nqp:4847]
decont r7(2), r0(2)
Successors: 3
Predecessors: 1
Dominance children: 3
Dominance frontier: 9
Handler successors:
BB 3 (0x7f13f5146e58):
line: 4847 (pc 68)
Instructions:
[Annotation: INS Deopt One (idx 1 -> pc 74; line 4847)]
[Annotation: Logged (bytecode offset 68)]
decont r9(2), r7(2)
Successors: 4
Predecessors: 2
Dominance children: 4
Dominance frontier: 9
Handler successors:
BB 4 (0x7f13f5146eb8):
line: 4847 (pc 74)
Instructions:
findmeth r8(2), r9(2), lits(find_symbol)
Successors: 5
Predecessors: 3
Dominance children: 5
Dominance frontier: 9
Handler successors:
BB 5 (0x7f13f5146f18):
line: 4847 (pc 84)
Instructions:
[Annotation: INS Deopt One (idx 2 -> pc 84; line 4847)]
prepargs callsite(0x7f13fca79700, 2 arg, 2 pos, nonflattening, interned)
arg_o liti16(0), r7(2)
arg_o liti16(1), r1(2)
[Annotation: INS Deopt All (idx 4 -> pc 106; line 4847)]
[Annotation: INS Deopt One (idx 3 -> pc 106; line 4847)]
[Annotation: Logged (bytecode offset 100)]
invoke_o r8(3), r8(2)
Successors: 6
Predecessors: 4
Dominance children: 6
Dominance frontier: 9
Handler successors:
BB 6 (0x7f13f5146f78):
line: 4847 (pc 106)
Instructions:
[Annotation: INS Deopt One (idx 5 -> pc 112; line 4847)]
[Annotation: Logged (bytecode offset 106)]
decont r7(3), r8(3)
Successors: 7
Predecessors: 5
Dominance children: 7
Dominance frontier: 9
Handler successors:
BB 7 (0x7f13f5146fd8):
line: 4847 (pc 112)
Instructions:
isconcrete r3(2), r7(3)
not_i r10(1), r3(2)
hllboxtype_i r7(4)
box_i r7(5), r10(1), r7(4)
set r2(3), r7(5)
set r4(5), r2(3)
goto BB(9)
Successors: 9
Predecessors: 6
Dominance children:
Dominance frontier: 9
Handler successors:
BB 8 (0x7f13f5147038):
line: 4847 (pc 154)
Instructions:
[Annotation: FH Goto (0)]
[Annotation: FH End (0)]
takehandlerresult r4(1)
Successors: 9
Predecessors: 0
Dominance children:
Dominance frontier: 9
Handler successors:
BB 9 (0x7f13f5147098):
line: 4847 (pc 158)
Instructions:
PHI r10(2), r10(1), r10(0)
PHI r9(3), r9(2), r9(0)
PHI r8(4), r8(3), r8(0)
PHI r7(6), r7(5), r7(0)
PHI r6(4), r6(3), r6(0)
PHI r5(2), r5(1), r5(0)
PHI r4(6), r4(5), r4(1)
PHI r3(3), r3(2), r3(0)
PHI r2(4), r2(3), r2(0)
PHI r1(3), r1(2), r1(0)
PHI r0(3), r0(2), r0(0)
return_o r2(4)
Successors:
Predecessors: 7, 8
Dominance children:
Dominance frontier:
Handler successors:
Frame size: 296 bytes
After:
Spesh of 'is_type' (cuid: 197, file: gen/moar/World.nqp:4845)
Callsite 0x7f13fca79700 (2 args, 2 pos)
Positional flags: obj, obj
BB 0 (0x7f13f5146d10):
line: 4845 (pc 0)
Instructions:
no_op
Successors: 1, 2
Predecessors:
Dominance children: 2, 1, 3
Dominance frontier:
Handler successors:
BB 1 (0x7f13f5146d98):
line: 4845 (pc 0)
Instructions:
getcode r6(2), coderef(???)
takeclosure r5(1), r6(2)
sp_getarg_o r7(2), liti16(0)
[Annotation: INS Deopt One (idx 0 -> pc 68; line 4847)]
[Annotation: INS Deopt One (idx 1 -> pc 74; line 4847)]
sp_getarg_o r1(2), liti16(1)
[Annotation: FH Start (0)]
sp_getspeshslot r11(0), sslot(2)
[Annotation: INS Deopt One (idx 2 -> pc 84; line 4847)]
prepargs callsite(0x7f13fca79700, 2 arg, 2 pos, nonflattening, interned)
arg_o liti16(0), r7(2)
arg_o liti16(1), r1(2)
[Annotation: INS Deopt All (idx 4 -> pc 106; line 4847)]
[Annotation: INS Deopt One (idx 3 -> pc 106; line 4847)]
[Annotation: Logged (bytecode offset 100)]
sp_fastinvoke_o r8(3), r11(0), liti16(1) # [003] could not inline 'find_symbol' (204) candidate 1: bytecode is too large to inline
[Annotation: INS Deopt One (idx 5 -> pc 112; line 4847)]
[Annotation: Logged (bytecode offset 106)]
sp_decont r7(3), r8(3)
isconcrete r3(2), r7(3)
not_i r10(1), r3(2)
sp_fastbox_i_ic r2(3), liti16(32), sslot(3), liti16(24), r10(1), liti16(0) # [004] box_i into a BOOTInt
goto BB(3)
Successors: 3
Predecessors: 0
Dominance children: 2
Dominance frontier: 3
Handler successors:
BB 2 (0x7f13f5147038):
line: 4847 (pc 154)
Instructions:
[Annotation: FH Goto (0)]
[Annotation: FH End (0)]
takehandlerresult r4(1)
Successors: 3
Predecessors: 0
Dominance children:
Dominance frontier: 3
Handler successors:
BB 3 (0x7f13f5147098):
line: 4847 (pc 158)
Instructions:
PHI r2(4), r2(3), r2(0)
return_o r2(4)
Successors:
Predecessors: 1, 2
Dominance children:
Dominance frontier:
Handler successors:
Facts:
r0(0): usages=0, flags=0
r0(1): usages=0, flags=0 DeadWriter
r0(2): usages=0, flags=9 KnTyp Concr (type: Perl6::World)
r0(3): usages=0, flags=0 DeadWriter (merged from 2 regs)
assigning nodes: 1,
r1(0): usages=0, flags=0
r1(1): usages=0, flags=0 DeadWriter
r1(2): usages=1, flags=9 KnTyp Concr (type: NQPArray)
r1(3): usages=0, flags=0 DeadWriter (merged from 2 regs)
assigning nodes: 1,
r2(0): usages=1, flags=0
r2(1): usages=0, flags=0 DeadWriter
r2(2): usages=0, flags=0 DeadWriter
r2(3): usages=1, flags=2057 KnTyp Concr KBxSr (type: BOOTInt)
r2(4): usages=1, flags=0 (merged from 2 regs)
assigning nodes: 1, 7,
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 DeadWriter (merged from 2 regs)
assigning nodes: 1, 7,
r4(0): usages=0, flags=0
r4(1): usages=0, flags=0
r4(2): usages=0, flags=0 DeadWriter
r4(3): usages=0, flags=0 DeadWriter
r4(4): usages=0, flags=0 DeadWriter
r4(5): usages=0, flags=0 DeadWriter
r4(6): usages=0, flags=0 DeadWriter (merged from 2 regs)
assigning nodes: 1, 7, 2,
r5(0): usages=0, flags=0
r5(1): usages=0+handler, flags=0
r5(2): usages=0, flags=0 DeadWriter (merged from 2 regs)
assigning nodes: 1,
r6(0): usages=0, flags=0
r6(1): usages=0, flags=0 DeadWriter
r6(2): usages=1, flags=0
r6(3): usages=0, flags=0
r6(4): usages=0, flags=0 DeadWriter (merged from 2 regs)
assigning nodes: 1,
r7(0): usages=0, flags=0
r7(1): usages=0, flags=0 DeadWriter
r7(2): usages=1, flags=9 KnTyp Concr (type: Perl6::World)
r7(3): usages=1, deopt=5, flags=0
r7(4): usages=0, flags=19 KnTyp KnVal TyObj DeadWriter (type: BOOTInt)
r7(5): usages=0, flags=2057 KnTyp Concr KBxSr (type: BOOTInt)
r7(6): usages=0, flags=0 DeadWriter (merged from 2 regs)
r7(7): usages=0, flags=9 KnTyp Concr (type: Perl6::World)
assigning nodes: 1, 2, 6, 7,
r8(0): usages=0, flags=0
r8(1): usages=0, flags=0 DeadWriter
r8(2): usages=0, flags=3 KnTyp KnVal DeadWriter (type: NQPRoutine)
r8(3): usages=1, deopt=3,4, flags=0
r8(4): usages=0, flags=0 DeadWriter (merged from 2 regs)
assigning nodes: 1, 4, 5,
r9(0): usages=0, flags=0
r9(1): usages=0, flags=0 DeadWriter
r9(2): usages=0, flags=9 KnTyp Concr DeadWriter (type: Perl6::World)
r9(3): usages=0, flags=0 DeadWriter (merged from 2 regs)
r9(4): usages=0, flags=9 KnTyp Concr DeadWriter (type: Perl6::World)
assigning nodes: 1, 3,
r10(0): usages=0, flags=0
r10(1): usages=1, flags=0
r10(2): usages=0, flags=0 DeadWriter (merged from 2 regs)
assigning nodes: 7,
r11(0): usages=1, flags=0
Spesh slots:
0 = STable (Perl6::World)
1 = Instance (NQPRoutine)
2 = Instance (BOOTCode) - 'find_symbol' (204)
3 = STable (BOOTInt)
Frame size: 142 bytes
Specialization took 25us (total 64us)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment