Skip to content

Instantly share code, notes, and snippets.

@niner
Created June 9, 2018 14:52
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/22d119087d659180d6b366e42eba0af8 to your computer and use it in GitHub Desktop.
Save niner/22d119087d659180d6b366e42eba0af8 to your computer and use it in GitHub Desktop.
Specialization of 'new' (cuid: 119)
Before:
Spesh of 'new' (cuid: 119, file: perl#sources/51E302443A2C8FF185ABC10CA1E5520EFEE885A1 (NativeCall::Types):227)
BB 0 (0x7fbc583676c8):
line: 227 (pc 0)
Instructions:
no_op
Successors: 1
Predecessors:
Dominance children: 1
BB 1 (0x7fbc58367750):
line: 227 (pc 0)
Instructions:
null r6(1)
null r5(1)
null r4(1)
null r3(1)
null r2(1)
null r1(1)
null r0(1)
checkarity liti16(1), liti16(1)
param_rp_o r1(2), liti16(0)
hllize r5(2), r1(2)
Successors: 2
Predecessors: 0
Dominance children: 2
BB 2 (0x7fbc583677b0):
line: 227 (pc 18)
Instructions:
set r1(3), r5(2)
[Annotation: INS Deopt One (idx 0 -> pc 30; line 227)]
decont r5(3), r1(3)
Successors: 3
Predecessors: 1
Dominance children: 3
BB 3 (0x7fbc58367810):
line: 227 (pc 30)
Instructions:
wval r6(2), liti16(0), liti16(258) (CArray: NativeCall::Types::CArray)
istype r7(1), r5(3), r6(2)
Successors: 4
Predecessors: 2
Dominance children: 4
BB 4 (0x7fbc58367870):
line: 227 (pc 46)
Instructions:
assertparamcheck r7(1)
Successors: 5
Predecessors: 3
Dominance children: 5
BB 5 (0x7fbc583678d0):
line: 227 (pc 50)
Instructions:
[Annotation: INS Deopt One (idx 1 -> pc 56; line 227)]
decont r6(3), r1(3)
Successors: 6
Predecessors: 4
Dominance children: 6
BB 6 (0x7fbc58367930):
line: 227 (pc 56)
Instructions:
set r0(2), r6(3)
param_sn r2(2)
[Annotation: Line Number: perl#sources/51E302443A2C8FF185ABC10CA1E5520EFEE885A1 (NativeCall::Types):227]
takedispatcher r3(2)
[Annotation: Line Number: perl#sources/51E302443A2C8FF185ABC10CA1E5520EFEE885A1 (NativeCall::Types):227]
create r4(2), r0(2)
p6decontrv r4(3), r4(2)
return_o r4(3)
Successors:
Predecessors: 5
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
r1(3): usages=0, flags=0
r2(0): usages=0, flags=0
r2(1): usages=0, flags=0
r2(2): usages=0, flags=0
r3(0): usages=0, flags=0
r3(1): usages=0, flags=0
r3(2): usages=0, flags=0
r4(0): usages=0, flags=0
r4(1): usages=0, flags=0
r4(2): usages=0, flags=0
r4(3): usages=0, flags=0
r5(0): usages=0, flags=0
r5(1): usages=0, flags=0
r5(2): usages=0, flags=0
r5(3): 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
r7(0): usages=0, flags=0
r7(1): usages=0, flags=0
Frame size: 176 bytes
After:
Spesh of 'new' (cuid: 119, file: perl#sources/51E302443A2C8FF185ABC10CA1E5520EFEE885A1 (NativeCall::Types):227)
Callsite 0x7fbc62233180 (1 args, 1 pos)
Positional flags: obj
BB 0 (0x7fbc583676c8):
line: 227 (pc 0)
Instructions:
no_op
Successors: 1
Predecessors:
Dominance children: 1
BB 1 (0x7fbc58367750):
line: 227 (pc 0)
Instructions:
sp_getarg_o r1(3), liti16(0)
[Annotation: INS Deopt One (idx 0 -> pc 30; line 227)]
set r5(3), r1(3)
[Annotation: INS Deopt One (idx 1 -> pc 56; line 227)]
set r6(3), r1(3)
set r0(2), r6(3)
[Annotation: Line Number: perl#sources/51E302443A2C8FF185ABC10CA1E5520EFEE885A1 (NativeCall::Types):227]
takedispatcher r3(2)
[Annotation: Line Number: perl#sources/51E302443A2C8FF185ABC10CA1E5520EFEE885A1 (NativeCall::Types):227]
create r4(2), r0(2)
p6decontrv r4(3), r4(2)
return_o r4(3)
Successors:
Predecessors: 0
Dominance children:
Facts:
r0(0): usages=0, flags=0
r0(1): usages=0, flags=0 DeadWriter
r0(2): usages=1, flags=21 KnTyp Dcntd TyObj
r1(0): usages=0, flags=0
r1(1): usages=0, flags=0 DeadWriter
r1(2): usages=0, flags=21 KnTyp Dcntd TyObj
r1(3): usages=4, flags=21 KnTyp Dcntd TyObj DeadWriter
r2(0): usages=0, flags=0
r2(1): usages=0, flags=0 DeadWriter
r2(2): usages=0, flags=0 DeadWriter
r3(0): usages=0, flags=0
r3(1): usages=0, flags=0 DeadWriter
r3(2): usages=0, flags=0
r4(0): usages=0, flags=0
r4(1): usages=0, flags=0 DeadWriter
r4(2): usages=1, flags=8 Concr
r4(3): usages=1, flags=0
r5(0): usages=0, flags=0
r5(1): usages=0, flags=0 DeadWriter
r5(2): usages=0, flags=21 KnTyp Dcntd TyObj DeadWriter
r5(3): usages=1, flags=21 KnTyp Dcntd TyObj
r6(0): usages=0, flags=0
r6(1): usages=0, flags=0 DeadWriter
r6(2): usages=0, flags=23 KnTyp KnVal Dcntd TyObj DeadWriter
r6(3): usages=2, flags=21 KnTyp Dcntd TyObj
r7(0): usages=0, flags=0
r7(1): usages=0, flags=2 KnVal DeadWriter
Spesh slots:
0 = STable (BOOTHash)
Frame size: 72 bytes
Specialization took 70us
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment