Diffs are based on 2,494,760 contexts (1,003,806 MinOpts, 1,490,954 FullOpts).
MISSED contexts: base: 4,060 (0.16%), diff: 10,457 (0.42%)
Overall (+80 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch
80,916,664
+36
coreclr_tests.run.linux.arm64.checked.mch
508,918,764
-88
libraries_tests.run.linux.arm64.Release.mch
379,714,156
+132
FullOpts (+80 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch
55,980,204
+36
coreclr_tests.run.linux.arm64.checked.mch
159,693,708
-88
libraries_tests.run.linux.arm64.Release.mch
164,417,016
+132
Example diffs
benchmarks.run_pgo.linux.arm64.checked.mch
+36 (+7.63%) : 128897.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)
@@ -10,54 +10,56 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 8, 6.00) ref -> x19 this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V01 loc0 [V01,T01] ( 5, 3.00) int -> x20
-; V02 loc1 [V02,T17] ( 3, 0.00) ref -> x21 class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-; V03 loc2 [V03,T03] ( 7, 2.50) int -> x21
-; V04 loc3 [V04,T11] ( 7, 0.00) int -> x2
+; V01 loc0 [V01,T02] ( 5, 3.00) int -> x20
+; V02 loc1 [V02,T19] ( 3, 0.00) ref -> x22 class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V03 loc2 [V03,T04] ( 7, 2.50) int -> x21
+; V04 loc3 [V04,T13] ( 7, 0.00) int -> x2
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T23] ( 3, 0.00) ref -> x1 single-def "CASTCLASS eval op1"
-; V07 tmp2 [V07,T26] ( 3, 0.00) long -> x2 "fgMakeTemp is creating a new local variable"
-; V08 tmp3 [V08,T13] ( 5, 0.00) ref -> x21 class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-; V09 tmp4 [V09,T14] ( 2, 0.00) ref -> x4 class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
-; V10 tmp5 [V10,T06] ( 4, 2 ) int -> x20 "Inline return value spill temp"
-; V11 tmp6 [V11,T08] ( 3, 1.43) ref -> x0 class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-; V12 tmp7 [V12,T09] ( 3, 1.00) ref -> x0 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
-; V13 tmp8 [V13,T05] ( 2, 2.00) ref -> x0 "CASTCLASS eval op1"
+; V06 tmp1 [V06,T25] ( 3, 0.00) ref -> x1 single-def "CASTCLASS eval op1"
+; V07 tmp2 [V07,T28] ( 3, 0.00) long -> x2 "fgMakeTemp is creating a new local variable"
+; V08 tmp3 [V08,T15] ( 5, 0.00) ref -> x22 class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V09 tmp4 [V09,T16] ( 2, 0.00) ref -> x4 class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
+; V10 tmp5 [V10,T08] ( 4, 2 ) int -> x20 "Inline return value spill temp"
+; V11 tmp6 [V11,T10] ( 3, 1.43) ref -> x0 class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V12 tmp7 [V12,T11] ( 3, 1.00) ref -> x0 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+; V13 tmp8 [V13,T07] ( 2, 2.00) ref -> x0 "CASTCLASS eval op1"
;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
-; V15 tmp10 [V15,T07] ( 4, 1.75) ref -> x0 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
-; V16 tmp11 [V16,T04] ( 3, 2.00) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-; V17 tmp12 [V17,T10] ( 4, 0.00) int -> x2 "Inlining Arg"
-; V18 tmp13 [V18,T27] ( 3, 0 ) ref -> x0 "arr expr"
-; V19 tmp14 [V19,T12] ( 3, 0.00) ref -> x1 "arr expr"
-;* V20 tmp15 [V20,T25] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V21 tmp16 [V21,T15] ( 2, 0.00) ref -> x0 "argument with side effect"
-; V22 tmp17 [V22,T16] ( 2, 0.00) ref -> x1 "argument with side effect"
-; V23 cse0 [V23,T20] ( 3, 0.00) int -> x0 "CSE - conservative"
-; V24 cse1 [V24,T18] ( 2, 0.00) ref -> x1 "CSE - conservative"
-; V25 cse2 [V25,T24] ( 3, 0.00) int -> x19 "CSE - conservative"
-; V26 cse3 [V26,T21] ( 3, 0.00) int -> x3 "CSE - conservative"
-; V27 cse4 [V27,T19] ( 3, 0.00) byref -> x1 "CSE - conservative"
-; V28 cse5 [V28,T22] ( 3, 0.00) int -> x20 "CSE - conservative"
-; V29 cse6 [V29,T02] ( 3, 2.71) ref -> x1 "CSE - aggressive"
+; V15 tmp10 [V15,T09] ( 4, 1.75) ref -> x0 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
+; V16 tmp11 [V16,T06] ( 3, 2.00) ref -> x22 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V17 tmp12 [V17,T12] ( 4, 0.00) int -> x2 "Inlining Arg"
+; V18 tmp13 [V18,T29] ( 3, 0 ) ref -> x0 "arr expr"
+; V19 tmp14 [V19,T14] ( 3, 0.00) ref -> x1 "arr expr"
+;* V20 tmp15 [V20,T27] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V21 tmp16 [V21,T17] ( 2, 0.00) ref -> x0 "argument with side effect"
+; V22 tmp17 [V22,T18] ( 2, 0.00) ref -> x1 "argument with side effect"
+; V23 cse0 [V23,T22] ( 3, 0.00) int -> x0 "CSE - conservative"
+; V24 cse1 [V24,T20] ( 2, 0.00) ref -> x1 "CSE - conservative"
+; V25 cse2 [V25,T26] ( 3, 0.00) int -> x21 "CSE - conservative"
+; V26 cse3 [V26,T23] ( 3, 0.00) int -> x3 "CSE - conservative"
+; V27 cse4 [V27,T21] ( 3, 0.00) byref -> x1 "CSE - conservative"
+; V28 cse5 [V28,T24] ( 3, 0.00) int -> x19 "CSE - conservative"
+; V29 cse6 [V29,T03] ( 3, 2.71) ref -> x1 "CSE - aggressive"
+; V30 rat0 [V30,T05] ( 3, 2.25) ref -> x1 "Spilling to split statement for tree"
+; V31 rat1 [V31,T01] ( 5, 3.75) ref -> x22 class-hnd "replacement local" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M41283_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
G_M41283_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
bl <unknown method>
- cbz w0, G_M41283_IG21
+ cbz w0, G_M41283_IG24
ldr w1, [x19, #0x28]
- tbnz w1, #6, G_M41283_IG21
+ tbnz w1, #6, G_M41283_IG24
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
- cbz x1, G_M41283_IG11
+ cbz x1, G_M41283_IG14
;; size=24 bbWeight=1 PerfScore 10.00
G_M41283_IG03: ; bbWeight=0.71, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E
@@ -65,17 +67,17 @@ G_M41283_IG03: ; bbWeight=0.71, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M41283_IG22
+ cbnz x0, G_M41283_IG25
mov w20, #1
;; size=24 bbWeight=0.71 PerfScore 2.85
G_M41283_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz w20, G_M41283_IG13
+ cbz w20, G_M41283_IG16
;; size=4 bbWeight=1 PerfScore 1.00
G_M41283_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov w21, wzr
cmp w20, #0
- ble G_M41283_IG13
+ ble G_M41283_IG16
;; size=12 bbWeight=0.50 PerfScore 1.00
G_M41283_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x08]
@@ -88,23 +90,42 @@ G_M41283_IG07: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- beq G_M41283_IG12
+ beq G_M41283_IG15
;; size=24 bbWeight=0.25 PerfScore 1.50
G_M41283_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
+ mov x22, x1
+ ; gcrRegs +[x22]
+ cbz x22, G_M41283_IG11
+ ;; size=12 bbWeight=0.50 PerfScore 2.25
+G_M41283_IG09: ; bbWeight=0.25, gcrefRegs=480002 {x1 x19 x22}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x22]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x0, x2
+ beq G_M41283_IG11
+ ;; size=24 bbWeight=0.25 PerfScore 1.50
+G_M41283_IG10: ; bbWeight=0.13, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x22]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_CHKCASTCLASS
; gcrRegs -[x1] +[x0]
- ldr w1, [x0, #0x10]
- cmp w21, w1
- blo G_M41283_IG10
- ;; size=32 bbWeight=0.50 PerfScore 5.00
-G_M41283_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x19]
+ mov x22, x0
+ ; gcrRegs +[x22]
+ ;; size=20 bbWeight=0.13 PerfScore 0.38
+G_M41283_IG11: ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
+ ldr w0, [x22, #0x10]
+ cmp w21, w0
+ blo G_M41283_IG13
+ ;; size=12 bbWeight=0.50 PerfScore 2.25
+G_M41283_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19 x22]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -112,26 +133,27 @@ G_M41283_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M41283_IG10: ; bbWeight=0, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0 x19]
- ldr x0, [x0, #0x08]
+G_M41283_IG13: ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x19 x22]
+ ldr x0, [x22, #0x08]
+ ; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w21, w1
- bhs G_M41283_IG20
+ bhs G_M41283_IG23
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
ldr x0, [x0, w21, UXTW #3]
; gcrRegs +[x0]
; byrRegs -[x0]
- b G_M41283_IG12
+ b G_M41283_IG15
;; size=28 bbWeight=0 PerfScore 0.00
-G_M41283_IG11: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
+G_M41283_IG14: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x22]
mov w20, wzr
b G_M41283_IG04
;; size=8 bbWeight=0.29 PerfScore 0.43
-G_M41283_IG12: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG15: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this
movk x1, #0xD1FFAB1E LSL #16
@@ -144,47 +166,47 @@ G_M41283_IG12: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
cmp w21, w20
blt G_M41283_IG06
;; size=36 bbWeight=0.50 PerfScore 5.25
-G_M41283_IG13: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG16: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x2E]
cmp w0, #25
- bne G_M41283_IG21
+ bne G_M41283_IG24
;; size=12 bbWeight=1 PerfScore 4.50
-G_M41283_IG14: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG17: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
- mov x21, x1
- ; gcrRegs +[x21]
- cbnz x21, G_M41283_IG18
+ mov x22, x1
+ ; gcrRegs +[x22]
+ cbnz x22, G_M41283_IG21
;; size=12 bbWeight=0.00 PerfScore 0.00
-G_M41283_IG15: ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG18: ; bbWeight=0.00, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1 x19]
mov w2, wzr
- sub w19, w20, #1
- cmp w19, #0
- ble G_M41283_IG21
+ sub w21, w20, #1
+ cmp w21, #0
+ ble G_M41283_IG24
;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M41283_IG16: ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x21, #0x10]
+G_M41283_IG19: ; bbWeight=0.00, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x22, #0x10]
cmp w2, w0
- bhs G_M41283_IG09
- ldr x1, [x21, #0x08]
+ bhs G_M41283_IG12
+ ldr x1, [x22, #0x08]
; gcrRegs +[x1]
ldr w3, [x1, #0x08]
cmp w2, w3
- bhs G_M41283_IG20
+ bhs G_M41283_IG23
add x1, x1, #16
; gcrRegs -[x1]
; byrRegs +[x1]
ldr x4, [x1, w2, UXTW #3]
; gcrRegs +[x4]
- add w20, w2, #1
...
coreclr_tests.run.linux.arm64.checked.mch
-48 (-2.84%) : 425431.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
@@ -15,75 +15,74 @@
; V03 loc1 [V03,T02] ( 8, 5.61) ref -> x23 class-hnd exact <Internal.TypeSystem.InstantiatedType>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.InstantiatedType>
-;* V06 tmp2 [V06,T35] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V07 tmp3 [V07,T34] ( 2, 0.89) ref -> x0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V08 tmp4 [V08,T17] ( 3, 1.78) long -> x2 "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T46] ( 2, 0 ) ref -> x19 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2 [V06,T34] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T33] ( 2, 0.89) ref -> x0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V08 tmp4 [V08,T16] ( 3, 1.78) long -> x2 "fgMakeTemp is creating a new local variable"
+; V09 tmp5 [V09,T45] ( 2, 0 ) ref -> x19 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
; V10 tmp6 [V10,T06] ( 7, 5.04) ref -> x24 class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
; V11 tmp7 [V11,T05] ( 14, 5.11) ref -> x22 "guarded devirt return temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V13 tmp9 [V13,T12] ( 8, 2.51) ref -> x25 "guarded devirt return temp"
+; V13 tmp9 [V13,T11] ( 8, 2.51) ref -> x25 "guarded devirt return temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V15 tmp11 [V15,T20] ( 4, 1.66) ref -> x27 "guarded devirt return temp"
+; V15 tmp11 [V15,T19] ( 4, 1.66) ref -> x27 "guarded devirt return temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V17 tmp13 [V17,T16] ( 8, 2.04) ref -> x23 "guarded devirt return temp"
+; V17 tmp13 [V17,T15] ( 8, 2.04) ref -> x23 "guarded devirt return temp"
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref
-; V20 tmp16 [V20,T30] ( 3, 1.11) int -> x0
-; V21 tmp17 [V21,T23] ( 3, 1.53) ref -> x26 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V20 tmp16 [V20,T29] ( 3, 1.11) int -> x0
+; V21 tmp17 [V21,T22] ( 3, 1.53) ref -> x26 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V22 tmp18 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V23 tmp19 [V23,T36] ( 3, 0.77) ref -> x27 "guarded devirt return temp"
+; V23 tmp19 [V23,T35] ( 3, 0.77) ref -> x27 "guarded devirt return temp"
;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V25 tmp21 [V25,T39] ( 3, 0.58) ref -> x26 "guarded devirt return temp"
-; V26 tmp22 [V26,T19] ( 5, 1.75) ref -> x0 single-def "guarded devirt arg temp"
+; V25 tmp21 [V25,T38] ( 3, 0.58) ref -> x26 "guarded devirt return temp"
+; V26 tmp22 [V26,T18] ( 5, 1.75) ref -> x0 single-def "guarded devirt arg temp"
;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V28 tmp24 [V28,T40] ( 3, 0.55) ref -> x27 "guarded devirt return temp"
-; V29 tmp25 [V29,T22] ( 5, 1.65) ref -> x0 single-def "guarded devirt arg temp"
+; V28 tmp24 [V28,T39] ( 3, 0.55) ref -> x27 "guarded devirt return temp"
+; V29 tmp25 [V29,T21] ( 5, 1.65) ref -> x0 single-def "guarded devirt arg temp"
;* V30 tmp26 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V31 tmp27 [V31,T10] ( 5, 2.99) ref -> x0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V32 tmp28 [V32,T32] ( 3, 1.00) ref -> x27 "guarded devirt return temp"
+; V31 tmp27 [V31,T09] ( 5, 2.99) ref -> x0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+; V32 tmp28 [V32,T31] ( 3, 1.00) ref -> x27 "guarded devirt return temp"
;* V33 tmp29 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
;* V34 tmp30 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaType>
; V35 tmp31 [V35,T03] ( 5, 5.54) ref -> x0 class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
; V36 tmp32 [V36,T04] ( 5, 5.54) ref -> x0 class-hnd "spilling QMark2" <<unknown class>>
;* V37 tmp33 [V37 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V38 tmp34 [V38,T07] ( 4, 3.65) ref -> x27 class-hnd exact single-def "impAppendStmt" <<unknown class>>
-; V39 tmp35 [V39,T15] ( 2, 2.22) int -> x28 "impAppendStmt"
-; V40 tmp36 [V40,T28] ( 4, 1.11) ref -> x0 "guarded devirt return temp"
+; V39 tmp35 [V39,T14] ( 2, 2.22) int -> x28 "impAppendStmt"
+; V40 tmp36 [V40,T27] ( 4, 1.11) ref -> x0 "guarded devirt return temp"
;* V41 tmp37 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V42 tmp38 [V42,T44] ( 2, 0.06) byref -> x28 single-def "impAppendStmt"
-; V43 tmp39 [V43,T45] ( 3, 0.03) int -> x0 "guarded devirt return temp"
-; V44 tmp40 [V44,T43] ( 5, 0.09) ref -> x0 single-def "guarded devirt arg temp"
+; V42 tmp38 [V42,T43] ( 2, 0.06) byref -> x28 single-def "impAppendStmt"
+; V43 tmp39 [V43,T44] ( 3, 0.03) int -> x0 "guarded devirt return temp"
+; V44 tmp40 [V44,T42] ( 5, 0.09) ref -> x0 single-def "guarded devirt arg temp"
;* V45 tmp41 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
;* V46 tmp42 [V46 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V47 tmp43 [V47,T29] ( 3, 1.11) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V47 tmp43 [V47,T28] ( 3, 1.11) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
;* V48 tmp44 [V48 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V49 tmp45 [V49 ] ( 2, 0.95) ref -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V50 tmp46 [V50,T18] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V51 tmp47 [V51,T11] ( 4, 2.85) ref -> x0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V52 tmp48 [V52,T33] ( 3, 0.89) int -> x0
-; V53 tmp49 [V53,T27] ( 3, 1.23) ref -> x27 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V50 tmp46 [V50,T17] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V51 tmp47 [V51,T10] ( 3, 2.68) ref -> x0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V52 tmp48 [V52,T32] ( 3, 0.89) int -> x0
+; V53 tmp49 [V53,T26] ( 3, 1.23) ref -> x27 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V54 tmp50 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V55 tmp51 [V55,T38] ( 3, 0.62) ref -> x1 "guarded devirt return temp"
+; V55 tmp51 [V55,T37] ( 3, 0.62) ref -> x1 "guarded devirt return temp"
;* V56 tmp52 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V57 tmp53 [V57,T41] ( 3, 0.47) ref -> x27 "guarded devirt return temp"
-; V58 tmp54 [V58,T24] ( 5, 1.40) ref -> x0 single-def "guarded devirt arg temp"
+; V57 tmp53 [V57,T40] ( 3, 0.47) ref -> x27 "guarded devirt return temp"
+; V58 tmp54 [V58,T23] ( 5, 1.40) ref -> x0 single-def "guarded devirt arg temp"
;* V59 tmp55 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V60 tmp56 [V60,T42] ( 3, 0.44) ref -> x1 "guarded devirt return temp"
-; V61 tmp57 [V61,T25] ( 5, 1.33) ref -> x0 single-def "guarded devirt arg temp"
+; V60 tmp56 [V60,T41] ( 3, 0.44) ref -> x1 "guarded devirt return temp"
+; V61 tmp57 [V61,T24] ( 5, 1.33) ref -> x0 single-def "guarded devirt arg temp"
;* V62 tmp58 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V63 tmp59 [V63,T14] ( 8, 2.38) ref -> x22 single-def "field V37._typicalMethodDef (fldOffset=0x0)" P-INDEP
-; V64 tmp60 [V64,T13] ( 8, 2.42) ref -> x23 single-def "field V37._instantiatedType (fldOffset=0x8)" P-INDEP
-; V65 tmp61 [V65,T26] ( 3, 1.27) int -> x20 single-def "field V37._hashcode (fldOffset=0x10)" P-INDEP
+; V63 tmp59 [V63,T13] ( 8, 2.38) ref -> x22 single-def "field V37._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V64 tmp60 [V64,T12] ( 8, 2.42) ref -> x23 single-def "field V37._instantiatedType (fldOffset=0x8)" P-INDEP
+; V65 tmp61 [V65,T25] ( 3, 1.27) int -> x20 single-def "field V37._hashcode (fldOffset=0x10)" P-INDEP
;* V66 tmp62 [V66 ] ( 0, 0 ) ref -> zero-ref single-def "field V48._typicalMethodDef (fldOffset=0x0)" P-INDEP
;* V67 tmp63 [V67 ] ( 0, 0 ) ref -> zero-ref single-def "field V48._instantiatedType (fldOffset=0x8)" P-INDEP
;* V68 tmp64 [V68 ] ( 0, 0 ) int -> zero-ref single-def "field V48._hashcode (fldOffset=0x10)" P-INDEP
; V69 tmp65 [V69 ] ( 8, 5.74) struct (24) [fp+0x10] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
-;* V70 tmp66 [V70,T31] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V71 tmp67 [V71,T37] ( 2, 0.65) ref -> x0 single-def "argument with side effect"
-; V72 cse0 [V72,T21] ( 3, 1.66) ref -> x0 "CSE - moderate"
+;* V70 tmp66 [V70,T30] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V71 tmp67 [V71,T36] ( 2, 0.65) ref -> x0 single-def "argument with side effect"
+; V72 cse0 [V72,T20] ( 3, 1.66) ref -> x0 "CSE - moderate"
; V73 cse1 [V73,T08] ( 6, 4.11) long -> x21 "CSE - aggressive"
-; V74 rat0 [V74,T09] ( 6, 3.57) ref -> x2 class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
;
; Lcl frame size = 32
@@ -143,7 +142,7 @@ G_M10698_IG07: ; bbWeight=0.55, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs
; gcrRegs +[x24]
ldr x0, [x22]
cmp x0, x21
- bne G_M10698_IG49
+ bne G_M10698_IG34
ldr x25, [x22, #0x10]
; gcrRegs +[x25]
;; size=20 bbWeight=0.55 PerfScore 5.82
@@ -159,7 +158,7 @@ G_M10698_IG10: ; bbWeight=0.38, gcrefRegs=3C80000 {x19 x22 x23 x24 x25},
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M10698_IG37
+ bne G_M10698_IG38
;; size=24 bbWeight=0.38 PerfScore 2.30
G_M10698_IG11: ; bbWeight=0.29, gcrefRegs=3C80000 {x19 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
ldr x0, [x24, #0x58]
@@ -169,10 +168,10 @@ G_M10698_IG11: ; bbWeight=0.29, gcrefRegs=3C80000 {x19 x22 x23 x24 x25},
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG50
+ bne G_M10698_IG35
ldr x26, [x0, #0x08]
; gcrRegs +[x26]
- b G_M10698_IG35
+ b G_M10698_IG36
;; size=36 bbWeight=0.29 PerfScore 3.78
G_M10698_IG12: ; bbWeight=0.38, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x22-x26] +[x20]
@@ -217,7 +216,7 @@ G_M10698_IG15: ; bbWeight=0.50, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG52
+ bne G_M10698_IG48
ldr x27, [x0, #0x08]
; gcrRegs +[x27]
;; size=36 bbWeight=0.50 PerfScore 7.48
@@ -264,10 +263,10 @@ G_M10698_IG17: ; bbWeight=0.55, gcrefRegs=8C00000 {x22 x23 x27}, byrefReg
ldr w28, [x23, #0x68]
ldr x0, [x22]
cmp x0, x21
- bne G_M10698_IG55
+ bne G_M10698_IG51
ldr x0, [x22, #0x20]
; gcrRegs +[x0]
- cbz x0, G_M10698_IG54
+ cbz x0, G_M10698_IG50
;; size=24 bbWeight=0.55 PerfScore 6.37
G_M10698_IG18: ; bbWeight=0.55, gcrefRegs=8C00001 {x0 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E // code for Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int
@@ -290,7 +289,7 @@ G_M10698_IG18: ; bbWeight=0.55, gcrefRegs=8C00001 {x0 x22 x23 x27}, byref
ldr x3, [x3]
blr x3
; gcrRegs -[x0]
- cbz w0, G_M10698_IG44
+ cbz w0, G_M10698_IG40
;; size=72 bbWeight=0.55 PerfScore 10.53
G_M10698_IG19: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x22-x23 x27]
@@ -317,7 +316,7 @@ G_M10698_IG21: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=8C0
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG53
+ bne G_M10698_IG49
movz x1, #0xD1FFAB1E // code for Internal.TypeSystem.Ecma.EcmaType:GetHashCode():int:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -352,13 +351,13 @@ G_M10698_IG23: ; bbWeight=0.45, gcrefRegs=580000 {x19 x20 x22}, byrefRegs
beq G_M10698_IG32
ldr x0, [x22]
cmp x0, x21
- bne G_M10698_IG59
+ bne G_M10698_IG55
ldr x23, [x22, #0x10]
; gcrRegs +[x23]
;; size=40 bbWeight=0.45 PerfScore 6.02
G_M10698_IG24: ; bbWeight=0.45, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19]
- cbz x23, G_M10698_IG45
+ cbz x23, G_M10698_IG41
;; size=4 bbWeight=0.45 PerfScore 0.45
G_M10698_IG25: ; bbWeight=0.31, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20]
@@ -366,7 +365,7 @@ G_M10698_IG25: ; bbWeight=0.31, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M10698_IG47
+ bne G_M10698_IG45
;; size=24 bbWeight=0.31 PerfScore 1.85
G_M10698_IG26: ; bbWeight=0.23, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20, #0x58]
@@ -376,7 +375,7 @@ G_M10698_IG26: ; bbWeight=0.23, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG60
+ bne G_M10698_IG56
ldr x27, [x0, #0x08]
; gcrRegs +[x27]
;; size=32 bbWeight=0.23 PerfScore 2.81
@@ -387,7 +386,7 @@ G_M10698_IG27: ; bbWeight=0.31, gcrefRegs=8D00000 {x20 x22 x23 x27}, byre
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M10698_IG46
+ bne G_M10698_IG44
;; size=24 bbWeight=0.31 PerfScore 1.85
G_M10698_IG28: ; bbWeight=0.22, gcrefRegs=8D00000 {x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
ldr x0, [x23, #0x58]
@@ -397,7 +396,7 @@ G_M10698_IG28: ; bbWeight=0.22, gcrefRegs=8D00000 {x20 x22 x23 x27}, byre
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG48
+ bne G_M10698_IG46
ldr x1, [x0, #0x08]
; gcrRegs +[x1]
;; size=32 bbWeight=0.22 PerfScore 2.66
@@ -442,20 +441,6 @@ G_M10698_IG32: ; bbWeight=0.45, gcVars=0000000000000000 {}, gcrefRegs=180
ldr x1, [x1, #0x18]
blr x1
ldrsb wzr, [x0]
- mov x2, x0
- ; gcrRegs +[x2]
- cbz x2, G_M10698_IG40
- ;; size=32 bbWeight=0.45 PerfScore 6.69
-G_M10698_IG33: ; bbWeight=0.22, gcrefRegs=180005 {x0 x2 x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x2]
- movz x2, #0xD1FFAB1E
- ; gcrRegs -[x2]
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
...
-40 (-2.30%) : 416664.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
@@ -15,90 +15,89 @@
; V03 loc1 [V03,T06] ( 5, 3.59) ref -> x22 class-hnd exact <Internal.TypeSystem.InstantiatedType>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.InstantiatedType>
-;* V06 tmp2 [V06,T37] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V07 tmp3 [V07,T36] ( 2, 0.91) ref -> x0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V08 tmp4 [V08,T18] ( 3, 1.83) long -> x2 "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T48] ( 2, 0 ) ref -> x19 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2 [V06,T36] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T35] ( 2, 0.91) ref -> x0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V08 tmp4 [V08,T17] ( 3, 1.83) long -> x2 "fgMakeTemp is creating a new local variable"
+; V09 tmp5 [V09,T47] ( 2, 0 ) ref -> x19 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
; V10 tmp6 [V10,T04] ( 7, 4.81) ref -> x23 class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
-; V11 tmp7 [V11,T16] ( 3, 2 ) ref -> x21 "guarded devirt return temp"
+; V11 tmp7 [V11,T15] ( 3, 2 ) ref -> x21 "guarded devirt return temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.MethodForInstantiatedType>
-; V13 tmp9 [V13,T12] ( 8, 2.36) ref -> x25 "guarded devirt return temp"
+; V13 tmp9 [V13,T11] ( 8, 2.36) ref -> x25 "guarded devirt return temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V15 tmp11 [V15,T23] ( 4, 1.63) ref -> x26 "guarded devirt return temp"
+; V15 tmp11 [V15,T22] ( 4, 1.63) ref -> x26 "guarded devirt return temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V17 tmp13 [V17,T15] ( 8, 2.02) ref -> x25 "guarded devirt return temp"
+; V17 tmp13 [V17,T14] ( 8, 2.02) ref -> x25 "guarded devirt return temp"
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref
;* V20 tmp16 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp17 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 tmp18 [V22,T29] ( 2, 0.74) int -> x0
-; V23 tmp19 [V23,T27] ( 3, 1.56) ref -> x20 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V22 tmp18 [V22,T28] ( 2, 0.74) int -> x0
+; V23 tmp19 [V23,T26] ( 3, 1.56) ref -> x20 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V25 tmp21 [V25,T38] ( 3, 0.74) ref -> x26 "guarded devirt return temp"
+; V25 tmp21 [V25,T37] ( 3, 0.74) ref -> x26 "guarded devirt return temp"
;* V26 tmp22 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V27 tmp23 [V27,T40] ( 3, 0.70) ref -> x20 "guarded devirt return temp"
-; V28 tmp24 [V28,T17] ( 5, 2.00) ref -> x0 single-def "guarded devirt arg temp"
+; V27 tmp23 [V27,T39] ( 3, 0.70) ref -> x20 "guarded devirt return temp"
+; V28 tmp24 [V28,T16] ( 5, 2.00) ref -> x0 single-def "guarded devirt arg temp"
;* V29 tmp25 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V30 tmp26 [V30,T41] ( 3, 0.70) ref -> x26 "guarded devirt return temp"
-; V31 tmp27 [V31,T14] ( 5, 2.09) ref -> x0 single-def "guarded devirt arg temp"
+; V30 tmp26 [V30,T40] ( 3, 0.70) ref -> x26 "guarded devirt return temp"
+; V31 tmp27 [V31,T13] ( 5, 2.09) ref -> x0 single-def "guarded devirt arg temp"
;* V32 tmp28 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
;* V33 tmp29 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V34 tmp30 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp31 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp32 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V37 tmp33 [V37,T09] ( 5, 3.03) ref -> x0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V38 tmp34 [V38,T35] ( 3, 1.01) ref -> x26 "guarded devirt return temp"
+; V37 tmp33 [V37,T08] ( 5, 3.03) ref -> x0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+; V38 tmp34 [V38,T34] ( 3, 1.01) ref -> x26 "guarded devirt return temp"
;* V39 tmp35 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
;* V40 tmp36 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaType>
-;* V41 tmp37 [V41,T25] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V42 tmp38 [V42,T26] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V41 tmp37 [V41,T24] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
+;* V42 tmp38 [V42,T25] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
;* V43 tmp39 [V43 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V44 tmp40 [V44,T05] ( 4, 3.61) ref -> x26 class-hnd exact single-def "impAppendStmt" <<unknown class>>
;* V45 tmp41 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V46 tmp42 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp43 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V48 tmp44 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V49 tmp45 [V49,T13] ( 2, 2.17) int -> x28 "impAppendStmt"
-; V50 tmp46 [V50,T31] ( 4, 1.09) ref -> x0 "guarded devirt return temp"
+; V49 tmp45 [V49,T12] ( 2, 2.17) int -> x28 "impAppendStmt"
+; V50 tmp46 [V50,T30] ( 4, 1.09) ref -> x0 "guarded devirt return temp"
;* V51 tmp47 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V52 tmp48 [V52,T46] ( 2, 0.07) byref -> x27 single-def "impAppendStmt"
-; V53 tmp49 [V53,T47] ( 3, 0.03) int -> x0 "guarded devirt return temp"
-; V54 tmp50 [V54,T45] ( 5, 0.10) ref -> x0 single-def "guarded devirt arg temp"
+; V52 tmp48 [V52,T45] ( 2, 0.07) byref -> x27 single-def "impAppendStmt"
+; V53 tmp49 [V53,T46] ( 3, 0.03) int -> x0 "guarded devirt return temp"
+; V54 tmp50 [V54,T44] ( 5, 0.10) ref -> x0 single-def "guarded devirt arg temp"
;* V55 tmp51 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
;* V56 tmp52 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V57 tmp53 [V57,T32] ( 3, 1.09) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V57 tmp53 [V57,T31] ( 3, 1.09) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
;* V58 tmp54 [V58 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V59 tmp55 [V59 ] ( 2, 0.91) ref -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V60 tmp56 [V60,T19] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V61 tmp57 [V61,T10] ( 4, 2.96) ref -> x0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V62 tmp58 [V62,T34] ( 2, 0.62) int -> x0
-; V63 tmp59 [V63,T28] ( 3, 1.31) ref -> x26 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V60 tmp56 [V60,T18] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V61 tmp57 [V61,T09] ( 3, 2.74) ref -> x0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V62 tmp58 [V62,T33] ( 2, 0.62) int -> x0
+; V63 tmp59 [V63,T27] ( 3, 1.31) ref -> x26 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V64 tmp60 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V65 tmp61 [V65,T42] ( 3, 0.62) ref -> x27 "guarded devirt return temp"
+; V65 tmp61 [V65,T41] ( 3, 0.62) ref -> x27 "guarded devirt return temp"
;* V66 tmp62 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V67 tmp63 [V67,T43] ( 3, 0.59) ref -> x26 "guarded devirt return temp"
-; V68 tmp64 [V68,T22] ( 5, 1.69) ref -> x0 single-def "guarded devirt arg temp"
+; V67 tmp63 [V67,T42] ( 3, 0.59) ref -> x26 "guarded devirt return temp"
+; V68 tmp64 [V68,T21] ( 5, 1.69) ref -> x0 single-def "guarded devirt arg temp"
;* V69 tmp65 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V70 tmp66 [V70,T44] ( 3, 0.59) ref -> x27 "guarded devirt return temp"
-; V71 tmp67 [V71,T21] ( 5, 1.76) ref -> x0 single-def "guarded devirt arg temp"
+; V70 tmp66 [V70,T43] ( 3, 0.59) ref -> x27 "guarded devirt return temp"
+; V71 tmp67 [V71,T20] ( 5, 1.76) ref -> x0 single-def "guarded devirt arg temp"
;* V72 tmp68 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
;* V73 tmp69 [V73 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V74 tmp70 [V74 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V75 tmp71 [V75 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V76 tmp72 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V77 tmp73 [V77,T20] ( 6, 1.80) ref -> x21 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
-; V78 tmp74 [V78,T11] ( 8, 2.40) ref -> x22 single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
-; V79 tmp75 [V79,T30] ( 3, 1.26) int -> x24 single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
+; V77 tmp73 [V77,T19] ( 6, 1.80) ref -> x21 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V78 tmp74 [V78,T10] ( 8, 2.40) ref -> x22 single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
+; V79 tmp75 [V79,T29] ( 3, 1.26) int -> x24 single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
;* V80 tmp76 [V80 ] ( 0, 0 ) ref -> zero-ref single-def "field V58._typicalMethodDef (fldOffset=0x0)" P-INDEP
;* V81 tmp77 [V81 ] ( 0, 0 ) ref -> zero-ref single-def "field V58._instantiatedType (fldOffset=0x8)" P-INDEP
;* V82 tmp78 [V82 ] ( 0, 0 ) int -> zero-ref single-def "field V58._hashcode (fldOffset=0x10)" P-INDEP
; V83 tmp79 [V83 ] ( 8, 5.75) struct (24) [fp+0x10] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
-;* V84 tmp80 [V84,T33] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V85 tmp81 [V85,T39] ( 2, 0.71) ref -> x0 single-def "argument with side effect"
-; V86 cse0 [V86,T24] ( 3, 1.63) ref -> x0 "CSE - moderate"
+;* V84 tmp80 [V84,T32] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V85 tmp81 [V85,T38] ( 2, 0.71) ref -> x0 single-def "argument with side effect"
+; V86 cse0 [V86,T23] ( 3, 1.63) ref -> x0 "CSE - moderate"
; V87 cse1 [V87,T00] ( 18, 9.26) ref -> x1 multi-def "CSE - aggressive"
-; V88 cse2 [V88,T08] ( 10, 3.63) long -> x24 multi-def "CSE - aggressive"
-; V89 rat0 [V89,T07] ( 6, 3.66) ref -> x2 class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
+; V88 cse2 [V88,T07] ( 10, 3.63) long -> x24 multi-def "CSE - aggressive"
;
; Lcl frame size = 32
@@ -152,7 +151,7 @@ G_M10698_IG06: ; bbWeight=0.54, gcrefRegs=680000 {x19 x21 x22}, byrefRegs
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x24, x0
- bne G_M10698_IG55
+ bne G_M10698_IG49
b G_M10698_IG08
;; size=32 bbWeight=0.54 PerfScore 5.43
G_M10698_IG07: ; bbWeight=0.47, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
@@ -194,7 +193,7 @@ G_M10698_IG12: ; bbWeight=0.33, gcrefRegs=2E80000 {x19 x21 x22 x23 x25},
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG56
+ bne G_M10698_IG50
ldr x20, [x0, #0x08]
; gcrRegs +[x20]
;; size=32 bbWeight=0.33 PerfScore 4.00
@@ -215,7 +214,7 @@ G_M10698_IG14: ; bbWeight=0.35, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x2
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG57
+ bne G_M10698_IG51
ldr x26, [x0, #0x08]
; gcrRegs +[x26]
;; size=32 bbWeight=0.35 PerfScore 4.18
@@ -296,7 +295,7 @@ G_M10698_IG21: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG58
+ bne G_M10698_IG52
ldr x26, [x0, #0x08]
; gcrRegs +[x26]
;; size=36 bbWeight=0.50 PerfScore 7.57
@@ -364,10 +363,10 @@ G_M10698_IG26: ; bbWeight=0.54, gcrefRegs=4600000 {x21 x22 x26}, byrefReg
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x24, x0
- bne G_M10698_IG61
+ bne G_M10698_IG54
ldr x0, [x21, #0x20]
; gcrRegs +[x0]
- cbz x0, G_M10698_IG59
+ cbz x0, G_M10698_IG43
;; size=32 bbWeight=0.54 PerfScore 5.43
G_M10698_IG27: ; bbWeight=0.54, gcrefRegs=4600001 {x0 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E // code for Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int
@@ -419,7 +418,7 @@ G_M10698_IG30: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=380
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x24, x0
- bne G_M10698_IG51
+ bne G_M10698_IG58
ldr x25, [x21, #0x10]
; gcrRegs +[x25]
;; size=52 bbWeight=0.46 PerfScore 6.86
@@ -433,7 +432,7 @@ G_M10698_IG32: ; bbWeight=0.31, gcrefRegs=2300000 {x20 x21 x25}, byrefReg
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M10698_IG53
+ bne G_M10698_IG47
;; size=24 bbWeight=0.31 PerfScore 1.87
G_M10698_IG33: ; bbWeight=0.28, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20, #0x58]
@@ -443,7 +442,7 @@ G_M10698_IG33: ; bbWeight=0.28, gcrefRegs=2300000 {x20 x21 x25}, byrefReg
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG52
+ bne G_M10698_IG59
ldr x26, [x0, #0x08]
; gcrRegs +[x26]
;; size=32 bbWeight=0.28 PerfScore 3.37
@@ -454,7 +453,7 @@ G_M10698_IG34: ; bbWeight=0.31, gcrefRegs=6300000 {x20 x21 x25 x26}, byre
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M10698_IG54
+ bne G_M10698_IG48
;; size=24 bbWeight=0.31 PerfScore 1.87
G_M10698_IG35: ; bbWeight=0.29, gcrefRegs=6300000 {x20 x21 x25 x26}, byrefRegs=0000 {}, byref, isz
ldr x0, [x25, #0x58]
@@ -464,7 +463,7 @@ G_M10698_IG35: ; bbWeight=0.29, gcrefRegs=6300000 {x20 x21 x25 x26}, byre
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG63
+ bne G_M10698_IG60
ldr x27, [x0, #0x08]
; gcrRegs +[x27]
;; size=32 bbWeight=0.29 PerfScore 3.52
@@ -526,20 +525,6 @@ G_M10698_IG41: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=180
ldr x1, [x1, #0x18]
blr x1
ldrsb wzr, [x0]
- mov x2, x0
- ; gcrRegs +[x2]
- cbz x2, G_M10698_IG48
- ;; size=32 bbWeight=0.46 PerfScore 6.86
-G_M10698_IG42: ; bbWeight=0.23, gcrefRegs=180005 {x0 x2 x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x2]
- movz x2, #0xD1FFAB1E
- ; gcrRegs -[x2]
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- cmp x1, x2
- beq G_M10698_IG47
- ;; size=24 bbWeight=0.23 PerfScore 1.37
-G_M10698_IG43: ; bbWeight=0.11, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
mov x1, x0
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -548,12 +533,40 @@ G_M10698_IG43: ; bbWeight=0.11, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_ISINSTANCEOFCLASS
...
libraries_tests.run.linux.arm64.Release.mch
-8 (-0.61%) : 176599.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:
@@ -15,7 +15,7 @@
; V03 loc1 [V03,T29] ( 3, 1.07) ubyte -> x24
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbol]>
;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]>
-; V06 loc4 [V06,T01] ( 13, 81.29) ref -> x28 class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V06 loc4 [V06,T01] ( 13, 81.07) ref -> x28 class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
; V07 loc5 [V07,T06] ( 8, 39.13) ref -> x21 class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol>
; V08 loc6 [V08,T14] ( 2, 0.10) ref -> x19 ld-addr-op class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
; V09 loc7 [V09,T38] ( 4, 0 ) ref -> x0 class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
@@ -108,7 +108,7 @@ G_M20484_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20
movk x22, #0xD1FFAB1E LSL #16
movk x22, #0xD1FFAB1E LSL #32
cmp x21, x22
- bne G_M20484_IG51
+ bne G_M20484_IG52
ldr x0, [x19, #0x60]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -117,7 +117,7 @@ G_M20484_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20
ldr x1, [x1]
; gcrRegs +[x1]
cmp x0, x1
- beq G_M20484_IG27
+ beq G_M20484_IG41
;; size=56 bbWeight=1 PerfScore 16.00
G_M20484_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x0-x1]
@@ -132,11 +132,11 @@ G_M20484_IG04: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
- cbnz w0, G_M20484_IG48
+ cbnz w0, G_M20484_IG46
;; size=28 bbWeight=1 PerfScore 7.50
G_M20484_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
cmp x21, x22
- bne G_M20484_IG32
+ bne G_M20484_IG44
;; size=8 bbWeight=1 PerfScore 1.50
G_M20484_IG06: ; bbWeight=0.96, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
ldr x0, [x19, #0x60]
@@ -147,7 +147,7 @@ G_M20484_IG06: ; bbWeight=0.96, gcrefRegs=80000 {x19}, byrefRegs=100000 {
ldr x1, [x1]
; gcrRegs +[x1]
cmp x0, x1
- beq G_M20484_IG24
+ beq G_M20484_IG42
;; size=28 bbWeight=0.96 PerfScore 8.64
G_M20484_IG07: ; bbWeight=0.96, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x0-x1]
@@ -155,7 +155,7 @@ G_M20484_IG07: ; bbWeight=0.96, gcrefRegs=80000 {x19}, byrefRegs=100000 {
; gcrRegs +[x0]
;; size=4 bbWeight=0.96 PerfScore 2.88
G_M20484_IG08: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, byref, isz
- cbz x0, G_M20484_IG20
+ cbz x0, G_M20484_IG40
;; size=4 bbWeight=1 PerfScore 1.00
G_M20484_IG09: ; bbWeight=0.84, gcrefRegs=80001 {x0 x19}, byrefRegs=100000 {x20}, byref
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:get_AllRequiredMembers():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2[System.String,Microsoft.CodeAnalysis.CSharp.Symbol]:this
@@ -169,7 +169,7 @@ G_M20484_IG09: ; bbWeight=0.84, gcrefRegs=80001 {x0 x19}, byrefRegs=10000
G_M20484_IG10: ; bbWeight=1, gcrefRegs=880000 {x19 x23}, byrefRegs=100000 {x20}, byref, isz
; gcrRegs -[x0]
cmp x21, x22
- bne G_M20484_IG46
+ bne G_M20484_IG43
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:get_HasDeclaredRequiredMembers():ubyte:this
@@ -181,7 +181,7 @@ G_M20484_IG10: ; bbWeight=1, gcrefRegs=880000 {x19 x23}, byrefRegs=100000
sxtw w24, w0
ldr x0, [x19, #0x50]
; gcrRegs +[x0]
- cbz x0, G_M20484_IG16
+ cbz x0, G_M20484_IG39
;; size=44 bbWeight=1 PerfScore 12.00
G_M20484_IG11: ; bbWeight=0.93, gcrefRegs=880000 {x19 x23}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x0]
@@ -196,7 +196,7 @@ G_M20484_IG12: ; bbWeight=1, gcrefRegs=800001 {x0 x23}, byrefRegs=100000
mov w2, wzr
mov w27, wzr
cmp w25, #0
- ble G_M20484_IG34
+ ble G_M20484_IG28
;; size=24 bbWeight=1 PerfScore 6.00
G_M20484_IG13: ; bbWeight=14.75, gcrefRegs=4800000 {x23 x26}, byrefRegs=100000 {x20}, byref, isz
; gcrRegs -[x0]
@@ -206,7 +206,7 @@ G_M20484_IG13: ; bbWeight=14.75, gcrefRegs=4800000 {x23 x26}, byrefRegs=1
; gcrRegs +[x28]
mov x22, x28
; gcrRegs +[x22]
- cbz x22, G_M20484_IG22
+ cbz x22, G_M20484_IG16
;; size=16 bbWeight=14.75 PerfScore 73.76
G_M20484_IG14: ; bbWeight=7.38, gcrefRegs=14C00000 {x22 x23 x26 x28}, byrefRegs=100000 {x20}, byref, isz
; byrRegs -[x1]
@@ -215,46 +215,32 @@ G_M20484_IG14: ; bbWeight=7.38, gcrefRegs=14C00000 {x22 x23 x26 x28}, byr
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x1, x0
- beq G_M20484_IG21
+ bne G_M20484_IG26
;; size=24 bbWeight=7.38 PerfScore 44.26
-G_M20484_IG15: ; bbWeight=2.66, gcrefRegs=14800000 {x23 x26 x28}, byrefRegs=100000 {x20}, byref
+G_M20484_IG15: ; bbWeight=4.94, gcrefRegs=14800000 {x23 x26 x28}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x22]
- mov x1, x28
- ; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[x1] +[x0]
- mov x22, x0
+ mov x22, xzr
; gcrRegs +[x22]
- b G_M20484_IG22
- ;; size=28 bbWeight=2.66 PerfScore 11.95
-G_M20484_IG16: ; bbWeight=0.19, gcrefRegs=880000 {x19 x23}, byrefRegs=100000 {x20}, byref
- ; gcrRegs -[x0 x22 x26 x28] +[x19]
- mov x0, x19
- ; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E // code for <unknown method>
+ ;; size=4 bbWeight=4.94 PerfScore 2.47
+G_M20484_IG16: ; bbWeight=14.75, gcrefRegs=14C00000 {x22 x23 x26 x28}, byrefRegs=100000 {x20}, byref, isz
+ mov x21, x22
+ ; gcrRegs +[x21]
+ cbnz x21, G_M20484_IG24
+ ;; size=8 bbWeight=14.75 PerfScore 22.13
+G_M20484_IG17: ; bbWeight=14.75, gcrefRegs=14C00000 {x22 x23 x26 x28}, byrefRegs=100000 {x20}, byref, isz
+ ; gcrRegs -[x21]
+ ldr x0, [x28]
+ movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- ; gcrRegs -[x0]
- b G_M20484_IG11
- ;; size=28 bbWeight=0.19 PerfScore 1.36
-G_M20484_IG17: ; bbWeight=4.87, gcrefRegs=14C00000 {x22 x23 x26 x28}, byrefRegs=100000 {x20}, byref
- ; gcrRegs -[x19] +[x22 x26 x28]
- mov x0, x28
- ; gcrRegs +[x0]
- ldr x1, [x28]
- ldr x1, [x1, #0x50]
- ldr x1, [x1, #0x28]
- blr x1
- mov x1, x0
+ cmp x0, x1
+ bne G_M20484_IG30
+ ;; size=24 bbWeight=14.75 PerfScore 88.52
+G_M20484_IG18: ; bbWeight=9.88, gcrefRegs=14C00000 {x22 x23 x26 x28}, byrefRegs=100000 {x20}, byref
+ ldr x1, [x28, #0x18]
; gcrRegs +[x1]
- ;; size=24 bbWeight=4.87 PerfScore 53.55
-G_M20484_IG18: ; bbWeight=14.75, gcrefRegs=14C00002 {x1 x22 x23 x26 x28}, byrefRegs=100000 {x20}, byref, isz
- ; gcrRegs -[x0]
+ ;; size=4 bbWeight=9.88 PerfScore 29.65
+G_M20484_IG19: ; bbWeight=14.75, gcrefRegs=14C00002 {x1 x22 x23 x26 x28}, byrefRegs=100000 {x20}, byref, isz
ldrsb wzr, [x23]
mov x0, x23
; gcrRegs +[x0]
@@ -266,104 +252,10 @@ G_M20484_IG18: ; bbWeight=14.75, gcrefRegs=14C00002 {x1 x22 x23 x26 x28},
; gcrRegs -[x0-x1]
; byrRegs +[x0]
mov x1, x0
- cbz x1, G_M20484_IG28
+ cbnz x1, G_M20484_IG33
;; size=36 bbWeight=14.75 PerfScore 154.91
-G_M20484_IG19: ; bbWeight=0.10, gcrefRegs=14C00000 {x22 x23 x26 x28}, byrefRegs=100001 {x0 x20}, byref
- b G_M20484_IG39
- ;; size=4 bbWeight=0.10 PerfScore 0.10
-G_M20484_IG20: ; bbWeight=0.16, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
- ; gcrRegs -[x22-x23 x26 x28] +[x19]
+G_M20484_IG20: ; bbWeight=14.75, gcrefRegs=14C00000 {x22 x23 x26 x28}, byrefRegs=100000 {x20}, byref, isz
; byrRegs -[x0]
- movz x0, #0xD1FFAB1E // box for <unknown class>:<unknown field>
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr x0, [x0]
- ; gcrRegs +[x0]
- ldr x23, [x0, #0x08]
- ; gcrRegs +[x23]
- b G_M20484_IG10
- ;; size=24 bbWeight=0.16 PerfScore 1.35
-G_M20484_IG21: ; bbWeight=4.72, gcrefRegs=14800000 {x23 x26 x28}, byrefRegs=100000 {x20}, byref
- ; gcrRegs -[x0 x19] +[x26 x28]
- mov x22, xzr
- ; gcrRegs +[x22]
- ;; size=4 bbWeight=4.72 PerfScore 2.36
-G_M20484_IG22: ; bbWeight=14.75, gcrefRegs=14C00000 {x22 x23 x26 x28}, byrefRegs=100000 {x20}, byref, isz
- mov x21, x22
- ; gcrRegs +[x21]
- cbz x21, G_M20484_IG25
- ;; size=8 bbWeight=14.75 PerfScore 22.13
-G_M20484_IG23: ; bbWeight=1.71, gcrefRegs=14E00000 {x21 x22 x23 x26 x28}, byrefRegs=100000 {x20}, byref
- b G_M20484_IG37
- ;; size=4 bbWeight=1.71 PerfScore 1.71
-G_M20484_IG24: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- ; gcrRegs -[x21-x23 x26 x28] +[x19]
- add x23, x19, #96
- ; byrRegs +[x23]
- mov x0, x19
- ; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:MakeAcyclicBaseType():Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- mov x1, x0
- ; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr x2, [x0]
- ; gcrRegs +[x2]
- cbz x23, G_M20484_IG50
- mov x0, x23
- ; byrRegs +[x0]
- bl <unknown method>
- ; gcrRegs -[x1-x2] +[x0]
- ; byrRegs -[x0 x23]
- b G_M20484_IG07
- ;; size=64 bbWeight=0.12 PerfScore 1.81
-G_M20484_IG25: ; bbWeight=14.75, gcrefRegs=14C00000 {x22 x23 x26 x28}, byrefRegs=100000 {x20}, byref, isz
- ; gcrRegs -[x0 x19] +[x22-x23 x26 x28]
- ldr x0, [x28]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- cmp x0, x1
- bne G_M20484_IG17
- ;; size=24 bbWeight=14.75 PerfScore 88.52
-G_M20484_IG26: ; bbWeight=9.88, gcrefRegs=14C00000 {x22 x23 x26 x28}, byrefRegs=100000 {x20}, byref
- b G_M20484_IG36
- ;; size=4 bbWeight=9.88 PerfScore 9.88
-G_M20484_IG27: ; bbWeight=0.13, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- ; gcrRegs -[x22-x23 x26 x28] +[x19]
- add x23, x19, #96
- ; byrRegs +[x23]
- mov x0, x19
- ; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:MakeAcyclicBaseType():Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- mov x1, x0
- ; gcrRegs +[x1]
...
+0 (0.00%) : 380365.dasm - ReflectionAbstractionExtensions:DisposeTestClass(Xunit.Abstractions.ITest,System.Object,Xunit.Sdk.IMessageBus,Xunit.Sdk.ExecutionTimer,System.Threading.CancellationTokenSource) (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 arg0 [V00,T03] ( 5, 2.08) ref -> [fp+0x28] class-hnd EH-live single-def <Xunit.Abstractions.ITest>
-; V01 arg1 [V01,T01] ( 4, 3.18) ref -> x1 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T01] ( 4, 3.15) ref -> x1 class-hnd single-def <System.Object>
; V02 arg2 [V02,T02] ( 11, 2.17) ref -> [fp+0x20] class-hnd EH-live single-def <Xunit.Sdk.IMessageBus>
; V03 arg3 [V03,T04] ( 3, 2.04) ref -> x19 class-hnd single-def <Xunit.Sdk.ExecutionTimer>
; V04 arg4 [V04,T05] ( 8, 2 ) ref -> [fp+0x18] class-hnd EH-live single-def <System.Threading.CancellationTokenSource>
@@ -47,7 +47,7 @@ G_M6630_IG02: ; bbWeight=1, gcVars=000000000000002C {V00 V02 V04}, gcrefR
; gcrRegs +[x1]
mov x20, x1
; gcrRegs +[x20]
- cbz x20, G_M6630_IG06
+ cbz x20, G_M6630_IG05
;; size=8 bbWeight=1 PerfScore 1.50
G_M6630_IG03: ; bbWeight=0.50, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20]
@@ -55,10 +55,27 @@ G_M6630_IG03: ; bbWeight=0.50, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
cmp x0, x3
- beq G_M6630_IG05
+ bne G_M6630_IG07
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M6630_IG04: ; bbWeight=0.18, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
+G_M6630_IG04: ; bbWeight=0.35, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1 x20]
+ mov x20, xzr
+ ; gcrRegs +[x20]
+ ;; size=4 bbWeight=0.35 PerfScore 0.17
+G_M6630_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbnz x20, G_M6630_IG08
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M6630_IG06: ; bbWeight=0.96, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+ ; gcrRegs -[x19-x20]
+ ; GC ptr vars -{V00 V02 V04}
+ ldr x21, [sp, #0x48]
+ ldp x19, x20, [sp, #0x38]
+ ldp fp, lr, [sp], #0x50
+ ret lr
+ ;; size=16 bbWeight=0.96 PerfScore 4.79
+G_M6630_IG07: ; bbWeight=0.15, gcVars=000000000000002C {V00 V02 V04}, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x1 x19]
+ ; GC ptr vars +{V00 V02 V03 V04 V05}
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -67,27 +84,10 @@ G_M6630_IG04: ; bbWeight=0.18, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {
; gcr arg pop 0
mov x20, x0
; gcrRegs +[x20]
- b G_M6630_IG06
- ;; size=24 bbWeight=0.18 PerfScore 0.72
-G_M6630_IG05: ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x20]
- mov x20, xzr
- ; gcrRegs +[x20]
- ;; size=4 bbWeight=0.32 PerfScore 0.16
-G_M6630_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbnz x20, G_M6630_IG08
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M6630_IG07: ; bbWeight=0.96, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
- ; gcrRegs -[x19-x20]
- ; GC ptr vars -{V00 V02 V04}
- ldr x21, [sp, #0x48]
- ldp x19, x20, [sp, #0x38]
- ldp fp, lr, [sp], #0x50
- ret lr
- ;; size=16 bbWeight=0.96 PerfScore 4.79
-G_M6630_IG08: ; bbWeight=0.04, gcVars=000000000000002C {V00 V02 V04}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19-x20]
- ; GC ptr vars +{V00 V02 V03 V04 V05}
+ b G_M6630_IG05
+ ;; size=24 bbWeight=0.15 PerfScore 0.60
+G_M6630_IG08: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -220,7 +220,7 @@ G_M6630_IG12: ; bbWeight=0, gcVars=0000000000000024 {V02 V04}, gcrefRegs=
; gcr arg pop 0
;; size=24 bbWeight=0 PerfScore 0.00
G_M6630_IG13: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cbnz w0, G_M6630_IG07
+ cbnz w0, G_M6630_IG06
;; size=4 bbWeight=0.04 PerfScore 0.04
G_M6630_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0x18] // [V04 arg4]
@@ -252,7 +252,7 @@ G_M6630_IG16: ; bbWeight=0, gcVars=0000000000000020 {V04}, gcrefRegs=0001
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- b G_M6630_IG07
+ b G_M6630_IG06
;; size=28 bbWeight=0 PerfScore 0.00
G_M6630_IG17: ; bbWeight=0, gcVars=000000000000002C {V00 V02 V04}, gcrefRegs=380004 {x2 x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x2 x19-x21]
@@ -389,7 +389,7 @@ G_M6630_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 812, prolog size 32, PerfScore 20.69, instruction count 203, allocated bytes for code 812 (MethodHash=aaffe619) for method ReflectionAbstractionExtensions:DisposeTestClass(Xunit.Abstractions.ITest,System.Object,Xunit.Sdk.IMessageBus,Xunit.Sdk.ExecutionTimer,System.Threading.CancellationTokenSource) (Tier1)
+; Total bytes of code 812, prolog size 32, PerfScore 20.58, instruction count 203, allocated bytes for code 812 (MethodHash=aaffe619) for method ReflectionAbstractionExtensions:DisposeTestClass(Xunit.Abstractions.ITest,System.Object,Xunit.Sdk.IMessageBus,Xunit.Sdk.ExecutionTimer,System.Threading.CancellationTokenSource) (Tier1)
; ============================================================
Unwind Info:
+0 (0.00%) : 639261.dasm - System.Convert:ToString(System.Object,System.IFormatProvider):System.String (Tier1)
@@ -9,7 +9,7 @@
; 3 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 10, 4.32) ref -> x19 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 10, 4.31) ref -> x19 class-hnd single-def <System.Object>
; V01 arg1 [V01,T01] ( 5, 2.32) ref -> x20 class-hnd single-def <System.IFormatProvider>
; V02 loc0 [V02,T03] ( 5, 3.37) ref -> x0 class-hnd single-def <System.IConvertible>
; V03 loc1 [V03,T09] ( 5, 0.64) ref -> x0 class-hnd single-def <System.IFormattable>
@@ -145,12 +145,12 @@ G_M7429_IG12: ; bbWeight=0.16, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x1, x0
- bne G_M7429_IG18
+ bne G_M7429_IG20
;; size=24 bbWeight=0.16 PerfScore 0.94
-G_M7429_IG13: ; bbWeight=0.10, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M7429_IG13: ; bbWeight=0.12, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, xzr
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.10 PerfScore 0.05
+ ;; size=4 bbWeight=0.12 PerfScore 0.06
G_M7429_IG14: ; bbWeight=0.31, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
cbnz x0, G_M7429_IG21
;; size=4 bbWeight=0.31 PerfScore 0.31
@@ -162,7 +162,7 @@ G_M7429_IG15: ; bbWeight=0.30, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M7429_IG19
+ bne G_M7429_IG18
;; size=28 bbWeight=0.30 PerfScore 2.13
G_M7429_IG16: ; bbWeight=0.26, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19
@@ -182,8 +182,22 @@ G_M7429_IG17: ; bbWeight=0.26, epilog, nogc, extend
br x2
; gcr arg pop 0
;; size=12 bbWeight=0.26 PerfScore 0.78
-G_M7429_IG18: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0] +[x19-x20]
+G_M7429_IG18: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0] +[x19]
+ mov x0, x19
+ ; gcrRegs +[x0]
+ ldr x1, [x19]
+ ldr x1, [x1, #0x48]
+ ldr x1, [x1, #0x08]
+ ;; size=16 bbWeight=0.05 PerfScore 0.43
+G_M7429_IG19: ; bbWeight=0.05, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ br x1
+ ; gcr arg pop 0
+ ;; size=12 bbWeight=0.05 PerfScore 0.14
+G_M7429_IG20: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0] +[x20]
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -193,23 +207,9 @@ G_M7429_IG18: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=1800
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
b G_M7429_IG14
- ;; size=24 bbWeight=0.05 PerfScore 0.21
-G_M7429_IG19: ; bbWeight=0.05, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x20]
- mov x0, x19
- ; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x48]
- ldr x1, [x1, #0x08]
- ;; size=16 bbWeight=0.05 PerfScore 0.43
-G_M7429_IG20: ; bbWeight=0.05, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- br x1
- ; gcr arg pop 0
- ;; size=12 bbWeight=0.05 PerfScore 0.14
-G_M7429_IG21: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x19] +[x20]
+ ;; size=24 bbWeight=0.04 PerfScore 0.15
+G_M7429_IG21: ; bbWeight=0.01, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x19]
ldr x2, [x0]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -270,7 +270,7 @@ G_M7429_IG28: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ret lr
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 532, prolog size 20, PerfScore 34.35, instruction count 133, allocated bytes for code 532 (MethodHash=f538e2fa) for method System.Convert:ToString(System.Object,System.IFormatProvider):System.String (Tier1)
+; Total bytes of code 532, prolog size 20, PerfScore 34.30, instruction count 133, allocated bytes for code 532 (MethodHash=f538e2fa) for method System.Convert:ToString(System.Object,System.IFormatProvider):System.String (Tier1)
; ============================================================
Unwind Info:
+12 (+1.30%) : 471778.dasm - OLEDB.Test.ModuleCore.CTestModule+
@@ -60,12 +60,12 @@ G_M23047_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=000
ldr w1, [x0, #0x20]
ldr x2, [x0, #0x10]
; gcrRegs +[x2]
- cbz w1, G_M23047_IG12
+ cbz w1, G_M23047_IG07
;; size=12 bbWeight=1 PerfScore 7.00
G_M23047_IG03: ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2]
cmp w1, #1
- bne G_M23047_IG11
+ bne G_M23047_IG17
;; size=8 bbWeight=1.00 PerfScore 1.50
G_M23047_IG04: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
movn w11, #3
@@ -79,7 +79,7 @@ G_M23047_IG04: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M23047_IG24
+ cbz w0, G_M23047_IG23
;; size=40 bbWeight=0.01 PerfScore 0.16
G_M23047_IG05: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0x10] // [V00 this]
@@ -91,7 +91,7 @@ G_M23047_IG05: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movk x15, #0xD1FFAB1E LSL #16
movk x15, #0xD1FFAB1E LSL #32
cmp x14, x15
- bne G_M23047_IG10
+ bne G_M23047_IG16
ldr x15, [x1, #0x08]
; gcrRegs +[x15]
;; size=36 bbWeight=1.00 PerfScore 13.99
@@ -104,59 +104,9 @@ G_M23047_IG06: ; bbWeight=1.00, gcrefRegs=8001 {x0 x15}, byrefRegs=0000 {
; byrRegs -[x14]
mov w11, #1
str w11, [x0, #0x20]
- b G_M23047_IG29
+ b G_M23047_IG30
;; size=20 bbWeight=1.00 PerfScore 4.00
-G_M23047_IG07: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0] +[x19]
- mov x0, x19
- ; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x48]
- ldr x1, [x1, #0x20]
- blr x1
- ; gcr arg pop 0
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M23047_IG08: ; bbWeight=0, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
- ldr x1, [x0]
- ldr x1, [x1, #0x48]
- ldr x1, [x1, #0x38]
- blr x1
- ; gcr arg pop 0
- b G_M23047_IG21
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M23047_IG09: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- movz x20, #0xD1FFAB1E // code for <unknown method>
- movk x20, #0xD1FFAB1E LSL #16
- movk x20, #0xD1FFAB1E LSL #32
- mov x11, x20
- ldr x1, [x11]
- blr x1
- ; gcr arg pop 0
- mov x15, x0
- ; gcrRegs +[x15]
- b G_M23047_IG22
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M23047_IG10: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x15] +[x1]
- mov x0, x1
- ; gcrRegs +[x0]
- add x11, x20, #16
- ldr x1, [x11]
- ; gcrRegs -[x1]
- blr x1
- ; gcr arg pop 0
- mov x15, x0
- ; gcrRegs +[x15]
- ldr x0, [fp, #0x10] // [V00 this]
- b G_M23047_IG06
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M23047_IG11: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x15]
- mov w11, wzr
- b G_M23047_IG29
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M23047_IG12: ; bbWeight=0.00, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
+G_M23047_IG07: ; bbWeight=0.00, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x2]
movn w1, #0
str w1, [x0, #0x20]
@@ -170,10 +120,10 @@ G_M23047_IG12: ; bbWeight=0.00, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}
; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
- cbz x15, G_M23047_IG28
+ cbz x15, G_M23047_IG29
ldr w14, [x15, #0x10]
cmp w14, #0
- ble G_M23047_IG28
+ ble G_M23047_IG29
ldr w0, [x15, #0x14]
; gcrRegs -[x0]
ldr x2, [fp, #0x10] // [V00 this]
@@ -200,60 +150,99 @@ G_M23047_IG12: ; bbWeight=0.00, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}
; gcrRegs -[x2]
; byrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M23047_IG27
+ cbz w0, G_M23047_IG28
;; size=124 bbWeight=0.00 PerfScore 0.03
-G_M23047_IG13: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M23047_IG08: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x2, [fp, #0x10] // [V00 this]
; gcrRegs +[x2]
ldr x1, [x2, #0x30]
; gcrRegs +[x1]
mov x19, x1
; gcrRegs +[x19]
- cbz x19, G_M23047_IG16
+ cbz x19, G_M23047_IG10
;; size=16 bbWeight=0.01 PerfScore 0.09
-G_M23047_IG14: ; bbWeight=0.01, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M23047_IG09: ; bbWeight=0.01, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2]
ldr x0, [x19]
movz x3, #0xD1FFAB1E
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
cmp x0, x3
- beq G_M23047_IG16
+ bne G_M23047_IG20
;; size=24 bbWeight=0.01 PerfScore 0.04
-G_M23047_IG15: ; bbWeight=0.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[x1] +[x0]
- ; gcr arg pop 0
- mov x19, x0
- ; gcrRegs +[x19]
- ;; size=20 bbWeight=0.00 PerfScore 0.01
-G_M23047_IG16: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- cbz x19, G_M23047_IG26
+G_M23047_IG10: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x1]
+ cbz x19, G_M23047_IG25
ldr x20, [x19]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x20, x0
- bne G_M23047_IG07
+ bne G_M23047_IG13
;; size=28 bbWeight=0.01 PerfScore 0.10
-G_M23047_IG17: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M23047_IG11: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x18]
; gcrRegs +[x0]
- cbz x0, G_M23047_IG19
+ cbz x0, G_M23047_IG18
;; size=8 bbWeight=0.01 PerfScore 0.06
-G_M23047_IG18: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M23047_IG12: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
ldr x0, [x19, #0x18]
; gcrRegs +[x0]
- b G_M23047_IG20
+ b G_M23047_IG19
;; size=8 bbWeight=0.01 PerfScore 0.06
-G_M23047_IG19: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M23047_IG13: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ mov x0, x19
+ ; gcrRegs +[x0]
+ ldr x1, [x19]
+ ldr x1, [x1, #0x48]
+ ldr x1, [x1, #0x20]
+ blr x1
+ ; gcr arg pop 0
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M23047_IG14: ; bbWeight=0, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+ ldr x1, [x0]
+ ldr x1, [x1, #0x48]
+ ldr x1, [x1, #0x38]
+ blr x1
+ ; gcr arg pop 0
+ b G_M23047_IG21
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M23047_IG15: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
+ movz x20, #0xD1FFAB1E // code for <unknown method>
+ movk x20, #0xD1FFAB1E LSL #16
+ movk x20, #0xD1FFAB1E LSL #32
+ mov x11, x20
+ ldr x1, [x11]
+ blr x1
+ ; gcr arg pop 0
+ mov x15, x0
+ ; gcrRegs +[x15]
+ b G_M23047_IG22
+ ;; size=32 bbWeight=0 PerfScore 0.00
+G_M23047_IG16: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x15] +[x1]
+ mov x0, x1
+ ; gcrRegs +[x0]
+ add x11, x20, #16
+ ldr x1, [x11]
+ ; gcrRegs -[x1]
+ blr x1
+ ; gcr arg pop 0
+ mov x15, x0
+ ; gcrRegs +[x15]
+ ldr x0, [fp, #0x10] // [V00 this]
+ b G_M23047_IG06
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M23047_IG17: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x15]
+ mov w11, wzr
+ b G_M23047_IG30
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M23047_IG18: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0] +[x19]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -269,18 +258,31 @@ G_M23047_IG19: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- b G_M23047_IG18
+ b G_M23047_IG12
;; size=40 bbWeight=0.00 PerfScore 0.01
-G_M23047_IG20: ; bbWeight=0.06, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M23047_IG19: ; bbWeight=0.06, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldr x1, [x0]
movz x3, #0xD1FFAB1E
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
cmp x1, x3
- bne G_M23047_IG08
+ bne G_M23047_IG14
...
+32 (+2.48%) : 524320.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1ubyte
@@ -9,21 +9,21 @@
; 5 inlinees with PGO data; 45 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 7, 5.00) ref -> x19 class-hnd single-def <Xunit.Sdk.CollectionTracker>
-; V01 arg1 [V01,T04] ( 7, 5.00) ref -> x20 class-hnd single-def <Xunit.Sdk.CollectionTracker>
-; V02 arg2 [V02,T12] ( 4, 3.00) ref -> x22 class-hnd single-def <System.Collections.IEqualityComparer>
-; V03 arg3 [V03,T13] ( 3, 3.00) ubyte -> x23 single-def
-; V04 arg4 [V04,T05] ( 4, 4.00) byref -> x21 single-def
+; V00 arg0 [V00,T04] ( 7, 5.00) ref -> x19 class-hnd single-def <Xunit.Sdk.CollectionTracker>
+; V01 arg1 [V01,T05] ( 7, 5.00) ref -> x20 class-hnd single-def <Xunit.Sdk.CollectionTracker>
+; V02 arg2 [V02,T13] ( 4, 3.00) ref -> x22 class-hnd single-def <System.Collections.IEqualityComparer>
+; V03 arg3 [V03,T14] ( 3, 3.00) ubyte -> x23 single-def
+; V04 arg4 [V04,T06] ( 4, 4.00) byref -> x21 single-def
; V05 loc0 [V05,T00] ( 15, 8.99) ref -> x24 class-hnd single-def <System.Array>
; V06 loc1 [V06,T01] ( 13, 8.99) ref -> x25 class-hnd single-def <System.Array>
-; V07 loc2 [V07,T29] ( 3, 0 ) ref -> x19 class-hnd single-def <<unknown class>>
-; V08 loc3 [V08,T30] ( 3, 0 ) ref -> x20 class-hnd single-def <<unknown class>>
+; V07 loc2 [V07,T31] ( 3, 0 ) ref -> x19 class-hnd single-def <<unknown class>>
+; V08 loc3 [V08,T32] ( 3, 0 ) ref -> x20 class-hnd single-def <<unknown class>>
;* V09 loc4 [V09 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op <System.Nullable`1[ubyte]>
-; V10 loc5 [V10,T28] ( 8, 0 ) int -> x21
-; V11 loc6 [V11,T34] ( 3, 0 ) ubyte -> x21
-; V12 loc7 [V12,T35] ( 3, 0 ) ubyte -> x0
+; V10 loc5 [V10,T30] ( 8, 0 ) int -> x21
+; V11 loc6 [V11,T36] ( 3, 0 ) ubyte -> x21
+; V12 loc7 [V12,T37] ( 3, 0 ) ubyte -> x0
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T42] ( 2, 0 ) int -> x21 "impAppendStmt"
+; V14 tmp1 [V14,T44] ( 2, 0 ) int -> x21 "impAppendStmt"
;* V15 tmp2 [V15 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V16 tmp3 [V16 ] ( 3, 0 ) struct ( 8) [fp+0x30] do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V17 tmp4 [V17 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
@@ -32,60 +32,62 @@
; V20 tmp7 [V20 ] ( 3, 0 ) struct ( 8) [fp+0x20] do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
; V21 tmp8 [V21 ] ( 3, 0 ) struct ( 8) [fp+0x18] do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
; V22 tmp9 [V22 ] ( 3, 5.99) struct ( 8) [fp+0x10] do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-; V23 tmp10 [V23,T16] ( 2, 2.00) int -> x0 "Inline return value spill temp"
+; V23 tmp10 [V23,T18] ( 2, 2.00) int -> x0 "Inline return value spill temp"
;* V24 tmp11 [V24 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V25 tmp12 [V25,T17] ( 3, 3.00) int -> x0 single-def "Inline stloc first use temp"
-; V26 tmp13 [V26,T06] ( 3, 5.99) byref -> x26 single-def "Inlining Arg"
-; V27 tmp14 [V27,T18] ( 2, 2.00) int -> x0 "Inline return value spill temp"
+; V25 tmp12 [V25,T19] ( 3, 3.00) int -> x0 single-def "Inline stloc first use temp"
+; V26 tmp13 [V26,T07] ( 3, 5.99) byref -> x26 single-def "Inlining Arg"
+; V27 tmp14 [V27,T20] ( 2, 2.00) int -> x0 "Inline return value spill temp"
;* V28 tmp15 [V28 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V29 tmp16 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V30 tmp17 [V30,T19] ( 3, 3.00) int -> x26 single-def "Inline stloc first use temp"
-; V31 tmp18 [V31,T07] ( 3, 5.99) byref -> x26 single-def "Inlining Arg"
-; V32 tmp19 [V32,T26] ( 2, 2.00) int -> x0 single-def "Inline stloc first use temp"
-; V33 tmp20 [V33,T08] ( 3, 5.99) byref -> x27 single-def "Inlining Arg"
-; V34 tmp21 [V34,T20] ( 2, 2.00) int -> x0 "Inline return value spill temp"
+; V30 tmp17 [V30,T21] ( 3, 3.00) int -> x26 single-def "Inline stloc first use temp"
+; V31 tmp18 [V31,T08] ( 3, 5.99) byref -> x26 single-def "Inlining Arg"
+; V32 tmp19 [V32,T28] ( 2, 2.00) int -> x0 single-def "Inline stloc first use temp"
+; V33 tmp20 [V33,T09] ( 3, 5.99) byref -> x27 single-def "Inlining Arg"
+; V34 tmp21 [V34,T22] ( 2, 2.00) int -> x0 "Inline return value spill temp"
;* V35 tmp22 [V35 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V36 tmp23 [V36,T21] ( 3, 3.00) int -> x0 single-def "Inline stloc first use temp"
-; V37 tmp24 [V37,T09] ( 3, 5.99) byref -> x26 single-def "Inlining Arg"
-; V38 tmp25 [V38,T22] ( 2, 2.00) int -> x3 "Inline return value spill temp"
+; V36 tmp23 [V36,T23] ( 3, 3.00) int -> x0 single-def "Inline stloc first use temp"
+; V37 tmp24 [V37,T10] ( 3, 5.99) byref -> x26 single-def "Inlining Arg"
+; V38 tmp25 [V38,T24] ( 2, 2.00) int -> x3 "Inline return value spill temp"
;* V39 tmp26 [V39 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
;* V40 tmp27 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V41 tmp28 [V41,T23] ( 3, 3.00) int -> x26 single-def "Inline stloc first use temp"
-; V42 tmp29 [V42,T10] ( 3, 5.99) byref -> x26 single-def "Inlining Arg"
-; V43 tmp30 [V43,T27] ( 2, 2.00) int -> x0 single-def "Inline stloc first use temp"
-; V44 tmp31 [V44,T11] ( 3, 5.99) byref -> x27 single-def "Inlining Arg"
+; V41 tmp28 [V41,T25] ( 3, 3.00) int -> x26 single-def "Inline stloc first use temp"
+; V42 tmp29 [V42,T11] ( 3, 5.99) byref -> x26 single-def "Inlining Arg"
+; V43 tmp30 [V43,T29] ( 2, 2.00) int -> x0 single-def "Inline stloc first use temp"
+; V44 tmp31 [V44,T12] ( 3, 5.99) byref -> x27 single-def "Inlining Arg"
;* V45 tmp32 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V46 tmp33 [V46 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V47 tmp34 [V47,T36] ( 3, 0 ) int -> x0 single-def "Inline stloc first use temp"
-; V48 tmp35 [V48,T31] ( 3, 0 ) byref -> x21 single-def "Inlining Arg"
-; V49 tmp36 [V49,T43] ( 2, 0 ) int -> x0 "Inline return value spill temp"
+; V47 tmp34 [V47,T38] ( 3, 0 ) int -> x0 single-def "Inline stloc first use temp"
+; V48 tmp35 [V48,T33] ( 3, 0 ) byref -> x21 single-def "Inlining Arg"
+; V49 tmp36 [V49,T45] ( 2, 0 ) int -> x0 "Inline return value spill temp"
;* V50 tmp37 [V50 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V51 tmp38 [V51,T37] ( 3, 0 ) int -> x0 single-def "Inline stloc first use temp"
-; V52 tmp39 [V52,T32] ( 3, 0 ) byref -> x23 single-def "Inlining Arg"
-; V53 tmp40 [V53,T38] ( 3, 0 ) int -> x1 "Inline return value spill temp"
+; V51 tmp38 [V51,T39] ( 3, 0 ) int -> x0 single-def "Inline stloc first use temp"
+; V52 tmp39 [V52,T34] ( 3, 0 ) byref -> x23 single-def "Inlining Arg"
+; V53 tmp40 [V53,T40] ( 3, 0 ) int -> x1 "Inline return value spill temp"
;* V54 tmp41 [V54 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V55 tmp42 [V55,T39] ( 3, 0 ) int -> x0 "Inline stloc first use temp"
-; V56 tmp43 [V56,T33] ( 3, 0 ) byref -> x23 "Inlining Arg"
+; V55 tmp42 [V55,T41] ( 3, 0 ) int -> x0 "Inline stloc first use temp"
+; V56 tmp43 [V56,T35] ( 3, 0 ) byref -> x23 "Inlining Arg"
;* V57 tmp44 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V58 tmp45 [V58,T15] ( 7, 4.00) struct ( 8) x0 "Single return block return value" <System.Nullable`1[ubyte]>
+; V58 tmp45 [V58,T17] ( 7, 4.00) struct ( 8) x0 "Single return block return value" <System.Nullable`1[ubyte]>
;* V59 tmp46 [V59 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[] "field V09.hasValue (fldOffset=0x0)" P-DEP
;* V60 tmp47 [V60 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[] "field V09.value (fldOffset=0x1)" P-DEP
-; V61 tmp48 [V61,T44] ( 2, 0 ) ubyte -> [fp+0x30] do-not-enreg[] "field V16.hasValue (fldOffset=0x0)" P-DEP
-; V62 tmp49 [V62,T45] ( 2, 0 ) ubyte -> [fp+0x31] do-not-enreg[] "field V16.value (fldOffset=0x1)" P-DEP
-; V63 tmp50 [V63,T46] ( 2, 0 ) ubyte -> [fp+0x28] do-not-enreg[] "field V18.hasValue (fldOffset=0x0)" P-DEP
-; V64 tmp51 [V64,T47] ( 2, 0 ) ubyte -> [fp+0x29] do-not-enreg[] "field V18.value (fldOffset=0x1)" P-DEP
-; V65 tmp52 [V65,T48] ( 2, 0 ) ubyte -> [fp+0x20] do-not-enreg[] "field V20.hasValue (fldOffset=0x0)" P-DEP
-; V66 tmp53 [V66,T49] ( 2, 0 ) ubyte -> [fp+0x21] do-not-enreg[] "field V20.value (fldOffset=0x1)" P-DEP
-; V67 tmp54 [V67,T50] ( 2, 0 ) ubyte -> [fp+0x18] do-not-enreg[] "field V21.hasValue (fldOffset=0x0)" P-DEP
-; V68 tmp55 [V68,T51] ( 2, 0 ) ubyte -> [fp+0x19] do-not-enreg[] "field V21.value (fldOffset=0x1)" P-DEP
-; V69 tmp56 [V69,T24] ( 2, 3.00) ubyte -> [fp+0x10] do-not-enreg[] "field V22.hasValue (fldOffset=0x0)" P-DEP
-; V70 tmp57 [V70,T25] ( 2, 3.00) ubyte -> [fp+0x11] do-not-enreg[] "field V22.value (fldOffset=0x1)" P-DEP
+; V61 tmp48 [V61,T46] ( 2, 0 ) ubyte -> [fp+0x30] do-not-enreg[] "field V16.hasValue (fldOffset=0x0)" P-DEP
+; V62 tmp49 [V62,T47] ( 2, 0 ) ubyte -> [fp+0x31] do-not-enreg[] "field V16.value (fldOffset=0x1)" P-DEP
+; V63 tmp50 [V63,T48] ( 2, 0 ) ubyte -> [fp+0x28] do-not-enreg[] "field V18.hasValue (fldOffset=0x0)" P-DEP
+; V64 tmp51 [V64,T49] ( 2, 0 ) ubyte -> [fp+0x29] do-not-enreg[] "field V18.value (fldOffset=0x1)" P-DEP
+; V65 tmp52 [V65,T50] ( 2, 0 ) ubyte -> [fp+0x20] do-not-enreg[] "field V20.hasValue (fldOffset=0x0)" P-DEP
+; V66 tmp53 [V66,T51] ( 2, 0 ) ubyte -> [fp+0x21] do-not-enreg[] "field V20.value (fldOffset=0x1)" P-DEP
+; V67 tmp54 [V67,T52] ( 2, 0 ) ubyte -> [fp+0x18] do-not-enreg[] "field V21.hasValue (fldOffset=0x0)" P-DEP
+; V68 tmp55 [V68,T53] ( 2, 0 ) ubyte -> [fp+0x19] do-not-enreg[] "field V21.value (fldOffset=0x1)" P-DEP
+; V69 tmp56 [V69,T26] ( 2, 3.00) ubyte -> [fp+0x10] do-not-enreg[] "field V22.hasValue (fldOffset=0x0)" P-DEP
+; V70 tmp57 [V70,T27] ( 2, 3.00) ubyte -> [fp+0x11] do-not-enreg[] "field V22.value (fldOffset=0x1)" P-DEP
;* V71 tmp58 [V71 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
;* V72 tmp59 [V72 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V73 tmp60 [V73,T40] ( 2, 0 ) ref -> x2 "argument with side effect"
-; V74 tmp61 [V74,T41] ( 2, 0 ) ref -> x21 "argument with side effect"
-; V75 rat0 [V75,T14] ( 3, 4.30) ref -> x1 "Spilling to split statement for tree"
-; V76 rat1 [V76,T02] ( 5, 7.30) ref -> x24 class-hnd "replacement local" <System.Array>
+; V73 tmp60 [V73,T42] ( 2, 0 ) ref -> x2 "argument with side effect"
+; V74 tmp61 [V74,T43] ( 2, 0 ) ref -> x21 "argument with side effect"
+; V75 rat0 [V75,T16] ( 3, 4.21) ref -> x1 "Spilling to split statement for tree"
+; V76 rat1 [V76,T03] ( 5, 7.21) ref -> x24 class-hnd "replacement local" <System.Array>
+; V77 rat2 [V77,T15] ( 3, 4.49) ref -> x1 "Spilling to split statement for tree"
+; V78 rat3 [V78,T02] ( 5, 7.49) ref -> x25 class-hnd "replacement local" <System.Array>
;
; Lcl frame size = 40
@@ -109,8 +111,8 @@ G_M53565_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=48 bbWeight=1 PerfScore 9.00
G_M53565_IG02: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=200000 {x21}, byref, isz
str xzr, [x21]
- cbz x19, G_M53565_IG21
- cbz x20, G_M53565_IG21
+ cbz x19, G_M53565_IG24
+ cbz x20, G_M53565_IG24
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
mov x24, x1
@@ -123,12 +125,26 @@ G_M53565_IG03: ; bbWeight=0.50, gcrefRegs=1580002 {x1 x19 x20 x22 x24}, b
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x0, x2
- bne G_M53565_IG06
+ bne G_M53565_IG09
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M53565_IG04: ; bbWeight=1, gcrefRegs=1580000 {x19 x20 x22 x24}, byrefRegs=200000 {x21}, byref, isz
; gcrRegs -[x1]
ldr x1, [x20, #0x08]
; gcrRegs +[x1]
+ mov x25, x1
+ ; gcrRegs +[x25]
+ cbz x25, G_M53565_IG07
+ ;; size=12 bbWeight=1 PerfScore 4.50
+G_M53565_IG05: ; bbWeight=0.50, gcrefRegs=3580002 {x1 x19 x20 x22 x24 x25}, byrefRegs=200000 {x21}, byref, isz
+ ldr x0, [x25]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x0, x2
+ beq G_M53565_IG07
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M53565_IG06: ; bbWeight=0.24, gcrefRegs=1580002 {x1 x19 x20 x22 x24}, byrefRegs=200000 {x21}, byref
+ ; gcrRegs -[x25]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -136,11 +152,13 @@ G_M53565_IG04: ; bbWeight=1, gcrefRegs=1580000 {x19 x20 x22 x24}, byrefRe
; gcrRegs -[x1] +[x0]
mov x25, x0
; gcrRegs +[x25]
- cbz x24, G_M53565_IG21
- ;; size=28 bbWeight=1 PerfScore 7.00
-G_M53565_IG05: ; bbWeight=1.00, gcrefRegs=3580000 {x19 x20 x22 x24 x25}, byrefRegs=200000 {x21}, byref, isz
+ ;; size=20 bbWeight=0.24 PerfScore 0.74
+G_M53565_IG07: ; bbWeight=1, gcrefRegs=3580000 {x19 x20 x22 x24 x25}, byrefRegs=200000 {x21}, byref, isz
; gcrRegs -[x0]
- cbz x25, G_M53565_IG21
+ cbz x24, G_M53565_IG24
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M53565_IG08: ; bbWeight=1.00, gcrefRegs=3580000 {x19 x20 x22 x24 x25}, byrefRegs=200000 {x21}, byref, isz
+ cbz x25, G_M53565_IG24
ldr x26, [x24]
ldr w0, [x26]
tst w0, #0xD1FFAB1E
@@ -154,12 +172,12 @@ G_M53565_IG05: ; bbWeight=1.00, gcrefRegs=3580000 {x19 x20 x22 x24 x25},
ldr w0, [x26, #0x04]
sub w0, w0, #24
lsr w0, w0, #3
- cbz w0, G_M53565_IG08
+ cbz w0, G_M53565_IG11
cmp w0, #1
- bne G_M53565_IG12
- b G_M53565_IG08
+ bne G_M53565_IG15
+ b G_M53565_IG11
;; size=68 bbWeight=1.00 PerfScore 21.47
-G_M53565_IG06: ; bbWeight=0.15, gcrefRegs=580002 {x1 x19 x20 x22}, byrefRegs=200000 {x21}, byref
+G_M53565_IG09: ; bbWeight=0.11, gcrefRegs=580002 {x1 x19 x20 x22}, byrefRegs=200000 {x21}, byref
; gcrRegs -[x24-x25] +[x1]
; byrRegs -[x26]
movz x0, #0xD1FFAB1E
@@ -170,8 +188,8 @@ G_M53565_IG06: ; bbWeight=0.15, gcrefRegs=580002 {x1 x19 x20 x22}, byrefR
mov x24, x0
; gcrRegs +[x24]
b G_M53565_IG04
- ;; size=24 bbWeight=0.15 PerfScore 0.60
-G_M53565_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=24 bbWeight=0.11 PerfScore 0.42
+G_M53565_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x0 x19-x20 x22 x24]
; byrRegs -[x21]
ldr x27, [sp, #0x78]
@@ -182,7 +200,7 @@ G_M53565_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldp fp, lr, [sp], #0x80
ret lr
;; size=28 bbWeight=1 PerfScore 8.00
-G_M53565_IG08: ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=3580000 {x19 x20 x22 x24 x25}, byrefRegs=200000 {x21}, gcvars, byref, isz
+G_M53565_IG11: ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=3580000 {x19 x20 x22 x24 x25}, byrefRegs=200000 {x21}, gcvars, byref, isz
; gcrRegs +[x19-x20 x22 x24-x25]
; byrRegs +[x21]
ldr x26, [x24]
@@ -199,7 +217,7 @@ G_M53565_IG08: ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=358
sub w0, w0, #24
lsr w26, w0, #3
; byrRegs -[x26]
- cbz w26, G_M53565_IG09
+ cbz w26, G_M53565_IG12
ldr x27, [x24]
ldr w0, [x27]
tst w0, #0xD1FFAB1E
@@ -225,9 +243,9 @@ G_M53565_IG08: ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=358
; byrRegs +[x0]
ldr w0, [x0, w26, SXTW #2]
; byrRegs -[x0]
- cbnz w0, G_M53565_IG12
+ cbnz w0, G_M53565_IG15
;; size=140 bbWeight=1.00 PerfScore 45.94
-G_M53565_IG09: ; bbWeight=1.00, gcrefRegs=3580000 {x19 x20 x22 x24 x25}, byrefRegs=200000 {x21}, byref, isz
+G_M53565_IG12: ; bbWeight=1.00, gcrefRegs=3580000 {x19 x20 x22 x24 x25}, byrefRegs=200000 {x21}, byref, isz
ldr x26, [x25]
ldr w0, [x26]
tst w0, #0xD1FFAB1E
...
+40 (+8.77%) : 398419.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
@@ -9,31 +9,32 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 7, 4.89) byref -> x19 this single-def
-; V01 arg1 [V01,T04] ( 6, 3 ) ref -> x20 class-hnd single-def <System.Runtime.CompilerServices.IAsyncStateMachineBox>
-; V02 loc0 [V02,T01] ( 11, 7.97) ref -> x21 class-hnd single-def <System.Object>
-; V03 loc1 [V03,T06] ( 3, 2.11) ref -> x0 class-hnd single-def <System.Threading.Tasks.Task>
+; V00 this [V00,T03] ( 7, 4.89) byref -> x19 this single-def
+; V01 arg1 [V01,T05] ( 6, 3 ) ref -> x20 class-hnd single-def <System.Runtime.CompilerServices.IAsyncStateMachineBox>
+; V02 loc0 [V02,T00] ( 12, 8.21) ref -> x21 class-hnd single-def <System.Object>
+; V03 loc1 [V03,T07] ( 3, 2.11) ref -> x0 class-hnd single-def <System.Threading.Tasks.Task>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T07] ( 3, 2 ) int -> x0
+; V05 tmp1 [V05,T08] ( 3, 2 ) int -> x0
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <<unknown class>>
-; V07 tmp3 [V07,T05] ( 3, 3.57) int -> x3 "impAppendStmt"
+; V07 tmp3 [V07,T06] ( 3, 3.57) int -> x3 "impAppendStmt"
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref single-def
-; V09 tmp5 [V09,T08] ( 3, 1.79) ref -> x1 single-def
+; V09 tmp5 [V09,T09] ( 3, 1.79) ref -> x1 single-def
;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref single-def
;* V11 tmp7 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref single-def
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref single-def
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref single-def
;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref
-; V16 tmp12 [V16,T09] ( 3, 1.79) int -> x4
+; V16 tmp12 [V16,T10] ( 3, 1.79) int -> x4
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Net.Quic.ValueTaskSource>
;* V18 tmp14 [V18 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
-; V19 rat0 [V19,T00] ( 6, 8 ) ref -> x2 class-hnd "replacement local" <System.Threading.Tasks.Task>
-; V20 rat1 [V20,T03] ( 5, 6.66) ref -> x2 class-hnd "replacement local" <<unknown class>>
+; V19 rat0 [V19,T01] ( 6, 8 ) ref -> x2 class-hnd "replacement local" <System.Threading.Tasks.Task>
+; V20 rat1 [V20,T04] ( 5, 6.66) ref -> x2 class-hnd "replacement local" <<unknown class>>
+; V21 rat2 [V21,T02] ( 6, 8 ) ref -> x0 class-hnd "replacement local" <System.Threading.Tasks.Task>
;
; Lcl frame size = 8
-G_M19176_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M19176_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x18]
str x21, [sp, #0x28]
@@ -46,7 +47,7 @@ G_M19176_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M19176_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
ldr x21, [x19]
; gcrRegs +[x21]
- cbz x21, G_M19176_IG19
+ cbz x21, G_M19176_IG14
mov x2, x21
; gcrRegs +[x2]
cbz x2, G_M19176_IG06
@@ -78,7 +79,7 @@ G_M19176_IG05: ; bbWeight=0.30, gcrefRegs=300000 {x20 x21}, byrefRegs=800
; gcrRegs +[x2]
;; size=4 bbWeight=0.30 PerfScore 0.15
G_M19176_IG06: ; bbWeight=1, gcrefRegs=300004 {x2 x20 x21}, byrefRegs=80000 {x19}, byref, isz
- cbnz x2, G_M19176_IG19
+ cbnz x2, G_M19176_IG14
;; size=4 bbWeight=1 PerfScore 1.00
G_M19176_IG07: ; bbWeight=0.89, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref, isz
; gcrRegs -[x2]
@@ -118,6 +119,20 @@ G_M19176_IG11: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=80000
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
+ mov x0, x21
+ ; gcrRegs +[x0]
+ cbz x0, G_M19176_IG16
+ ;; size=28 bbWeight=1 PerfScore 7.00
+G_M19176_IG12: ; bbWeight=0.50, gcrefRegs=300001 {x0 x20 x21}, byrefRegs=80000 {x19}, byref, isz
+ ldr x1, [x0]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ cmp x1, x0
+ beq G_M19176_IG15
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M19176_IG13: ; bbWeight=0.24, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref
mov x1, x21
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -125,11 +140,23 @@ G_M19176_IG11: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=80000
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M19176_IG17
- ;; size=44 bbWeight=1 PerfScore 9.50
-G_M19176_IG12: ; bbWeight=0.89, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref, isz
+ b G_M19176_IG16
+ ;; size=24 bbWeight=0.24 PerfScore 0.96
+G_M19176_IG14: ; bbWeight=0.11, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref
; gcrRegs -[x0]
- cbz x21, G_M19176_IG20
+ mov w0, #1
+ b G_M19176_IG11
+ ;; size=8 bbWeight=0.11 PerfScore 0.16
+G_M19176_IG15: ; bbWeight=0.26, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref
+ mov x0, xzr
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=0.26 PerfScore 0.13
+G_M19176_IG16: ; bbWeight=1, gcrefRegs=300001 {x0 x20 x21}, byrefRegs=80000 {x19}, byref, isz
+ cbnz x0, G_M19176_IG22
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M19176_IG17: ; bbWeight=0.89, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, byref, isz
+ ; gcrRegs -[x0]
+ cbz x21, G_M19176_IG24
ldrsh w3, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -144,9 +171,9 @@ G_M19176_IG12: ; bbWeight=0.89, gcrefRegs=300000 {x20 x21}, byrefRegs=800
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x0, x2
- bne G_M19176_IG15
+ bne G_M19176_IG20
;; size=60 bbWeight=0.89 PerfScore 16.52
-G_M19176_IG13: ; bbWeight=0.54, gcrefRegs=300002 {x1 x20 x21}, byrefRegs=0000 {}, byref
+G_M19176_IG18: ; bbWeight=0.54, gcrefRegs=300002 {x1 x20 x21}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
add x0, x21, #16
; byrRegs +[x0]
@@ -158,13 +185,13 @@ G_M19176_IG13: ; bbWeight=0.54, gcrefRegs=300002 {x1 x20 x21}, byrefRegs=
movk x5, #0xD1FFAB1E LSL #32
ldr x5, [x5]
;; size=28 bbWeight=0.54 PerfScore 3.22
-G_M19176_IG14: ; bbWeight=0.54, epilog, nogc, extend
+G_M19176_IG19: ; bbWeight=0.54, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x5
;; size=16 bbWeight=0.54 PerfScore 2.68
-G_M19176_IG15: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=300002 {x1 x20 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M19176_IG20: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=300002 {x1 x20 x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x2]
; byrRegs -[x0]
mov x0, x21
@@ -176,13 +203,13 @@ G_M19176_IG15: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=300
movk x11, #0xD1FFAB1E LSL #32
ldr x5, [x11]
;; size=24 bbWeight=0.36 PerfScore 1.96
-G_M19176_IG16: ; bbWeight=0.36, epilog, nogc, extend
+G_M19176_IG21: ; bbWeight=0.36, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x5
;; size=16 bbWeight=0.36 PerfScore 1.79
-G_M19176_IG17: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=100001 {x0 x20}, byrefRegs=80000 {x19}, gcvars, byref
+G_M19176_IG22: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=100001 {x0 x20}, byrefRegs=80000 {x19}, gcvars, byref
; gcrRegs -[x1-x2 x21]
; byrRegs +[x19]
ldrb w2, [x19, #0x0A]
@@ -193,19 +220,14 @@ G_M19176_IG17: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=100
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
;; size=24 bbWeight=0.11 PerfScore 0.86
-G_M19176_IG18: ; bbWeight=0.11, epilog, nogc, extend
+G_M19176_IG23: ; bbWeight=0.11, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x3
;; size=16 bbWeight=0.11 PerfScore 0.53
-G_M19176_IG19: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=300000 {x20 x21}, byrefRegs=80000 {x19}, gcvars, byref
- ; gcrRegs -[x0-x1] +[x21]
- mov w0, #1
- b G_M19176_IG11
- ;; size=8 bbWeight=0.11 PerfScore 0.16
-G_M19176_IG20: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
- ; gcrRegs -[x21]
+G_M19176_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, gcvars, byref
+ ; gcrRegs -[x0-x1]
ldrb w2, [x19, #0x0A]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -219,14 +241,14 @@ G_M19176_IG20: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
;; size=40 bbWeight=0 PerfScore 0.00
-G_M19176_IG21: ; bbWeight=0, epilog, nogc, extend
+G_M19176_IG25: ; bbWeight=0, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x3
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 456, prolog size 16, PerfScore 57.88, instruction count 114, allocated bytes for code 456 (MethodHash=decbb517) for method System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
+; Total bytes of code 496, prolog size 16, PerfScore 60.47, instruction count 124, allocated bytes for code 496 (MethodHash=decbb517) for method System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
; ============================================================
Unwind Info:
@@ -237,7 +259,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 114 (0x00072) Actual length = 456 (0x0001c8)
+ Function Length : 124 (0x0007c) Actual length = 496 (0x0001f0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
Details
Improvements/regressions per collection
Collection
Contexts with diffs
Improvements
Regressions
Same size
Improvements (bytes)
Regressions (bytes)
benchmarks.run.linux.arm64.checked.mch
0
0
0
0
-0
+0
benchmarks.run_pgo.linux.arm64.checked.mch
1
0
1
0
-0
+36
benchmarks.run_tiered.linux.arm64.checked.mch
0
0
0
0
-0
+0
coreclr_tests.run.linux.arm64.checked.mch
2
2
0
0
-88
+0
libraries.crossgen2.linux.arm64.checked.mch
0
0
0
0
-0
+0
libraries.pmi.linux.arm64.checked.mch
0
0
0
0
-0
+0
libraries_tests.run.linux.arm64.Release.mch
23
1
13
9
-8
+140
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
0
0
0
0
-0
+0
realworld.run.linux.arm64.checked.mch
0
0
0
0
-0
+0
smoke_tests.nativeaot.linux.arm64.checked.mch
0
0
0
0
-0
+0
26
3
14
9
-96
+176
Context information
Collection
Diffed contexts
MinOpts
FullOpts
Missed, base
Missed, diff
benchmarks.run.linux.arm64.checked.mch
33,395
2,755
30,640
4 (0.01%)
241 (0.72%)
benchmarks.run_pgo.linux.arm64.checked.mch
153,548
60,106
93,442
162 (0.11%)
308 (0.20%)
benchmarks.run_tiered.linux.arm64.checked.mch
63,895
47,942
15,953
2 (0.00%)
88 (0.14%)
coreclr_tests.run.linux.arm64.checked.mch
627,645
383,770
243,875
415 (0.07%)
826 (0.13%)
libraries.crossgen2.linux.arm64.checked.mch
233,777
15
233,762
0 (0.00%)
0 (0.00%)
libraries.pmi.linux.arm64.checked.mch
292,327
6
292,321
8 (0.00%)
1,913 (0.65%)
libraries_tests.run.linux.arm64.Release.mch
736,193
487,495
248,698
3,456 (0.47%)
4,645 (0.63%)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
301,977
21,560
280,417
10 (0.00%)
2,094 (0.69%)
realworld.run.linux.arm64.checked.mch
32,964
151
32,813
3 (0.01%)
340 (1.02%)
smoke_tests.nativeaot.linux.arm64.checked.mch
19,039
6
19,033
0 (0.00%)
2 (0.01%)
2,494,760
1,003,806
1,490,954
4,060 (0.16%)
10,457 (0.42%)
jit-analyze output
benchmarks.run_pgo.linux.arm64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 80916664 (overridden on cmd)
Total bytes of diff: 80916700 (overridden on cmd)
Total bytes of delta: 36 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
36 : 128897.dasm (7.63 % of base)
1 total files with Code Size differences (0 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
36 (7.63 % of base) : 128897.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)
Top method regressions (percentages):
36 (7.63 % of base) : 128897.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)
1 total methods with Code Size differences (0 improved, 1 regressed).
coreclr_tests.run.linux.arm64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 508918764 (overridden on cmd)
Total bytes of diff: 508918676 (overridden on cmd)
Total bytes of delta: -88 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-48 : 425431.dasm (-2.84 % of base)
-40 : 416664.dasm (-2.30 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-48 (-2.84 % of base) : 425431.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-40 (-2.30 % of base) : 416664.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
Top method improvements (percentages):
-48 (-2.84 % of base) : 425431.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-40 (-2.30 % of base) : 416664.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
2 total methods with Code Size differences (2 improved, 0 regressed).
libraries_tests.run.linux.arm64.Release.mch
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 379714156 (overridden on cmd)
Total bytes of diff: 379714288 (overridden on cmd)
Total bytes of delta: 132 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
40 : 398419.dasm (8.77 % of base)
32 : 524320.dasm (2.48 % of base)
12 : 471778.dasm (1.30 % of base)
8 : 226027.dasm (0.75 % of base)
8 : 180842.dasm (0.83 % of base)
8 : 641521.dasm (0.73 % of base)
8 : 713901.dasm (1.15 % of base)
4 : 126691.dasm (0.51 % of base)
4 : 609678.dasm (0.58 % of base)
4 : 670083.dasm (0.05 % of base)
4 : 178133.dasm (0.93 % of base)
4 : 359191.dasm (0.21 % of base)
4 : 709290.dasm (0.13 % of base)
Top file improvements (bytes):
-8 : 176599.dasm (-0.61 % of base)
14 total files with Code Size differences (1 improved, 13 regressed), 9 unchanged.
Top method regressions (bytes):
40 (8.77 % of base) : 398419.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
32 (2.48 % of base) : 524320.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
12 (1.30 % of base) : 471778.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
8 (0.83 % of base) : 180842.dasm - Microsoft.Cci.MetadataWriter:ResolveEntityHandleFromPseudoToken(int):System.Reflection.Metadata.EntityHandle:this (Tier1)
8 (1.15 % of base) : 713901.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
8 (0.75 % of base) : 226027.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
8 (0.73 % of base) : 641521.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
4 (0.05 % of base) : 670083.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1054_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (Tier1)
4 (0.93 % of base) : 178133.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:GetVariablesContainingSymbol(Microsoft.CodeAnalysis.CSharp.Symbol):Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:this (Tier1)
4 (0.13 % of base) : 709290.dasm - Microsoft.CodeAnalysis.Options.SolutionOptionSet:GetInternalOptionValue(Microsoft.CodeAnalysis.Options.OptionKey):System.Object:this (Tier1)
4 (0.51 % of base) : 126691.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
4 (0.21 % of base) : 359191.dasm - System.Linq.Enumerable+AppendPrepend1Iterator`1[int]:LazyToArray():int[]:this (Tier1)
4 (0.58 % of base) : 609678.dasm - System.Text.Json.ReadStack:<JsonPath>g__AppendStackFrame|22_0(System.Text.StringBuilder,byref) (Tier1)
Top method improvements (bytes):
-8 (-0.61 % of base) : 176599.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:<EnsureRequiredMembersCalculated>g__tryCalculateRequiredMembers|191_0(byref):ubyte:this (Tier1)
Top method regressions (percentages):
40 (8.77 % of base) : 398419.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
32 (2.48 % of base) : 524320.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
12 (1.30 % of base) : 471778.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
8 (1.15 % of base) : 713901.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
4 (0.93 % of base) : 178133.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:GetVariablesContainingSymbol(Microsoft.CodeAnalysis.CSharp.Symbol):Microsoft.CodeAnalysis.CSharp.NullableWalker+Variables:this (Tier1)
8 (0.83 % of base) : 180842.dasm - Microsoft.Cci.MetadataWriter:ResolveEntityHandleFromPseudoToken(int):System.Reflection.Metadata.EntityHandle:this (Tier1)
8 (0.75 % of base) : 226027.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
8 (0.73 % of base) : 641521.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
4 (0.58 % of base) : 609678.dasm - System.Text.Json.ReadStack:<JsonPath>g__AppendStackFrame|22_0(System.Text.StringBuilder,byref) (Tier1)
4 (0.51 % of base) : 126691.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
4 (0.21 % of base) : 359191.dasm - System.Linq.Enumerable+AppendPrepend1Iterator`1[int]:LazyToArray():int[]:this (Tier1)
4 (0.13 % of base) : 709290.dasm - Microsoft.CodeAnalysis.Options.SolutionOptionSet:GetInternalOptionValue(Microsoft.CodeAnalysis.Options.OptionKey):System.Object:this (Tier1)
4 (0.05 % of base) : 670083.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1054_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (Tier1)
Top method improvements (percentages):
-8 (-0.61 % of base) : 176599.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:<EnsureRequiredMembersCalculated>g__tryCalculateRequiredMembers|191_0(byref):ubyte:this (Tier1)
14 total methods with Code Size differences (1 improved, 13 regressed).
Diffs are based on 2,588,583 contexts (1,052,329 MinOpts, 1,536,254 FullOpts).
MISSED contexts: base: 3,628 (0.14%), diff: 10,052 (0.39%)
Overall (+230 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch
68,442,860
+60
coreclr_tests.run.linux.x64.checked.mch
458,922,977
-64
libraries_tests.run.linux.x64.Release.mch
332,086,382
+234
FullOpts (+230 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch
48,613,103
+60
coreclr_tests.run.linux.x64.checked.mch
132,364,842
-64
libraries_tests.run.linux.x64.Release.mch
147,696,861
+234
Example diffs
benchmarks.run_pgo.linux.x64.checked.mch
+60 (+17.96%) : 141275.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)
@@ -10,76 +10,78 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 8, 6.00) ref -> rbx this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V01 loc0 [V01,T01] ( 5, 3.00) int -> r15
-; V02 loc1 [V02,T22] ( 3, 0.00) ref -> r14 class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-; V03 loc2 [V03,T03] ( 7, 2.50) int -> r14
-; V04 loc3 [V04,T11] ( 7, 0.00) int -> rbx
+; V01 loc0 [V01,T02] ( 5, 3.00) int -> r15
+; V02 loc1 [V02,T24] ( 3, 0.00) ref -> r13 class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V03 loc2 [V03,T04] ( 7, 2.50) int -> r14
+; V04 loc3 [V04,T13] ( 7, 0.00) int -> r14
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T23] ( 3, 0.00) ref -> rsi single-def "CASTCLASS eval op1"
-; V07 tmp2 [V07,T25] ( 3, 0.00) long -> rdi "fgMakeTemp is creating a new local variable"
-; V08 tmp3 [V08,T13] ( 5, 0.00) ref -> r14 class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-; V09 tmp4 [V09,T14] ( 2, 0.00) ref -> rax class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
-; V10 tmp5 [V10,T06] ( 4, 2.00) int -> r15 "Inline return value spill temp"
-; V11 tmp6 [V11,T08] ( 3, 1.43) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-; V12 tmp7 [V12,T09] ( 3, 1.00) ref -> rdi class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
-; V13 tmp8 [V13,T05] ( 2, 2.00) ref -> rdi "CASTCLASS eval op1"
+; V06 tmp1 [V06,T25] ( 3, 0.00) ref -> rsi single-def "CASTCLASS eval op1"
+; V07 tmp2 [V07,T27] ( 3, 0.00) long -> rdi "fgMakeTemp is creating a new local variable"
+; V08 tmp3 [V08,T15] ( 5, 0.00) ref -> r13 class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V09 tmp4 [V09,T16] ( 2, 0.00) ref -> rax class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
+; V10 tmp5 [V10,T08] ( 4, 2.00) int -> r15 "Inline return value spill temp"
+; V11 tmp6 [V11,T10] ( 3, 1.43) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V12 tmp7 [V12,T11] ( 3, 1.00) ref -> rdi class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+; V13 tmp8 [V13,T07] ( 2, 2.00) ref -> rdi "CASTCLASS eval op1"
;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
-; V15 tmp10 [V15,T07] ( 4, 1.75) ref -> rdi class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
-; V16 tmp11 [V16,T04] ( 3, 2.00) ref -> rax class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-; V17 tmp12 [V17,T10] ( 4, 0.00) int -> rdx "Inlining Arg"
-; V18 tmp13 [V18,T26] ( 3, 0 ) ref -> rax "arr expr"
-; V19 tmp14 [V19,T12] ( 3, 0.00) ref -> rax "arr expr"
-; V20 tmp15 [V20,T15] ( 2, 0.00) ref -> rsi "arr expr"
-; V21 tmp16 [V21,T16] ( 2, 0.00) ref -> rdi "argument with side effect"
-; V22 tmp17 [V22,T17] ( 2, 0.00) ref -> rsi "argument with side effect"
-; V23 cse0 [V23,T19] ( 3, 0.00) int -> rdi "CSE - conservative"
-; V24 cse1 [V24,T18] ( 3, 0.00) ref -> rsi "CSE - conservative"
-; V25 cse2 [V25,T24] ( 3, 0.00) int -> r15 "CSE - conservative"
-; V26 cse3 [V26,T20] ( 3, 0.00) int -> rcx "CSE - conservative"
-; V27 cse4 [V27,T21] ( 3, 0.00) int -> rbx "CSE - conservative"
-; V28 cse5 [V28,T02] ( 3, 2.71) ref -> rsi "CSE - aggressive"
+; V15 tmp10 [V15,T09] ( 4, 1.75) ref -> rdi class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
+; V16 tmp11 [V16,T06] ( 3, 2.00) ref -> r13 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V17 tmp12 [V17,T12] ( 4, 0.00) int -> rdx "Inlining Arg"
+; V18 tmp13 [V18,T28] ( 3, 0 ) ref -> rax "arr expr"
+; V19 tmp14 [V19,T14] ( 3, 0.00) ref -> rax "arr expr"
+; V20 tmp15 [V20,T17] ( 2, 0.00) ref -> rsi "arr expr"
+; V21 tmp16 [V21,T18] ( 2, 0.00) ref -> rdi "argument with side effect"
+; V22 tmp17 [V22,T19] ( 2, 0.00) ref -> rsi "argument with side effect"
+; V23 cse0 [V23,T21] ( 3, 0.00) int -> rdi "CSE - conservative"
+; V24 cse1 [V24,T20] ( 3, 0.00) ref -> rsi "CSE - conservative"
+; V25 cse2 [V25,T26] ( 3, 0.00) int -> r15 "CSE - conservative"
+; V26 cse3 [V26,T22] ( 3, 0.00) int -> rcx "CSE - conservative"
+; V27 cse4 [V27,T23] ( 3, 0.00) int -> r14 "CSE - conservative"
+; V28 cse5 [V28,T03] ( 3, 2.71) ref -> rsi "CSE - aggressive"
+; V29 rat0 [V29,T05] ( 3, 2.25) ref -> rsi "Spilling to split statement for tree"
+; V30 rat1 [V30,T01] ( 5, 3.75) ref -> r13 class-hnd "replacement local" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M41283_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
+ push r13
push rbx
- push rax
lea rbp, [rsp+0x20]
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 5.75
-G_M41283_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=1 PerfScore 5.75
+G_M41283_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call <unknown method>
test eax, eax
- je G_M41283_IG21
+ je G_M41283_IG24
test byte ptr [rbx+0x28], 64
- jne G_M41283_IG21
+ jne G_M41283_IG24
mov rsi, gword ptr [rbx+0x08]
; gcrRegs +[rsi]
test rsi, rsi
- je SHORT G_M41283_IG11
- ;; size=32 bbWeight=1 PerfScore 9.50
+ je G_M41283_IG14
+ ;; size=36 bbWeight=1 PerfScore 9.50
G_M41283_IG03: ; bbWeight=0.71, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[rsi] +[rax]
test rax, rax
- jne G_M41283_IG23
+ jne G_M41283_IG26
mov r15d, 1
;; size=30 bbWeight=0.71 PerfScore 1.96
-G_M41283_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
test r15d, r15d
- je SHORT G_M41283_IG13
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M41283_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je G_M41283_IG16
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M41283_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor r14d, r14d
test r15d, r15d
- jle SHORT G_M41283_IG13
- ;; size=8 bbWeight=0.50 PerfScore 0.75
+ jle G_M41283_IG16
+ ;; size=12 bbWeight=0.50 PerfScore 0.75
G_M41283_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
@@ -89,135 +91,153 @@ G_M41283_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
G_M41283_IG07: ; bbWeight=0.25, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
mov rsi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode
cmp qword ptr [rdi], rsi
- je SHORT G_M41283_IG12
+ je SHORT G_M41283_IG15
;; size=15 bbWeight=0.25 PerfScore 1.06
G_M41283_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
mov rsi, gword ptr [rbx+0x08]
; gcrRegs +[rsi]
+ mov r13, rsi
+ ; gcrRegs +[r13]
+ test r13, r13
+ je SHORT G_M41283_IG11
+ ;; size=12 bbWeight=0.50 PerfScore 1.75
+G_M41283_IG09: ; bbWeight=0.25, gcrefRegs=2048 {rbx rsi r13}, byrefRegs=0000 {}, byref, isz
+ mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]
+ cmp qword ptr [r13], rdi
+ je SHORT G_M41283_IG11
+ ;; size=16 bbWeight=0.25 PerfScore 1.06
+G_M41283_IG10: ; bbWeight=0.13, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r13]
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]
call CORINFO_HELP_CHKCASTCLASS
; gcrRegs -[rsi] +[rax]
- cmp r14d, dword ptr [rax+0x10]
- jb SHORT G_M41283_IG10
- ;; size=25 bbWeight=0.50 PerfScore 3.63
-G_M41283_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
+ mov r13, rax
+ ; gcrRegs +[r13]
+ ;; size=18 bbWeight=0.13 PerfScore 0.19
+G_M41283_IG11: ; bbWeight=0.50, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ cmp r14d, dword ptr [r13+0x10]
+ jb SHORT G_M41283_IG13
+ ;; size=6 bbWeight=0.50 PerfScore 2.00
+G_M41283_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx r13]
call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M41283_IG10: ; bbWeight=0, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rax rbx]
- mov rax, gword ptr [rax+0x08]
+G_M41283_IG13: ; bbWeight=0, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rbx r13]
+ mov rax, gword ptr [r13+0x08]
+ ; gcrRegs +[rax]
cmp r14d, dword ptr [rax+0x08]
- jae G_M41283_IG20
+ jae G_M41283_IG23
mov ecx, r14d
mov rdi, gword ptr [rax+8*rcx+0x10]
; gcrRegs +[rdi]
- jmp SHORT G_M41283_IG12
+ jmp SHORT G_M41283_IG15
;; size=24 bbWeight=0 PerfScore 0.00
-G_M41283_IG11: ; bbWeight=0.29, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax rdi]
+G_M41283_IG14: ; bbWeight=0.29, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rdi r13]
xor r15d, r15d
- jmp SHORT G_M41283_IG04
- ;; size=5 bbWeight=0.29 PerfScore 0.64
-G_M41283_IG12: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+ jmp G_M41283_IG04
+ ;; size=8 bbWeight=0.29 PerfScore 0.64
+G_M41283_IG15: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi]
cmp dword ptr [rdi], edi
call [System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this]
; gcrRegs -[rdi]
inc r14d
cmp r14d, r15d
- jl SHORT G_M41283_IG06
- ;; size=16 bbWeight=0.50 PerfScore 3.75
-G_M41283_IG13: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jl G_M41283_IG06
+ ;; size=20 bbWeight=0.50 PerfScore 3.75
+G_M41283_IG16: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp byte ptr [rbx+0x2E], 25
- jne SHORT G_M41283_IG21
- ;; size=6 bbWeight=1 PerfScore 4.00
-G_M41283_IG14: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne G_M41283_IG24
+ ;; size=10 bbWeight=1 PerfScore 4.00
+G_M41283_IG17: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [rbx+0x08]
; gcrRegs +[rsi]
- mov r14, rsi
- ; gcrRegs +[r14]
- test r14, r14
- jne SHORT G_M41283_IG18
+ mov r13, rsi
+ ; gcrRegs +[r13]
+ test r13, r13
+ jne SHORT G_M41283_IG21
;; size=12 bbWeight=0.00 PerfScore 0.00
-G_M41283_IG15: ; bbWeight=0.00, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG18: ; bbWeight=0.00, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rsi]
- xor ebx, ebx
+ xor r14d, r14d
dec r15d
test r15d, r15d
- jle SHORT G_M41283_IG21
- ;; size=10 bbWeight=0.00 PerfScore 0.00
-G_M41283_IG16: ; bbWeight=0.00, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
- mov edi, dword ptr [r14+0x10]
- cmp ebx, edi
- jae SHORT G_M41283_IG09
- mov rsi, gword ptr [r14+0x08]
+ jle SHORT G_M41283_IG24
+ ;; size=11 bbWeight=0.00 PerfScore 0.00
+G_M41283_IG19: ; bbWeight=0.00, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
+ mov edi, dword ptr [r13+0x10]
+ cmp r14d, edi
+ jae SHORT G_M41283_IG12
+ mov rsi, gword ptr [r13+0x08]
; gcrRegs +[rsi]
mov rax, rsi
; gcrRegs +[rax]
mov ecx, dword ptr [rax+0x08]
- cmp ebx, ecx
- jae SHORT G_M41283_IG20
- mov edx, ebx
+ cmp r14d, ecx
...
coreclr_tests.run.linux.x64.checked.mch
-35 (-2.77%) : 415741.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
@@ -15,71 +15,70 @@
; V03 loc1 [V03,T04] ( 8, 5.67) ref -> r13 class-hnd exact <Internal.TypeSystem.InstantiatedType>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (24) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.InstantiatedType>
-;* V06 tmp2 [V06,T33] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V07 tmp3 [V07,T32] ( 2, 0.83) ref -> rdi class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V08 tmp4 [V08,T21] ( 3, 1.66) long -> rax "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T43] ( 2, 0 ) ref -> rbx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2 [V06,T32] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T31] ( 2, 0.83) ref -> rdi class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V08 tmp4 [V08,T20] ( 3, 1.66) long -> rax "fgMakeTemp is creating a new local variable"
+; V09 tmp5 [V09,T42] ( 2, 0 ) ref -> rbx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
; V10 tmp6 [V10,T05] ( 7, 5.18) ref -> r12 class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
; V11 tmp7 [V11,T06] ( 14, 5.17) ref -> r14 "guarded devirt return temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.MethodForInstantiatedType>
-; V13 tmp9 [V13,T12] ( 8, 2.57) ref -> r15 "guarded devirt return temp"
+; V13 tmp9 [V13,T10] ( 8, 2.57) ref -> r15 "guarded devirt return temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V15 tmp11 [V15,T18] ( 4, 1.76) ref -> r15 "guarded devirt return temp"
+; V15 tmp11 [V15,T17] ( 4, 1.76) ref -> r15 "guarded devirt return temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V17 tmp13 [V17,T17] ( 8, 1.84) ref -> r13 "guarded devirt return temp"
+; V17 tmp13 [V17,T16] ( 8, 1.84) ref -> r13 "guarded devirt return temp"
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref
-; V20 tmp16 [V20,T29] ( 3, 1.17) int -> rdi
-; V21 tmp17 [V21,T20] ( 3, 1.67) ref -> [rbp-0x38] class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V20 tmp16 [V20,T28] ( 3, 1.17) int -> rdi
+; V21 tmp17 [V21,T19] ( 3, 1.67) ref -> [rbp-0x38] class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V22 tmp18 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V23 tmp19 [V23,T34] ( 3, 0.80) ref -> rax "guarded devirt return temp"
+; V23 tmp19 [V23,T33] ( 3, 0.80) ref -> rax "guarded devirt return temp"
;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V25 tmp21 [V25,T35] ( 3, 0.76) ref -> registers "guarded devirt return temp"
-; V26 tmp22 [V26,T15] ( 5, 2.15) ref -> rdi single-def "guarded devirt arg temp"
+; V25 tmp21 [V25,T34] ( 3, 0.76) ref -> registers "guarded devirt return temp"
+; V26 tmp22 [V26,T14] ( 5, 2.15) ref -> rdi single-def "guarded devirt arg temp"
;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V28 tmp24 [V28,T36] ( 3, 0.69) ref -> rax "guarded devirt return temp"
-; V29 tmp25 [V29,T16] ( 5, 2.08) ref -> rdi single-def "guarded devirt arg temp"
+; V28 tmp24 [V28,T35] ( 3, 0.69) ref -> rax "guarded devirt return temp"
+; V29 tmp25 [V29,T15] ( 5, 2.08) ref -> rdi single-def "guarded devirt arg temp"
;* V30 tmp26 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V31 tmp27 [V31,T10] ( 5, 2.63) ref -> rdi class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V32 tmp28 [V32,T30] ( 3, 0.88) ref -> r15 "guarded devirt return temp"
+; V31 tmp27 [V31,T08] ( 5, 2.63) ref -> rdi class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+; V32 tmp28 [V32,T29] ( 3, 0.88) ref -> r15 "guarded devirt return temp"
;* V33 tmp29 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
;* V34 tmp30 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaType>
; V35 tmp31 [V35,T02] ( 5, 5.86) ref -> rdi class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
; V36 tmp32 [V36,T03] ( 5, 5.86) ref -> rdi class-hnd "spilling QMark2" <<unknown class>>
;* V37 tmp33 [V37 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V38 tmp34 [V38,T07] ( 4, 3.90) ref -> r15 class-hnd exact single-def "impAppendStmt" <<unknown class>>
-; V39 tmp35 [V39,T14] ( 2, 2.34) int -> rbx "impAppendStmt"
-; V40 tmp36 [V40,T27] ( 4, 1.17) ref -> rdi "guarded devirt return temp"
+; V39 tmp35 [V39,T13] ( 2, 2.34) int -> rbx "impAppendStmt"
+; V40 tmp36 [V40,T26] ( 4, 1.17) ref -> rdi "guarded devirt return temp"
;* V41 tmp37 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V42 tmp38 [V42,T41] ( 2, 0.07) byref -> r12 single-def "impAppendStmt"
-; V43 tmp39 [V43,T42] ( 3, 0.03) int -> rax "guarded devirt return temp"
-; V44 tmp40 [V44,T40] ( 5, 0.10) ref -> rdi single-def "guarded devirt arg temp"
+; V42 tmp38 [V42,T40] ( 2, 0.07) byref -> r12 single-def "impAppendStmt"
+; V43 tmp39 [V43,T41] ( 3, 0.03) int -> rax "guarded devirt return temp"
+; V44 tmp40 [V44,T39] ( 5, 0.10) ref -> rdi single-def "guarded devirt arg temp"
;* V45 tmp41 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
;* V46 tmp42 [V46 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V47 tmp43 [V47,T28] ( 3, 1.17) ref -> rax class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V47 tmp43 [V47,T27] ( 3, 1.17) ref -> rax class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
;* V48 tmp44 [V48 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V49 tmp45 [V49 ] ( 2, 0.98) ref -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V50 tmp46 [V50,T22] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V51 tmp47 [V51,T09] ( 4, 2.66) ref -> rax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V52 tmp48 [V52,T31] ( 3, 0.83) int -> rdi
-; V53 tmp49 [V53,T26] ( 3, 1.18) ref -> r12 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V50 tmp46 [V50,T21] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V51 tmp47 [V51,T12] ( 3, 2.49) ref -> rax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V52 tmp48 [V52,T30] ( 3, 0.83) int -> rdi
+; V53 tmp49 [V53,T25] ( 3, 1.18) ref -> r12 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V54 tmp50 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V55 tmp51 [V55,T37] ( 3, 0.56) ref -> rax "guarded devirt return temp"
+; V55 tmp51 [V55,T36] ( 3, 0.56) ref -> rax "guarded devirt return temp"
;* V56 tmp52 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V57 tmp53 [V57,T38] ( 3, 0.54) ref -> r12 "guarded devirt return temp"
-; V58 tmp54 [V58,T23] ( 5, 1.52) ref -> rdi single-def "guarded devirt arg temp"
+; V57 tmp53 [V57,T37] ( 3, 0.54) ref -> r12 "guarded devirt return temp"
+; V58 tmp54 [V58,T22] ( 5, 1.52) ref -> rdi single-def "guarded devirt arg temp"
;* V59 tmp55 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V60 tmp56 [V60,T39] ( 3, 0.49) ref -> rax "guarded devirt return temp"
-; V61 tmp57 [V61,T24] ( 5, 1.47) ref -> rdi single-def "guarded devirt arg temp"
+; V60 tmp56 [V60,T38] ( 3, 0.49) ref -> rax "guarded devirt return temp"
+; V61 tmp57 [V61,T23] ( 5, 1.47) ref -> rdi single-def "guarded devirt arg temp"
;* V62 tmp58 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V63 tmp59 [V63,T13] ( 8, 2.54) ref -> r14 single-def "field V37._typicalMethodDef (fldOffset=0x0)" P-INDEP
-; V64 tmp60 [V64,T11] ( 8, 2.59) ref -> r13 single-def "field V37._instantiatedType (fldOffset=0x8)" P-INDEP
-; V65 tmp61 [V65,T25] ( 3, 1.37) int -> rbx single-def "field V37._hashcode (fldOffset=0x10)" P-INDEP
+; V63 tmp59 [V63,T11] ( 8, 2.54) ref -> r14 single-def "field V37._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V64 tmp60 [V64,T09] ( 8, 2.59) ref -> r13 single-def "field V37._instantiatedType (fldOffset=0x8)" P-INDEP
+; V65 tmp61 [V65,T24] ( 3, 1.37) int -> rbx single-def "field V37._hashcode (fldOffset=0x10)" P-INDEP
;* V66 tmp62 [V66 ] ( 0, 0 ) ref -> zero-ref single-def "field V48._typicalMethodDef (fldOffset=0x0)" P-INDEP
;* V67 tmp63 [V67 ] ( 0, 0 ) ref -> zero-ref single-def "field V48._instantiatedType (fldOffset=0x8)" P-INDEP
;* V68 tmp64 [V68 ] ( 0, 0 ) int -> zero-ref single-def "field V48._hashcode (fldOffset=0x10)" P-INDEP
-; V69 cse0 [V69,T19] ( 3, 1.76) ref -> rdi "CSE - moderate"
-; V70 rat0 [V70,T08] ( 6, 3.32) ref -> rcx class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
+; V69 cse0 [V69,T18] ( 3, 1.76) ref -> rdi "CSE - moderate"
;
; Lcl frame size = 40
@@ -134,7 +133,7 @@ G_M10698_IG07: ; bbWeight=0.59, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0
; gcrRegs +[r12]
mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaMethod
cmp qword ptr [r14], rdi
- jne G_M10698_IG49
+ jne G_M10698_IG34
mov r15, gword ptr [r14+0x10]
; gcrRegs +[r15]
;; size=27 bbWeight=0.59 PerfScore 4.83
@@ -149,17 +148,17 @@ G_M10698_IG09: ; bbWeight=0.55, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byr
G_M10698_IG10: ; bbWeight=0.40, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
cmp qword ptr [r12], rdi
- jne G_M10698_IG42
+ jne G_M10698_IG43
;; size=20 bbWeight=0.40 PerfScore 1.69
G_M10698_IG11: ; bbWeight=0.36, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [r12+0x58]
; gcrRegs +[rdi]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rdi], rax
- jne G_M10698_IG50
+ jne G_M10698_IG35
mov rax, gword ptr [rdi+0x08]
; gcrRegs +[rax]
- jmp G_M10698_IG35
+ jmp G_M10698_IG36
;; size=33 bbWeight=0.36 PerfScore 3.67
G_M10698_IG12: ; bbWeight=0.41, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rdi r12-r14]
@@ -186,7 +185,7 @@ G_M10698_IG14: ; bbWeight=0.59, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byr
; gcrRegs -[r12 r15]
mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaMethod
cmp qword ptr [rbx], rdi
- jne G_M10698_IG44
+ jne G_M10698_IG41
;; size=40 bbWeight=0.59 PerfScore 6.88
G_M10698_IG15: ; bbWeight=0.44, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x10]
@@ -194,7 +193,7 @@ G_M10698_IG15: ; bbWeight=0.44, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0
mov rdi, gword ptr [rdi+0x58]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rdi], rax
- jne G_M10698_IG52
+ jne G_M10698_IG48
mov r15, gword ptr [rdi+0x08]
; gcrRegs +[r15]
;; size=31 bbWeight=0.44 PerfScore 4.50
@@ -235,11 +234,11 @@ G_M10698_IG17: ; bbWeight=0.59, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0
mov ebx, dword ptr [r13+0x68]
mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaMethod
cmp qword ptr [r14], rdi
- jne G_M10698_IG55
+ jne G_M10698_IG51
mov rdi, gword ptr [r14+0x20]
; gcrRegs +[rdi]
test rdi, rdi
- je G_M10698_IG54
+ je G_M10698_IG50
;; size=36 bbWeight=0.59 PerfScore 5.56
G_M10698_IG18: ; bbWeight=0.59, gcrefRegs=E080 {rdi r13 r14 r15}, byrefRegs=0000 {}, byref
call [Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int]
@@ -255,7 +254,7 @@ G_M10698_IG18: ; bbWeight=0.59, gcrefRegs=E080 {rdi r13 r14 r15}, byrefRe
call [<unknown method>]
; gcrRegs -[rdi]
test eax, eax
- je G_M10698_IG45
+ je G_M10698_IG40
;; size=45 bbWeight=0.59 PerfScore 8.34
G_M10698_IG19: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r13-r15]
@@ -280,7 +279,7 @@ G_M10698_IG21: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=E00
; gcrRegs +[rdi]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
cmp qword ptr [rdi], rax
- jne G_M10698_IG53
+ jne G_M10698_IG49
call [Internal.TypeSystem.Ecma.EcmaType:GetHashCode():int:this]
; gcrRegs -[rdi]
;; size=33 bbWeight=0.02 PerfScore 0.17
@@ -302,26 +301,26 @@ G_M10698_IG23: ; bbWeight=0.41, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
je G_M10698_IG32
mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaMethod
cmp qword ptr [r14], rdi
- jne G_M10698_IG59
+ jne G_M10698_IG55
mov r13, gword ptr [r14+0x10]
; gcrRegs +[r13]
;; size=42 bbWeight=0.41 PerfScore 4.35
G_M10698_IG24: ; bbWeight=0.41, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
test r13, r13
- je G_M10698_IG46
+ je G_M10698_IG42
;; size=9 bbWeight=0.41 PerfScore 0.52
G_M10698_IG25: ; bbWeight=0.28, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
cmp qword ptr [r15], rdi
- jne G_M10698_IG47
+ jne G_M10698_IG45
;; size=19 bbWeight=0.28 PerfScore 1.20
G_M10698_IG26: ; bbWeight=0.25, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [r15+0x58]
; gcrRegs +[rdi]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rdi], rax
- jne G_M10698_IG60
+ jne G_M10698_IG56
mov r12, gword ptr [rdi+0x08]
; gcrRegs +[r12]
;; size=27 bbWeight=0.25 PerfScore 2.09
@@ -329,14 +328,14 @@ G_M10698_IG27: ; bbWeight=0.28, gcrefRegs=F000 {r12 r13 r14 r15}, byrefRe
; gcrRegs -[rdi]
mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
cmp qword ptr [r13], rdi
- jne G_M10698_IG48
+ jne G_M10698_IG46
;; size=20 bbWeight=0.28 PerfScore 1.20
G_M10698_IG28: ; bbWeight=0.25, gcrefRegs=F000 {r12 r13 r14 r15}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [r13+0x58]
; gcrRegs +[rdi]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rdi], rax
- jne G_M10698_IG61
+ jne G_M10698_IG57
mov rax, gword ptr [rdi+0x08]
; gcrRegs +[rax]
;; size=27 bbWeight=0.25 PerfScore 2.02
@@ -367,7 +366,7 @@ G_M10698_IG31: ; bbWeight=0.41, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.41 PerfScore 1.76
-G_M10698_IG32: ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10698_IG32: ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax r14] +[rbx r15]
mov rdi, rbx
; gcrRegs +[rdi]
@@ -376,154 +375,28 @@ G_M10698_IG32: ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=800
call [rax+0x18]<unknown method>
; gcrRegs -[rdi] +[rax]
cmp byte ptr [rax], al
- mov rcx, rax
- ; gcrRegs +[rcx]
...
-29 (-2.22%) : 420658.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
@@ -15,87 +15,86 @@
; V03 loc1 [V03,T05] ( 5, 3.62) ref -> r12 class-hnd exact <Internal.TypeSystem.InstantiatedType>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (24) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.InstantiatedType>
-;* V06 tmp2 [V06,T36] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V07 tmp3 [V07,T35] ( 2, 0.88) ref -> rdi class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V08 tmp4 [V08,T20] ( 3, 1.75) long -> rax "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T46] ( 2, 0 ) ref -> rbx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2 [V06,T35] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T34] ( 2, 0.88) ref -> rdi class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V08 tmp4 [V08,T19] ( 3, 1.75) long -> rax "fgMakeTemp is creating a new local variable"
+; V09 tmp5 [V09,T45] ( 2, 0 ) ref -> rbx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
; V10 tmp6 [V10,T04] ( 7, 5.03) ref -> r15 class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
-; V11 tmp7 [V11,T17] ( 3, 2 ) ref -> r13 "guarded devirt return temp"
+; V11 tmp7 [V11,T16] ( 3, 2 ) ref -> r13 "guarded devirt return temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V13 tmp9 [V13,T12] ( 8, 2.47) ref -> [rbp-0x38] "guarded devirt return temp"
+; V13 tmp9 [V13,T11] ( 8, 2.47) ref -> [rbp-0x38] "guarded devirt return temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V15 tmp11 [V15,T22] ( 4, 1.69) ref -> rbx "guarded devirt return temp"
+; V15 tmp11 [V15,T21] ( 4, 1.69) ref -> rbx "guarded devirt return temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V17 tmp13 [V17,T18] ( 8, 1.94) ref -> r12 "guarded devirt return temp"
+; V17 tmp13 [V17,T17] ( 8, 1.94) ref -> r12 "guarded devirt return temp"
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref
;* V20 tmp16 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp17 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 tmp18 [V22,T28] ( 2, 0.79) int -> rdi
-; V23 tmp19 [V23,T27] ( 3, 1.66) ref -> [rbp-0x40] class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V22 tmp18 [V22,T27] ( 2, 0.79) int -> rdi
+; V23 tmp19 [V23,T26] ( 3, 1.66) ref -> [rbp-0x40] class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V25 tmp21 [V25,T37] ( 3, 0.79) ref -> rcx "guarded devirt return temp"
+; V25 tmp21 [V25,T36] ( 3, 0.79) ref -> rcx "guarded devirt return temp"
;* V26 tmp22 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V27 tmp23 [V27,T39] ( 3, 0.75) ref -> registers "guarded devirt return temp"
-; V28 tmp24 [V28,T16] ( 5, 2.13) ref -> rdi single-def "guarded devirt arg temp"
+; V27 tmp23 [V27,T38] ( 3, 0.75) ref -> registers "guarded devirt return temp"
+; V28 tmp24 [V28,T15] ( 5, 2.13) ref -> rdi single-def "guarded devirt arg temp"
;* V29 tmp25 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V30 tmp26 [V30,T38] ( 3, 0.76) ref -> rcx "guarded devirt return temp"
-; V31 tmp27 [V31,T14] ( 5, 2.27) ref -> rdi single-def "guarded devirt arg temp"
+; V30 tmp26 [V30,T37] ( 3, 0.76) ref -> rcx "guarded devirt return temp"
+; V31 tmp27 [V31,T13] ( 5, 2.27) ref -> rdi single-def "guarded devirt arg temp"
;* V32 tmp28 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
;* V33 tmp29 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V34 tmp30 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp31 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp32 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V37 tmp33 [V37,T09] ( 5, 3.38) ref -> rdi class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V38 tmp34 [V38,T32] ( 3, 1.12) ref -> rbx "guarded devirt return temp"
+; V37 tmp33 [V37,T08] ( 5, 3.38) ref -> rdi class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+; V38 tmp34 [V38,T31] ( 3, 1.12) ref -> rbx "guarded devirt return temp"
;* V39 tmp35 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
;* V40 tmp36 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaType>
-;* V41 tmp37 [V41,T24] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V42 tmp38 [V42,T25] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V41 tmp37 [V41,T23] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
+;* V42 tmp38 [V42,T24] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
;* V43 tmp39 [V43 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V44 tmp40 [V44,T07] ( 4, 3.77) ref -> rbx class-hnd exact single-def "impAppendStmt" <<unknown class>>
;* V45 tmp41 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V46 tmp42 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp43 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V48 tmp44 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V49 tmp45 [V49,T15] ( 2, 2.25) int -> r15 "impAppendStmt"
-; V50 tmp46 [V50,T31] ( 4, 1.12) ref -> rdi "guarded devirt return temp"
+; V49 tmp45 [V49,T14] ( 2, 2.25) int -> r15 "impAppendStmt"
+; V50 tmp46 [V50,T30] ( 4, 1.12) ref -> rdi "guarded devirt return temp"
;* V51 tmp47 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V52 tmp48 [V52,T44] ( 2, 0.08) byref -> r15 single-def "impAppendStmt"
-; V53 tmp49 [V53,T45] ( 3, 0.04) int -> rax "guarded devirt return temp"
-; V54 tmp50 [V54,T43] ( 5, 0.12) ref -> rdi single-def "guarded devirt arg temp"
+; V52 tmp48 [V52,T43] ( 2, 0.08) byref -> r15 single-def "impAppendStmt"
+; V53 tmp49 [V53,T44] ( 3, 0.04) int -> rax "guarded devirt return temp"
+; V54 tmp50 [V54,T42] ( 5, 0.12) ref -> rdi single-def "guarded devirt arg temp"
;* V55 tmp51 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
;* V56 tmp52 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V57 tmp53 [V57,T33] ( 3, 1.12) ref -> rax class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V57 tmp53 [V57,T32] ( 3, 1.12) ref -> rax class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
;* V58 tmp54 [V58 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V59 tmp55 [V59 ] ( 2, 0.93) ref -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V60 tmp56 [V60,T21] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V61 tmp57 [V61,T10] ( 4, 2.82) ref -> rax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V62 tmp58 [V62,T34] ( 2, 0.61) int -> rdi
-; V63 tmp59 [V63,T30] ( 3, 1.29) ref -> rbx class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V60 tmp56 [V60,T20] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V61 tmp57 [V61,T09] ( 3, 2.62) ref -> rax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V62 tmp58 [V62,T33] ( 2, 0.61) int -> rdi
+; V63 tmp59 [V63,T29] ( 3, 1.29) ref -> rbx class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V64 tmp60 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V65 tmp61 [V65,T40] ( 3, 0.61) ref -> rax "guarded devirt return temp"
+; V65 tmp61 [V65,T39] ( 3, 0.61) ref -> rax "guarded devirt return temp"
;* V66 tmp62 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V67 tmp63 [V67,T42] ( 3, 0.58) ref -> rbx "guarded devirt return temp"
-; V68 tmp64 [V68,T26] ( 5, 1.66) ref -> rdi single-def "guarded devirt arg temp"
+; V67 tmp63 [V67,T41] ( 3, 0.58) ref -> rbx "guarded devirt return temp"
+; V68 tmp64 [V68,T25] ( 5, 1.66) ref -> rdi single-def "guarded devirt arg temp"
;* V69 tmp65 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V70 tmp66 [V70,T41] ( 3, 0.59) ref -> rax "guarded devirt return temp"
-; V71 tmp67 [V71,T19] ( 5, 1.77) ref -> rdi single-def "guarded devirt arg temp"
+; V70 tmp66 [V70,T40] ( 3, 0.59) ref -> rax "guarded devirt return temp"
+; V71 tmp67 [V71,T18] ( 5, 1.77) ref -> rdi single-def "guarded devirt arg temp"
;* V72 tmp68 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
;* V73 tmp69 [V73 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V74 tmp70 [V74 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V75 tmp71 [V75 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V76 tmp72 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V77 tmp73 [V77,T13] ( 8, 2.45) ref -> r13 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
-; V78 tmp74 [V78,T11] ( 8, 2.51) ref -> r12 single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
-; V79 tmp75 [V79,T29] ( 3, 1.32) int -> r15 single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
+; V77 tmp73 [V77,T12] ( 8, 2.45) ref -> r13 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V78 tmp74 [V78,T10] ( 8, 2.51) ref -> r12 single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
+; V79 tmp75 [V79,T28] ( 3, 1.32) int -> r15 single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
;* V80 tmp76 [V80 ] ( 0, 0 ) ref -> zero-ref single-def "field V58._typicalMethodDef (fldOffset=0x0)" P-INDEP
;* V81 tmp77 [V81 ] ( 0, 0 ) ref -> zero-ref single-def "field V58._instantiatedType (fldOffset=0x8)" P-INDEP
;* V82 tmp78 [V82 ] ( 0, 0 ) int -> zero-ref single-def "field V58._hashcode (fldOffset=0x10)" P-INDEP
-; V83 cse0 [V83,T23] ( 3, 1.69) ref -> rdi "CSE - moderate"
+; V83 cse0 [V83,T22] ( 3, 1.69) ref -> rdi "CSE - moderate"
; V84 cse1 [V84,T00] ( 18, 9.38) ref -> rsi multi-def "CSE - aggressive"
; V85 cse2 [V85,T06] ( 6, 4.12) long -> r14 "CSE - moderate"
-; V86 rat0 [V86,T08] ( 6, 3.50) ref -> rcx class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
;
; Lcl frame size = 56
@@ -140,7 +139,7 @@ G_M10698_IG06: ; bbWeight=0.56, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0
mov r15, gword ptr [r12+0x50]
; gcrRegs +[r15]
cmp qword ptr [r13], r14
- jne G_M10698_IG54
+ jne G_M10698_IG48
jmp SHORT G_M10698_IG08
;; size=17 bbWeight=0.56 PerfScore 4.50
G_M10698_IG07: ; bbWeight=0.44, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
@@ -178,7 +177,7 @@ G_M10698_IG12: ; bbWeight=0.36, gcrefRegs=B009 {rax rbx r12 r13 r15}, byr
; gcrRegs +[rdi]
mov rcx, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rdi], rcx
- jne G_M10698_IG55
+ jne G_M10698_IG49
mov rcx, gword ptr [rdi+0x08]
; gcrRegs +[rcx]
;; size=27 bbWeight=0.36 PerfScore 2.93
@@ -192,7 +191,7 @@ G_M10698_IG13: ; bbWeight=0.39, gcrefRegs=B00B {rax rcx rbx r12 r13 r15},
cmp qword ptr [rax], rdi
jne SHORT G_M10698_IG16
;; size=22 bbWeight=0.39 PerfScore 2.17
-G_M10698_IG14: ; bbWeight=0.38, gcVars=0000000000001000 {V13}, gcrefRegs=B00C {rdx rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M10698_IG14: ; bbWeight=0.38, gcVars=0000000000000800 {V13}, gcrefRegs=B00C {rdx rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rcx]
mov rax, gword ptr [rbp-0x38]
; gcrRegs +[rax]
@@ -200,7 +199,7 @@ G_M10698_IG14: ; bbWeight=0.38, gcVars=0000000000001000 {V13}, gcrefRegs=
; gcrRegs +[rdi]
mov rcx, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rdi], rcx
- jne G_M10698_IG56
+ jne G_M10698_IG50
mov rcx, gword ptr [rdi+0x08]
; gcrRegs +[rcx]
;; size=31 bbWeight=0.38 PerfScore 3.51
@@ -214,9 +213,9 @@ G_M10698_IG15: ; bbWeight=0.39, gcVars=0000000000000000 {}, gcrefRegs=B00
jne SHORT G_M10698_IG20
jmp SHORT G_M10698_IG19
;; size=16 bbWeight=0.39 PerfScore 1.88
-G_M10698_IG16: ; bbWeight=0.20, gcVars=0000000000001000 {V13}, gcrefRegs=B00C {rdx rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10698_IG16: ; bbWeight=0.20, gcVars=0000000000000800 {V13}, gcrefRegs=B00C {rdx rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax rcx]
- ; GC ptr vars +{V13}
+ ; GC ptr vars +{V11 V13}
mov gword ptr [rbp-0x40], rdx
; GC ptr vars +{V23}
mov rax, gword ptr [rbp-0x38]
@@ -225,7 +224,7 @@ G_M10698_IG16: ; bbWeight=0.20, gcVars=0000000000001000 {V13}, gcrefRegs=
;; size=10 bbWeight=0.20 PerfScore 0.79
G_M10698_IG17: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=B009 {rax rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdx]
- ; GC ptr vars -{V13 V23}
+ ; GC ptr vars -{V11 V13 V23}
mov gword ptr [rbp-0x38], rax
; GC ptr vars +{V13}
mov rdi, r15
@@ -238,7 +237,7 @@ G_M10698_IG17: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=B00
; GC ptr vars +{V23}
mov rax, gword ptr [rbp-0x38]
;; size=25 bbWeight=0.04 PerfScore 0.40
-G_M10698_IG18: ; bbWeight=0.02, gcVars=0000000008000000 {V23}, gcrefRegs=B009 {rax rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10698_IG18: ; bbWeight=0.02, gcVars=0000000004000000 {V23}, gcrefRegs=B009 {rax rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V13}
mov rdi, rax
; gcrRegs +[rdi]
@@ -282,13 +281,13 @@ G_M10698_IG20: ; bbWeight=0.56, gcVars=0000000000000000 {}, gcrefRegs=B00
;; size=24 bbWeight=0.56 PerfScore 2.67
G_M10698_IG21: ; bbWeight=0.56, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref
cmp qword ptr [rbx], r14
- jne G_M10698_IG58
+ jne G_M10698_IG52
mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
mov rdi, gword ptr [rdi+0x58]
mov rsi, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rdi], rsi
- jne G_M10698_IG57
+ jne G_M10698_IG51
mov rbx, gword ptr [rdi+0x08]
;; size=40 bbWeight=0.56 PerfScore 8.02
G_M10698_IG22: ; bbWeight=0.56, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref, isz
@@ -323,11 +322,11 @@ G_M10698_IG24: ; bbWeight=0.56, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0
G_M10698_IG25: ; bbWeight=0.56, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref
mov r15d, dword ptr [r12+0x68]
cmp qword ptr [r13], r14
- jne G_M10698_IG61
+ jne G_M10698_IG54
mov rdi, gword ptr [r13+0x20]
; gcrRegs +[rdi]
test rdi, rdi
- je G_M10698_IG59
+ je G_M10698_IG42
;; size=28 bbWeight=0.56 PerfScore 5.20
G_M10698_IG26: ; bbWeight=0.56, gcrefRegs=3088 {rbx rdi r12 r13}, byrefRegs=0000 {}, byref
call [Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int]
@@ -368,14 +367,14 @@ G_M10698_IG29: ; bbWeight=0.44, gcVars=0000000000000000 {}, gcrefRegs=B00
G_M10698_IG30: ; bbWeight=0.31, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
cmp qword ptr [r15], rdi
- jne G_M10698_IG52
+ jne G_M10698_IG46
;; size=19 bbWeight=0.31 PerfScore 1.31
G_M10698_IG31: ; bbWeight=0.28, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [r15+0x58]
; gcrRegs +[rdi]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rdi], rax
- jne G_M10698_IG51
+ jne G_M10698_IG59
mov rbx, gword ptr [rdi+0x08]
; gcrRegs +[rbx]
;; size=27 bbWeight=0.28 PerfScore 2.28
@@ -383,14 +382,14 @@ G_M10698_IG32: ; bbWeight=0.31, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRe
; gcrRegs -[rdi]
mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
cmp qword ptr [r12], rdi
- jne G_M10698_IG53
+ jne G_M10698_IG47
;; size=20 bbWeight=0.31 PerfScore 1.31
G_M10698_IG33: ; bbWeight=0.29, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [r12+0x58]
; gcrRegs +[rdi]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
...
libraries_tests.run.linux.x64.Release.mch
-15 (-1.31%) : 52289.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:
@@ -12,10 +12,10 @@
; V00 this [V00,T13] ( 19, 9.24) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
; V01 arg1 [V01,T20] ( 6, 3 ) byref -> r15 single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2[System.String,Microsoft.CodeAnalysis.CSharp.Symbol]>
-; V03 loc1 [V03,T31] ( 2, 1 ) ubyte -> [rbp-0x2C] single-def
+; V03 loc1 [V03,T31] ( 2, 1 ) ubyte -> [rbp-0x2C] spill-single-def
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbol]>
;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]>
-; V06 loc4 [V06,T01] ( 13, 55.32) ref -> rbx class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V06 loc4 [V06,T01] ( 13, 55.02) ref -> rbx class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
; V07 loc5 [V07,T06] ( 10, 28.74) ref -> [rbp-0x38] class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol>
; V08 loc6 [V08,T15] ( 2, 0.38) ref -> [rbp-0x40] ld-addr-op class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
; V09 loc7 [V09,T43] ( 4, 0 ) ref -> rax class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
@@ -37,7 +37,7 @@
;* V25 tmp15 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
; V26 tmp16 [V26,T41] ( 3, 0.13) int -> rax "guarded devirt return temp"
;* V27 tmp17 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SubstitutedPropertySymbol>
-; V28 tmp18 [V28,T11] ( 3, 19.78) ref -> registers "guarded devirt return temp"
+; V28 tmp18 [V28,T11] ( 3, 19.78) ref -> rsi "guarded devirt return temp"
;* V29 tmp19 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol>
; V30 tmp20 [V30,T35] ( 3, 0.39) byref -> r12 single-def "impAppendStmt"
; V31 tmp21 [V31,T38] ( 2, 0.26) ref -> rsi class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
@@ -59,7 +59,7 @@
;* V47 tmp37 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
; V48 tmp38 [V48,T10] ( 3, 20.16) byref -> rax "Inline stloc first use temp"
;* V49 tmp39 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V50 tmp40 [V50,T08] ( 6, 21.11) ref -> rdi class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
+; V50 tmp40 [V50,T08] ( 6, 21.11) ref -> rax class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
; V51 tmp41 [V51,T07] ( 6, 22.45) ref -> rdi class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol>
;* V52 tmp42 [V52,T17] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
; V53 tmp43 [V53,T30] ( 3, 1.06) int -> rax "guarded devirt return temp"
@@ -85,7 +85,7 @@
; V73 tmp63 [V73,T18] ( 3, 8.04) ref -> rsi "field V41.array (fldOffset=0x0)" P-INDEP
;* V74 tmp64 [V74 ] ( 0, 0 ) ref -> zero-ref "field V58._dictionary (fldOffset=0x0)" P-INDEP
; V75 tmp65 [V75,T02] ( 2, 39.56) long -> rsi "Cast away GC"
-; V76 cse0 [V76,T05] ( 3, 29.37) ref -> [rbp-0x60] "CSE - aggressive"
+; V76 cse0 [V76,T05] ( 3, 29.37) ref -> [rbp-0x60] spill-single-def "CSE - aggressive"
; V77 cse1 [V77,T42] ( 3, 0.10) long -> rbx "CSE - conservative"
; V78 cse2 [V78,T12] ( 3, 11.99) int -> r14 "CSE - moderate"
; V79 cse3 [V79,T19] ( 9, 6.29) long -> r14 "CSE - moderate"
@@ -136,11 +136,11 @@ G_M20484_IG05: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=8000 {r1
call [Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:get_HasRequiredMembersError():ubyte:this]
; gcrRegs -[rdi]
test eax, eax
- jne G_M20484_IG67
+ jne G_M20484_IG66
;; size=19 bbWeight=1 PerfScore 5.50
G_M20484_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
cmp r14, r13
- jne G_M20484_IG35
+ jne G_M20484_IG51
;; size=9 bbWeight=1 PerfScore 1.25
G_M20484_IG07: ; bbWeight=0.70, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
mov rdi, gword ptr [rbx+0x60]
@@ -165,7 +165,7 @@ G_M20484_IG09: ; bbWeight=9.99, gcrefRegs=3000 {r12 r13}, byrefRegs=8000
G_M20484_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r12-r13]
; byrRegs -[r15]
- jmp G_M20484_IG65
+ jmp G_M20484_IG52
;; size=5 bbWeight=1 PerfScore 2.00
G_M20484_IG11: ; bbWeight=0.06, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
; gcrRegs +[rbx]
@@ -182,7 +182,7 @@ G_M20484_IG11: ; bbWeight=0.06, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15
mov rdx, gword ptr [rdi]
; gcrRegs +[rdx]
test r12, r12
- je G_M20484_IG69
+ je G_M20484_IG68
mov rdi, r12
; byrRegs +[rdi]
call <unknown method>
@@ -235,7 +235,7 @@ G_M20484_IG15: ; bbWeight=0.07, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15
mov rdx, gword ptr [rdi]
; gcrRegs +[rdx]
test r12, r12
- je G_M20484_IG69
+ je G_M20484_IG68
mov rdi, r12
; byrRegs +[rdi]
call <unknown method>
@@ -249,7 +249,7 @@ G_M20484_IG16: ; bbWeight=0.70, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15
;; size=4 bbWeight=0.70 PerfScore 1.40
G_M20484_IG17: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=8000 {r15}, byref
test rdi, rdi
- je G_M20484_IG32
+ je G_M20484_IG47
;; size=9 bbWeight=1 PerfScore 1.25
G_M20484_IG18: ; bbWeight=0.86, gcrefRegs=0088 {rbx rdi}, byrefRegs=8000 {r15}, byref
call [Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:get_AllRequiredMembers():Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2[System.String,Microsoft.CodeAnalysis.CSharp.Symbol]:this]
@@ -273,10 +273,10 @@ G_M20484_IG21: ; bbWeight=1, gcrefRegs=1008 {rbx r12}, byrefRegs=8000 {r1
cmp r14, r13
jne G_M20484_IG12
;; size=12 bbWeight=1 PerfScore 2.25
-G_M20484_IG22: ; bbWeight=0.61, gcrefRegs=1008 {rbx r12}, byrefRegs=8000 {r15}, byref, isz
+G_M20484_IG22: ; bbWeight=0.61, gcrefRegs=1008 {rbx r12}, byrefRegs=8000 {r15}, byref
cmp gword ptr [rbx+0x50], 0
- je SHORT G_M20484_IG28
- ;; size=7 bbWeight=0.61 PerfScore 2.44
+ je G_M20484_IG44
+ ;; size=11 bbWeight=0.61 PerfScore 2.44
G_M20484_IG23: ; bbWeight=0.61, gcrefRegs=1008 {rbx r12}, byrefRegs=8000 {r15}, byref
mov r13, gword ptr [rbx+0x90]
; gcrRegs +[r13]
@@ -288,7 +288,7 @@ G_M20484_IG24: ; bbWeight=1, gcrefRegs=3000 {r12 r13}, byrefRegs=8000 {r1
xor ecx, ecx
mov dword ptr [rbp-0x30], ecx
test r14d, r14d
- jle G_M20484_IG65
+ jle G_M20484_IG52
;; size=20 bbWeight=1 PerfScore 4.75
G_M20484_IG25: ; bbWeight=9.95, gcrefRegs=3000 {r12 r13}, byrefRegs=8000 {r15}, byref, isz
mov esi, ebx
@@ -297,40 +297,21 @@ G_M20484_IG25: ; bbWeight=9.95, gcrefRegs=3000 {r12 r13}, byrefRegs=8000
mov rdx, rbx
; gcrRegs +[rdx]
test rdx, rdx
- je SHORT G_M20484_IG30
+ je SHORT G_M20484_IG28
;; size=15 bbWeight=9.95 PerfScore 37.32
-G_M20484_IG26: ; bbWeight=4.98, gcrefRegs=300C {rdx rbx r12 r13}, byrefRegs=8000 {r15}, byref, isz
+G_M20484_IG26: ; bbWeight=4.98, gcrefRegs=300C {rdx rbx r12 r13}, byrefRegs=8000 {r15}, byref
mov rsi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol
cmp qword ptr [rdx], rsi
- je SHORT G_M20484_IG29
- ;; size=15 bbWeight=4.98 PerfScore 21.15
-G_M20484_IG27: ; bbWeight=1.79, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=8000 {r15}, byref, isz
+ jne G_M20484_IG39
+ ;; size=19 bbWeight=4.98 PerfScore 21.15
+G_M20484_IG27: ; bbWeight=3.48, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=8000 {r15}, byref
; gcrRegs -[rdx]
- mov rsi, rbx
- ; gcrRegs +[rsi]
- mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol
- call CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[rsi] +[rax]
- mov rdx, rax
- ; gcrRegs +[rdx]
- jmp SHORT G_M20484_IG30
- ;; size=23 bbWeight=1.79 PerfScore 6.72
-G_M20484_IG28: ; bbWeight=0.05, gcrefRegs=1008 {rbx r12}, byrefRegs=8000 {r15}, byref, isz
- ; gcrRegs -[rax rdx r13]
- mov rdi, rbx
- ; gcrRegs +[rdi]
- call [<unknown method>]
- ; gcrRegs -[rdi]
- jmp SHORT G_M20484_IG23
- ;; size=11 bbWeight=0.05 PerfScore 0.24
-G_M20484_IG29: ; bbWeight=3.18, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=8000 {r15}, byref
- ; gcrRegs +[r13]
xor rdi, rdi
; gcrRegs +[rdi]
xor rdx, rdx
; gcrRegs +[rdx]
- ;; size=4 bbWeight=3.18 PerfScore 1.59
-G_M20484_IG30: ; bbWeight=9.95, gcrefRegs=300C {rdx rbx r12 r13}, byrefRegs=8000 {r15}, byref, isz
+ ;; size=4 bbWeight=3.48 PerfScore 1.74
+G_M20484_IG28: ; bbWeight=9.95, gcrefRegs=300C {rdx rbx r12 r13}, byrefRegs=8000 {r15}, byref, isz
; gcrRegs -[rdi]
mov rdi, rdx
; gcrRegs +[rdi]
@@ -340,76 +321,104 @@ G_M20484_IG30: ; bbWeight=9.95, gcrefRegs=300C {rdx rbx r12 r13}, byrefRe
mov gword ptr [rbp-0x38], rdx
; GC ptr vars +{V07}
test rdx, rdx
- je SHORT G_M20484_IG33
+ jne SHORT G_M20484_IG37
;; size=19 bbWeight=9.95 PerfScore 37.32
-G_M20484_IG31: ; bbWeight=1.61, gcVars=0000000000000060 {V07 V76}, gcrefRegs=300C {rdx rbx r12 r13}, byrefRegs=8000 {r15}, gcvars, byref, isz
- ; gcrRegs -[rdi]
- jmp SHORT G_M20484_IG38
- ;; size=2 bbWeight=1.61 PerfScore 3.22
-G_M20484_IG32: ; bbWeight=0.14, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref
- ; gcrRegs -[rdx r12-r13]
- ; GC ptr vars -{V07 V76}
- mov rdi, 0xD1FFAB1E ; box for <unknown class>:<unknown field>
- mov rdi, gword ptr [rdi]
- ; gcrRegs +[rdi]
- mov r12, gword ptr [rdi+0x08]
- ; gcrRegs +[r12]
- jmp G_M20484_IG19
- ;; size=22 bbWeight=0.14 PerfScore 0.90
-G_M20484_IG33: ; bbWeight=9.89, gcVars=0000000000000020 {V76}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=8000 {r15}, gcvars, byref
- ; gcrRegs -[rdi] +[r13]
- ; GC ptr vars +{V76}
+G_M20484_IG29: ; bbWeight=9.89, gcVars=0000000000000020 {V76}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=8000 {r15}, gcvars, byref
+ ; gcrRegs -[rdx rdi]
+ ; GC ptr vars -{V07}
mov rdx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol
cmp qword ptr [rbx], rdx
- jne G_M20484_IG53
+ jne G_M20484_IG40
;; size=19 bbWeight=9.89 PerfScore 42.03
-G_M20484_IG34: ; bbWeight=5.93, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=8000 {r15}, byref
- jmp G_M20484_IG50
- ;; size=5 bbWeight=5.93 PerfScore 11.87
-G_M20484_IG35: ; bbWeight=0.30, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref
- ; gcrRegs -[r12-r13]
- ; GC ptr vars -{V76}
- mov rdi, rbx
+G_M20484_IG30: ; bbWeight=5.93, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=8000 {r15}, byref
+ mov rsi, gword ptr [rbx+0x18]
+ ; gcrRegs +[rsi]
+ ;; size=4 bbWeight=5.93 PerfScore 11.87
+G_M20484_IG31: ; bbWeight=9.89, gcrefRegs=3048 {rbx rsi r12 r13}, byrefRegs=8000 {r15}, byref
+ cmp byte ptr [r12], r12b
+ mov rdi, r12
; gcrRegs +[rdi]
- mov rax, qword ptr [r14+0xA0]
- call [rax+0x30]<unknown method>
- ; gcrRegs -[rdi] +[rax]
- mov rdi, rax
- ; gcrRegs +[rdi]
- jmp G_M20484_IG17
- ;; size=21 bbWeight=0.30 PerfScore 2.25
-G_M20484_IG36: ; bbWeight=9.89, gcVars=0000000000000020 {V76}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=8000 {r15}, gcvars, byref
- ; gcrRegs -[rax rdi] +[r12-r13]
- ; GC ptr vars +{V76}
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ; byrRegs +[rax]
+ mov rsi, rax
+ test rsi, rsi
+ jne G_M20484_IG58
+ ;; size=25 bbWeight=9.89 PerfScore 76.65
+G_M20484_IG32: ; bbWeight=9.89, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=8000 {r15}, byref, isz
+ ; byrRegs -[rax]
mov rsi, rbx
; gcrRegs +[rsi]
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[rsi] +[rax]
- mov rdi, rax
+ test rax, rax
+ jne SHORT G_M20484_IG35
+ ;; size=23 bbWeight=9.89 PerfScore 27.20
+G_M20484_IG33: ; bbWeight=9.47, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=8000 {r15}, byref
+ ; gcrRegs -[rax]
+ mov rdi, gword ptr [rbp-0x60]
; gcrRegs +[rdi]
test rdi, rdi
- je G_M20484_IG48
- ;; size=30 bbWeight=9.89 PerfScore 29.67
-G_M20484_IG37: ; bbWeight=0.53, gcVars=0000000000000000 {}, gcrefRegs=3088 {rbx rdi r12 r13}, byrefRegs=8000 {r15}, gcvars, byref
- ; gcrRegs -[rax]
+ je G_M20484_IG09
+ ;; size=13 bbWeight=9.47 PerfScore 21.31
+G_M20484_IG34: ; bbWeight=1.53, gcVars=0000000000000000 {}, gcrefRegs=3088 {rbx rdi r12 r13}, byrefRegs=8000 {r15}, gcvars, byref
; GC ptr vars -{V76}
- jmp G_M20484_IG56
...
-11 (-1.19%) : 558185.dasm - System.Linq.Expressions.Compiler.VariableBinder:MergeScopes(System.Linq.Expressions.Expression):System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]:this (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 this [V00,T06] ( 3, 3 ) ref -> r15 this class-hnd single-def <System.Linq.Expressions.Compiler.VariableBinder>
-; V01 arg1 [V01,T05] ( 5, 3.21) ref -> rbx class-hnd single-def <System.Linq.Expressions.Expression>
+; V01 arg1 [V01,T05] ( 5, 3.18) ref -> rbx class-hnd single-def <System.Linq.Expressions.Expression>
; V02 loc0 [V02,T07] ( 8, 4 ) ref -> r14 class-hnd <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]>
; V03 loc1 [V03,T09] ( 3, 3 ) ref -> r14 class-hnd single-def <System.Linq.Expressions.LambdaExpression>
; V04 loc2 [V04,T17] ( 6, 0 ) ref -> [rbp-0x28] must-init class-hnd exact EH-live single-def <<unknown class>>
@@ -46,7 +46,7 @@
; V34 PSPSym [V34,T15] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
; V35 cse0 [V35,T14] ( 2, 2 ) int -> rcx "CSE - moderate"
; V36 cse1 [V36,T12] ( 3, 3 ) long -> rcx "CSE - moderate"
-; V37 rat0 [V37,T00] ( 5, 7.42) ref -> r14 class-hnd "replacement local" <System.Linq.Expressions.LambdaExpression>
+; V37 rat0 [V37,T00] ( 5, 7.36) ref -> r14 class-hnd "replacement local" <System.Linq.Expressions.LambdaExpression>
;
; Lcl frame size = 56
@@ -70,28 +70,16 @@ G_M14872_IG02: ; bbWeight=1, gcVars=0000000004000000 {V08}, gcrefRegs=800
mov r14, rbx
; gcrRegs +[r14]
test r14, r14
- je SHORT G_M14872_IG05
+ je SHORT G_M14872_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M14872_IG03: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M14872_IG03: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; System.Linq.Expressions.Expression0`1[System.Action]
cmp qword ptr [r14], rsi
- je SHORT G_M14872_IG05
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M14872_IG04: ; bbWeight=0.21, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r14]
- mov rsi, rbx
- ; gcrRegs +[rsi]
- mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.LambdaExpression
- call CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[rsi] +[rax]
- ; gcr arg pop 0
- mov r14, rax
- ; gcrRegs +[r14]
- ;; size=21 bbWeight=0.21 PerfScore 0.37
-G_M14872_IG05: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+ jne G_M14872_IG07
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M14872_IG04: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
test r14, r14
- je G_M14872_IG28
+ je G_M14872_IG10
mov rdi, 0xD1FFAB1E ; <unknown class>
mov esi, 1
call CORINFO_HELP_NEWARR_1_OBJ
@@ -120,7 +108,7 @@ G_M14872_IG05: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
; gcrRegs -[rax rbx rsi]
; byrRegs -[rdi]
;; size=75 bbWeight=1 PerfScore 9.75
-G_M14872_IG06: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
+G_M14872_IG05: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [r15+0x10]
; gcrRegs +[rdi]
mov r11d, dword ptr [rdi+0x10]
@@ -129,7 +117,7 @@ G_M14872_IG06: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {},
; gcrRegs +[rax]
mov ecx, dword ptr [rax+0x08]
cmp ecx, r11d
- jbe G_M14872_IG29
+ jbe G_M14872_IG30
mov edi, r11d
; gcrRegs -[rdi]
mov rdi, gword ptr [rax+8*rdi+0x10]
@@ -137,7 +125,7 @@ G_M14872_IG06: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {},
mov gword ptr [rbp-0x28], rdi
; GC ptr vars +{V04}
;; size=39 bbWeight=1 PerfScore 12.75
-G_M14872_IG07: ; bbWeight=1, gcVars=0000000004020000 {V04 V08}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
+G_M14872_IG06: ; bbWeight=1, gcVars=0000000004020000 {V04 V08}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax rdi r15]
; GC ptr vars -{V26}
mov rdi, gword ptr [r14+0x08]
@@ -147,7 +135,7 @@ G_M14872_IG07: ; bbWeight=1, gcVars=0000000004020000 {V04 V08}, gcrefRegs
; gcrRegs -[rdi]
; gcr arg pop 0
cmp eax, 1
- jne G_M14872_IG24
+ jne SHORT G_M14872_IG08
mov rdi, gword ptr [r14+0x08]
; gcrRegs +[rdi]
mov r11, 0xD1FFAB1E ; code for <unknown method>
@@ -158,7 +146,7 @@ G_M14872_IG07: ; bbWeight=1, gcVars=0000000004020000 {V04 V08}, gcrefRegs
mov rcx, qword ptr [rax]
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.FieldExpression
cmp rcx, rdi
- je G_M14872_IG24
+ je SHORT G_M14872_IG08
mov rdi, rax
; gcrRegs +[rdi]
mov rax, qword ptr [rcx+0x48]
@@ -167,14 +155,117 @@ G_M14872_IG07: ; bbWeight=1, gcVars=0000000004020000 {V04 V08}, gcrefRegs
; gcrRegs -[rdi]
; gcr arg pop 0
cmp eax, 47
- je G_M14872_IG30
- jmp G_M14872_IG24
- ;; size=91 bbWeight=1 PerfScore 24.00
-G_M14872_IG08: ; bbWeight=0, gcVars=0000000004070000 {V04 V05 V06 V08}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars +{V05 V06 V16 V18}
- jmp SHORT G_M14872_IG10
+ je SHORT G_M14872_IG11
+ jmp SHORT G_M14872_IG08
+ ;; size=76 bbWeight=1 PerfScore 24.00
+G_M14872_IG07: ; bbWeight=0.18, gcVars=0000000004000000 {V08}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[r14] +[rbx r15]
+ ; GC ptr vars -{V04}
+ mov rsi, rbx
+ ; gcrRegs +[rsi]
+ mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.LambdaExpression
+ call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[rsi] +[rax]
+ ; gcr arg pop 0
+ mov r14, rax
+ ; gcrRegs +[r14]
+ jmp G_M14872_IG04
+ ;; size=26 bbWeight=0.18 PerfScore 0.68
+G_M14872_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rbx r15]
+ ; GC ptr vars -{V08}
+ mov rax, r14
+ ; gcrRegs +[rax]
+ ;; size=3 bbWeight=1 PerfScore 0.25
+G_M14872_IG09: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 56
+ pop rbx
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=11 bbWeight=1 PerfScore 3.25
+G_M14872_IG10: ; bbWeight=0, gcVars=0000000004000000 {V08}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax r14] +[rbx r15]
+ ; GC ptr vars +{V08 V26}
+ mov rsi, rbx
+ ; gcrRegs +[rsi]
+ mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.BlockExpression
+ call CORINFO_HELP_CHKCASTCLASS
+ ; gcrRegs -[rbx rsi] +[rax]
+ ; gcr arg pop 0
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ mov rax, qword ptr [rax]
+ ; gcrRegs -[rax]
+ mov rax, qword ptr [rax+0x50]
+ call [rax+0x30]<unknown method>
+ ; gcrRegs -[rdi] +[rax]
+ ; gcr arg pop 0
+ mov r14, rax
+ ; gcrRegs +[r14]
+ jmp G_M14872_IG05
+ ;; size=39 bbWeight=0 PerfScore 0.00
+G_M14872_IG11: ; bbWeight=0, gcVars=0000000004020000 {V04 V08}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax r15]
+ ; GC ptr vars -{V26} +{V04 V17}
+ mov rdi, gword ptr [r14+0x08]
+ ; gcrRegs +[rdi]
+ mov r11, 0xD1FFAB1E ; code for <unknown method>
+ xor esi, esi
+ call [r11]<unknown method>
+ ; gcrRegs -[rdi] +[rax]
+ ; gcr arg pop 0
+ mov rsi, rax
+ ; gcrRegs +[rsi]
+ mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.BlockExpression
+ call CORINFO_HELP_CHKCASTCLASS
+ ; gcrRegs -[rsi]
+ ; gcr arg pop 0
+ mov gword ptr [rbp-0x30], rax
+ ; GC ptr vars +{V05}
+ mov rdi, gword ptr [rbp-0x30]
+ ; gcrRegs +[rdi]
+ mov rax, gword ptr [rbp-0x30]
+ mov rax, qword ptr [rax]
+ ; gcrRegs -[rax]
+ mov rax, qword ptr [rax+0x50]
+ ; GC ptr vars -{V17}
+ call [rax+0x38]<unknown method>
+ ; gcrRegs -[rdi] +[rax]
+ ; gcr arg pop 0
+ mov rdi, gword ptr [rax+0x08]
+ ; gcrRegs +[rdi]
+ mov r11, 0xD1FFAB1E ; code for <unknown method>
+ call [r11]<unknown method>
+ ; gcrRegs -[rax rdi]
+ ; gcr arg pop 0
+ test eax, eax
+ jle G_M14872_IG27
+ mov rdi, gword ptr [rbp-0x30]
+ ; gcrRegs +[rdi]
+ mov rax, gword ptr [rbp-0x30]
+ ; gcrRegs +[rax]
+ mov rax, qword ptr [rax]
+ ; gcrRegs -[rax]
+ mov rax, qword ptr [rax+0x50]
+ call [rax+0x38]<unknown method>
+ ; gcrRegs -[rdi] +[rax]
+ ; gcr arg pop 0
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ cmp dword ptr [rdi], edi
+ call [System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.__Canon]:this]
+ ; gcrRegs -[rdi]
+ ; gcr arg pop 0
+ mov gword ptr [rbp-0x38], rax
+ ; GC ptr vars +{V06}
+ ;; size=117 bbWeight=0 PerfScore 0.00
+G_M14872_IG12: ; bbWeight=0, gcVars=0000000004070000 {V04 V05 V06 V08}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax]
+ jmp SHORT G_M14872_IG14
;; size=2 bbWeight=0 PerfScore 0.00
-G_M14872_IG09: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+G_M14872_IG13: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbp-0x38]
; gcrRegs +[rdi]
mov r11, 0xD1FFAB1E ; code for <unknown method>
@@ -193,9 +284,9 @@ G_M14872_IG09: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byr
; byrRegs +[rax]
; gcr arg pop 0
test rax, rax
- jne SHORT G_M14872_IG11
+ jne SHORT G_M14872_IG15
;; size=44 bbWeight=0 PerfScore 0.00
-G_M14872_IG10: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+G_M14872_IG14: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
mov rdi, gword ptr [rbp-0x38]
; gcrRegs +[rdi]
@@ -204,34 +295,34 @@ G_M14872_IG10: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byr
; gcrRegs -[rdi]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M14872_IG09
- jmp SHORT G_M14872_IG12
+ jne SHORT G_M14872_IG13
+ jmp SHORT G_M14872_IG16
;; size=23 bbWeight=0 PerfScore 0.00
-G_M14872_IG11: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+G_M14872_IG15: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
mov gword ptr [rbp-0x40], r14
- jmp SHORT G_M14872_IG14
+ jmp SHORT G_M14872_IG18
;; size=6 bbWeight=0 PerfScore 0.00
...
+0 (0.00%) : 300153.dasm - System.Dynamic.DynamicMetaObjectBinder:Bind(System.Object[],System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression],System.Linq.Expressions.LabelTarget):System.Linq.Expressions.Expression:this (Tier1)
@@ -18,7 +18,7 @@
;* V06 loc2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Dynamic.DynamicMetaObject[]>
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Dynamic.DynamicMetaObject>
; V08 loc4 [V08,T06] ( 18, 10.42) ref -> r13 class-hnd <System.Linq.Expressions.Expression>
-; V09 loc5 [V09,T22] ( 7, 4.29) ref -> r12 class-hnd single-def <System.Dynamic.BindingRestrictions>
+; V09 loc5 [V09,T21] ( 7, 4.29) ref -> r12 class-hnd single-def <System.Dynamic.BindingRestrictions>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V11 tmp1 [V11,T24] ( 3, 4 ) int -> r12 "impAppendStmt"
; V12 tmp2 [V12,T14] ( 3, 6 ) ref -> [rbp-0x60] class-hnd spill-single-def "impAppendStmt" <System.Object>
@@ -142,7 +142,7 @@
; V130 cse1 [V130,T78] ( 3, 0.00) long -> rax "CSE - conservative"
; V131 cse2 [V131,T77] ( 3, 0.00) ref -> rdi "CSE - conservative"
; V132 cse3 [V132,T11] ( 8, 7.05) int -> r12 multi-def "CSE - aggressive"
-; V133 rat0 [V133,T21] ( 3, 4.37) ref -> rsi "Spilling to split statement for tree"
+; V133 rat0 [V133,T22] ( 3, 4.28) ref -> rsi "Spilling to split statement for tree"
; V134 rat1 [V134,T12] ( 6, 7.91) ref -> rax class-hnd "replacement local" <<unknown class>>
;
; Lcl frame size = 168
@@ -522,7 +522,7 @@ G_M33592_IG24: ; bbWeight=0.37, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
mov rcx, gword ptr [rbp-0x58]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M33592_IG91
+ je G_M33592_IG86
mov r12, gword ptr [rbp-0xA0]
; gcrRegs +[r12]
test r12, r12
@@ -621,7 +621,7 @@ G_M33592_IG31: ; bbWeight=1.00, gcrefRegs=F00A {rcx rbx r12 r13 r14 r15},
G_M33592_IG32: ; bbWeight=0.50, gcVars=00000000000000000000020080000000 {V05 V20}, gcrefRegs=F049 {rax rbx rsi r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx]
; GC ptr vars -{V04 V31}
- jmp G_M33592_IG68
+ jmp G_M33592_IG69
;; size=5 bbWeight=0.50 PerfScore 1.00
G_M33592_IG33: ; bbWeight=0.50, gcrefRegs=F009 {rax rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
@@ -633,7 +633,7 @@ G_M33592_IG34: ; bbWeight=0.50, gcVars=00000000000000000000000080000000 {
; GC ptr vars -{V20}
mov gword ptr [rbp-0x68], rcx
; GC ptr vars +{V20}
- jmp G_M33592_IG73
+ jmp G_M33592_IG74
;; size=9 bbWeight=0.50 PerfScore 1.50
G_M33592_IG35: ; bbWeight=1.00, gcVars=00000000000000000000020080000000 {V05 V20}, gcrefRegs=F009 {rax rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx]
@@ -683,7 +683,7 @@ G_M33592_IG39: ; bbWeight=1.00, gcVars=00000000000000000000020080000008 {
test edi, edi
mov rax, gword ptr [rbp-0x50]
; gcrRegs +[rax]
- je G_M33592_IG73
+ je G_M33592_IG74
;; size=16 bbWeight=1.00 PerfScore 2.50
G_M33592_IG40: ; bbWeight=0.96, gcVars=00000000000000000000000080000000 {V05}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
@@ -794,7 +794,7 @@ G_M33592_IG49: ; bbWeight=1, gcVars=00000000000000000000000080000000 {V05
; GC ptr vars -{V04}
mov rdi, 0xD1FFAB1E ; Microsoft.CSharp.RuntimeBinder.CSharpConvertBinder
cmp qword ptr [rbx], rdi
- jne G_M33592_IG71
+ jne G_M33592_IG72
;; size=19 bbWeight=1 PerfScore 4.25
G_M33592_IG50: ; bbWeight=0.99, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov edi, dword ptr [r15+0x08]
@@ -809,24 +809,23 @@ G_M33592_IG51: ; bbWeight=0.49, gcrefRegs=7049 {rax rbx rsi r12 r13 r14},
; gcrRegs -[r15]
mov rdi, 0xD1FFAB1E ; System.Int32
cmp qword ptr [rax], rdi
- je G_M33592_IG77
+ jne G_M33592_IG68
;; size=19 bbWeight=0.49 PerfScore 2.10
-G_M33592_IG52: ; bbWeight=0.21, gcrefRegs=7048 {rbx rsi r12 r13 r14}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rdi, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[rsi] +[rax]
- ;; size=15 bbWeight=0.21 PerfScore 0.26
+G_M33592_IG52: ; bbWeight=0.33, gcrefRegs=7008 {rbx r12 r13 r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rsi]
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=2 bbWeight=0.33 PerfScore 0.08
G_M33592_IG53: ; bbWeight=0.99, gcrefRegs=7009 {rax rbx r12 r13 r14}, byrefRegs=0000 {}, byref
test rax, rax
- jne G_M33592_IG85
+ jne G_M33592_IG139
;; size=9 bbWeight=0.99 PerfScore 1.24
G_M33592_IG54: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rbx]
; GC ptr vars -{V05}
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.UnaryExpression
cmp qword ptr [r13], rdi
- jne G_M33592_IG86
+ jne G_M33592_IG78
;; size=20 bbWeight=1 PerfScore 4.25
G_M33592_IG55: ; bbWeight=0.76, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, byref
mov ebx, dword ptr [r13+0x20]
@@ -846,24 +845,24 @@ G_M33592_IG57: ; bbWeight=0.67, gcrefRegs=5000 {r12 r14}, byrefRegs=0000
; gcrRegs +[r15]
mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.ParameterExpression
cmp qword ptr [r15], rdi
- jne G_M33592_IG93
+ jne G_M33592_IG88
;; size=27 bbWeight=0.67 PerfScore 4.83
G_M33592_IG58: ; bbWeight=0.45, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
mov r13d, 38
;; size=6 bbWeight=0.45 PerfScore 0.11
G_M33592_IG59: ; bbWeight=0.67, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
cmp r13d, 23
- je G_M33592_IG96
+ je G_M33592_IG95
;; size=10 bbWeight=0.67 PerfScore 0.83
G_M33592_IG60: ; bbWeight=0.65, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
- jmp G_M33592_IG78
+ jmp G_M33592_IG79
;; size=5 bbWeight=0.65 PerfScore 1.30
G_M33592_IG61: ; bbWeight=0.33, gcrefRegs=5000 {r12 r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r15]
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
cmp gword ptr [r14+0x10], rdi
- jne G_M33592_IG92
+ jne G_M33592_IG87
mov rdi, 0xD1FFAB1E
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
@@ -950,27 +949,35 @@ G_M33592_IG67: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=18 bbWeight=1 PerfScore 4.25
-G_M33592_IG68: ; bbWeight=0.50, gcVars=00000000000000000000020080000000 {V05 V20}, gcrefRegs=F049 {rax rbx rsi r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx rsi r12 r14-r15]
- ; GC ptr vars +{V05 V20 V31 V41}
+G_M33592_IG68: ; bbWeight=0.16, gcVars=00000000000000000000000080000000 {V05}, gcrefRegs=7048 {rbx rsi r12 r13 r14}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax] +[rbx rsi r12 r14]
+ ; GC ptr vars +{V05 V31}
+ mov rdi, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[rsi] +[rax]
+ jmp G_M33592_IG53
+ ;; size=20 bbWeight=0.16 PerfScore 0.53
+G_M33592_IG69: ; bbWeight=0.50, gcVars=00000000000000000000020080000000 {V05 V20}, gcrefRegs=F049 {rax rbx rsi r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rsi r15]
+ ; GC ptr vars -{V31} +{V20 V41}
mov rdi, 0xD1FFAB1E ; System.RuntimeType
cmp qword ptr [rsi], rdi
- jne SHORT G_M33592_IG70
+ jne SHORT G_M33592_IG71
;; size=15 bbWeight=0.50 PerfScore 2.13
-G_M33592_IG69: ; bbWeight=1.00, gcrefRegs=F049 {rax rbx rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M33592_IG70: ; bbWeight=1.00, gcrefRegs=F049 {rax rbx rsi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
cmp rsi, rax
jne G_M33592_IG37
jmp G_M33592_IG35
;; size=14 bbWeight=1.00 PerfScore 3.25
-G_M33592_IG70: ; bbWeight=0.25, gcrefRegs=F009 {rax rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M33592_IG71: ; bbWeight=0.25, gcrefRegs=F009 {rax rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
mov rcx, gword ptr [rbp-0x68]
; gcrRegs +[rcx]
jmp G_M33592_IG134
;; size=9 bbWeight=0.25 PerfScore 0.75
-G_M33592_IG71: ; bbWeight=1, gcVars=00000000000000000000000080000000 {V05}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M33592_IG72: ; bbWeight=1, gcVars=00000000000000000000000080000000 {V05}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rcx]
- ; GC ptr vars -{V20 V31 V41}
+ ; GC ptr vars -{V20 V41}
mov rdi, rbx
; gcrRegs +[rdi]
mov rax, qword ptr [rbx]
@@ -980,10 +987,10 @@ G_M33592_IG71: ; bbWeight=1, gcVars=00000000000000000000000080000000 {V05
test eax, eax
je G_M33592_IG54
;; size=20 bbWeight=1 PerfScore 8.50
-G_M33592_IG72: ; bbWeight=0.99, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M33592_IG73: ; bbWeight=0.99, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
jmp G_M33592_IG50
;; size=5 bbWeight=0.99 PerfScore 1.98
-G_M33592_IG73: ; bbWeight=0.04, gcVars=00000000000000000000020080000000 {V05 V20}, gcrefRegs=F009 {rax rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M33592_IG74: ; bbWeight=0.04, gcVars=00000000000000000000020080000000 {V05 V20}, gcrefRegs=F009 {rax rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rax]
; GC ptr vars +{V20 V41}
mov rdi, rax
@@ -998,7 +1005,7 @@ G_M33592_IG73: ; bbWeight=0.04, gcVars=00000000000000000000020080000000 {
test eax, eax
jne G_M33592_IG137
;; size=28 bbWeight=0.04 PerfScore 0.40
-G_M33592_IG74: ; bbWeight=0.04, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M33592_IG75: ; bbWeight=0.04, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbp-0x68]
; gcrRegs +[rdi]
mov gword ptr [rbp-0x68], rdi
@@ -1009,7 +1016,7 @@ G_M33592_IG74: ; bbWeight=0.04, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byr
test eax, eax
jne G_M33592_IG137
;; size=29 bbWeight=0.04 PerfScore 0.41
-G_M33592_IG75: ; bbWeight=0.02, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M33592_IG76: ; bbWeight=0.02, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; System.RuntimeType
mov rax, gword ptr [rbp-0x50]
; gcrRegs +[rax]
@@ -1024,97 +1031,12 @@ G_M33592_IG75: ; bbWeight=0.02, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byr
call [System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this]
; gcrRegs -[rax rsi rdi]
;; size=40 bbWeight=0.02 PerfScore 0.24
-G_M33592_IG76: ; bbWeight=0.02, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M33592_IG77: ; bbWeight=0.02, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
jmp G_M33592_IG48
;; size=5 bbWeight=0.02 PerfScore 0.05
-G_M33592_IG77: ; bbWeight=0.29, gcVars=00000000000000000000000080000000 {V05}, gcrefRegs=7008 {rbx r12 r13 r14}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r15]
- ; GC ptr vars -{V04}
- xor rax, rax
- ; gcrRegs +[rax]
- jmp G_M33592_IG53
- ;; size=7 bbWeight=0.29 PerfScore 0.64
-G_M33592_IG78: ; bbWeight=0.65, gcVars=00000000000000000000000000000000 {}, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax r13] +[r15]
- ; GC ptr vars -{V05}
- cmp r13d, 55
- je SHORT G_M33592_IG83
- ;; size=6 bbWeight=0.65 PerfScore 0.81
-G_M33592_IG79: ; bbWeight=0.67, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r15]
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
- cmp rbx, rdi
- je G_M33592_IG62
- ;; size=19 bbWeight=0.67 PerfScore 1.00
-G_M33592_IG80: ; bbWeight=0.64, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- mov rdi, gword ptr [rbp-0x48]
- ; gcrRegs +[rdi]
- mov rax, 0xD1FFAB1E ; System.Linq.Expressions.FullConditionalExpression
- cmp qword ptr [rdi], rax
- jne G_M33592_IG87
- ;; size=23 bbWeight=0.64 PerfScore 3.35
-G_M33592_IG81: ; bbWeight=0.34, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRegs=0000 {}, byref
- mov rdi, gword ptr [rdi+0x10]
- mov rax, qword ptr [rdi]
- mov rcx, 0xD1FFAB1E ; System.Linq.Expressions.DefaultExpression
- cmp rax, rcx
- jne G_M33592_IG104
- ;; size=26 bbWeight=0.34 PerfScore 1.89
-G_M33592_IG82: ; bbWeight=0.17, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRegs=0000 {}, byref
- jmp G_M33592_IG103
- ;; size=5 bbWeight=0.17 PerfScore 0.34
-G_M33592_IG83: ; bbWeight=0.00, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi] +[r15]
- mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.IndexExpression
- cmp qword ptr [r15], rdi
...
+23 (+4.11%) : 138648.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 this [V00,T03] ( 8, 3.75) ref -> r15 this class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope>
-; V01 arg1 [V01,T00] ( 12, 6.23) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 12, 6.08) ref -> rbx class-hnd single-def <System.Object>
; V02 loc0 [V02,T09] ( 3, 0.36) ubyte -> r14
; V03 loc1 [V03,T08] ( 4, 0.36) ref -> [rbp-0x28] class-hnd EH-live spill-single-def <System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey,System.Object]>
; V04 loc2 [V04 ] ( 6, 0.89) ubyte -> [rbp-0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op
@@ -51,73 +51,53 @@ G_M19770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=31 bbWeight=1 PerfScore 7.50
G_M19770_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp r15, rbx
- je SHORT G_M19770_IG12
+ je SHORT G_M19770_IG10
mov rax, rbx
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M19770_IG06
+ je SHORT G_M19770_IG05
;; size=13 bbWeight=1 PerfScore 2.75
-G_M19770_IG03: ; bbWeight=0.50, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG03: ; bbWeight=0.50, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; Microsoft.Extensions.Options.UnnamedOptionsManager`1[Microsoft.Extensions.Logging.LoggerFactoryOptions]
cmp qword ptr [rax], rsi
- je SHORT G_M19770_IG05
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M19770_IG04: ; bbWeight=0.21, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ jne G_M19770_IG23
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M19770_IG04: ; bbWeight=0.37, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- mov rsi, rbx
- ; gcrRegs +[rsi]
- mov rdi, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[rsi] +[rax]
- ; gcr arg pop 0
- jmp SHORT G_M19770_IG06
- ;; size=20 bbWeight=0.21 PerfScore 0.73
-G_M19770_IG05: ; bbWeight=0.29, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=2 bbWeight=0.37 PerfScore 0.09
+G_M19770_IG05: ; bbWeight=1, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
+ test rax, rax
+ jne SHORT G_M19770_IG12
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M19770_IG06: ; bbWeight=0.82, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ mov rax, rbx
+ ; gcrRegs +[rax]
+ test rax, rax
+ je SHORT G_M19770_IG09
+ ;; size=8 bbWeight=0.82 PerfScore 1.23
+G_M19770_IG07: ; bbWeight=0.41, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref
+ mov rsi, 0xD1FFAB1E ; Microsoft.Extensions.Options.IValidateOptions`1[Microsoft.Extensions.Hosting.HostOptions][]
+ cmp qword ptr [rax], rsi
+ jne G_M19770_IG22
+ ;; size=19 bbWeight=0.41 PerfScore 1.75
+G_M19770_IG08: ; bbWeight=0.29, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
xor rax, rax
; gcrRegs +[rax]
;; size=2 bbWeight=0.29 PerfScore 0.07
-G_M19770_IG06: ; bbWeight=1, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG09: ; bbWeight=0.82, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
test rax, rax
- jne SHORT G_M19770_IG14
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M19770_IG07: ; bbWeight=0.82, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov rax, rbx
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M19770_IG11
- ;; size=8 bbWeight=0.82 PerfScore 1.23
-G_M19770_IG08: ; bbWeight=0.41, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rsi, 0xD1FFAB1E ; Microsoft.Extensions.Options.IValidateOptions`1[Microsoft.Extensions.Hosting.HostOptions][]
- cmp qword ptr [rax], rsi
- je SHORT G_M19770_IG10
- ;; size=15 bbWeight=0.41 PerfScore 1.75
-G_M19770_IG09: ; bbWeight=0.20, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov rsi, rbx
- ; gcrRegs +[rsi]
- mov rdi, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[rsi] +[rax]
- ; gcr arg pop 0
- jmp SHORT G_M19770_IG11
- ;; size=20 bbWeight=0.20 PerfScore 0.69
-G_M19770_IG10: ; bbWeight=0.21, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=2 bbWeight=0.21 PerfScore 0.05
-G_M19770_IG11: ; bbWeight=0.82, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
- test rax, rax
- jne SHORT G_M19770_IG14
+ jne SHORT G_M19770_IG12
;; size=5 bbWeight=0.82 PerfScore 1.03
-G_M19770_IG12: ; bbWeight=0.82, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M19770_IG10: ; bbWeight=0.82, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax r15]
mov rax, rbx
; gcrRegs +[rax]
;; size=3 bbWeight=0.82 PerfScore 0.21
-G_M19770_IG13: ; bbWeight=0.82, epilog, nogc, extend
+G_M19770_IG11: ; bbWeight=0.82, epilog, nogc, extend
add rsp, 24
pop rbx
pop r14
@@ -125,7 +105,7 @@ G_M19770_IG13: ; bbWeight=0.82, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=0.82 PerfScore 2.67
-G_M19770_IG14: ; bbWeight=0.18, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
+G_M19770_IG12: ; bbWeight=0.18, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] +[r15]
xor r14d, r14d
mov rdi, gword ptr [r15+0x10]
@@ -135,9 +115,9 @@ G_M19770_IG14: ; bbWeight=0.18, gcVars=0000000000000000 {}, gcrefRegs=800
xor esi, esi
mov dword ptr [rbp-0x20], esi
;; size=16 bbWeight=0.18 PerfScore 0.80
-G_M19770_IG15: ; bbWeight=0.18, gcVars=0000000000000100 {V03}, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M19770_IG13: ; bbWeight=0.18, gcVars=0000000000000100 {V03}, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, gcvars, byref, isz
cmp byte ptr [rbp-0x20], 0
- jne G_M19770_IG20
+ jne G_M19770_IG18
lea rsi, [rbp-0x20]
call <unknown method>
; gcrRegs -[rdi]
@@ -146,11 +126,11 @@ G_M19770_IG15: ; bbWeight=0.18, gcVars=0000000000000100 {V03}, gcrefRegs=
call [<unknown method>]
; gcr arg pop 0
cmp byte ptr [r15+0x20], 0
- jne SHORT G_M19770_IG19
+ jne SHORT G_M19770_IG17
cmp gword ptr [r15+0x08], 0
- je SHORT G_M19770_IG18
+ je SHORT G_M19770_IG16
;; size=44 bbWeight=0.18 PerfScore 2.95
-G_M19770_IG16: ; bbWeight=0.18, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG14: ; bbWeight=0.18, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [r15+0x08]
; gcrRegs +[rdi]
inc dword ptr [rdi+0x14]
@@ -158,9 +138,9 @@ G_M19770_IG16: ; bbWeight=0.18, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
; gcrRegs +[rdx]
mov esi, dword ptr [rdi+0x10]
cmp dword ptr [rdx+0x08], esi
- jbe SHORT G_M19770_IG21
+ jbe SHORT G_M19770_IG19
;; size=19 bbWeight=0.18 PerfScore 2.32
-G_M19770_IG17: ; bbWeight=0.13, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG15: ; bbWeight=0.13, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
lea eax, [rsi+0x01]
mov dword ptr [rdi+0x10], eax
@@ -170,9 +150,9 @@ G_M19770_IG17: ; bbWeight=0.13, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0
call CORINFO_HELP_ARRADDR_ST
; gcrRegs -[rdx rdi]
; gcr arg pop 0
- jmp SHORT G_M19770_IG22
+ jmp SHORT G_M19770_IG20
;; size=22 bbWeight=0.13 PerfScore 0.69
-G_M19770_IG18: ; bbWeight=0.04, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG16: ; bbWeight=0.04, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r15]
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
@@ -189,20 +169,20 @@ G_M19770_IG18: ; bbWeight=0.04, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- jmp SHORT G_M19770_IG16
+ jmp SHORT G_M19770_IG14
;; size=43 bbWeight=0.04 PerfScore 0.22
-G_M19770_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG17: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
mov r14d, 1
- jmp SHORT G_M19770_IG22
+ jmp SHORT G_M19770_IG20
;; size=8 bbWeight=0 PerfScore 0.00
-G_M19770_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19770_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
call [System.Threading.Monitor:ThrowLockTakenException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M19770_IG21: ; bbWeight=0.05, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+G_M19770_IG19: ; bbWeight=0.05, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx rdi]
mov rsi, rbx
; gcrRegs +[rsi]
@@ -211,9 +191,9 @@ G_M19770_IG21: ; bbWeight=0.05, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcr arg pop 0
nop
;; size=10 bbWeight=0.05 PerfScore 0.16
-G_M19770_IG22: ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG20: ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbp-0x20], 0
- je SHORT G_M19770_IG23
+ je SHORT G_M19770_IG21
mov rdi, gword ptr [rbp-0x28]
; gcrRegs +[rdi]
; GC ptr vars -{V03}
@@ -221,28 +201,33 @@ G_M19770_IG22: ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rdi]
; gcr arg pop 0
;; size=15 bbWeight=0.18 PerfScore 0.89
-G_M19770_IG23: ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M19770_IG21: ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
test r14d, r14d
- je G_M19770_IG12
- ;; size=9 bbWeight=0.18 PerfScore 0.22
-G_M19770_IG24: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne G_M19770_IG26
+ jmp G_M19770_IG10
+ ;; size=14 bbWeight=0.18 PerfScore 0.58
+G_M19770_IG22: ; bbWeight=0.12, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r15]
mov rsi, rbx
; gcrRegs +[rsi]
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_ISINSTANCEOFINTERFACE
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
- test rax, rax
- je SHORT G_M19770_IG25
- mov rdi, rax
- ; gcrRegs +[rdi]
- mov r11, 0xD1FFAB1E ; code for <unknown method>
- call [r11]<unknown method>
- ; gcrRegs -[rax rdi]
+ jmp G_M19770_IG09
+ ;; size=23 bbWeight=0.12 PerfScore 0.43
+G_M19770_IG23: ; bbWeight=0.13, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ mov rsi, rbx
+ ; gcrRegs +[rsi]
+ mov rdi, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
- jmp SHORT G_M19770_IG26
...
+10 (+5.10%) : 87154.dasm - Microsoft.CodeAnalysis.CSharp.BoundNode:get_HasAnyErrors():ubyte:this (Tier1)
@@ -9,7 +9,7 @@
; 2 inlinees with PGO data; 9 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 5.18) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundNode>
+; V00 this [V00,T01] ( 6, 5.14) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundNode>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[ubyte]>
;* V02 loc1 [V02 ] ( 0, 0 ) ubyte -> zero-ref
;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[ubyte]>
@@ -36,7 +36,7 @@
; V24 tmp20 [V24,T07] ( 3, 1.98) ubyte -> rbx "field V10.hasValue (fldOffset=0x0)" P-INDEP
; V25 tmp21 [V25,T08] ( 3, 1.98) ubyte -> r15 "field V10.value (fldOffset=0x1)" P-INDEP
; V26 cse0 [V26,T05] ( 3, 2.99) ref -> rdi "CSE - aggressive"
-; V27 rat0 [V27,T00] ( 5, 7.32) ref -> r15 class-hnd "replacement local" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V27 rat0 [V27,T00] ( 5, 7.23) ref -> r15 class-hnd "replacement local" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;
; Lcl frame size = 0
@@ -48,10 +48,10 @@ G_M41946_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov rbx, rdi
; gcrRegs +[rbx]
;; size=12 bbWeight=1 PerfScore 3.75
-G_M41946_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M41946_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
test byte ptr [rbx+0x10], 1
- jne SHORT G_M41946_IG12
- ;; size=6 bbWeight=1 PerfScore 4.00
+ jne G_M41946_IG16
+ ;; size=10 bbWeight=1 PerfScore 4.00
G_M41946_IG03: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
@@ -66,21 +66,46 @@ G_M41946_IG04: ; bbWeight=1.00, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
call [Microsoft.CodeAnalysis.SyntaxNode:HasErrorsSlow():ubyte:this]
; gcrRegs -[rax rdi]
test eax, eax
- jne SHORT G_M41946_IG12
- ;; size=20 bbWeight=1.00 PerfScore 10.22
+ jne G_M41946_IG16
+ ;; size=24 bbWeight=1.00 PerfScore 10.22
G_M41946_IG05: ; bbWeight=0.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov r15, rbx
; gcrRegs +[r15]
test r15, r15
- je SHORT G_M41946_IG08
+ je SHORT G_M41946_IG07
;; size=8 bbWeight=0.99 PerfScore 1.49
G_M41946_IG06: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rsi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundLiteral
cmp qword ptr [r15], rsi
- je SHORT G_M41946_IG08
+ jne SHORT G_M41946_IG11
;; size=15 bbWeight=0.50 PerfScore 2.10
-G_M41946_IG07: ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M41946_IG07: ; bbWeight=0.99, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx]
+ test r15, r15
+ je SHORT G_M41946_IG18
+ mov rdi, gword ptr [r15+0x18]
+ ; gcrRegs +[rdi]
+ test rdi, rdi
+ je SHORT G_M41946_IG10
+ ;; size=14 bbWeight=0.99 PerfScore 4.46
+G_M41946_IG08: ; bbWeight=0.90, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
+ mov rax, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric
+ cmp qword ptr [rdi], rax
+ jne SHORT G_M41946_IG12
+ ;; size=15 bbWeight=0.90 PerfScore 3.82
+G_M41946_IG09: ; bbWeight=0.84, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
+ mov ebx, 11
+ jmp SHORT G_M41946_IG13
+ ;; size=7 bbWeight=0.84 PerfScore 1.88
+G_M41946_IG10: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ xor ebx, ebx
+ xor r15d, r15d
+ jmp SHORT G_M41946_IG14
+ ;; size=7 bbWeight=0.09 PerfScore 0.23
+G_M41946_IG11: ; bbWeight=0.15, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rbx]
mov rsi, rbx
; gcrRegs +[rsi]
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundExpression
@@ -88,68 +113,44 @@ G_M41946_IG07: ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rbx rsi] +[rax]
mov r15, rax
; gcrRegs +[r15]
- ;; size=21 bbWeight=0.19 PerfScore 0.34
-G_M41946_IG08: ; bbWeight=0.99, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- test r15, r15
- je SHORT G_M41946_IG18
- mov rdi, gword ptr [r15+0x18]
- ; gcrRegs +[rdi]
- test rdi, rdi
- je SHORT G_M41946_IG11
- ;; size=14 bbWeight=0.99 PerfScore 4.46
-G_M41946_IG09: ; bbWeight=0.90, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r15]
- mov rax, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric
- cmp qword ptr [rdi], rax
- jne SHORT G_M41946_IG14
- ;; size=15 bbWeight=0.90 PerfScore 3.82
-G_M41946_IG10: ; bbWeight=0.84, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
- mov ebx, 11
- jmp SHORT G_M41946_IG15
- ;; size=7 bbWeight=0.84 PerfScore 1.88
-G_M41946_IG11: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- xor ebx, ebx
- xor r15d, r15d
- jmp SHORT G_M41946_IG16
- ;; size=7 bbWeight=0.09 PerfScore 0.23
-G_M41946_IG12: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov eax, 1
- ;; size=5 bbWeight=0.01 PerfScore 0.00
-G_M41946_IG13: ; bbWeight=0.01, epilog, nogc, extend
- pop rbx
- pop r15
- pop rbp
- ret
- ;; size=5 bbWeight=0.01 PerfScore 0.02
-G_M41946_IG14: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[rdi]
+ jmp SHORT G_M41946_IG07
+ ;; size=23 bbWeight=0.15 PerfScore 0.56
+G_M41946_IG12: ; bbWeight=0.06, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax r15] +[rdi]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x58]
call [rax]<unknown method>
; gcrRegs -[rdi]
mov ebx, eax
;; size=11 bbWeight=0.06 PerfScore 0.46
-G_M41946_IG15: ; bbWeight=0.90, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M41946_IG13: ; bbWeight=0.90, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor r15d, r15d
cmp ebx, 4
sete r15b
mov ebx, 1
;; size=15 bbWeight=0.90 PerfScore 1.57
-G_M41946_IG16: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M41946_IG14: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
cmp r15b, 1
sete al
movzx rcx, bl
and eax, ecx
;; size=14 bbWeight=0.99 PerfScore 1.98
-G_M41946_IG17: ; bbWeight=0.99, epilog, nogc, extend
+G_M41946_IG15: ; bbWeight=0.99, epilog, nogc, extend
pop rbx
pop r15
pop rbp
ret
;; size=5 bbWeight=0.99 PerfScore 2.48
+G_M41946_IG16: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.01 PerfScore 0.00
+G_M41946_IG17: ; bbWeight=0.01, epilog, nogc, extend
+ pop rbx
+ pop r15
+ pop rbp
+ ret
+ ;; size=5 bbWeight=0.01 PerfScore 0.02
G_M41946_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax
;; size=2 bbWeight=0 PerfScore 0.00
@@ -160,7 +161,7 @@ G_M41946_IG19: ; bbWeight=0, epilog, nogc, extend
ret
;; size=5 bbWeight=0 PerfScore 0.00
-; Total bytes of code 196, prolog size 9, PerfScore 42.04, instruction count 66, allocated bytes for code 196 (MethodHash=090c5c25) for method Microsoft.CodeAnalysis.CSharp.BoundNode:get_HasAnyErrors():ubyte:this (Tier1)
+; Total bytes of code 206, prolog size 9, PerfScore 42.26, instruction count 67, allocated bytes for code 206 (MethodHash=090c5c25) for method Microsoft.CodeAnalysis.CSharp.BoundNode:get_HasAnyErrors():ubyte:this (Tier1)
; ============================================================
Unwind Info:
+18 (+5.56%) : 129399.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:Dispose():this (Tier1)
@@ -19,12 +19,12 @@
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.Extensions.DependencyInjection.Specification.Fakes.FakeService>
; V08 tmp4 [V08,T08] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
; V09 tmp5 [V09,T02] ( 3, 5.90) ref -> rsi "arr expr"
-; V10 tmp6 [V10,T06] ( 3, 4.29) ref -> rsi "argument with side effect"
+; V10 tmp6 [V10,T06] ( 3, 4.26) ref -> rsi "argument with side effect"
; V11 tmp7 [V11,T10] ( 2, 0 ) ref -> rdi "argument with side effect"
; V12 tmp8 [V12,T11] ( 2, 0 ) ref -> rsi "argument with side effect"
; V13 tmp9 [V13,T12] ( 2, 0 ) ref -> rsi "argument with side effect"
; V14 tmp10 [V14,T13] ( 2, 0 ) ref -> rsi "argument with side effect"
-; V15 rat0 [V15,T00] ( 5, 7.23) ref -> rdi class-hnd "replacement local" <System.IDisposable>
+; V15 rat0 [V15,T00] ( 5, 7.21) ref -> rdi class-hnd "replacement local" <System.IDisposable>
;
; Lcl frame size = 0
@@ -46,15 +46,15 @@ G_M1675_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byre
test rbx, rbx
je G_M1675_IG11
;; size=18 bbWeight=1 PerfScore 4.50
-G_M1675_IG03: ; bbWeight=0.44, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M1675_IG03: ; bbWeight=0.44, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov r15d, dword ptr [rbx+0x10]
dec r15d
- js SHORT G_M1675_IG11
- ;; size=9 bbWeight=0.44 PerfScore 1.44
+ js G_M1675_IG11
+ ;; size=13 bbWeight=0.44 PerfScore 1.44
G_M1675_IG04: ; bbWeight=0.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r15d, dword ptr [rbx+0x10]
- jae SHORT G_M1675_IG12
+ jae G_M1675_IG12
mov rsi, gword ptr [rbx+0x08]
; gcrRegs +[rsi]
cmp r15d, dword ptr [rsi+0x08]
@@ -64,46 +64,48 @@ G_M1675_IG04: ; bbWeight=0.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
mov rdi, rsi
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M1675_IG07
- ;; size=36 bbWeight=0.98 PerfScore 13.52
+ je SHORT G_M1675_IG06
+ ;; size=40 bbWeight=0.98 PerfScore 13.52
G_M1675_IG05: ; bbWeight=0.49, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rax, 0xD1FFAB1E ; Microsoft.Extensions.DependencyInjection.Specification.Fakes.FakeService
cmp qword ptr [rdi], rax
- je SHORT G_M1675_IG07
+ jne SHORT G_M1675_IG08
;; size=15 bbWeight=0.49 PerfScore 2.09
-G_M1675_IG06: ; bbWeight=0.18, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
+G_M1675_IG06: ; bbWeight=0.98, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rsi]
+ test rdi, rdi
+ je G_M1675_IG14
+ mov r11, 0xD1FFAB1E ; Microsoft.Extensions.DependencyInjection.Specification.Fakes.FakeService
+ cmp qword ptr [rdi], r11
+ jne SHORT G_M1675_IG09
+ ;; size=24 bbWeight=0.98 PerfScore 5.41
+G_M1675_IG07: ; bbWeight=0.66, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+ cmp byte ptr [rdi+0x10], 0
+ jne SHORT G_M1675_IG13
+ mov byte ptr [rdi+0x10], 1
+ jmp SHORT G_M1675_IG10
+ ;; size=12 bbWeight=0.66 PerfScore 4.61
+G_M1675_IG08: ; bbWeight=0.16, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi] +[rsi]
mov rdi, 0xD1FFAB1E ; System.IDisposable
call CORINFO_HELP_ISINSTANCEOFINTERFACE
; gcrRegs -[rsi] +[rax]
; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]
- ;; size=18 bbWeight=0.18 PerfScore 0.27
-G_M1675_IG07: ; bbWeight=0.98, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- test rdi, rdi
- je SHORT G_M1675_IG14
- mov r11, 0xD1FFAB1E ; Microsoft.Extensions.DependencyInjection.Specification.Fakes.FakeService
- cmp qword ptr [rdi], r11
- jne SHORT G_M1675_IG09
- ;; size=20 bbWeight=0.98 PerfScore 5.41
-G_M1675_IG08: ; bbWeight=0.66, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
- cmp byte ptr [rdi+0x10], 0
- jne SHORT G_M1675_IG13
- mov byte ptr [rdi+0x10], 1
- jmp SHORT G_M1675_IG10
- ;; size=12 bbWeight=0.66 PerfScore 4.61
+ jmp SHORT G_M1675_IG06
+ ;; size=20 bbWeight=0.16 PerfScore 0.57
G_M1675_IG09: ; bbWeight=0.98, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
mov r11, 0xD1FFAB1E ; code for <unknown method>
call [r11]<unknown method>
; gcrRegs -[rdi]
; gcr arg pop 0
;; size=13 bbWeight=0.98 PerfScore 3.19
-G_M1675_IG10: ; bbWeight=0.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M1675_IG10: ; bbWeight=0.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
dec r15d
- jns SHORT G_M1675_IG04
- ;; size=5 bbWeight=0.98 PerfScore 1.23
+ jns G_M1675_IG04
+ ;; size=9 bbWeight=0.98 PerfScore 1.23
G_M1675_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx]
pop rbx
@@ -192,7 +194,7 @@ G_M1675_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 324, prolog size 13, PerfScore 45.25, instruction count 82, allocated bytes for code 324 (MethodHash=713bf974) for method Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:Dispose():this (Tier1)
+; Total bytes of code 342, prolog size 13, PerfScore 45.55, instruction count 83, allocated bytes for code 342 (MethodHash=713bf974) for method Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:Dispose():this (Tier1)
; ============================================================
Unwind Info:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
Details
Improvements/regressions per collection
Collection
Contexts with diffs
Improvements
Regressions
Same size
Improvements (bytes)
Regressions (bytes)
benchmarks.run.linux.x64.checked.mch
0
0
0
0
-0
+0
benchmarks.run_pgo.linux.x64.checked.mch
1
0
1
0
-0
+60
benchmarks.run_tiered.linux.x64.checked.mch
0
0
0
0
-0
+0
coreclr_tests.run.linux.x64.checked.mch
2
2
0
0
-64
+0
libraries.crossgen2.linux.x64.checked.mch
0
0
0
0
-0
+0
libraries.pmi.linux.x64.checked.mch
0
0
0
0
-0
+0
libraries_tests.run.linux.x64.Release.mch
33
2
28
3
-26
+260
librariestestsnotieredcompilation.run.linux.x64.Release.mch
0
0
0
0
-0
+0
realworld.run.linux.x64.checked.mch
0
0
0
0
-0
+0
smoke_tests.nativeaot.linux.x64.checked.mch
0
0
0
0
-0
+0
36
4
29
3
-90
+320
Context information
Collection
Diffed contexts
MinOpts
FullOpts
Missed, base
Missed, diff
benchmarks.run.linux.x64.checked.mch
34,758
3,164
31,594
4 (0.01%)
241 (0.69%)
benchmarks.run_pgo.linux.x64.checked.mch
155,813
58,399
97,414
151 (0.10%)
307 (0.20%)
benchmarks.run_tiered.linux.x64.checked.mch
58,811
44,312
14,499
2 (0.00%)
79 (0.13%)
coreclr_tests.run.linux.x64.checked.mch
693,643
429,241
264,402
329 (0.05%)
770 (0.11%)
libraries.crossgen2.linux.x64.checked.mch
233,626
15
233,611
0 (0.00%)
0 (0.00%)
libraries.pmi.linux.x64.checked.mch
293,508
6
293,502
8 (0.00%)
1,914 (0.65%)
libraries_tests.run.linux.x64.Release.mch
755,639
495,271
260,368
3,121 (0.41%)
4,304 (0.57%)
librariestestsnotieredcompilation.run.linux.x64.Release.mch
302,520
21,873
280,647
10 (0.00%)
2,095 (0.69%)
realworld.run.linux.x64.checked.mch
32,827
39
32,788
3 (0.01%)
340 (1.03%)
smoke_tests.nativeaot.linux.x64.checked.mch
27,438
9
27,429
0 (0.00%)
2 (0.01%)
2,588,583
1,052,329
1,536,254
3,628 (0.14%)
10,052 (0.39%)
jit-analyze output
benchmarks.run_pgo.linux.x64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 68442860 (overridden on cmd)
Total bytes of diff: 68442920 (overridden on cmd)
Total bytes of delta: 60 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
60 : 141275.dasm (17.96 % of base)
1 total files with Code Size differences (0 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
60 (17.96 % of base) : 141275.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)
Top method regressions (percentages):
60 (17.96 % of base) : 141275.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)
1 total methods with Code Size differences (0 improved, 1 regressed).
coreclr_tests.run.linux.x64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 458922977 (overridden on cmd)
Total bytes of diff: 458922913 (overridden on cmd)
Total bytes of delta: -64 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-35 : 415741.dasm (-2.77 % of base)
-29 : 420658.dasm (-2.22 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-35 (-2.77 % of base) : 415741.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-29 (-2.22 % of base) : 420658.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
Top method improvements (percentages):
-35 (-2.77 % of base) : 415741.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-29 (-2.22 % of base) : 420658.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
2 total methods with Code Size differences (2 improved, 0 regressed).
libraries_tests.run.linux.x64.Release.mch
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 332086382 (overridden on cmd)
Total bytes of diff: 332086616 (overridden on cmd)
Total bytes of delta: 234 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
33 : 222080.dasm (2.99 % of base)
31 : 520288.dasm (0.60 % of base)
23 : 138648.dasm (4.11 % of base)
18 : 129399.dasm (5.56 % of base)
12 : 187938.dasm (1.61 % of base)
12 : 370134.dasm (1.09 % of base)
12 : 485510.dasm (1.57 % of base)
10 : 505893.dasm (0.56 % of base)
10 : 625763.dasm (0.61 % of base)
10 : 653689.dasm (0.61 % of base)
10 : 87154.dasm (5.10 % of base)
9 : 299054.dasm (0.73 % of base)
9 : 32993.dasm (1.80 % of base)
9 : 371128.dasm (1.27 % of base)
9 : 197421.dasm (2.52 % of base)
6 : 185247.dasm (2.84 % of base)
6 : 627655.dasm (1.17 % of base)
5 : 198475.dasm (0.29 % of base)
5 : 203028.dasm (0.38 % of base)
4 : 728593.dasm (1.65 % of base)
Top file improvements (bytes):
-15 : 52289.dasm (-1.31 % of base)
-11 : 558185.dasm (-1.19 % of base)
30 total files with Code Size differences (2 improved, 28 regressed), 3 unchanged.
Top method regressions (bytes):
33 (2.99 % of base) : 222080.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
31 (0.60 % of base) : 520288.dasm - System.Runtime.Serialization.Formatters.Tests.EqualityExtensions:CheckSequenceEquals(System.Collections.IEnumerable,System.Collections.IEnumerable,ubyte) (Tier1)
23 (4.11 % of base) : 138648.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
18 (5.56 % of base) : 129399.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:Dispose():this (Tier1)
12 (1.61 % of base) : 187938.dasm - Microsoft.Cci.MetadataWriter:ResolveEntityHandleFromPseudoToken(int):System.Reflection.Metadata.EntityHandle:this (Tier1)
12 (1.57 % of base) : 485510.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
12 (1.09 % of base) : 370134.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
10 (5.10 % of base) : 87154.dasm - Microsoft.CodeAnalysis.CSharp.BoundNode:get_HasAnyErrors():ubyte:this (Tier1)
10 (0.56 % of base) : 505893.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
10 (0.61 % of base) : 625763.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
10 (0.61 % of base) : 653689.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
9 (1.80 % of base) : 32993.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
9 (2.52 % of base) : 197421.dasm - System.Convert:ToString(System.Object,System.IFormatProvider):System.String (Tier1)
9 (1.27 % of base) : 371128.dasm - System.Linq.Enumerable:TryGetLast[int](System.Collections.Generic.IEnumerable`1[int],byref):int (Tier1)
9 (0.73 % of base) : 299054.dasm - System.Linq.Expressions.Compiler.VariableBinder:MergeScopes(System.Linq.Expressions.Expression):System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]:this (Tier1)
6 (2.84 % of base) : 185247.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
6 (1.17 % of base) : 627655.dasm - System.Text.Json.ReadStack:<JsonPath>g__AppendStackFrame|22_0(System.Text.StringBuilder,byref) (Tier1)
5 (0.29 % of base) : 198475.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToInteger(System.Object):int (Tier1)
5 (0.38 % of base) : 203028.dasm - Microsoft.VisualBasic.CompilerServices.StringType:FromObject(System.Object):System.String (Tier1)
4 (1.65 % of base) : 728593.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:ShouldSkipSyntaxNodeAnalysis(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol):ubyte:this (Tier1)
Top method improvements (bytes):
-15 (-1.31 % of base) : 52289.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:<EnsureRequiredMembersCalculated>g__tryCalculateRequiredMembers|191_0(byref):ubyte:this (Tier1)
-11 (-1.19 % of base) : 558185.dasm - System.Linq.Expressions.Compiler.VariableBinder:MergeScopes(System.Linq.Expressions.Expression):System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]:this (Tier1)
Top method regressions (percentages):
18 (5.56 % of base) : 129399.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:Dispose():this (Tier1)
10 (5.10 % of base) : 87154.dasm - Microsoft.CodeAnalysis.CSharp.BoundNode:get_HasAnyErrors():ubyte:this (Tier1)
23 (4.11 % of base) : 138648.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
33 (2.99 % of base) : 222080.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
6 (2.84 % of base) : 185247.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
9 (2.52 % of base) : 197421.dasm - System.Convert:ToString(System.Object,System.IFormatProvider):System.String (Tier1)
9 (1.80 % of base) : 32993.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
4 (1.65 % of base) : 728593.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:ShouldSkipSyntaxNodeAnalysis(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol):ubyte:this (Tier1)
12 (1.61 % of base) : 187938.dasm - Microsoft.Cci.MetadataWriter:ResolveEntityHandleFromPseudoToken(int):System.Reflection.Metadata.EntityHandle:this (Tier1)
12 (1.57 % of base) : 485510.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
9 (1.27 % of base) : 371128.dasm - System.Linq.Enumerable:TryGetLast[int](System.Collections.Generic.IEnumerable`1[int],byref):int (Tier1)
2 (1.25 % of base) : 693278.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:Equals(Microsoft.CodeAnalysis.CSharp.Symbol,int):ubyte:this (Tier1)
6 (1.17 % of base) : 627655.dasm - System.Text.Json.ReadStack:<JsonPath>g__AppendStackFrame|22_0(System.Text.StringBuilder,byref) (Tier1)
12 (1.09 % of base) : 370134.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
9 (0.73 % of base) : 299054.dasm - System.Linq.Expressions.Compiler.VariableBinder:MergeScopes(System.Linq.Expressions.Expression):System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]:this (Tier1)
10 (0.61 % of base) : 625763.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
10 (0.61 % of base) : 653689.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
31 (0.60 % of base) : 520288.dasm - System.Runtime.Serialization.Formatters.Tests.EqualityExtensions:CheckSequenceEquals(System.Collections.IEnumerable,System.Collections.IEnumerable,ubyte) (Tier1)
10 (0.56 % of base) : 505893.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
3 (0.51 % of base) : 129348.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
Top method improvements (percentages):
-15 (-1.31 % of base) : 52289.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:<EnsureRequiredMembersCalculated>g__tryCalculateRequiredMembers|191_0(byref):ubyte:this (Tier1)
-11 (-1.19 % of base) : 558185.dasm - System.Linq.Expressions.Compiler.VariableBinder:MergeScopes(System.Linq.Expressions.Expression):System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]:this (Tier1)
30 total methods with Code Size differences (2 improved, 28 regressed).
Diffs are based on 2,256,559 contexts (930,876 MinOpts, 1,325,683 FullOpts).
MISSED contexts: base: 3,256 (0.14%), diff: 9,406 (0.42%)
Overall (-16 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch
34,446,500
+72
coreclr_tests.run.osx.arm64.checked.mch
484,502,820
-84
libraries_tests.run.osx.arm64.Release.mch
311,678,540
-4
FullOpts (-16 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch
17,973,220
+72
coreclr_tests.run.osx.arm64.checked.mch
152,196,364
-84
libraries_tests.run.osx.arm64.Release.mch
107,738,036
-4
Example diffs
benchmarks.run_pgo.osx.arm64.checked.mch
+36 (+7.89%) : 73778.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)
@@ -10,54 +10,56 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 8, 6.00) ref -> x19 this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V01 loc0 [V01,T01] ( 5, 3.00) int -> x20
-; V02 loc1 [V02,T17] ( 3, 0.00) ref -> x21 class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-; V03 loc2 [V03,T03] ( 7, 2.50) int -> x21
-; V04 loc3 [V04,T11] ( 7, 0.00) int -> x2
+; V01 loc0 [V01,T02] ( 5, 3.00) int -> x20
+; V02 loc1 [V02,T19] ( 3, 0.00) ref -> x22 class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V03 loc2 [V03,T04] ( 7, 2.50) int -> x21
+; V04 loc3 [V04,T13] ( 7, 0.00) int -> x2
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T18] ( 3, 0.00) ref -> x1 single-def "CASTCLASS eval op1"
-; V07 tmp2 [V07,T24] ( 3, 0.00) long -> x2 "fgMakeTemp is creating a new local variable"
-; V08 tmp3 [V08,T13] ( 5, 0.00) ref -> x21 class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-; V09 tmp4 [V09,T14] ( 2, 0.00) ref -> x4 class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
-; V10 tmp5 [V10,T06] ( 4, 2 ) int -> x20 "Inline return value spill temp"
-; V11 tmp6 [V11,T08] ( 3, 1.50) ref -> x0 class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-; V12 tmp7 [V12,T09] ( 3, 1.00) ref -> x0 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
-; V13 tmp8 [V13,T05] ( 2, 2.00) ref -> x0 "CASTCLASS eval op1"
+; V06 tmp1 [V06,T20] ( 3, 0.00) ref -> x1 single-def "CASTCLASS eval op1"
+; V07 tmp2 [V07,T26] ( 3, 0.00) long -> x2 "fgMakeTemp is creating a new local variable"
+; V08 tmp3 [V08,T15] ( 5, 0.00) ref -> x22 class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V09 tmp4 [V09,T16] ( 2, 0.00) ref -> x4 class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
+; V10 tmp5 [V10,T08] ( 4, 2 ) int -> x20 "Inline return value spill temp"
+; V11 tmp6 [V11,T10] ( 3, 1.50) ref -> x0 class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V12 tmp7 [V12,T11] ( 3, 1.00) ref -> x0 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+; V13 tmp8 [V13,T07] ( 2, 2.00) ref -> x0 "CASTCLASS eval op1"
;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
-; V15 tmp10 [V15,T07] ( 4, 1.75) ref -> x0 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
-; V16 tmp11 [V16,T04] ( 3, 2.00) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-; V17 tmp12 [V17,T10] ( 4, 0.00) int -> x2 "Inlining Arg"
-; V18 tmp13 [V18,T27] ( 3, 0 ) ref -> x0 "arr expr"
-; V19 tmp14 [V19,T12] ( 3, 0.00) ref -> x1 "arr expr"
-;* V20 tmp15 [V20,T26] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V21 tmp16 [V21,T15] ( 2, 0.00) ref -> x0 "argument with side effect"
-; V22 tmp17 [V22,T16] ( 2, 0.00) ref -> x1 "argument with side effect"
-; V23 cse0 [V23,T21] ( 3, 0.00) int -> x0 "CSE - conservative"
-; V24 cse1 [V24,T19] ( 2, 0.00) ref -> x1 "CSE - conservative"
-; V25 cse2 [V25,T25] ( 3, 0.00) int -> x19 "CSE - conservative"
-; V26 cse3 [V26,T22] ( 3, 0.00) int -> x3 "CSE - conservative"
-; V27 cse4 [V27,T20] ( 3, 0.00) byref -> x1 "CSE - conservative"
-; V28 cse5 [V28,T23] ( 3, 0.00) int -> x20 "CSE - conservative"
-; V29 cse6 [V29,T02] ( 3, 2.75) ref -> x1 "CSE - aggressive"
+; V15 tmp10 [V15,T09] ( 4, 1.75) ref -> x0 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
+; V16 tmp11 [V16,T06] ( 3, 2.00) ref -> x22 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V17 tmp12 [V17,T12] ( 4, 0.00) int -> x2 "Inlining Arg"
+; V18 tmp13 [V18,T29] ( 3, 0 ) ref -> x0 "arr expr"
+; V19 tmp14 [V19,T14] ( 3, 0.00) ref -> x1 "arr expr"
+;* V20 tmp15 [V20,T28] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V21 tmp16 [V21,T17] ( 2, 0.00) ref -> x0 "argument with side effect"
+; V22 tmp17 [V22,T18] ( 2, 0.00) ref -> x1 "argument with side effect"
+; V23 cse0 [V23,T23] ( 3, 0.00) int -> x0 "CSE - conservative"
+; V24 cse1 [V24,T21] ( 2, 0.00) ref -> x1 "CSE - conservative"
+; V25 cse2 [V25,T27] ( 3, 0.00) int -> x21 "CSE - conservative"
+; V26 cse3 [V26,T24] ( 3, 0.00) int -> x3 "CSE - conservative"
+; V27 cse4 [V27,T22] ( 3, 0.00) byref -> x1 "CSE - conservative"
+; V28 cse5 [V28,T25] ( 3, 0.00) int -> x19 "CSE - conservative"
+; V29 cse6 [V29,T03] ( 3, 2.75) ref -> x1 "CSE - aggressive"
+; V30 rat0 [V30,T05] ( 3, 2.25) ref -> x1 "Spilling to split statement for tree"
+; V31 rat1 [V31,T01] ( 5, 3.75) ref -> x22 class-hnd "replacement local" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M41283_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
G_M41283_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
bl <unknown method>
- cbz w0, G_M41283_IG21
+ cbz w0, G_M41283_IG24
ldr w1, [x19, #0x28]
- tbnz w1, #6, G_M41283_IG21
+ tbnz w1, #6, G_M41283_IG24
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
- cbz x1, G_M41283_IG11
+ cbz x1, G_M41283_IG14
;; size=24 bbWeight=1 PerfScore 10.00
G_M41283_IG03: ; bbWeight=0.75, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E
@@ -65,17 +67,17 @@ G_M41283_IG03: ; bbWeight=0.75, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
movk x0, #1 LSL #32
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M41283_IG22
+ cbnz x0, G_M41283_IG25
mov w20, #1
;; size=24 bbWeight=0.75 PerfScore 3.00
G_M41283_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz w20, G_M41283_IG13
+ cbz w20, G_M41283_IG16
;; size=4 bbWeight=1 PerfScore 1.00
G_M41283_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov w21, wzr
cmp w20, #0
- ble G_M41283_IG13
+ ble G_M41283_IG16
;; size=12 bbWeight=0.50 PerfScore 1.00
G_M41283_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x08]
@@ -88,23 +90,42 @@ G_M41283_IG07: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
cmp x1, x2
- beq G_M41283_IG12
+ beq G_M41283_IG15
;; size=24 bbWeight=0.25 PerfScore 1.50
G_M41283_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
+ mov x22, x1
+ ; gcrRegs +[x22]
+ cbz x22, G_M41283_IG11
+ ;; size=12 bbWeight=0.50 PerfScore 2.25
+G_M41283_IG09: ; bbWeight=0.25, gcrefRegs=480002 {x1 x19 x22}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x22]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ cmp x0, x2
+ beq G_M41283_IG11
+ ;; size=24 bbWeight=0.25 PerfScore 1.50
+G_M41283_IG10: ; bbWeight=0.13, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x22]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
bl CORINFO_HELP_CHKCASTCLASS
; gcrRegs -[x1] +[x0]
- ldr w1, [x0, #0x10]
- cmp w21, w1
- blo G_M41283_IG10
- ;; size=32 bbWeight=0.50 PerfScore 5.00
-G_M41283_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x19]
+ mov x22, x0
+ ; gcrRegs +[x22]
+ ;; size=20 bbWeight=0.13 PerfScore 0.38
+G_M41283_IG11: ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
+ ldr w0, [x22, #0x10]
+ cmp w21, w0
+ blo G_M41283_IG13
+ ;; size=12 bbWeight=0.50 PerfScore 2.25
+G_M41283_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19 x22]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -112,26 +133,27 @@ G_M41283_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M41283_IG10: ; bbWeight=0, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0 x19]
- ldr x0, [x0, #0x08]
+G_M41283_IG13: ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x19 x22]
+ ldr x0, [x22, #0x08]
+ ; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w21, w1
- bhs G_M41283_IG20
+ bhs G_M41283_IG23
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
ldr x0, [x0, w21, UXTW #3]
; gcrRegs +[x0]
; byrRegs -[x0]
- b G_M41283_IG12
+ b G_M41283_IG15
;; size=28 bbWeight=0 PerfScore 0.00
-G_M41283_IG11: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
+G_M41283_IG14: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x22]
mov w20, wzr
b G_M41283_IG04
;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M41283_IG12: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG15: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this
movk x1, #0xD1FFAB1E LSL #16
@@ -144,47 +166,47 @@ G_M41283_IG12: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
cmp w21, w20
blt G_M41283_IG06
;; size=36 bbWeight=0.50 PerfScore 5.25
-G_M41283_IG13: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG16: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x2E]
cmp w0, #25
- bne G_M41283_IG21
+ bne G_M41283_IG24
;; size=12 bbWeight=1 PerfScore 4.50
-G_M41283_IG14: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG17: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
- mov x21, x1
- ; gcrRegs +[x21]
- cbnz x21, G_M41283_IG18
+ mov x22, x1
+ ; gcrRegs +[x22]
+ cbnz x22, G_M41283_IG21
;; size=12 bbWeight=0.00 PerfScore 0.00
-G_M41283_IG15: ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG18: ; bbWeight=0.00, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1 x19]
mov w2, wzr
- sub w19, w20, #1
- cmp w19, #0
- ble G_M41283_IG21
+ sub w21, w20, #1
+ cmp w21, #0
+ ble G_M41283_IG24
;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M41283_IG16: ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x21, #0x10]
+G_M41283_IG19: ; bbWeight=0.00, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x22, #0x10]
cmp w2, w0
- bhs G_M41283_IG09
- ldr x1, [x21, #0x08]
+ bhs G_M41283_IG12
+ ldr x1, [x22, #0x08]
; gcrRegs +[x1]
ldr w3, [x1, #0x08]
cmp w2, w3
- bhs G_M41283_IG20
+ bhs G_M41283_IG23
add x1, x1, #16
; gcrRegs -[x1]
; byrRegs +[x1]
ldr x4, [x1, w2, UXTW #3]
; gcrRegs +[x4]
- add w20, w2, #1
...
+36 (+7.89%) : 77072.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)
@@ -10,54 +10,56 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 8, 6.00) ref -> x19 this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V01 loc0 [V01,T01] ( 5, 3.00) int -> x20
-; V02 loc1 [V02,T22] ( 3, 0.00) ref -> x21 class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-; V03 loc2 [V03,T03] ( 7, 2.50) int -> x21
-; V04 loc3 [V04,T11] ( 7, 0.00) int -> x2
+; V01 loc0 [V01,T02] ( 5, 3.00) int -> x20
+; V02 loc1 [V02,T24] ( 3, 0.00) ref -> x22 class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V03 loc2 [V03,T04] ( 7, 2.50) int -> x21
+; V04 loc3 [V04,T13] ( 7, 0.00) int -> x2
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T23] ( 3, 0.00) ref -> x1 single-def "CASTCLASS eval op1"
-; V07 tmp2 [V07,T26] ( 3, 0.00) long -> x2 "fgMakeTemp is creating a new local variable"
-; V08 tmp3 [V08,T13] ( 5, 0.00) ref -> x21 class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-; V09 tmp4 [V09,T14] ( 2, 0.00) ref -> x4 class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
-; V10 tmp5 [V10,T06] ( 4, 2 ) int -> x20 "Inline return value spill temp"
-; V11 tmp6 [V11,T08] ( 3, 1.43) ref -> x0 class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-; V12 tmp7 [V12,T09] ( 3, 1.00) ref -> x0 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
-; V13 tmp8 [V13,T05] ( 2, 2.00) ref -> x0 "CASTCLASS eval op1"
+; V06 tmp1 [V06,T25] ( 3, 0.00) ref -> x1 single-def "CASTCLASS eval op1"
+; V07 tmp2 [V07,T28] ( 3, 0.00) long -> x2 "fgMakeTemp is creating a new local variable"
+; V08 tmp3 [V08,T15] ( 5, 0.00) ref -> x22 class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V09 tmp4 [V09,T16] ( 2, 0.00) ref -> x4 class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
+; V10 tmp5 [V10,T08] ( 4, 2 ) int -> x20 "Inline return value spill temp"
+; V11 tmp6 [V11,T10] ( 3, 1.43) ref -> x0 class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V12 tmp7 [V12,T11] ( 3, 1.00) ref -> x0 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+; V13 tmp8 [V13,T07] ( 2, 2.00) ref -> x0 "CASTCLASS eval op1"
;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
-; V15 tmp10 [V15,T07] ( 4, 1.75) ref -> x0 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
-; V16 tmp11 [V16,T04] ( 3, 2.00) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-; V17 tmp12 [V17,T10] ( 4, 0.00) int -> x2 "Inlining Arg"
-; V18 tmp13 [V18,T27] ( 3, 0 ) ref -> x0 "arr expr"
-; V19 tmp14 [V19,T12] ( 3, 0.00) ref -> x1 "arr expr"
-;* V20 tmp15 [V20,T25] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V21 tmp16 [V21,T15] ( 2, 0.00) ref -> x0 "argument with side effect"
-; V22 tmp17 [V22,T16] ( 2, 0.00) ref -> x1 "argument with side effect"
-; V23 cse0 [V23,T19] ( 3, 0.00) int -> x0 "CSE - conservative"
-; V24 cse1 [V24,T17] ( 2, 0.00) ref -> x1 "CSE - conservative"
-; V25 cse2 [V25,T24] ( 3, 0.00) int -> x19 "CSE - conservative"
-; V26 cse3 [V26,T20] ( 3, 0.00) int -> x3 "CSE - conservative"
-; V27 cse4 [V27,T18] ( 3, 0.00) byref -> x1 "CSE - conservative"
-; V28 cse5 [V28,T21] ( 3, 0.00) int -> x20 "CSE - conservative"
-; V29 cse6 [V29,T02] ( 3, 2.71) ref -> x1 "CSE - aggressive"
+; V15 tmp10 [V15,T09] ( 4, 1.75) ref -> x0 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
+; V16 tmp11 [V16,T06] ( 3, 2.00) ref -> x22 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V17 tmp12 [V17,T12] ( 4, 0.00) int -> x2 "Inlining Arg"
+; V18 tmp13 [V18,T29] ( 3, 0 ) ref -> x0 "arr expr"
+; V19 tmp14 [V19,T14] ( 3, 0.00) ref -> x1 "arr expr"
+;* V20 tmp15 [V20,T27] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V21 tmp16 [V21,T17] ( 2, 0.00) ref -> x0 "argument with side effect"
+; V22 tmp17 [V22,T18] ( 2, 0.00) ref -> x1 "argument with side effect"
+; V23 cse0 [V23,T21] ( 3, 0.00) int -> x0 "CSE - conservative"
+; V24 cse1 [V24,T19] ( 2, 0.00) ref -> x1 "CSE - conservative"
+; V25 cse2 [V25,T26] ( 3, 0.00) int -> x21 "CSE - conservative"
+; V26 cse3 [V26,T22] ( 3, 0.00) int -> x3 "CSE - conservative"
+; V27 cse4 [V27,T20] ( 3, 0.00) byref -> x1 "CSE - conservative"
+; V28 cse5 [V28,T23] ( 3, 0.00) int -> x19 "CSE - conservative"
+; V29 cse6 [V29,T03] ( 3, 2.71) ref -> x1 "CSE - aggressive"
+; V30 rat0 [V30,T05] ( 3, 2.25) ref -> x1 "Spilling to split statement for tree"
+; V31 rat1 [V31,T01] ( 5, 3.75) ref -> x22 class-hnd "replacement local" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M41283_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
G_M41283_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
bl <unknown method>
- cbz w0, G_M41283_IG21
+ cbz w0, G_M41283_IG24
ldr w1, [x19, #0x28]
- tbnz w1, #6, G_M41283_IG21
+ tbnz w1, #6, G_M41283_IG24
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
- cbz x1, G_M41283_IG11
+ cbz x1, G_M41283_IG14
;; size=24 bbWeight=1 PerfScore 10.00
G_M41283_IG03: ; bbWeight=0.71, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E
@@ -65,17 +67,17 @@ G_M41283_IG03: ; bbWeight=0.71, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
movk x0, #1 LSL #32
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M41283_IG22
+ cbnz x0, G_M41283_IG25
mov w20, #1
;; size=24 bbWeight=0.71 PerfScore 2.86
G_M41283_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz w20, G_M41283_IG13
+ cbz w20, G_M41283_IG16
;; size=4 bbWeight=1 PerfScore 1.00
G_M41283_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov w21, wzr
cmp w20, #0
- ble G_M41283_IG13
+ ble G_M41283_IG16
;; size=12 bbWeight=0.50 PerfScore 1.00
G_M41283_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x08]
@@ -88,23 +90,42 @@ G_M41283_IG07: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
cmp x1, x2
- beq G_M41283_IG12
+ beq G_M41283_IG15
;; size=24 bbWeight=0.25 PerfScore 1.50
G_M41283_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
+ mov x22, x1
+ ; gcrRegs +[x22]
+ cbz x22, G_M41283_IG11
+ ;; size=12 bbWeight=0.50 PerfScore 2.25
+G_M41283_IG09: ; bbWeight=0.25, gcrefRegs=480002 {x1 x19 x22}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x22]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ cmp x0, x2
+ beq G_M41283_IG11
+ ;; size=24 bbWeight=0.25 PerfScore 1.50
+G_M41283_IG10: ; bbWeight=0.13, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x22]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
bl CORINFO_HELP_CHKCASTCLASS
; gcrRegs -[x1] +[x0]
- ldr w1, [x0, #0x10]
- cmp w21, w1
- blo G_M41283_IG10
- ;; size=32 bbWeight=0.50 PerfScore 5.00
-G_M41283_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x19]
+ mov x22, x0
+ ; gcrRegs +[x22]
+ ;; size=20 bbWeight=0.13 PerfScore 0.38
+G_M41283_IG11: ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
+ ldr w0, [x22, #0x10]
+ cmp w21, w0
+ blo G_M41283_IG13
+ ;; size=12 bbWeight=0.50 PerfScore 2.25
+G_M41283_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19 x22]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -112,26 +133,27 @@ G_M41283_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M41283_IG10: ; bbWeight=0, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0 x19]
- ldr x0, [x0, #0x08]
+G_M41283_IG13: ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x19 x22]
+ ldr x0, [x22, #0x08]
+ ; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w21, w1
- bhs G_M41283_IG20
+ bhs G_M41283_IG23
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
ldr x0, [x0, w21, UXTW #3]
; gcrRegs +[x0]
; byrRegs -[x0]
- b G_M41283_IG12
+ b G_M41283_IG15
;; size=28 bbWeight=0 PerfScore 0.00
-G_M41283_IG11: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
+G_M41283_IG14: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x22]
mov w20, wzr
b G_M41283_IG04
;; size=8 bbWeight=0.29 PerfScore 0.43
-G_M41283_IG12: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG15: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this
movk x1, #0xD1FFAB1E LSL #16
@@ -144,47 +166,47 @@ G_M41283_IG12: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
cmp w21, w20
blt G_M41283_IG06
;; size=36 bbWeight=0.50 PerfScore 5.25
-G_M41283_IG13: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG16: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x2E]
cmp w0, #25
- bne G_M41283_IG21
+ bne G_M41283_IG24
;; size=12 bbWeight=1 PerfScore 4.50
-G_M41283_IG14: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG17: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
- mov x21, x1
- ; gcrRegs +[x21]
- cbnz x21, G_M41283_IG18
+ mov x22, x1
+ ; gcrRegs +[x22]
+ cbnz x22, G_M41283_IG21
;; size=12 bbWeight=0.00 PerfScore 0.00
-G_M41283_IG15: ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG18: ; bbWeight=0.00, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1 x19]
mov w2, wzr
- sub w19, w20, #1
- cmp w19, #0
- ble G_M41283_IG21
+ sub w21, w20, #1
+ cmp w21, #0
+ ble G_M41283_IG24
;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M41283_IG16: ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x21, #0x10]
+G_M41283_IG19: ; bbWeight=0.00, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x22, #0x10]
cmp w2, w0
- bhs G_M41283_IG09
- ldr x1, [x21, #0x08]
+ bhs G_M41283_IG12
+ ldr x1, [x22, #0x08]
; gcrRegs +[x1]
ldr w3, [x1, #0x08]
cmp w2, w3
- bhs G_M41283_IG20
+ bhs G_M41283_IG23
add x1, x1, #16
; gcrRegs -[x1]
; byrRegs +[x1]
ldr x4, [x1, w2, UXTW #3]
; gcrRegs +[x4]
- add w20, w2, #1
...
coreclr_tests.run.osx.arm64.checked.mch
-44 (-2.49%) : 384030.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
@@ -15,90 +15,89 @@
; V03 loc1 [V03,T06] ( 5, 3.72) ref -> x22 class-hnd exact <Internal.TypeSystem.InstantiatedType>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.InstantiatedType>
-;* V06 tmp2 [V06,T41] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V07 tmp3 [V07,T40] ( 2, 0.78) ref -> x0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V08 tmp4 [V08,T26] ( 3, 1.55) long -> x2 "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T48] ( 2, 0 ) ref -> x19 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2 [V06,T40] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T39] ( 2, 0.78) ref -> x0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V08 tmp4 [V08,T25] ( 3, 1.55) long -> x2 "fgMakeTemp is creating a new local variable"
+; V09 tmp5 [V09,T47] ( 2, 0 ) ref -> x19 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
; V10 tmp6 [V10,T03] ( 7, 5.52) ref -> x23 class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
-; V11 tmp7 [V11,T17] ( 3, 2 ) ref -> x21 "guarded devirt return temp"
+; V11 tmp7 [V11,T16] ( 3, 2 ) ref -> x21 "guarded devirt return temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.MethodForInstantiatedType>
-; V13 tmp9 [V13,T10] ( 8, 2.77) ref -> x25 "guarded devirt return temp"
+; V13 tmp9 [V13,T09] ( 8, 2.77) ref -> x25 "guarded devirt return temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V15 tmp11 [V15,T19] ( 4, 1.83) ref -> x26 "guarded devirt return temp"
+; V15 tmp11 [V15,T18] ( 4, 1.83) ref -> x26 "guarded devirt return temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V17 tmp13 [V17,T23] ( 8, 1.78) ref -> x25 "guarded devirt return temp"
+; V17 tmp13 [V17,T22] ( 8, 1.78) ref -> x25 "guarded devirt return temp"
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref
;* V20 tmp16 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp17 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 tmp18 [V22,T28] ( 2, 0.92) int -> x0
-; V23 tmp19 [V23,T18] ( 3, 1.85) ref -> x20 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V22 tmp18 [V22,T27] ( 2, 0.92) int -> x0
+; V23 tmp19 [V23,T17] ( 3, 1.85) ref -> x20 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V25 tmp21 [V25,T35] ( 3, 0.92) ref -> x26 "guarded devirt return temp"
+; V25 tmp21 [V25,T34] ( 3, 0.92) ref -> x26 "guarded devirt return temp"
;* V26 tmp22 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V27 tmp23 [V27,T36] ( 3, 0.92) ref -> x20 "guarded devirt return temp"
-; V28 tmp24 [V28,T09] ( 5, 2.77) ref -> x0 single-def "guarded devirt arg temp"
+; V27 tmp23 [V27,T35] ( 3, 0.92) ref -> x20 "guarded devirt return temp"
+; V28 tmp24 [V28,T08] ( 5, 2.77) ref -> x0 single-def "guarded devirt arg temp"
;* V29 tmp25 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V30 tmp26 [V30,T38] ( 3, 0.84) ref -> x26 "guarded devirt return temp"
-; V31 tmp27 [V31,T13] ( 5, 2.52) ref -> x0 single-def "guarded devirt arg temp"
+; V30 tmp26 [V30,T37] ( 3, 0.84) ref -> x26 "guarded devirt return temp"
+; V31 tmp27 [V31,T12] ( 5, 2.52) ref -> x0 single-def "guarded devirt arg temp"
;* V32 tmp28 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
;* V33 tmp29 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V34 tmp30 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp31 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp32 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V37 tmp33 [V37,T11] ( 5, 2.75) ref -> x0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V38 tmp34 [V38,T37] ( 3, 0.92) ref -> x26 "guarded devirt return temp"
+; V37 tmp33 [V37,T10] ( 5, 2.75) ref -> x0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+; V38 tmp34 [V38,T36] ( 3, 0.92) ref -> x26 "guarded devirt return temp"
;* V39 tmp35 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
;* V40 tmp36 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaType>
-;* V41 tmp37 [V41,T21] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V42 tmp38 [V42,T22] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V41 tmp37 [V41,T20] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
+;* V42 tmp38 [V42,T21] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
;* V43 tmp39 [V43 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V44 tmp40 [V44,T04] ( 4, 4.07) ref -> x26 class-hnd exact single-def "impAppendStmt" <<unknown class>>
;* V45 tmp41 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V46 tmp42 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp43 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V48 tmp44 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V49 tmp45 [V49,T15] ( 2, 2.45) int -> x28 "impAppendStmt"
-; V50 tmp46 [V50,T30] ( 4, 1.22) ref -> x0 "guarded devirt return temp"
+; V49 tmp45 [V49,T13] ( 2, 2.45) int -> x28 "impAppendStmt"
+; V50 tmp46 [V50,T29] ( 4, 1.22) ref -> x0 "guarded devirt return temp"
;* V51 tmp47 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V52 tmp48 [V52,T46] ( 2, 0.07) byref -> x27 single-def "impAppendStmt"
-; V53 tmp49 [V53,T47] ( 3, 0.04) int -> x0 "guarded devirt return temp"
-; V54 tmp50 [V54,T45] ( 5, 0.11) ref -> x0 single-def "guarded devirt arg temp"
+; V52 tmp48 [V52,T45] ( 2, 0.07) byref -> x27 single-def "impAppendStmt"
+; V53 tmp49 [V53,T46] ( 3, 0.04) int -> x0 "guarded devirt return temp"
+; V54 tmp50 [V54,T44] ( 5, 0.11) ref -> x0 single-def "guarded devirt arg temp"
;* V55 tmp51 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
;* V56 tmp52 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V57 tmp53 [V57,T31] ( 3, 1.22) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V57 tmp53 [V57,T30] ( 3, 1.22) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
;* V58 tmp54 [V58 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V59 tmp55 [V59 ] ( 2, 1.02) ref -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V60 tmp56 [V60,T27] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V61 tmp57 [V61,T14] ( 4, 2.45) ref -> x0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V62 tmp58 [V62,T34] ( 2, 0.59) int -> x0
-; V63 tmp59 [V63,T33] ( 3, 1.17) ref -> x26 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V60 tmp56 [V60,T26] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V61 tmp57 [V61,T14] ( 3, 2.33) ref -> x0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V62 tmp58 [V62,T33] ( 2, 0.59) int -> x0
+; V63 tmp59 [V63,T32] ( 3, 1.17) ref -> x26 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V64 tmp60 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V65 tmp61 [V65,T42] ( 3, 0.59) ref -> x27 "guarded devirt return temp"
+; V65 tmp61 [V65,T41] ( 3, 0.59) ref -> x27 "guarded devirt return temp"
;* V66 tmp62 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V67 tmp63 [V67,T43] ( 3, 0.59) ref -> x26 "guarded devirt return temp"
-; V68 tmp64 [V68,T24] ( 5, 1.76) ref -> x0 single-def "guarded devirt arg temp"
+; V67 tmp63 [V67,T42] ( 3, 0.59) ref -> x26 "guarded devirt return temp"
+; V68 tmp64 [V68,T23] ( 5, 1.76) ref -> x0 single-def "guarded devirt arg temp"
;* V69 tmp65 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V70 tmp66 [V70,T44] ( 3, 0.53) ref -> x27 "guarded devirt return temp"
-; V71 tmp67 [V71,T25] ( 5, 1.60) ref -> x0 single-def "guarded devirt arg temp"
+; V70 tmp66 [V70,T43] ( 3, 0.53) ref -> x27 "guarded devirt return temp"
+; V71 tmp67 [V71,T24] ( 5, 1.60) ref -> x0 single-def "guarded devirt arg temp"
;* V72 tmp68 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
;* V73 tmp69 [V73 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V74 tmp70 [V74 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V75 tmp71 [V75 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V76 tmp72 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V77 tmp73 [V77,T16] ( 6, 2.04) ref -> x21 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
-; V78 tmp74 [V78,T12] ( 8, 2.70) ref -> x22 single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
-; V79 tmp75 [V79,T29] ( 3, 1.42) int -> x24 single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
+; V77 tmp73 [V77,T15] ( 6, 2.04) ref -> x21 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V78 tmp74 [V78,T11] ( 8, 2.70) ref -> x22 single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
+; V79 tmp75 [V79,T28] ( 3, 1.42) int -> x24 single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
;* V80 tmp76 [V80 ] ( 0, 0 ) ref -> zero-ref single-def "field V58._typicalMethodDef (fldOffset=0x0)" P-INDEP
;* V81 tmp77 [V81 ] ( 0, 0 ) ref -> zero-ref single-def "field V58._instantiatedType (fldOffset=0x8)" P-INDEP
;* V82 tmp78 [V82 ] ( 0, 0 ) int -> zero-ref single-def "field V58._hashcode (fldOffset=0x10)" P-INDEP
; V83 tmp79 [V83 ] ( 8, 6.50) struct (24) [fp+0x10] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
-;* V84 tmp80 [V84,T32] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V85 tmp81 [V85,T39] ( 2, 0.80) ref -> x0 single-def "argument with side effect"
-; V86 cse0 [V86,T20] ( 3, 1.83) ref -> x0 "CSE - moderate"
+;* V84 tmp80 [V84,T31] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V85 tmp81 [V85,T38] ( 2, 0.80) ref -> x0 single-def "argument with side effect"
+; V86 cse0 [V86,T19] ( 3, 1.83) ref -> x0 "CSE - moderate"
; V87 cse1 [V87,T00] ( 18, 9.67) ref -> x1 multi-def "CSE - aggressive"
; V88 cse2 [V88,T07] ( 10, 3.83) long -> x24 multi-def "CSE - aggressive"
-; V89 rat0 [V89,T08] ( 6, 3.11) ref -> x2 class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
;
; Lcl frame size = 32
@@ -152,7 +151,7 @@ G_M10698_IG06: ; bbWeight=0.61, gcrefRegs=680000 {x19 x21 x22}, byrefRegs
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
cmp x24, x0
- bne G_M10698_IG57
+ bne G_M10698_IG46
b G_M10698_IG08
;; size=32 bbWeight=0.61 PerfScore 6.12
G_M10698_IG07: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
@@ -184,7 +183,7 @@ G_M10698_IG11: ; bbWeight=0.46, gcrefRegs=2E80000 {x19 x21 x22 x23 x25},
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
- bne G_M10698_IG59
+ bne G_M10698_IG48
ldr x0, [x23, #0x58]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -192,7 +191,7 @@ G_M10698_IG11: ; bbWeight=0.46, gcrefRegs=2E80000 {x19 x21 x22 x23 x25},
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
cmp x1, x2
- bne G_M10698_IG58
+ bne G_M10698_IG47
ldr x20, [x0, #0x08]
; gcrRegs +[x20]
;; size=56 bbWeight=0.46 PerfScore 8.32
@@ -213,7 +212,7 @@ G_M10698_IG13: ; bbWeight=0.42, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x2
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
cmp x1, x2
- bne G_M10698_IG60
+ bne G_M10698_IG49
ldr x26, [x0, #0x08]
; gcrRegs +[x26]
;; size=32 bbWeight=0.42 PerfScore 5.05
@@ -270,7 +269,7 @@ G_M10698_IG18: ; bbWeight=0.46, gcrefRegs=680000 {x19 x21 x22}, byrefRegs
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
cmp x1, x2
- bne G_M10698_IG61
+ bne G_M10698_IG50
ldr x26, [x0, #0x08]
; gcrRegs +[x26]
b G_M10698_IG20
@@ -343,7 +342,7 @@ G_M10698_IG22: ; bbWeight=0.61, gcrefRegs=4600000 {x21 x22 x26}, byrefReg
G_M10698_IG23: ; bbWeight=0.61, gcrefRegs=4600000 {x21 x22 x26}, byrefRegs=0000 {}, byref, isz
ldr x26, [x26, #0x50]
ldr w0, [x22, #0x68]
- cbz w0, G_M10698_IG47
+ cbz w0, G_M10698_IG42
;; size=12 bbWeight=0.61 PerfScore 4.28
G_M10698_IG24: ; bbWeight=0.61, gcrefRegs=4600000 {x21 x22 x26}, byrefRegs=0000 {}, byref, isz
ldr w28, [x22, #0x68]
@@ -351,10 +350,10 @@ G_M10698_IG24: ; bbWeight=0.61, gcrefRegs=4600000 {x21 x22 x26}, byrefReg
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
cmp x24, x0
- bne G_M10698_IG49
+ bne G_M10698_IG52
ldr x0, [x21, #0x20]
; gcrRegs +[x0]
- cbz x0, G_M10698_IG62
+ cbz x0, G_M10698_IG41
;; size=32 bbWeight=0.61 PerfScore 6.12
G_M10698_IG25: ; bbWeight=0.61, gcrefRegs=4600001 {x0 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E // code for Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int
@@ -377,7 +376,7 @@ G_M10698_IG25: ; bbWeight=0.61, gcrefRegs=4600001 {x0 x21 x22 x26}, byref
ldr x3, [x3]
blr x3
; gcrRegs -[x0]
- cbz w0, G_M10698_IG45
+ cbz w0, G_M10698_IG44
;; size=72 bbWeight=0.61 PerfScore 11.62
G_M10698_IG26: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x21-x22 x26]
@@ -406,7 +405,7 @@ G_M10698_IG28: ; bbWeight=0.39, gcVars=0000000000000000 {}, gcrefRegs=380
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
cmp x24, x0
- bne G_M10698_IG53
+ bne G_M10698_IG56
ldr x25, [x21, #0x10]
; gcrRegs +[x25]
;; size=52 bbWeight=0.39 PerfScore 5.83
@@ -420,7 +419,7 @@ G_M10698_IG30: ; bbWeight=0.29, gcrefRegs=2300000 {x20 x21 x25}, byrefReg
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
- bne G_M10698_IG55
+ bne G_M10698_IG58
;; size=24 bbWeight=0.29 PerfScore 1.76
G_M10698_IG31: ; bbWeight=0.29, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20, #0x58]
@@ -430,7 +429,7 @@ G_M10698_IG31: ; bbWeight=0.29, gcrefRegs=2300000 {x20 x21 x25}, byrefReg
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
cmp x1, x2
- bne G_M10698_IG54
+ bne G_M10698_IG57
ldr x26, [x0, #0x08]
; gcrRegs +[x26]
;; size=32 bbWeight=0.29 PerfScore 3.52
@@ -441,7 +440,7 @@ G_M10698_IG32: ; bbWeight=0.29, gcrefRegs=6300000 {x20 x21 x25 x26}, byre
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
- bne G_M10698_IG46
+ bne G_M10698_IG45
;; size=24 bbWeight=0.29 PerfScore 1.76
G_M10698_IG33: ; bbWeight=0.27, gcrefRegs=6300000 {x20 x21 x25 x26}, byrefRegs=0000 {}, byref, isz
ldr x0, [x25, #0x58]
@@ -451,7 +450,7 @@ G_M10698_IG33: ; bbWeight=0.27, gcrefRegs=6300000 {x20 x21 x25 x26}, byre
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
cmp x1, x2
- bne G_M10698_IG56
+ bne G_M10698_IG59
ldr x27, [x0, #0x08]
...
-40 (-2.31%) : 379802.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
@@ -15,90 +15,89 @@
; V03 loc1 [V03,T06] ( 5, 3.72) ref -> x23 class-hnd exact <Internal.TypeSystem.InstantiatedType>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.InstantiatedType>
-;* V06 tmp2 [V06,T40] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V07 tmp3 [V07,T39] ( 2, 0.78) ref -> x0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V08 tmp4 [V08,T26] ( 3, 1.55) long -> x2 "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T48] ( 2, 0 ) ref -> x19 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2 [V06,T39] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T38] ( 2, 0.78) ref -> x0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V08 tmp4 [V08,T25] ( 3, 1.55) long -> x2 "fgMakeTemp is creating a new local variable"
+; V09 tmp5 [V09,T47] ( 2, 0 ) ref -> x19 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
; V10 tmp6 [V10,T04] ( 7, 5.52) ref -> x24 class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
-; V11 tmp7 [V11,T17] ( 3, 2 ) ref -> x22 "guarded devirt return temp"
+; V11 tmp7 [V11,T16] ( 3, 2 ) ref -> x22 "guarded devirt return temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V13 tmp9 [V13,T09] ( 8, 2.79) ref -> x25 "guarded devirt return temp"
+; V13 tmp9 [V13,T08] ( 8, 2.79) ref -> x25 "guarded devirt return temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V15 tmp11 [V15,T19] ( 4, 1.83) ref -> x27 "guarded devirt return temp"
+; V15 tmp11 [V15,T18] ( 4, 1.83) ref -> x27 "guarded devirt return temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V17 tmp13 [V17,T23] ( 8, 1.79) ref -> x23 "guarded devirt return temp"
+; V17 tmp13 [V17,T22] ( 8, 1.79) ref -> x23 "guarded devirt return temp"
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref
;* V20 tmp16 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp17 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 tmp18 [V22,T28] ( 2, 0.93) int -> x0
-; V23 tmp19 [V23,T18] ( 3, 1.85) ref -> x26 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V22 tmp18 [V22,T27] ( 2, 0.93) int -> x0
+; V23 tmp19 [V23,T17] ( 3, 1.85) ref -> x26 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V25 tmp21 [V25,T35] ( 3, 0.93) ref -> x27 "guarded devirt return temp"
+; V25 tmp21 [V25,T34] ( 3, 0.93) ref -> x27 "guarded devirt return temp"
;* V26 tmp22 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V27 tmp23 [V27,T36] ( 3, 0.93) ref -> x26 "guarded devirt return temp"
-; V28 tmp24 [V28,T10] ( 5, 2.78) ref -> x0 single-def "guarded devirt arg temp"
+; V27 tmp23 [V27,T35] ( 3, 0.93) ref -> x26 "guarded devirt return temp"
+; V28 tmp24 [V28,T09] ( 5, 2.78) ref -> x0 single-def "guarded devirt arg temp"
;* V29 tmp25 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V30 tmp26 [V30,T38] ( 3, 0.82) ref -> x27 "guarded devirt return temp"
-; V31 tmp27 [V31,T15] ( 5, 2.45) ref -> x0 single-def "guarded devirt arg temp"
+; V30 tmp26 [V30,T37] ( 3, 0.82) ref -> x27 "guarded devirt return temp"
+; V31 tmp27 [V31,T13] ( 5, 2.45) ref -> x0 single-def "guarded devirt arg temp"
;* V32 tmp28 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
;* V33 tmp29 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V34 tmp30 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp31 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp32 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V37 tmp33 [V37,T13] ( 5, 2.61) ref -> x0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V38 tmp34 [V38,T37] ( 3, 0.87) ref -> x27 "guarded devirt return temp"
+; V37 tmp33 [V37,T12] ( 5, 2.61) ref -> x0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+; V38 tmp34 [V38,T36] ( 3, 0.87) ref -> x27 "guarded devirt return temp"
;* V39 tmp35 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
;* V40 tmp36 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaType>
-;* V41 tmp37 [V41,T21] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V42 tmp38 [V42,T22] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V41 tmp37 [V41,T20] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
+;* V42 tmp38 [V42,T21] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
;* V43 tmp39 [V43 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V44 tmp40 [V44,T05] ( 4, 4.03) ref -> x27 class-hnd exact single-def "impAppendStmt" <<unknown class>>
;* V45 tmp41 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V46 tmp42 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp43 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V48 tmp44 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V49 tmp45 [V49,T16] ( 2, 2.45) int -> x28 "impAppendStmt"
-; V50 tmp46 [V50,T30] ( 4, 1.22) ref -> x0 "guarded devirt return temp"
+; V49 tmp45 [V49,T14] ( 2, 2.45) int -> x28 "impAppendStmt"
+; V50 tmp46 [V50,T29] ( 4, 1.22) ref -> x0 "guarded devirt return temp"
;* V51 tmp47 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V52 tmp48 [V52,T46] ( 2, 0.05) byref -> x28 single-def "impAppendStmt"
-; V53 tmp49 [V53,T47] ( 3, 0.03) int -> x0 "guarded devirt return temp"
-; V54 tmp50 [V54,T45] ( 5, 0.08) ref -> x0 single-def "guarded devirt arg temp"
+; V52 tmp48 [V52,T45] ( 2, 0.05) byref -> x28 single-def "impAppendStmt"
+; V53 tmp49 [V53,T46] ( 3, 0.03) int -> x0 "guarded devirt return temp"
+; V54 tmp50 [V54,T44] ( 5, 0.08) ref -> x0 single-def "guarded devirt arg temp"
;* V55 tmp51 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
;* V56 tmp52 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V57 tmp53 [V57,T31] ( 3, 1.22) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V57 tmp53 [V57,T30] ( 3, 1.22) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
;* V58 tmp54 [V58 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V59 tmp55 [V59 ] ( 2, 1.04) ref -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V60 tmp56 [V60,T27] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V61 tmp57 [V61,T14] ( 4, 2.52) ref -> x0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V62 tmp58 [V62,T34] ( 2, 0.59) int -> x0
-; V63 tmp59 [V63,T33] ( 3, 1.18) ref -> x27 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V60 tmp56 [V60,T26] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V61 tmp57 [V61,T15] ( 3, 2.33) ref -> x0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V62 tmp58 [V62,T33] ( 2, 0.59) int -> x0
+; V63 tmp59 [V63,T32] ( 3, 1.18) ref -> x27 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V64 tmp60 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V65 tmp61 [V65,T42] ( 3, 0.59) ref -> x1 "guarded devirt return temp"
+; V65 tmp61 [V65,T41] ( 3, 0.59) ref -> x1 "guarded devirt return temp"
;* V66 tmp62 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V67 tmp63 [V67,T43] ( 3, 0.59) ref -> x27 "guarded devirt return temp"
-; V68 tmp64 [V68,T24] ( 5, 1.77) ref -> x0 single-def "guarded devirt arg temp"
+; V67 tmp63 [V67,T42] ( 3, 0.59) ref -> x27 "guarded devirt return temp"
+; V68 tmp64 [V68,T23] ( 5, 1.77) ref -> x0 single-def "guarded devirt arg temp"
;* V69 tmp65 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V70 tmp66 [V70,T44] ( 3, 0.52) ref -> x1 "guarded devirt return temp"
-; V71 tmp67 [V71,T25] ( 5, 1.55) ref -> x0 single-def "guarded devirt arg temp"
+; V70 tmp66 [V70,T43] ( 3, 0.52) ref -> x1 "guarded devirt return temp"
+; V71 tmp67 [V71,T24] ( 5, 1.55) ref -> x0 single-def "guarded devirt arg temp"
;* V72 tmp68 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
;* V73 tmp69 [V73 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V74 tmp70 [V74 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V75 tmp71 [V75 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V76 tmp72 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V77 tmp73 [V77,T12] ( 8, 2.62) ref -> x22 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
-; V78 tmp74 [V78,T11] ( 8, 2.66) ref -> x23 single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
-; V79 tmp75 [V79,T29] ( 3, 1.40) int -> x20 single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
+; V77 tmp73 [V77,T11] ( 8, 2.62) ref -> x22 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V78 tmp74 [V78,T10] ( 8, 2.66) ref -> x23 single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
+; V79 tmp75 [V79,T28] ( 3, 1.40) int -> x20 single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
;* V80 tmp76 [V80 ] ( 0, 0 ) ref -> zero-ref single-def "field V58._typicalMethodDef (fldOffset=0x0)" P-INDEP
;* V81 tmp77 [V81 ] ( 0, 0 ) ref -> zero-ref single-def "field V58._instantiatedType (fldOffset=0x8)" P-INDEP
;* V82 tmp78 [V82 ] ( 0, 0 ) int -> zero-ref single-def "field V58._hashcode (fldOffset=0x10)" P-INDEP
; V83 tmp79 [V83 ] ( 8, 6.32) struct (24) [fp+0x10] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
-;* V84 tmp80 [V84,T32] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V85 tmp81 [V85,T41] ( 2, 0.71) ref -> x0 single-def "argument with side effect"
-; V86 cse0 [V86,T20] ( 3, 1.83) ref -> x0 "CSE - moderate"
+;* V84 tmp80 [V84,T31] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V85 tmp81 [V85,T40] ( 2, 0.71) ref -> x0 single-def "argument with side effect"
+; V86 cse0 [V86,T19] ( 3, 1.83) ref -> x0 "CSE - moderate"
; V87 cse1 [V87,T00] ( 18, 9.67) ref -> x1 multi-def "CSE - aggressive"
; V88 cse2 [V88,T07] ( 6, 4.22) long -> x21 "CSE - aggressive"
-; V89 rat0 [V89,T08] ( 6, 3.11) ref -> x2 class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
;
; Lcl frame size = 32
@@ -162,7 +161,7 @@ G_M10698_IG07: ; bbWeight=0.61, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs
; gcrRegs +[x24]
ldr x0, [x22]
cmp x0, x21
- bne G_M10698_IG53
+ bne G_M10698_IG45
ldr x25, [x22, #0x10]
; gcrRegs +[x25]
;; size=20 bbWeight=0.61 PerfScore 6.42
@@ -178,7 +177,7 @@ G_M10698_IG10: ; bbWeight=0.46, gcrefRegs=3C80000 {x19 x22 x23 x24 x25},
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
- bne G_M10698_IG55
+ bne G_M10698_IG47
ldr x0, [x24, #0x58]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -186,7 +185,7 @@ G_M10698_IG10: ; bbWeight=0.46, gcrefRegs=3C80000 {x19 x22 x23 x24 x25},
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
cmp x1, x2
- bne G_M10698_IG54
+ bne G_M10698_IG46
ldr x26, [x0, #0x08]
; gcrRegs +[x26]
;; size=56 bbWeight=0.46 PerfScore 8.34
@@ -207,7 +206,7 @@ G_M10698_IG12: ; bbWeight=0.41, gcrefRegs=7C80000 {x19 x22 x23 x24 x25 x2
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
cmp x1, x2
- bne G_M10698_IG56
+ bne G_M10698_IG48
ldr x27, [x0, #0x08]
; gcrRegs +[x27]
;; size=32 bbWeight=0.41 PerfScore 4.89
@@ -274,7 +273,7 @@ G_M10698_IG18: ; bbWeight=0.43, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
cmp x1, x2
- bne G_M10698_IG57
+ bne G_M10698_IG49
ldr x27, [x0, #0x08]
; gcrRegs +[x27]
;; size=36 bbWeight=0.43 PerfScore 6.51
@@ -342,10 +341,10 @@ G_M10698_IG23: ; bbWeight=0.61, gcrefRegs=8C00000 {x22 x23 x27}, byrefReg
ldr w28, [x23, #0x68]
ldr x0, [x22]
cmp x0, x21
- bne G_M10698_IG60
+ bne G_M10698_IG51
ldr x0, [x22, #0x20]
; gcrRegs +[x0]
- cbz x0, G_M10698_IG58
+ cbz x0, G_M10698_IG40
;; size=24 bbWeight=0.61 PerfScore 7.03
G_M10698_IG24: ; bbWeight=0.61, gcrefRegs=8C00001 {x0 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E // code for Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int
@@ -394,7 +393,7 @@ G_M10698_IG27: ; bbWeight=0.39, gcVars=0000000000000000 {}, gcrefRegs=580
beq G_M10698_IG38
ldr x0, [x22]
cmp x0, x21
- bne G_M10698_IG48
+ bne G_M10698_IG55
ldr x23, [x22, #0x10]
; gcrRegs +[x23]
;; size=40 bbWeight=0.39 PerfScore 5.24
@@ -408,7 +407,7 @@ G_M10698_IG29: ; bbWeight=0.29, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
- bne G_M10698_IG50
+ bne G_M10698_IG57
ldr x0, [x20, #0x58]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -416,7 +415,7 @@ G_M10698_IG29: ; bbWeight=0.29, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
cmp x1, x2
- bne G_M10698_IG49
+ bne G_M10698_IG56
;; size=52 bbWeight=0.29 PerfScore 4.42
G_M10698_IG30: ; bbWeight=0.29, gcrefRegs=D00001 {x0 x20 x22 x23}, byrefRegs=0000 {}, byref
ldr x27, [x0, #0x08]
@@ -429,7 +428,7 @@ G_M10698_IG31: ; bbWeight=0.29, gcrefRegs=8D00000 {x20 x22 x23 x27}, byre
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
- bne G_M10698_IG52
+ bne G_M10698_IG44
;; size=24 bbWeight=0.29 PerfScore 1.77
G_M10698_IG32: ; bbWeight=0.26, gcrefRegs=8D00000 {x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
ldr x0, [x23, #0x58]
@@ -439,7 +438,7 @@ G_M10698_IG32: ; bbWeight=0.26, gcrefRegs=8D00000 {x20 x22 x23 x27}, byre
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
cmp x1, x2
- bne G_M10698_IG51
+ bne G_M10698_IG58
ldr x1, [x0, #0x08]
; gcrRegs +[x1]
;; size=32 bbWeight=0.26 PerfScore 3.11
@@ -501,20 +500,6 @@ G_M10698_IG38: ; bbWeight=0.39, gcVars=0000000000000000 {}, gcrefRegs=180
ldr x1, [x1, #0x18]
blr x1
ldrsb wzr, [x0]
- mov x2, x0
- ; gcrRegs +[x2]
- cbz x2, G_M10698_IG45
- ;; size=32 bbWeight=0.39 PerfScore 5.83
-G_M10698_IG39: ; bbWeight=0.19, gcrefRegs=180005 {x0 x2 x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x2]
- movz x2, #0xD1FFAB1E
- ; gcrRegs -[x2]
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- cmp x1, x2
- beq G_M10698_IG44
...
libraries_tests.run.osx.arm64.Release.mch
-4 (-0.22%) : 630301.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 15, 3.31) ref -> [fp+0x30] this class-hnd EH-live single-def <System.Threading.Tasks.Task>
-; V01 arg1 [V01,T01] ( 10, 4.83) ref -> x19 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T01] ( 10, 4.75) ref -> x19 class-hnd single-def <System.Object>
; V02 loc0 [V02,T09] ( 6, 1 ) ref -> [fp+0x28] must-init class-hnd exact EH-live single-def <System.Threading.Tasks.TplEventSource>
; V03 loc1 [V03,T06] ( 5, 2 ) ubyte -> [fp+0x5C] do-not-enreg[Z] EH-live
; V04 loc2 [V04,T05] ( 11, 2 ) ubyte -> [fp+0x58] do-not-enreg[Z] EH-live
@@ -93,11 +93,11 @@ G_M51094_IG02: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=800
ldrb w1, [x0, #0x9D]
str w1, [fp, #0x5C] // [V03 loc1]
ldr w1, [fp, #0x5C] // [V03 loc1]
- cbnz w1, G_M51094_IG43
+ cbnz w1, G_M51094_IG47
ldr x1, [fp, #0x30] // [V00 this]
; gcrRegs +[x1]
ldapur w2, [x1, #0x34]
- tbnz w2, #6, G_M51094_IG44
+ tbnz w2, #6, G_M51094_IG48
;; size=76 bbWeight=1 PerfScore 25.00
G_M51094_IG03: ; bbWeight=1, gcVars=0000000000000204 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0-x1]
@@ -109,7 +109,7 @@ G_M51094_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
str w1, [fp, #0x58] // [V04 loc2]
mov x0, x19
; gcrRegs +[x0]
- cbz x0, G_M51094_IG08
+ cbz x0, G_M51094_IG07
;; size=16 bbWeight=1 PerfScore 3.00
G_M51094_IG05: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0]
@@ -118,28 +118,16 @@ G_M51094_IG05: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
movk x0, #0xD1FFAB1E LSL #16
movk x0, #2 LSL #32
cmp x1, x0
- beq G_M51094_IG07
+ bne G_M51094_IG17
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M51094_IG06: ; bbWeight=0.21, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x1, x19
- ; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #2 LSL #32
- bl CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[x1] +[x0]
- ; gcr arg pop 0
- b G_M51094_IG08
- ;; size=24 bbWeight=0.21 PerfScore 0.84
-G_M51094_IG07: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
+G_M51094_IG06: ; bbWeight=0.38, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, xzr
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.29 PerfScore 0.14
-G_M51094_IG08: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- cbz x0, G_M51094_IG13
+ ;; size=4 bbWeight=0.38 PerfScore 0.19
+G_M51094_IG07: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ cbz x0, G_M51094_IG11
;; size=4 bbWeight=1 PerfScore 1.00
-G_M51094_IG09: ; bbWeight=0.69, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M51094_IG08: ; bbWeight=0.69, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
; GC ptr vars -{V00 V02}
ldr w1, [fp, #0x58] // [V04 loc2]
@@ -151,7 +139,7 @@ G_M51094_IG09: ; bbWeight=0.69, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs -[x0]
; gcr arg pop 0
;; size=24 bbWeight=0.69 PerfScore 5.16
-G_M51094_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51094_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Threading.Tasks.Task:LogFinishCompletionNotification()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #2 LSL #32
@@ -159,38 +147,30 @@ G_M51094_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x0
; gcr arg pop 0
;; size=20 bbWeight=1 PerfScore 5.50
-G_M51094_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M51094_IG10: ; bbWeight=1, epilog, nogc, extend
ldr x23, [sp, #0x88]
ldp x21, x22, [sp, #0x78]
ldp x19, x20, [sp, #0x68]
ldp fp, lr, [sp], #0x90
ret lr
;; size=20 bbWeight=1 PerfScore 6.00
-G_M51094_IG12: ; bbWeight=0.31, gcVars=0000000000000004 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M51094_IG11: ; bbWeight=0.31, gcVars=0000000000000204 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19]
+ ; GC ptr vars +{V00 V02 V09}
+ mov x0, x19
; gcrRegs +[x0]
- ; GC ptr vars +{V00 V02}
+ cbz x0, G_M51094_IG13
+ ;; size=8 bbWeight=0.31 PerfScore 0.47
+G_M51094_IG12: ; bbWeight=0.16, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0]
movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
movk x2, #2 LSL #32
cmp x1, x2
- bne G_M51094_IG46
- ldr x1, [fp, #0x30] // [V00 this]
- ; gcrRegs +[x1]
- ldr w2, [fp, #0x58] // [V04 loc2]
- movz x3, #0xD1FFAB1E // code for System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation:Run(System.Threading.Tasks.Task,ubyte):this
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #2 LSL #32
- ldr x3, [x3]
- ; GC ptr vars -{V00 V02}
- blr x3
- ; gcrRegs -[x0-x1]
- ; gcr arg pop 0
- b G_M51094_IG10
- ;; size=56 bbWeight=0.31 PerfScore 5.16
-G_M51094_IG13: ; bbWeight=0.31, gcVars=0000000000000204 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19]
- ; GC ptr vars +{V00 V02 V09}
+ beq G_M51094_IG18
+ ;; size=24 bbWeight=0.16 PerfScore 0.94
+G_M51094_IG13: ; bbWeight=0.31, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
mov x0, x19
; gcrRegs +[x0]
cbz x0, G_M51094_IG15
@@ -201,29 +181,111 @@ G_M51094_IG14: ; bbWeight=0.16, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
movk x2, #0xD1FFAB1E LSL #16
movk x2, #2 LSL #32
cmp x1, x2
- beq G_M51094_IG45
+ bne G_M51094_IG49
;; size=24 bbWeight=0.16 PerfScore 0.94
-G_M51094_IG15: ; bbWeight=0.31, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- mov x0, x19
- ; gcrRegs +[x0]
- cbz x0, G_M51094_IG17
- ;; size=8 bbWeight=0.31 PerfScore 0.47
-G_M51094_IG16: ; bbWeight=0.16, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG15: ; bbWeight=0.31, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ cbz x0, G_M51094_IG50
+ ;; size=4 bbWeight=0.31 PerfScore 0.31
+G_M51094_IG16: ; bbWeight=0.31, gcVars=0000000000000004 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x19]
+ ; GC ptr vars -{V02 V09}
ldr x1, [x0]
movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
movk x2, #2 LSL #32
cmp x1, x2
- bne G_M51094_IG48
- ;; size=24 bbWeight=0.16 PerfScore 0.94
-G_M51094_IG17: ; bbWeight=0.31, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- cbz x0, G_M51094_IG49
- b G_M51094_IG12
- ;; size=8 bbWeight=0.31 PerfScore 0.62
-G_M51094_IG18: ; bbWeight=0, gcVars=0000000100001204 {V00 V02 V05 V11}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x19]
- ; GC ptr vars -{V09} +{V05 V11 V32}
+ bne G_M51094_IG19
+ ldr x1, [fp, #0x30] // [V00 this]
+ ; gcrRegs +[x1]
+ ldr w2, [fp, #0x58] // [V04 loc2]
+ movz x3, #0xD1FFAB1E // code for System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation:Run(System.Threading.Tasks.Task,ubyte):this
+ movk x3, #0xD1FFAB1E LSL #16
+ movk x3, #2 LSL #32
+ ldr x3, [x3]
+ ; GC ptr vars -{V00}
+ blr x3
+ ; gcrRegs -[x0-x1]
+ ; gcr arg pop 0
+ b G_M51094_IG09
+ ;; size=56 bbWeight=0.31 PerfScore 5.16
+G_M51094_IG17: ; bbWeight=0.12, gcVars=0000000000000204 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x19]
+ ; GC ptr vars +{V00 V02 V09}
+ mov x1, x19
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #2 LSL #32
+ bl CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[x1] +[x0]
+ ; gcr arg pop 0
+ b G_M51094_IG07
+ ;; size=24 bbWeight=0.12 PerfScore 0.48
+G_M51094_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x19]
+ ; GC ptr vars -{V00 V02 V09}
+ ldr w1, [fp, #0x58] // [V04 loc2]
+ movz x2, #0xD1FFAB1E // code for <unknown method>
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #2 LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x0]
+ ; gcr arg pop 0
+ b G_M51094_IG09
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M51094_IG19: ; bbWeight=0, gcVars=0000000000000004 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x0]
+ ; GC ptr vars +{V00 V02}
+ ldr x1, [fp, #0x30] // [V00 this]
+ ; gcrRegs +[x1]
+ ldr w2, [fp, #0x58] // [V04 loc2]
+ ldr x3, [x0]
+ ldr x3, [x3, #0x48]
+ ldr x3, [x3, #0x20]
+ ; GC ptr vars -{V00 V02}
+ blr x3
+ ; gcrRegs -[x0-x1]
+ ; gcr arg pop 0
+ b G_M51094_IG09
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M51094_IG20: ; bbWeight=0, gcVars=0000000000000004 {V00}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x1]
+ ; GC ptr vars +{V00 V02}
+ ldr x0, [fp, #0x30] // [V00 this]
+ ; gcrRegs +[x0]
+ ldr w2, [fp, #0x58] // [V04 loc2]
+ movz x3, #0xD1FFAB1E // code for System.Threading.Tasks.Task:RunOrQueueCompletionAction(System.Threading.Tasks.ITaskCompletionAction,ubyte):this
+ movk x3, #0xD1FFAB1E LSL #16
+ movk x3, #2 LSL #32
+ ldr x3, [x3]
+ ; GC ptr vars -{V00 V02}
+ blr x3
+ ; gcrRegs -[x0-x1]
+ ; gcr arg pop 0
+ b G_M51094_IG09
+ ;; size=32 bbWeight=0 PerfScore 0.00
+G_M51094_IG21: ; bbWeight=0, gcVars=0000000000000204 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x19]
+ ; GC ptr vars +{V00 V02 V09}
+ mov x1, x19
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #2 LSL #32
+ bl CORINFO_HELP_CHKCASTCLASS
+ ; gcrRegs -[x1 x19] +[x0]
+ ; gcr arg pop 0
+ str x0, [fp, #0x20] // [V05 loc3]
+ ; GC ptr vars +{V05}
+ ldr x0, [fp, #0x20] // [V05 loc3]
+ str x0, [fp, #0x18] // [V11 loc9]
+ ; GC ptr vars +{V11}
+ str wzr, [fp, #0x50] // [V12 loc10]
+ ;; size=36 bbWeight=0 PerfScore 0.00
...
+0 (0.00%) : 160865.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:HasYieldOperations(Microsoft.CodeAnalysis.SyntaxNode):ubyte (Tier1)
@@ -22,7 +22,7 @@
; V10 tmp4 [V10,T31] ( 2, 0.14) ref -> x19 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
; V11 tmp5 [V11,T29] ( 6, 0.41) ref -> x21 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
; V12 tmp6 [V12,T33] ( 3, 0.10) int -> x22 single-def "Inline stloc first use temp"
-; V13 tmp7 [V13,T04] ( 7, 7.10) ref -> x19 class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.GreenNode>
+; V13 tmp7 [V13,T04] ( 7, 7.02) ref -> x19 class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.GreenNode>
;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
; V15 tmp9 [V15,T10] ( 4, 3.32) int -> x3 "Inlining Arg"
; V16 tmp10 [V16,T21] ( 2, 1.66) ref -> x4 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
@@ -135,18 +135,18 @@ G_M14867_IG06: ; bbWeight=867.80, gcrefRegs=580000 {x19 x20 x22}, byrefRe
add w23, w23, #1
ldrb w25, [x19, #0x0F]
cmp w25, #255
- beq G_M14867_IG50
+ beq G_M14867_IG52
;; size=16 bbWeight=867.80 PerfScore 4338.98
G_M14867_IG07: ; bbWeight=1.21, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
cmp w23, w25
- beq G_M14867_IG38
+ beq G_M14867_IG37
;; size=8 bbWeight=1.21 PerfScore 1.81
G_M14867_IG08: ; bbWeight=0.92, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
cmp x21, x0
- bne G_M14867_IG30
+ bne G_M14867_IG28
;; size=20 bbWeight=0.92 PerfScore 2.75
G_M14867_IG09: ; bbWeight=0.44, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
mov x0, x19
@@ -160,7 +160,7 @@ G_M14867_IG09: ; bbWeight=0.44, gcrefRegs=580000 {x19 x20 x22}, byrefRegs
; gcr arg pop 0
mov x25, x0
; gcrRegs +[x25]
- b G_M14867_IG31
+ b G_M14867_IG29
;; size=36 bbWeight=0.44 PerfScore 3.52
G_M14867_IG10: ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x20 x22 x25]
@@ -207,7 +207,7 @@ G_M14867_IG10: ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr w1, [x1, #0x10]
; gcrRegs -[x1]
cmp w1, #0
- ble G_M14867_IG45
+ ble G_M14867_IG47
;; size=120 bbWeight=0.03 PerfScore 1.44
G_M14867_IG11: ; bbWeight=0.42, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x21]
@@ -219,22 +219,22 @@ G_M14867_IG11: ; bbWeight=0.42, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
mov x4, x0
; gcrRegs +[x4]
cmp w3, w1
- bge G_M14867_IG53
+ bge G_M14867_IG49
ldr x4, [x4, #0x08]
ldr w5, [x4, #0x08]
cmp w3, w5
- bhs G_M14867_IG49
+ bhs G_M14867_IG51
add x4, x4, #16
; gcrRegs -[x4]
; byrRegs +[x4]
ldr x19, [x4, w3, UXTW #3]
; gcrRegs +[x19]
ldrsb wzr, [x0]
- tbnz w2, #31, G_M14867_IG54
+ tbnz w2, #31, G_M14867_IG50
cmp w2, w1
cset x1, lt
tst w1, #255
- beq G_M14867_IG54
+ beq G_M14867_IG50
ldr w1, [x0, #0x10]
sub w1, w1, #1
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:set_Count(int):this
@@ -245,7 +245,7 @@ G_M14867_IG11: ; bbWeight=0.42, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
; gcrRegs -[x0]
; byrRegs -[x4]
; gcr arg pop 0
- cbz x19, G_M14867_IG38
+ cbz x19, G_M14867_IG37
;; size=108 bbWeight=0.42 PerfScore 15.16
G_M14867_IG12: ; bbWeight=1.66, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldrh w1, [x19, #0x0C]
@@ -254,12 +254,12 @@ G_M14867_IG12: ; bbWeight=1.66, gcrefRegs=180000 {x19 x20}, byrefRegs=000
mov w2, #0xD1FFAB1E
cmp w0, #2
ccmp w1, w2, z, hi
- beq G_M14867_IG38
+ beq G_M14867_IG37
;; size=28 bbWeight=1.66 PerfScore 10.80
G_M14867_IG13: ; bbWeight=0.42, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x2, x19
; gcrRegs +[x2]
- cbz x2, G_M14867_IG17
+ cbz x2, G_M14867_IG16
;; size=8 bbWeight=0.42 PerfScore 0.62
G_M14867_IG14: ; bbWeight=0.21, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x1, [x2]
@@ -267,10 +267,35 @@ G_M14867_IG14: ; bbWeight=0.21, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
cmp x1, x0
- beq G_M14867_IG16
+ bne G_M14867_IG18
;; size=24 bbWeight=0.21 PerfScore 1.25
-G_M14867_IG15: ; bbWeight=0.10, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M14867_IG15: ; bbWeight=0.15, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
+ mov x2, xzr
+ ; gcrRegs +[x2]
+ ;; size=4 bbWeight=0.15 PerfScore 0.07
+G_M14867_IG16: ; bbWeight=0.42, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbnz x2, G_M14867_IG37
+ ;; size=4 bbWeight=0.42 PerfScore 0.42
+G_M14867_IG17: ; bbWeight=0.27, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x2]
+ mov x0, x19
+ ; gcrRegs +[x0]
+ ldr x21, [x0]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ cmp x21, x0
+ beq G_M14867_IG45
+ mov x22, xzr
+ ; gcrRegs +[x22]
+ movn w23, #0
+ movn w24, #0
+ b G_M14867_IG22
+ ;; size=44 bbWeight=0.27 PerfScore 2.44
+G_M14867_IG18: ; bbWeight=0.06, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x22]
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -281,35 +306,10 @@ G_M14867_IG15: ; bbWeight=0.10, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcr arg pop 0
mov x2, x0
; gcrRegs +[x2]
- b G_M14867_IG17
- ;; size=28 bbWeight=0.10 PerfScore 0.45
-G_M14867_IG16: ; bbWeight=0.11, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x2]
- mov x2, xzr
- ; gcrRegs +[x2]
- ;; size=4 bbWeight=0.11 PerfScore 0.05
-G_M14867_IG17: ; bbWeight=0.42, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref, isz
- cbnz x2, G_M14867_IG38
- ;; size=4 bbWeight=0.42 PerfScore 0.42
-G_M14867_IG18: ; bbWeight=0.27, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
- mov x0, x19
- ; gcrRegs +[x0]
- ldr x21, [x0]
- movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- cmp x21, x0
- beq G_M14867_IG47
- mov x22, xzr
- ; gcrRegs +[x22]
- movn w23, #0
- movn w24, #0
- b G_M14867_IG22
- ;; size=44 bbWeight=0.27 PerfScore 2.44
+ b G_M14867_IG16
+ ;; size=28 bbWeight=0.06 PerfScore 0.28
G_M14867_IG19: ; bbWeight=0.72, gcrefRegs=2580000 {x19 x20 x22 x25}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x25]
+ ; gcrRegs -[x0 x2] +[x22 x25]
ldr x1, [x25]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -335,7 +335,7 @@ G_M14867_IG20: ; bbWeight=0.38, gcrefRegs=2580000 {x19 x20 x22 x25}, byre
ldr w1, [x1, #0x08]
; gcrRegs -[x1]
cmp w1, w27
- blt G_M14867_IG28
+ blt G_M14867_IG31
;; size=28 bbWeight=0.38 PerfScore 5.34
G_M14867_IG21: ; bbWeight=0.38, gcrefRegs=6580000 {x19 x20 x22 x25 x26}, byrefRegs=0000 {}, byref
ldrsw x1, [x26, #0x10]
@@ -356,7 +356,7 @@ G_M14867_IG23: ; bbWeight=0.04, gcrefRegs=580000 {x19 x20 x22}, byrefRegs
add w24, w24, #1
ldrb w25, [x22, #0x0F]
cmp w25, #255
- beq G_M14867_IG51
+ beq G_M14867_IG53
;; size=16 bbWeight=0.04 PerfScore 0.21
G_M14867_IG24: ; bbWeight=0.04, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
cmp w24, w25
@@ -368,14 +368,14 @@ G_M14867_IG25: ; bbWeight=0.03, gcrefRegs=580000 {x19 x20 x22}, byrefRegs
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
- bne G_M14867_IG36
+ bne G_M14867_IG39
;; size=24 bbWeight=0.03 PerfScore 0.20
G_M14867_IG26: ; bbWeight=0.03, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x0, [x22, #0x10]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w24, w1
- bhs G_M14867_IG49
+ bhs G_M14867_IG51
ubfiz x1, x24, #3, #32
add x1, x1, #16
ldr x25, [x0, x1]
@@ -385,7 +385,26 @@ G_M14867_IG27: ; bbWeight=0.03, gcrefRegs=2580000 {x19 x20 x22 x25}, byre
; gcrRegs -[x0]
b G_M14867_IG19
;; size=4 bbWeight=0.03 PerfScore 0.03
-G_M14867_IG28: ; bbWeight=0.00, gcrefRegs=6580000 {x19 x20 x22 x25 x26}, byrefRegs=0000 {}, byref, isz
+G_M14867_IG28: ; bbWeight=0.48, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x25]
+ mov x0, x19
+ ; gcrRegs +[x0]
+ mov w1, w23
+ ldr x2, [x21, #0x50]
+ ldr x2, [x2, #0x20]
+ blr x2
+ ; gcr arg pop 0
+ mov x25, x0
+ ; gcrRegs +[x25]
+ ;; size=24 bbWeight=0.48 PerfScore 4.05
+G_M14867_IG29: ; bbWeight=0.92, gcrefRegs=2580000 {x19 x20 x22 x25}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
+ cbz x25, G_M14867_IG06
+ ;; size=4 bbWeight=0.92 PerfScore 0.92
+G_M14867_IG30: ; bbWeight=0.67, gcrefRegs=2580000 {x19 x20 x22 x25}, byrefRegs=0000 {}, byref
+ b G_M14867_IG33
+ ;; size=4 bbWeight=0.67 PerfScore 0.67
+G_M14867_IG31: ; bbWeight=0.00, gcrefRegs=6580000 {x19 x20 x22 x25 x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x26]
ldr x1, [x26, #0x08]
; gcrRegs +[x1]
@@ -393,9 +412,9 @@ G_M14867_IG28: ; bbWeight=0.00, gcrefRegs=6580000 {x19 x20 x22 x25 x26},
; gcrRegs -[x1]
lsl w2, w1, #1
cmp w2, w27
- blt G_M14867_IG33
+ blt G_M14867_IG35
;; size=20 bbWeight=0.00 PerfScore 0.03
-G_M14867_IG29: ; bbWeight=0.00, gcrefRegs=6580000 {x19 x20 x22 x25 x26}, byrefRegs=0000 {}, byref
+G_M14867_IG32: ; bbWeight=0.00, gcrefRegs=6580000 {x19 x20 x22 x25 x26}, byrefRegs=0000 {}, byref
add x1, x26, #8
...
+0 (0.00%) : 332101.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 15, 3.54) ref -> [fp+0x30] this class-hnd EH-live single-def <System.Threading.Tasks.Task>
-; V01 arg1 [V01,T01] ( 10, 5.36) ref -> x19 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T01] ( 10, 5.26) ref -> x19 class-hnd single-def <System.Object>
; V02 loc0 [V02,T10] ( 6, 1 ) ref -> [fp+0x28] must-init class-hnd exact EH-live single-def <System.Threading.Tasks.TplEventSource>
; V03 loc1 [V03,T07] ( 5, 2 ) ubyte -> [fp+0x5C] do-not-enreg[Z] EH-live
; V04 loc2 [V04,T06] ( 11, 2 ) ubyte -> [fp+0x58] do-not-enreg[Z] EH-live
@@ -109,7 +109,7 @@ G_M51094_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
str w1, [fp, #0x58] // [V04 loc2]
mov x0, x19
; gcrRegs +[x0]
- cbz x0, G_M51094_IG08
+ cbz x0, G_M51094_IG07
;; size=16 bbWeight=1 PerfScore 3.00
G_M51094_IG05: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0]
@@ -118,34 +118,22 @@ G_M51094_IG05: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
cmp x1, x0
- beq G_M51094_IG07
+ bne G_M51094_IG18
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M51094_IG06: ; bbWeight=0.24, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x1, x19
- ; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- bl CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[x1] +[x0]
- ; gcr arg pop 0
- b G_M51094_IG08
- ;; size=24 bbWeight=0.24 PerfScore 0.98
-G_M51094_IG07: ; bbWeight=0.26, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
+G_M51094_IG06: ; bbWeight=0.36, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, xzr
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.26 PerfScore 0.13
-G_M51094_IG08: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- cbnz x0, G_M51094_IG16
+ ;; size=4 bbWeight=0.36 PerfScore 0.18
+G_M51094_IG07: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ cbnz x0, G_M51094_IG15
;; size=4 bbWeight=1 PerfScore 1.00
-G_M51094_IG09: ; bbWeight=0.54, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG08: ; bbWeight=0.54, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
mov x0, x19
; gcrRegs +[x0]
- cbz x0, G_M51094_IG11
+ cbz x0, G_M51094_IG10
;; size=8 bbWeight=0.54 PerfScore 0.81
-G_M51094_IG10: ; bbWeight=0.27, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG09: ; bbWeight=0.27, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0]
movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
@@ -153,21 +141,21 @@ G_M51094_IG10: ; bbWeight=0.27, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
cmp x1, x2
beq G_M51094_IG50
;; size=24 bbWeight=0.27 PerfScore 1.62
-G_M51094_IG11: ; bbWeight=0.54, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG10: ; bbWeight=0.54, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
mov x0, x19
; gcrRegs +[x0]
- cbz x0, G_M51094_IG13
+ cbz x0, G_M51094_IG12
;; size=8 bbWeight=0.54 PerfScore 0.81
-G_M51094_IG12: ; bbWeight=0.27, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG11: ; bbWeight=0.27, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0]
movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
cmp x1, x2
- bne G_M51094_IG15
+ bne G_M51094_IG14
;; size=24 bbWeight=0.27 PerfScore 1.62
-G_M51094_IG13: ; bbWeight=0.54, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG12: ; bbWeight=0.54, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
cbz x0, G_M51094_IG49
ldr x1, [x0]
movz x2, #0xD1FFAB1E
@@ -176,7 +164,7 @@ G_M51094_IG13: ; bbWeight=0.54, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
cmp x1, x2
bne G_M51094_IG19
;; size=28 bbWeight=0.54 PerfScore 3.77
-G_M51094_IG14: ; bbWeight=0.46, gcVars=0000000000000004 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M51094_IG13: ; bbWeight=0.46, gcVars=0000000000000004 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
; GC ptr vars -{V02}
ldr x1, [fp, #0x30] // [V00 this]
@@ -190,9 +178,9 @@ G_M51094_IG14: ; bbWeight=0.46, gcVars=0000000000000004 {V00}, gcrefRegs=
blr x3
; gcrRegs -[x0-x1]
; gcr arg pop 0
- b G_M51094_IG17
+ b G_M51094_IG16
;; size=32 bbWeight=0.46 PerfScore 4.81
-G_M51094_IG15: ; bbWeight=0.04, gcVars=0000000000000404 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M51094_IG14: ; bbWeight=0.04, gcVars=0000000000000404 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
; GC ptr vars +{V00 V02 V10}
mov x1, x19
@@ -203,9 +191,9 @@ G_M51094_IG15: ; bbWeight=0.04, gcVars=0000000000000404 {V00 V02}, gcrefR
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- b G_M51094_IG13
+ b G_M51094_IG12
;; size=24 bbWeight=0.04 PerfScore 0.16
-G_M51094_IG16: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M51094_IG15: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19]
; GC ptr vars -{V00 V02 V10}
ldr w1, [fp, #0x58] // [V04 loc2]
@@ -217,7 +205,7 @@ G_M51094_IG16: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs -[x0]
; gcr arg pop 0
;; size=24 bbWeight=0.46 PerfScore 3.46
-G_M51094_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51094_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Threading.Tasks.Task:LogFinishCompletionNotification()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -225,27 +213,40 @@ G_M51094_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x0
; gcr arg pop 0
;; size=20 bbWeight=1 PerfScore 5.50
-G_M51094_IG18: ; bbWeight=1, epilog, nogc, extend
+G_M51094_IG17: ; bbWeight=1, epilog, nogc, extend
ldr x23, [sp, #0x88]
ldp x21, x22, [sp, #0x78]
ldp x19, x20, [sp, #0x68]
ldp fp, lr, [sp], #0x90
ret lr
;; size=20 bbWeight=1 PerfScore 6.00
+G_M51094_IG18: ; bbWeight=0.14, gcVars=0000000000000404 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x19]
+ ; GC ptr vars +{V00 V02 V10}
+ mov x1, x19
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ bl CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[x1] +[x0]
+ ; gcr arg pop 0
+ b G_M51094_IG07
+ ;; size=24 bbWeight=0.14 PerfScore 0.56
G_M51094_IG19: ; bbWeight=0.08, gcVars=0000000000000004 {V00}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x0]
- ; GC ptr vars +{V00 V02}
+ ; gcrRegs -[x19]
+ ; GC ptr vars -{V02 V10}
ldr x1, [fp, #0x30] // [V00 this]
; gcrRegs +[x1]
ldr w2, [fp, #0x58] // [V04 loc2]
ldr x3, [x0]
ldr x3, [x3, #0x48]
ldr x3, [x3, #0x20]
- ; GC ptr vars -{V00 V02}
+ ; GC ptr vars -{V00}
blr x3
; gcrRegs -[x0-x1]
; gcr arg pop 0
- b G_M51094_IG17
+ b G_M51094_IG16
;; size=28 bbWeight=0.08 PerfScore 1.21
G_M51094_IG20: ; bbWeight=0, gcVars=0000000000000004 {V00}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x1]
@@ -261,7 +262,7 @@ G_M51094_IG20: ; bbWeight=0, gcVars=0000000000000004 {V00}, gcrefRegs=000
blr x3
; gcrRegs -[x0-x1]
; gcr arg pop 0
- b G_M51094_IG17
+ b G_M51094_IG16
;; size=32 bbWeight=0 PerfScore 0.00
G_M51094_IG21: ; bbWeight=0, gcVars=0000000000000404 {V00 V02}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
@@ -720,7 +721,7 @@ G_M51094_IG43: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
G_M51094_IG44: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
cmp w20, w19
blt G_M51094_IG37
- b G_M51094_IG17
+ b G_M51094_IG16
;; size=12 bbWeight=0 PerfScore 0.00
G_M51094_IG45: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
@@ -796,7 +797,7 @@ G_M51094_IG50: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- b G_M51094_IG17
+ b G_M51094_IG16
;; size=28 bbWeight=0 PerfScore 0.00
G_M51094_IG51: ; bbWeight=0, gcVars=0000000000001404 {V00 V02 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V00 V02 V05 V10}
@@ -824,7 +825,7 @@ G_M51094_IG53: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1840, prolog size 52, PerfScore 74.36, instruction count 460, allocated bytes for code 1840 (MethodHash=8bc43869) for method System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
+; Total bytes of code 1840, prolog size 52, PerfScore 74.00, instruction count 460, allocated bytes for code 1840 (MethodHash=8bc43869) for method System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
; ============================================================
Unwind Info:
+12 (+1.30%) : 402314.dasm - OLEDB.Test.ModuleCore.CTestModule+
@@ -60,12 +60,12 @@ G_M23047_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=000
ldr w1, [x0, #0x20]
ldr x2, [x0, #0x10]
; gcrRegs +[x2]
- cbz w1, G_M23047_IG12
+ cbz w1, G_M23047_IG07
;; size=12 bbWeight=1 PerfScore 7.00
G_M23047_IG03: ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2]
cmp w1, #1
- bne G_M23047_IG11
+ bne G_M23047_IG17
;; size=8 bbWeight=1.00 PerfScore 1.50
G_M23047_IG04: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
movn w11, #3
@@ -79,7 +79,7 @@ G_M23047_IG04: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M23047_IG24
+ cbz w0, G_M23047_IG23
;; size=40 bbWeight=0.01 PerfScore 0.16
G_M23047_IG05: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0x10] // [V00 this]
@@ -91,7 +91,7 @@ G_M23047_IG05: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movk x15, #0xD1FFAB1E LSL #16
movk x15, #1 LSL #32
cmp x14, x15
- bne G_M23047_IG10
+ bne G_M23047_IG16
ldr x15, [x1, #0x08]
; gcrRegs +[x15]
;; size=36 bbWeight=1.00 PerfScore 13.99
@@ -104,59 +104,9 @@ G_M23047_IG06: ; bbWeight=1.00, gcrefRegs=8001 {x0 x15}, byrefRegs=0000 {
; byrRegs -[x14]
mov w11, #1
str w11, [x0, #0x20]
- b G_M23047_IG29
+ b G_M23047_IG30
;; size=20 bbWeight=1.00 PerfScore 4.00
-G_M23047_IG07: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0] +[x19]
- mov x0, x19
- ; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x48]
- ldr x1, [x1, #0x20]
- blr x1
- ; gcr arg pop 0
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M23047_IG08: ; bbWeight=0, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
- ldr x1, [x0]
- ldr x1, [x1, #0x48]
- ldr x1, [x1, #0x38]
- blr x1
- ; gcr arg pop 0
- b G_M23047_IG21
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M23047_IG09: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- movz x20, #0xD1FFAB1E // code for <unknown method>
- movk x20, #0xD1FFAB1E LSL #16
- movk x20, #1 LSL #32
- mov x11, x20
- ldr x1, [x11]
- blr x1
- ; gcr arg pop 0
- mov x15, x0
- ; gcrRegs +[x15]
- b G_M23047_IG22
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M23047_IG10: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x15] +[x1]
- mov x0, x1
- ; gcrRegs +[x0]
- add x11, x20, #16
- ldr x1, [x11]
- ; gcrRegs -[x1]
- blr x1
- ; gcr arg pop 0
- mov x15, x0
- ; gcrRegs +[x15]
- ldr x0, [fp, #0x10] // [V00 this]
- b G_M23047_IG06
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M23047_IG11: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x15]
- mov w11, wzr
- b G_M23047_IG29
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M23047_IG12: ; bbWeight=0.00, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
+G_M23047_IG07: ; bbWeight=0.00, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x2]
movn w1, #0
str w1, [x0, #0x20]
@@ -170,10 +120,10 @@ G_M23047_IG12: ; bbWeight=0.00, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}
; gcr arg pop 0
mov x15, x0
; gcrRegs +[x15]
- cbz x15, G_M23047_IG28
+ cbz x15, G_M23047_IG29
ldr w14, [x15, #0x10]
cmp w14, #0
- ble G_M23047_IG28
+ ble G_M23047_IG29
ldr w0, [x15, #0x14]
; gcrRegs -[x0]
ldr x2, [fp, #0x10] // [V00 this]
@@ -200,60 +150,99 @@ G_M23047_IG12: ; bbWeight=0.00, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}
; gcrRegs -[x2]
; byrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M23047_IG27
+ cbz w0, G_M23047_IG28
;; size=124 bbWeight=0.00 PerfScore 0.03
-G_M23047_IG13: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M23047_IG08: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x2, [fp, #0x10] // [V00 this]
; gcrRegs +[x2]
ldr x1, [x2, #0x30]
; gcrRegs +[x1]
mov x19, x1
; gcrRegs +[x19]
- cbz x19, G_M23047_IG16
+ cbz x19, G_M23047_IG10
;; size=16 bbWeight=0.01 PerfScore 0.09
-G_M23047_IG14: ; bbWeight=0.01, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M23047_IG09: ; bbWeight=0.01, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2]
ldr x0, [x19]
movz x3, #0xD1FFAB1E
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
cmp x0, x3
- beq G_M23047_IG16
+ bne G_M23047_IG20
;; size=24 bbWeight=0.01 PerfScore 0.04
-G_M23047_IG15: ; bbWeight=0.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[x1] +[x0]
- ; gcr arg pop 0
- mov x19, x0
- ; gcrRegs +[x19]
- ;; size=20 bbWeight=0.00 PerfScore 0.01
-G_M23047_IG16: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- cbz x19, G_M23047_IG26
+G_M23047_IG10: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x1]
+ cbz x19, G_M23047_IG25
ldr x20, [x19]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
cmp x20, x0
- bne G_M23047_IG07
+ bne G_M23047_IG13
;; size=28 bbWeight=0.01 PerfScore 0.10
-G_M23047_IG17: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M23047_IG11: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x18]
; gcrRegs +[x0]
- cbz x0, G_M23047_IG19
+ cbz x0, G_M23047_IG18
;; size=8 bbWeight=0.01 PerfScore 0.06
-G_M23047_IG18: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M23047_IG12: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
ldr x0, [x19, #0x18]
; gcrRegs +[x0]
- b G_M23047_IG20
+ b G_M23047_IG19
;; size=8 bbWeight=0.01 PerfScore 0.06
-G_M23047_IG19: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M23047_IG13: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
+ mov x0, x19
+ ; gcrRegs +[x0]
+ ldr x1, [x19]
+ ldr x1, [x1, #0x48]
+ ldr x1, [x1, #0x20]
+ blr x1
+ ; gcr arg pop 0
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M23047_IG14: ; bbWeight=0, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+ ldr x1, [x0]
+ ldr x1, [x1, #0x48]
+ ldr x1, [x1, #0x38]
+ blr x1
+ ; gcr arg pop 0
+ b G_M23047_IG21
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M23047_IG15: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
+ movz x20, #0xD1FFAB1E // code for <unknown method>
+ movk x20, #0xD1FFAB1E LSL #16
+ movk x20, #1 LSL #32
+ mov x11, x20
+ ldr x1, [x11]
+ blr x1
+ ; gcr arg pop 0
+ mov x15, x0
+ ; gcrRegs +[x15]
+ b G_M23047_IG22
+ ;; size=32 bbWeight=0 PerfScore 0.00
+G_M23047_IG16: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x15] +[x1]
+ mov x0, x1
+ ; gcrRegs +[x0]
+ add x11, x20, #16
+ ldr x1, [x11]
+ ; gcrRegs -[x1]
+ blr x1
+ ; gcr arg pop 0
+ mov x15, x0
+ ; gcrRegs +[x15]
+ ldr x0, [fp, #0x10] // [V00 this]
+ b G_M23047_IG06
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M23047_IG17: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x15]
+ mov w11, wzr
+ b G_M23047_IG30
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M23047_IG18: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0] +[x19]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -269,18 +258,31 @@ G_M23047_IG19: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- b G_M23047_IG18
+ b G_M23047_IG12
;; size=40 bbWeight=0.00 PerfScore 0.01
-G_M23047_IG20: ; bbWeight=0.06, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M23047_IG19: ; bbWeight=0.06, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldr x1, [x0]
movz x3, #0xD1FFAB1E
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
cmp x1, x3
- bne G_M23047_IG08
+ bne G_M23047_IG14
...
+4 (+1.37%) : 161572.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
@@ -9,7 +9,7 @@
; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 7, 6.04) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V00 arg0 [V00,T00] ( 7, 6.00) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
; V01 loc0 [V01,T02] ( 4, 2.54) ref -> x1 class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundConditionalOperator>
; V02 loc1 [V02,T03] ( 4, 2.41) ref -> x2 class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundConvertedSwitchExpression>
; V03 loc2 [V03,T05] ( 6, 2.04) ref -> x0 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpressionBase>
@@ -43,7 +43,7 @@ G_M35670_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
cmp x0, x2
- beq G_M35670_IG15
+ beq G_M35670_IG14
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M35670_IG04: ; bbWeight=0.96, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
@@ -63,7 +63,7 @@ G_M35670_IG06: ; bbWeight=0.96, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs -[x2]
mov x0, x19
; gcrRegs +[x0]
- cbz x0, G_M35670_IG10
+ cbz x0, G_M35670_IG09
;; size=8 bbWeight=0.96 PerfScore 1.45
G_M35670_IG07: ; bbWeight=0.48, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0]
@@ -72,31 +72,20 @@ G_M35670_IG07: ; bbWeight=0.48, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
cmp x1, x0
- beq G_M35670_IG09
+ bne G_M35670_IG17
;; size=24 bbWeight=0.48 PerfScore 2.89
-G_M35670_IG08: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x1, x19
- ; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[x1] +[x0]
- b G_M35670_IG10
- ;; size=24 bbWeight=0.20 PerfScore 0.81
-G_M35670_IG09: ; bbWeight=0.28, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
+G_M35670_IG08: ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, xzr
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.28 PerfScore 0.14
-G_M35670_IG10: ; bbWeight=0.96, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- cbnz x0, G_M35670_IG18
+ ;; size=4 bbWeight=0.32 PerfScore 0.16
+G_M35670_IG09: ; bbWeight=0.96, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ cbnz x0, G_M35670_IG20
;; size=4 bbWeight=0.96 PerfScore 0.96
-G_M35670_IG11: ; bbWeight=0.91, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35670_IG10: ; bbWeight=0.91, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz x19, G_M35670_IG16
+ cbz x19, G_M35670_IG15
;; size=4 bbWeight=0.91 PerfScore 0.91
-G_M35670_IG12: ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35670_IG11: ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -104,29 +93,47 @@ G_M35670_IG12: ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
cmp x0, x1
beq G_M35670_IG22
;; size=24 bbWeight=0.46 PerfScore 2.74
-G_M35670_IG13: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35670_IG12: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
- b G_M35670_IG16
+ b G_M35670_IG15
;; size=4 bbWeight=0.23 PerfScore 0.23
-G_M35670_IG14: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35670_IG13: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1
- b G_M35670_IG17
+ b G_M35670_IG16
;; size=8 bbWeight=0.04 PerfScore 0.05
-G_M35670_IG15: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M35670_IG14: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldrb w2, [x1, #0x49]
- cbnz w2, G_M35670_IG14
+ cbnz w2, G_M35670_IG13
;; size=8 bbWeight=0.04 PerfScore 0.14
-G_M35670_IG16: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35670_IG15: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
mov w0, wzr
;; size=4 bbWeight=0.96 PerfScore 0.48
-G_M35670_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M35670_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M35670_IG18: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35670_IG17: ; bbWeight=0.16, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x19]
+ mov x1, x19
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ bl CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[x1] +[x0]
+ b G_M35670_IG09
+ ;; size=24 bbWeight=0.16 PerfScore 0.64
+G_M35670_IG18: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0 x19]
+ cbnz w20, G_M35670_IG13
+ ;; size=4 bbWeight=0.05 PerfScore 0.05
+G_M35670_IG19: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M35670_IG15
+ ;; size=4 bbWeight=0.02 PerfScore 0.02
+G_M35670_IG20: ; bbWeight=0.05, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldr x1, [x0]
movz x2, #0xD1FFAB1E
@@ -135,25 +142,19 @@ G_M35670_IG18: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=000
cmp x1, x2
bne G_M35670_IG23
ldrb w20, [x0, #0x39]
- ;; size=28 bbWeight=0.05 PerfScore 0.47
-G_M35670_IG19: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- cbnz w20, G_M35670_IG14
- ;; size=4 bbWeight=0.05 PerfScore 0.05
-G_M35670_IG20: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M35670_IG16
- ;; size=4 bbWeight=0.02 PerfScore 0.02
+ b G_M35670_IG18
+ ;; size=32 bbWeight=0.05 PerfScore 0.53
G_M35670_IG21: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x2]
+ ; gcrRegs -[x0] +[x2]
ldrb w0, [x2, #0x50]
- cbnz w0, G_M35670_IG14
- b G_M35670_IG16
+ cbnz w0, G_M35670_IG13
+ b G_M35670_IG15
;; size=12 bbWeight=0 PerfScore 0.00
G_M35670_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2] +[x19]
ldrb w0, [x19, #0x31]
- cbz w0, G_M35670_IG16
- b G_M35670_IG14
+ cbz w0, G_M35670_IG15
+ b G_M35670_IG13
;; size=12 bbWeight=0 PerfScore 0.00
G_M35670_IG23: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] +[x0]
@@ -163,10 +164,10 @@ G_M35670_IG23: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
blr x1
; gcrRegs -[x0]
sxtw w20, w0
- b G_M35670_IG19
+ b G_M35670_IG18
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 292, prolog size 12, PerfScore 26.20, instruction count 73, allocated bytes for code 292 (MethodHash=471574a9) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
+; Total bytes of code 296, prolog size 12, PerfScore 26.10, instruction count 74, allocated bytes for code 296 (MethodHash=471574a9) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -177,7 +178,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 73 (0x00049) Actual length = 292 (0x000124)
+ Function Length : 74 (0x0004a) Actual length = 296 (0x000128)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+36 (+13.43%) : 312028.dasm - System.Linq.Enumerable+Concat2Iterator
1[int]:Concat(System.Collections.Generic.IEnumerable1[int]):System.Linq.Enumerable+ConcatIterator`1[int]:this (Tier1)@@ -9,16 +9,17 @@
; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 5, 3.89) ref -> x20 this class-hnd single-def <System.Linq.Enumerable+Concat2Iterator`1[int]>
-; V01 arg1 [V01,T01] ( 4, 4 ) ref -> x19 class-hnd single-def <System.Collections.Generic.IEnumerable`1[int]>
-; V02 loc0 [V02,T08] ( 2, 2 ) ubyte -> x21
+; V00 this [V00,T03] ( 5, 3.89) ref -> x20 this class-hnd single-def <System.Linq.Enumerable+Concat2Iterator`1[int]>
+; V01 arg1 [V01,T02] ( 5, 4.22) ref -> x19 class-hnd single-def <System.Collections.Generic.IEnumerable`1[int]>
+; V02 loc0 [V02,T09] ( 2, 2 ) ubyte -> x21
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T07] ( 3, 2 ) int -> x0
+; V04 tmp1 [V04,T08] ( 3, 2 ) int -> x0
; V05 tmp2 [V05,T00] ( 7, 14 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+ConcatNIterator`1[int]>
-; V06 rat0 [V06,T05] ( 3, 2 ) ref -> x1 "Spilling to split statement for tree"
-; V07 rat1 [V07,T03] ( 5, 3.33) ref -> x2 class-hnd "replacement local" <<unknown class>>
-; V08 rat2 [V08,T06] ( 3, 2 ) ref -> x1 "Spilling to split statement for tree"
-; V09 rat3 [V09,T04] ( 5, 3.33) ref -> x2 class-hnd "replacement local" <<unknown class>>
+; V06 rat0 [V06,T01] ( 5, 7.44) ref -> x2 class-hnd "replacement local" <<unknown class>>
+; V07 rat1 [V07,T06] ( 3, 2 ) ref -> x1 "Spilling to split statement for tree"
+; V08 rat2 [V08,T04] ( 5, 3.33) ref -> x2 class-hnd "replacement local" <<unknown class>>
+; V09 rat3 [V09,T07] ( 3, 2 ) ref -> x1 "Spilling to split statement for tree"
+; V10 rat4 [V10,T05] ( 5, 3.33) ref -> x2 class-hnd "replacement local" <<unknown class>>
;
; Lcl frame size = 0
@@ -33,6 +34,20 @@ G_M16061_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=24 bbWeight=1 PerfScore 4.50
G_M16061_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ mov x2, x19
+ ; gcrRegs +[x2]
+ cbz x2, G_M16061_IG05
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M16061_IG03: ; bbWeight=0.50, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x2]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ cmp x1, x0
+ beq G_M16061_IG05
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M16061_IG04: ; bbWeight=0.22, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x2]
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -40,13 +55,18 @@ G_M16061_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
movk x0, #1 LSL #32
bl CORINFO_HELP_ISINSTANCEOFINTERFACE
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M16061_IG06
- ;; size=24 bbWeight=1 PerfScore 4.00
-G_M16061_IG03: ; bbWeight=0.56, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ mov x2, x0
+ ; gcrRegs +[x2]
+ ;; size=24 bbWeight=0.22 PerfScore 0.77
+G_M16061_IG05: ; bbWeight=1, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
+ cbnz x2, G_M16061_IG09
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M16061_IG06: ; bbWeight=0.56, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x2]
mov w0, wzr
;; size=4 bbWeight=0.56 PerfScore 0.28
-G_M16061_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M16061_IG07: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
uxtb w21, w0
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -78,46 +98,20 @@ G_M16061_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
mov x0, x22
; gcrRegs +[x0]
;; size=72 bbWeight=1 PerfScore 12.50
-G_M16061_IG05: ; bbWeight=1, epilog, nogc, extend
+G_M16061_IG08: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
-G_M16061_IG06: ; bbWeight=0.44, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M16061_IG09: ; bbWeight=0.44, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0 x22] +[x19-x20]
ldr x1, [x20, #0x20]
; gcrRegs +[x1]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M16061_IG09
- ;; size=12 bbWeight=0.44 PerfScore 2.00
-G_M16061_IG07: ; bbWeight=0.22, gcrefRegs=180006 {x1 x2 x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x2]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- cmp x0, x3
- beq G_M16061_IG09
- ;; size=24 bbWeight=0.22 PerfScore 1.33
-G_M16061_IG08: ; bbWeight=0.11, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- bl CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=20 bbWeight=0.11 PerfScore 0.33
-G_M16061_IG09: ; bbWeight=0.44, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- cbz x2, G_M16061_IG03
- ldr x1, [x20, #0x28]
- ; gcrRegs +[x1]
- mov x2, x1
cbz x2, G_M16061_IG12
- ;; size=16 bbWeight=0.44 PerfScore 2.44
+ ;; size=12 bbWeight=0.44 PerfScore 2.00
G_M16061_IG10: ; bbWeight=0.22, gcrefRegs=180006 {x1 x2 x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x0, [x2]
movz x3, #0xD1FFAB1E
@@ -136,14 +130,40 @@ G_M16061_IG11: ; bbWeight=0.11, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=
mov x2, x0
; gcrRegs +[x2]
;; size=20 bbWeight=0.11 PerfScore 0.33
-G_M16061_IG12: ; bbWeight=0.44, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref
+G_M16061_IG12: ; bbWeight=0.44, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
+ cbz x2, G_M16061_IG06
+ ldr x1, [x20, #0x28]
+ ; gcrRegs +[x1]
+ mov x2, x1
+ cbz x2, G_M16061_IG15
+ ;; size=16 bbWeight=0.44 PerfScore 2.44
+G_M16061_IG13: ; bbWeight=0.22, gcrefRegs=180006 {x1 x2 x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x2]
+ movz x3, #0xD1FFAB1E
+ movk x3, #0xD1FFAB1E LSL #16
+ movk x3, #1 LSL #32
+ cmp x0, x3
+ beq G_M16061_IG15
+ ;; size=24 bbWeight=0.22 PerfScore 1.33
+G_M16061_IG14: ; bbWeight=0.11, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x2]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ bl CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[x1] +[x0]
+ mov x2, x0
+ ; gcrRegs +[x2]
+ ;; size=20 bbWeight=0.11 PerfScore 0.33
+G_M16061_IG15: ; bbWeight=0.44, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
cmp x2, #0
cset x0, ne
- b G_M16061_IG04
+ b G_M16061_IG07
;; size=12 bbWeight=0.44 PerfScore 0.89
-; Total bytes of code 268, prolog size 16, PerfScore 33.94, instruction count 67, allocated bytes for code 268 (MethodHash=7d72c142) for method System.Linq.Enumerable+Concat2Iterator`1[int]:Concat(System.Collections.Generic.IEnumerable`1[int]):System.Linq.Enumerable+ConcatIterator`1[int]:this (Tier1)
+; Total bytes of code 304, prolog size 16, PerfScore 36.21, instruction count 76, allocated bytes for code 304 (MethodHash=7d72c142) for method System.Linq.Enumerable+Concat2Iterator`1[int]:Concat(System.Collections.Generic.IEnumerable`1[int]):System.Linq.Enumerable+ConcatIterator`1[int]:this (Tier1)
; ============================================================
Unwind Info:
@@ -154,7 +174,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 67 (0x00043) Actual length = 268 (0x00010c)
+ Function Length : 76 (0x0004c) Actual length = 304 (0x000130)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
Details
Improvements/regressions per collection
Collection
Contexts with diffs
Improvements
Regressions
Same size
Improvements (bytes)
Regressions (bytes)
benchmarks.run.osx.arm64.checked.mch
0
0
0
0
-0
+0
benchmarks.run_pgo.osx.arm64.checked.mch
2
0
2
0
-0
+72
benchmarks.run_tiered.osx.arm64.checked.mch
0
0
0
0
-0
+0
coreclr_tests.run.osx.arm64.checked.mch
2
2
0
0
-84
+0
libraries.crossgen2.osx.arm64.checked.mch
0
0
0
0
-0
+0
libraries.pmi.osx.arm64.checked.mch
0
0
0
0
-0
+0
libraries_tests.run.osx.arm64.Release.mch
20
2
10
8
-96
+92
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
0
0
0
0
-0
+0
realworld.run.osx.arm64.checked.mch
0
0
0
0
-0
+0
24
4
12
8
-180
+164
Context information
Collection
Diffed contexts
MinOpts
FullOpts
Missed, base
Missed, diff
benchmarks.run.osx.arm64.checked.mch
24,614
4
24,610
4 (0.02%)
241 (0.97%)
benchmarks.run_pgo.osx.arm64.checked.mch
84,399
48,412
35,987
93 (0.11%)
275 (0.32%)
benchmarks.run_tiered.osx.arm64.checked.mch
48,192
37,318
10,874
4 (0.01%)
69 (0.14%)
coreclr_tests.run.osx.arm64.checked.mch
585,436
357,177
228,259
391 (0.07%)
785 (0.13%)
libraries.crossgen2.osx.arm64.checked.mch
233,353
15
233,338
0 (0.00%)
0 (0.00%)
libraries.pmi.osx.arm64.checked.mch
312,682
18
312,664
7 (0.00%)
2,034 (0.65%)
libraries_tests.run.osx.arm64.Release.mch
636,285
466,371
169,914
2,745 (0.43%)
3,581 (0.56%)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
300,380
21,558
278,822
11 (0.00%)
2,095 (0.69%)
realworld.run.osx.arm64.checked.mch
31,218
3
31,215
1 (0.00%)
326 (1.03%)
2,256,559
930,876
1,325,683
3,256 (0.14%)
9,406 (0.42%)
jit-analyze output
benchmarks.run_pgo.osx.arm64.checked.mch
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 34446500 (overridden on cmd)
Total bytes of diff: 34446572 (overridden on cmd)
Total bytes of delta: 72 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
36 : 77072.dasm (7.89 % of base)
36 : 73778.dasm (7.89 % of base)
2 total files with Code Size differences (0 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
36 (7.89 % of base) : 77072.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)
36 (7.89 % of base) : 73778.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)
Top method regressions (percentages):
36 (7.89 % of base) : 77072.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)
36 (7.89 % of base) : 73778.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)
2 total methods with Code Size differences (0 improved, 2 regressed).
coreclr_tests.run.osx.arm64.checked.mch
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 484502820 (overridden on cmd)
Total bytes of diff: 484502736 (overridden on cmd)
Total bytes of delta: -84 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-44 : 384030.dasm (-2.49 % of base)
-40 : 379802.dasm (-2.31 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-44 (-2.49 % of base) : 384030.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-40 (-2.31 % of base) : 379802.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
Top method improvements (percentages):
-44 (-2.49 % of base) : 384030.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-40 (-2.31 % of base) : 379802.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
2 total methods with Code Size differences (2 improved, 0 regressed).
libraries_tests.run.osx.arm64.Release.mch
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 311678540 (overridden on cmd)
Total bytes of diff: 311678536 (overridden on cmd)
Total bytes of delta: -4 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
36 : 312028.dasm (13.43 % of base)
12 : 402314.dasm (1.30 % of base)
8 : 345586.dasm (0.93 % of base)
8 : 303299.dasm (0.60 % of base)
8 : 463361.dasm (0.49 % of base)
4 : 601346.dasm (0.55 % of base)
4 : 161572.dasm (1.37 % of base)
4 : 351759.dasm (0.27 % of base)
4 : 626806.dasm (0.56 % of base)
4 : 84374.dasm (0.64 % of base)
Top file improvements (bytes):
-92 : 594261.dasm (-2.15 % of base)
-4 : 630301.dasm (-0.22 % of base)
12 total files with Code Size differences (2 improved, 10 regressed), 8 unchanged.
Top method regressions (bytes):
36 (13.43 % of base) : 312028.dasm - System.Linq.Enumerable+Concat2Iterator`1[int]:Concat(System.Collections.Generic.IEnumerable`1[int]):System.Linq.Enumerable+ConcatIterator`1[int]:this (Tier1)
12 (1.30 % of base) : 402314.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
8 (0.93 % of base) : 345586.dasm - System.Threading.Tasks.Task:ContinueWithCore(System.Threading.Tasks.Task,System.Threading.Tasks.TaskScheduler,System.Threading.CancellationToken,int):this (Tier1)
8 (0.60 % of base) : 303299.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
8 (0.49 % of base) : 463361.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
4 (0.55 % of base) : 601346.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement,Microsoft.CodeAnalysis.CodeGen.ILBuilder,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,int,ubyte):this (Tier1)
4 (1.37 % of base) : 161572.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
4 (0.27 % of base) : 351759.dasm - ReflectionAbstractionExtensions:DisposeTestClass(Xunit.Abstractions.ITest,System.Object,Xunit.Sdk.IMessageBus,Xunit.Sdk.ExecutionTimer,System.Threading.CancellationTokenSource) (Tier1)
4 (0.64 % of base) : 84374.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
4 (0.56 % of base) : 626806.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
Top method improvements (bytes):
-92 (-2.15 % of base) : 594261.dasm - Microsoft.Cci.MetadataWriter:AddCustomAttributesToTable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.Reflection.Metadata.EntityHandle]):this (Tier1-OSR)
-4 (-0.22 % of base) : 630301.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
Top method regressions (percentages):
36 (13.43 % of base) : 312028.dasm - System.Linq.Enumerable+Concat2Iterator`1[int]:Concat(System.Collections.Generic.IEnumerable`1[int]):System.Linq.Enumerable+ConcatIterator`1[int]:this (Tier1)
4 (1.37 % of base) : 161572.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
12 (1.30 % of base) : 402314.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
8 (0.93 % of base) : 345586.dasm - System.Threading.Tasks.Task:ContinueWithCore(System.Threading.Tasks.Task,System.Threading.Tasks.TaskScheduler,System.Threading.CancellationToken,int):this (Tier1)
4 (0.64 % of base) : 84374.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
8 (0.60 % of base) : 303299.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
4 (0.56 % of base) : 626806.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
4 (0.55 % of base) : 601346.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement,Microsoft.CodeAnalysis.CodeGen.ILBuilder,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,int,ubyte):this (Tier1)
8 (0.49 % of base) : 463361.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
4 (0.27 % of base) : 351759.dasm - ReflectionAbstractionExtensions:DisposeTestClass(Xunit.Abstractions.ITest,System.Object,Xunit.Sdk.IMessageBus,Xunit.Sdk.ExecutionTimer,System.Threading.CancellationTokenSource) (Tier1)
Top method improvements (percentages):
-92 (-2.15 % of base) : 594261.dasm - Microsoft.Cci.MetadataWriter:AddCustomAttributesToTable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.Reflection.Metadata.EntityHandle]):this (Tier1-OSR)
-4 (-0.22 % of base) : 630301.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
12 total methods with Code Size differences (2 improved, 10 regressed).
Diffs are based on 2,312,039 contexts (931,543 MinOpts, 1,380,496 FullOpts).
MISSED contexts: base: 2,687 (0.12%), diff: 8,855 (0.38%)
Overall (-80 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch
47,253,428
+36
coreclr_tests.run.windows.arm64.checked.mch
494,497,636
-84
libraries_tests.run.windows.arm64.Release.mch
309,394,148
-32
FullOpts (-80 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch
31,003,044
+36
coreclr_tests.run.windows.arm64.checked.mch
155,406,108
-84
libraries_tests.run.windows.arm64.Release.mch
107,812,644
-32
Example diffs
benchmarks.run_pgo.windows.arm64.checked.mch
+36 (+7.89%) : 31478.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)
@@ -10,54 +10,56 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 8, 6.00) ref -> x19 this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V01 loc0 [V01,T01] ( 5, 3.00) int -> x20
-; V02 loc1 [V02,T17] ( 3, 0.00) ref -> x21 class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-; V03 loc2 [V03,T03] ( 7, 2.51) int -> x21
-; V04 loc3 [V04,T11] ( 7, 0.00) int -> x2
+; V01 loc0 [V01,T02] ( 5, 3.00) int -> x20
+; V02 loc1 [V02,T19] ( 3, 0.00) ref -> x22 class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V03 loc2 [V03,T04] ( 7, 2.51) int -> x21
+; V04 loc3 [V04,T13] ( 7, 0.00) int -> x2
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T23] ( 3, 0.00) ref -> x1 single-def "CASTCLASS eval op1"
-; V07 tmp2 [V07,T26] ( 3, 0.00) long -> x2 "fgMakeTemp is creating a new local variable"
-; V08 tmp3 [V08,T13] ( 5, 0.00) ref -> x21 class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-; V09 tmp4 [V09,T14] ( 2, 0.00) ref -> x4 class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
-; V10 tmp5 [V10,T06] ( 4, 2 ) int -> x20 "Inline return value spill temp"
-; V11 tmp6 [V11,T08] ( 3, 1.43) ref -> x0 class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-; V12 tmp7 [V12,T09] ( 3, 1.00) ref -> x0 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
-; V13 tmp8 [V13,T05] ( 2, 2.01) ref -> x0 "CASTCLASS eval op1"
+; V06 tmp1 [V06,T25] ( 3, 0.00) ref -> x1 single-def "CASTCLASS eval op1"
+; V07 tmp2 [V07,T28] ( 3, 0.00) long -> x2 "fgMakeTemp is creating a new local variable"
+; V08 tmp3 [V08,T15] ( 5, 0.00) ref -> x22 class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V09 tmp4 [V09,T16] ( 2, 0.00) ref -> x4 class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
+; V10 tmp5 [V10,T08] ( 4, 2 ) int -> x20 "Inline return value spill temp"
+; V11 tmp6 [V11,T10] ( 3, 1.43) ref -> x0 class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V12 tmp7 [V12,T11] ( 3, 1.00) ref -> x0 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+; V13 tmp8 [V13,T07] ( 2, 2.01) ref -> x0 "CASTCLASS eval op1"
;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
-; V15 tmp10 [V15,T07] ( 4, 1.75) ref -> x0 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
-; V16 tmp11 [V16,T04] ( 3, 2.01) ref -> x0 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-; V17 tmp12 [V17,T10] ( 4, 0.00) int -> x2 "Inlining Arg"
-; V18 tmp13 [V18,T27] ( 3, 0 ) ref -> x0 "arr expr"
-; V19 tmp14 [V19,T12] ( 3, 0.00) ref -> x1 "arr expr"
-;* V20 tmp15 [V20,T25] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V21 tmp16 [V21,T15] ( 2, 0.00) ref -> x0 "argument with side effect"
-; V22 tmp17 [V22,T16] ( 2, 0.00) ref -> x1 "argument with side effect"
-; V23 cse0 [V23,T20] ( 3, 0.00) int -> x0 "CSE - conservative"
-; V24 cse1 [V24,T18] ( 2, 0.00) ref -> x1 "CSE - conservative"
-; V25 cse2 [V25,T24] ( 3, 0.00) int -> x19 "CSE - conservative"
-; V26 cse3 [V26,T21] ( 3, 0.00) int -> x3 "CSE - conservative"
-; V27 cse4 [V27,T19] ( 3, 0.00) byref -> x1 "CSE - conservative"
-; V28 cse5 [V28,T22] ( 3, 0.00) int -> x20 "CSE - conservative"
-; V29 cse6 [V29,T02] ( 3, 2.71) ref -> x1 "CSE - aggressive"
+; V15 tmp10 [V15,T09] ( 4, 1.75) ref -> x0 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
+; V16 tmp11 [V16,T06] ( 3, 2.01) ref -> x22 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V17 tmp12 [V17,T12] ( 4, 0.00) int -> x2 "Inlining Arg"
+; V18 tmp13 [V18,T29] ( 3, 0 ) ref -> x0 "arr expr"
+; V19 tmp14 [V19,T14] ( 3, 0.00) ref -> x1 "arr expr"
+;* V20 tmp15 [V20,T27] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V21 tmp16 [V21,T17] ( 2, 0.00) ref -> x0 "argument with side effect"
+; V22 tmp17 [V22,T18] ( 2, 0.00) ref -> x1 "argument with side effect"
+; V23 cse0 [V23,T22] ( 3, 0.00) int -> x0 "CSE - conservative"
+; V24 cse1 [V24,T20] ( 2, 0.00) ref -> x1 "CSE - conservative"
+; V25 cse2 [V25,T26] ( 3, 0.00) int -> x21 "CSE - conservative"
+; V26 cse3 [V26,T23] ( 3, 0.00) int -> x3 "CSE - conservative"
+; V27 cse4 [V27,T21] ( 3, 0.00) byref -> x1 "CSE - conservative"
+; V28 cse5 [V28,T24] ( 3, 0.00) int -> x19 "CSE - conservative"
+; V29 cse6 [V29,T03] ( 3, 2.71) ref -> x1 "CSE - aggressive"
+; V30 rat0 [V30,T05] ( 3, 2.26) ref -> x1 "Spilling to split statement for tree"
+; V31 rat1 [V31,T01] ( 5, 3.76) ref -> x22 class-hnd "replacement local" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M41283_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
G_M41283_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
bl <unknown method>
- cbz w0, G_M41283_IG21
+ cbz w0, G_M41283_IG24
ldr w1, [x19, #0x28]
- tbnz w1, #6, G_M41283_IG21
+ tbnz w1, #6, G_M41283_IG24
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
- cbz x1, G_M41283_IG11
+ cbz x1, G_M41283_IG14
;; size=24 bbWeight=1 PerfScore 10.00
G_M41283_IG03: ; bbWeight=0.71, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E
@@ -65,17 +67,17 @@ G_M41283_IG03: ; bbWeight=0.71, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
- cbnz x0, G_M41283_IG22
+ cbnz x0, G_M41283_IG25
mov w20, #1
;; size=24 bbWeight=0.71 PerfScore 2.86
G_M41283_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz w20, G_M41283_IG13
+ cbz w20, G_M41283_IG16
;; size=4 bbWeight=1 PerfScore 1.00
G_M41283_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov w21, wzr
cmp w20, #0
- ble G_M41283_IG13
+ ble G_M41283_IG16
;; size=12 bbWeight=0.50 PerfScore 1.00
G_M41283_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x08]
@@ -88,23 +90,42 @@ G_M41283_IG07: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- beq G_M41283_IG12
+ beq G_M41283_IG15
;; size=24 bbWeight=0.25 PerfScore 1.50
G_M41283_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
+ mov x22, x1
+ ; gcrRegs +[x22]
+ cbz x22, G_M41283_IG11
+ ;; size=12 bbWeight=0.50 PerfScore 2.26
+G_M41283_IG09: ; bbWeight=0.25, gcrefRegs=480002 {x1 x19 x22}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x22]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x0, x2
+ beq G_M41283_IG11
+ ;; size=24 bbWeight=0.25 PerfScore 1.50
+G_M41283_IG10: ; bbWeight=0.13, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x22]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_CHKCASTCLASS
; gcrRegs -[x1] +[x0]
- ldr w1, [x0, #0x10]
- cmp w21, w1
- blo G_M41283_IG10
- ;; size=32 bbWeight=0.50 PerfScore 5.01
-G_M41283_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x19]
+ mov x22, x0
+ ; gcrRegs +[x22]
+ ;; size=20 bbWeight=0.13 PerfScore 0.38
+G_M41283_IG11: ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
+ ldr w0, [x22, #0x10]
+ cmp w21, w0
+ blo G_M41283_IG13
+ ;; size=12 bbWeight=0.50 PerfScore 2.26
+G_M41283_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19 x22]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -112,26 +133,27 @@ G_M41283_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x0
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M41283_IG10: ; bbWeight=0, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0 x19]
- ldr x0, [x0, #0x08]
+G_M41283_IG13: ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x19 x22]
+ ldr x0, [x22, #0x08]
+ ; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w21, w1
- bhs G_M41283_IG20
+ bhs G_M41283_IG23
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
ldr x0, [x0, w21, UXTW #3]
; gcrRegs +[x0]
; byrRegs -[x0]
- b G_M41283_IG12
+ b G_M41283_IG15
;; size=28 bbWeight=0 PerfScore 0.00
-G_M41283_IG11: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
+G_M41283_IG14: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x22]
mov w20, wzr
b G_M41283_IG04
;; size=8 bbWeight=0.29 PerfScore 0.43
-G_M41283_IG12: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG15: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this
movk x1, #0xD1FFAB1E LSL #16
@@ -144,47 +166,47 @@ G_M41283_IG12: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
cmp w21, w20
blt G_M41283_IG06
;; size=36 bbWeight=0.50 PerfScore 5.26
-G_M41283_IG13: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG16: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x2E]
cmp w0, #25
- bne G_M41283_IG21
+ bne G_M41283_IG24
;; size=12 bbWeight=1 PerfScore 4.50
-G_M41283_IG14: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG17: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x19, #0x08]
; gcrRegs +[x1]
- mov x21, x1
- ; gcrRegs +[x21]
- cbnz x21, G_M41283_IG18
+ mov x22, x1
+ ; gcrRegs +[x22]
+ cbnz x22, G_M41283_IG21
;; size=12 bbWeight=0.00 PerfScore 0.00
-G_M41283_IG15: ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG18: ; bbWeight=0.00, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1 x19]
mov w2, wzr
- sub w19, w20, #1
- cmp w19, #0
- ble G_M41283_IG21
+ sub w21, w20, #1
+ cmp w21, #0
+ ble G_M41283_IG24
;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M41283_IG16: ; bbWeight=0.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x21, #0x10]
+G_M41283_IG19: ; bbWeight=0.00, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x22, #0x10]
cmp w2, w0
- bhs G_M41283_IG09
- ldr x1, [x21, #0x08]
+ bhs G_M41283_IG12
+ ldr x1, [x22, #0x08]
; gcrRegs +[x1]
ldr w3, [x1, #0x08]
cmp w2, w3
- bhs G_M41283_IG20
+ bhs G_M41283_IG23
add x1, x1, #16
; gcrRegs -[x1]
; byrRegs +[x1]
ldr x4, [x1, w2, UXTW #3]
; gcrRegs +[x4]
- add w20, w2, #1
...
coreclr_tests.run.windows.arm64.checked.mch
-44 (-2.50%) : 387579.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
@@ -15,90 +15,89 @@
; V03 loc1 [V03,T06] ( 5, 3.77) ref -> x22 class-hnd exact <Internal.TypeSystem.InstantiatedType>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.InstantiatedType>
-;* V06 tmp2 [V06,T40] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V07 tmp3 [V07,T39] ( 2, 0.73) ref -> x0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V08 tmp4 [V08,T24] ( 3, 1.46) long -> x2 "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T48] ( 2, 0 ) ref -> x19 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2 [V06,T39] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T38] ( 2, 0.73) ref -> x0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V08 tmp4 [V08,T23] ( 3, 1.46) long -> x2 "fgMakeTemp is creating a new local variable"
+; V09 tmp5 [V09,T47] ( 2, 0 ) ref -> x19 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
; V10 tmp6 [V10,T03] ( 7, 5.38) ref -> x23 class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
-; V11 tmp7 [V11,T16] ( 3, 2 ) ref -> x21 "guarded devirt return temp"
+; V11 tmp7 [V11,T15] ( 3, 2 ) ref -> x21 "guarded devirt return temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.MethodForInstantiatedType>
-; V13 tmp9 [V13,T10] ( 8, 2.65) ref -> x25 "guarded devirt return temp"
+; V13 tmp9 [V13,T09] ( 8, 2.65) ref -> x25 "guarded devirt return temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V15 tmp11 [V15,T18] ( 4, 1.90) ref -> x27 "guarded devirt return temp"
+; V15 tmp11 [V15,T17] ( 4, 1.90) ref -> x27 "guarded devirt return temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V17 tmp13 [V17,T23] ( 8, 1.56) ref -> x25 "guarded devirt return temp"
+; V17 tmp13 [V17,T22] ( 8, 1.56) ref -> x25 "guarded devirt return temp"
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref
;* V20 tmp16 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp17 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 tmp18 [V22,T26] ( 2, 0.79) int -> x0
-; V23 tmp19 [V23,T22] ( 3, 1.58) ref -> x20 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V22 tmp18 [V22,T25] ( 2, 0.79) int -> x0
+; V23 tmp19 [V23,T21] ( 3, 1.58) ref -> x20 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V25 tmp21 [V25,T36] ( 3, 0.79) ref -> x26 "guarded devirt return temp"
+; V25 tmp21 [V25,T35] ( 3, 0.79) ref -> x26 "guarded devirt return temp"
;* V26 tmp22 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V27 tmp23 [V27,T37] ( 3, 0.79) ref -> x20 "guarded devirt return temp"
-; V28 tmp24 [V28,T13] ( 5, 2.37) ref -> x0 single-def "guarded devirt arg temp"
+; V27 tmp23 [V27,T36] ( 3, 0.79) ref -> x20 "guarded devirt return temp"
+; V28 tmp24 [V28,T12] ( 5, 2.37) ref -> x0 single-def "guarded devirt arg temp"
;* V29 tmp25 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V30 tmp26 [V30,T38] ( 3, 0.79) ref -> x26 "guarded devirt return temp"
-; V31 tmp27 [V31,T14] ( 5, 2.37) ref -> x0 single-def "guarded devirt arg temp"
+; V30 tmp26 [V30,T37] ( 3, 0.79) ref -> x26 "guarded devirt return temp"
+; V31 tmp27 [V31,T13] ( 5, 2.37) ref -> x0 single-def "guarded devirt arg temp"
;* V32 tmp28 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
;* V33 tmp29 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V34 tmp30 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp31 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp32 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V37 tmp33 [V37,T08] ( 5, 2.97) ref -> x0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V38 tmp34 [V38,T33] ( 3, 0.99) ref -> x27 "guarded devirt return temp"
+; V38 tmp34 [V38,T32] ( 3, 0.99) ref -> x27 "guarded devirt return temp"
;* V39 tmp35 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
;* V40 tmp36 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaType>
-;* V41 tmp37 [V41,T20] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V42 tmp38 [V42,T21] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V41 tmp37 [V41,T19] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
+;* V42 tmp38 [V42,T20] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
;* V43 tmp39 [V43 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V44 tmp40 [V44,T05] ( 4, 3.97) ref -> x27 class-hnd exact single-def "impAppendStmt" <<unknown class>>
;* V45 tmp41 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V46 tmp42 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp43 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V48 tmp44 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V49 tmp45 [V49,T12] ( 2, 2.54) int -> x28 "impAppendStmt"
-; V50 tmp46 [V50,T30] ( 4, 1.27) ref -> x0 "guarded devirt return temp"
+; V49 tmp45 [V49,T11] ( 2, 2.54) int -> x28 "impAppendStmt"
+; V50 tmp46 [V50,T29] ( 4, 1.27) ref -> x0 "guarded devirt return temp"
;* V51 tmp47 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V52 tmp48 [V52,T46] ( 2, 0.00) byref -> x28 single-def "impAppendStmt"
-; V53 tmp49 [V53,T47] ( 3, 0.00) int -> x0 "guarded devirt return temp"
-; V54 tmp50 [V54,T45] ( 5, 0.00) ref -> x0 single-def "guarded devirt arg temp"
+; V52 tmp48 [V52,T45] ( 2, 0.00) byref -> x28 single-def "impAppendStmt"
+; V53 tmp49 [V53,T46] ( 3, 0.00) int -> x0 "guarded devirt return temp"
+; V54 tmp50 [V54,T44] ( 5, 0.00) ref -> x0 single-def "guarded devirt arg temp"
;* V55 tmp51 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
;* V56 tmp52 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V57 tmp53 [V57,T31] ( 3, 1.27) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V57 tmp53 [V57,T30] ( 3, 1.27) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
;* V58 tmp54 [V58 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V59 tmp55 [V59 ] ( 2, 1.18) ref -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V60 tmp56 [V60,T25] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V61 tmp57 [V61,T15] ( 4, 2.31) ref -> x0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V62 tmp58 [V62,T35] ( 2, 0.46) int -> x0
-; V63 tmp59 [V63,T34] ( 3, 0.91) ref -> x26 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V60 tmp56 [V60,T24] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V61 tmp57 [V61,T14] ( 3, 2.20) ref -> x0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V62 tmp58 [V62,T34] ( 2, 0.46) int -> x0
+; V63 tmp59 [V63,T33] ( 3, 0.91) ref -> x26 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V64 tmp60 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V65 tmp61 [V65,T41] ( 3, 0.46) ref -> x27 "guarded devirt return temp"
+; V65 tmp61 [V65,T40] ( 3, 0.46) ref -> x27 "guarded devirt return temp"
;* V66 tmp62 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V67 tmp63 [V67,T42] ( 3, 0.46) ref -> x26 "guarded devirt return temp"
-; V68 tmp64 [V68,T27] ( 5, 1.37) ref -> x0 single-def "guarded devirt arg temp"
+; V67 tmp63 [V67,T41] ( 3, 0.46) ref -> x26 "guarded devirt return temp"
+; V68 tmp64 [V68,T26] ( 5, 1.37) ref -> x0 single-def "guarded devirt arg temp"
;* V69 tmp65 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V70 tmp66 [V70,T43] ( 3, 0.46) ref -> x27 "guarded devirt return temp"
-; V71 tmp67 [V71,T28] ( 5, 1.37) ref -> x0 single-def "guarded devirt arg temp"
+; V70 tmp66 [V70,T42] ( 3, 0.46) ref -> x27 "guarded devirt return temp"
+; V71 tmp67 [V71,T27] ( 5, 1.37) ref -> x0 single-def "guarded devirt arg temp"
;* V72 tmp68 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
;* V73 tmp69 [V73 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V74 tmp70 [V74 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V75 tmp71 [V75 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V76 tmp72 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V77 tmp73 [V77,T17] ( 6, 1.98) ref -> x21 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
-; V78 tmp74 [V78,T11] ( 8, 2.62) ref -> x22 single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
-; V79 tmp75 [V79,T29] ( 3, 1.35) int -> x24 single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
+; V77 tmp73 [V77,T16] ( 6, 1.98) ref -> x21 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V78 tmp74 [V78,T10] ( 8, 2.62) ref -> x22 single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
+; V79 tmp75 [V79,T28] ( 3, 1.35) int -> x24 single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
;* V80 tmp76 [V80 ] ( 0, 0 ) ref -> zero-ref single-def "field V58._typicalMethodDef (fldOffset=0x0)" P-INDEP
;* V81 tmp77 [V81 ] ( 0, 0 ) ref -> zero-ref single-def "field V58._instantiatedType (fldOffset=0x8)" P-INDEP
;* V82 tmp78 [V82 ] ( 0, 0 ) int -> zero-ref single-def "field V58._hashcode (fldOffset=0x10)" P-INDEP
; V83 tmp79 [V83 ] ( 8, 5.73) struct (24) [fp+0x10] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
-;* V84 tmp80 [V84,T32] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V85 tmp81 [V85,T44] ( 2, 0.33) ref -> x0 single-def "argument with side effect"
-; V86 cse0 [V86,T19] ( 3, 1.90) ref -> x0 "CSE - moderate"
+;* V84 tmp80 [V84,T31] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V85 tmp81 [V85,T43] ( 2, 0.33) ref -> x0 single-def "argument with side effect"
+; V86 cse0 [V86,T18] ( 3, 1.90) ref -> x0 "CSE - moderate"
; V87 cse1 [V87,T00] ( 18, 9.80) ref -> x1 multi-def "CSE - aggressive"
; V88 cse2 [V88,T07] ( 10, 3.90) long -> x24 multi-def "CSE - aggressive"
-; V89 rat0 [V89,T09] ( 6, 2.93) ref -> x2 class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
;
; Lcl frame size = 32
@@ -152,7 +151,7 @@ G_M10698_IG06: ; bbWeight=0.63, gcrefRegs=680000 {x19 x21 x22}, byrefRegs
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x24, x0
- bne G_M10698_IG53
+ bne G_M10698_IG41
b G_M10698_IG08
;; size=32 bbWeight=0.63 PerfScore 6.34
G_M10698_IG07: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
@@ -184,7 +183,7 @@ G_M10698_IG11: ; bbWeight=0.40, gcrefRegs=2E80000 {x19 x21 x22 x23 x25},
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M10698_IG55
+ bne G_M10698_IG43
ldr x0, [x23, #0x58]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -192,7 +191,7 @@ G_M10698_IG11: ; bbWeight=0.40, gcrefRegs=2E80000 {x19 x21 x22 x23 x25},
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG54
+ bne G_M10698_IG42
ldr x20, [x0, #0x08]
; gcrRegs +[x20]
;; size=56 bbWeight=0.40 PerfScore 7.12
@@ -203,7 +202,7 @@ G_M10698_IG12: ; bbWeight=0.40, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x2
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M10698_IG57
+ bne G_M10698_IG45
ldr x0, [x25, #0x58]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -211,7 +210,7 @@ G_M10698_IG12: ; bbWeight=0.40, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x2
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG56
+ bne G_M10698_IG44
ldr x26, [x0, #0x08]
; gcrRegs +[x26]
;; size=56 bbWeight=0.40 PerfScore 7.12
@@ -268,7 +267,7 @@ G_M10698_IG17: ; bbWeight=0.49, gcrefRegs=680000 {x19 x21 x22}, byrefRegs
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG58
+ bne G_M10698_IG46
ldr x27, [x0, #0x08]
; gcrRegs +[x27]
;; size=36 bbWeight=0.49 PerfScore 7.42
@@ -328,7 +327,7 @@ G_M10698_IG20: ; bbWeight=0.63, gcrefRegs=8600000 {x21 x22 x27}, byrefReg
G_M10698_IG21: ; bbWeight=0.63, gcrefRegs=8600000 {x21 x22 x27}, byrefRegs=0000 {}, byref, isz
ldr x27, [x27, #0x50]
ldr w0, [x22, #0x68]
- cbz w0, G_M10698_IG42
+ cbz w0, G_M10698_IG38
;; size=12 bbWeight=0.63 PerfScore 4.44
G_M10698_IG22: ; bbWeight=0.63, gcrefRegs=8600000 {x21 x22 x27}, byrefRegs=0000 {}, byref, isz
ldr w28, [x22, #0x68]
@@ -336,10 +335,10 @@ G_M10698_IG22: ; bbWeight=0.63, gcrefRegs=8600000 {x21 x22 x27}, byrefReg
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x24, x0
- bne G_M10698_IG44
+ bne G_M10698_IG48
ldr x0, [x21, #0x20]
; gcrRegs +[x0]
- cbz x0, G_M10698_IG59
+ cbz x0, G_M10698_IG37
;; size=32 bbWeight=0.63 PerfScore 6.34
G_M10698_IG23: ; bbWeight=0.63, gcrefRegs=8600001 {x0 x21 x22 x27}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E // code for Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int
@@ -362,7 +361,7 @@ G_M10698_IG23: ; bbWeight=0.63, gcrefRegs=8600001 {x0 x21 x22 x27}, byref
ldr x3, [x3]
blr x3
; gcrRegs -[x0]
- cbz w0, G_M10698_IG41
+ cbz w0, G_M10698_IG40
;; size=72 bbWeight=0.63 PerfScore 12.04
G_M10698_IG24: ; bbWeight=0.55, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x21-x22 x27]
@@ -391,7 +390,7 @@ G_M10698_IG26: ; bbWeight=0.37, gcVars=0000000000000000 {}, gcrefRegs=380
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x24, x0
- bne G_M10698_IG48
+ bne G_M10698_IG52
ldr x25, [x21, #0x10]
; gcrRegs +[x25]
;; size=52 bbWeight=0.37 PerfScore 5.49
@@ -405,7 +404,7 @@ G_M10698_IG28: ; bbWeight=0.23, gcrefRegs=2300000 {x20 x21 x25}, byrefReg
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M10698_IG50
+ bne G_M10698_IG54
ldr x0, [x20, #0x58]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -413,7 +412,7 @@ G_M10698_IG28: ; bbWeight=0.23, gcrefRegs=2300000 {x20 x21 x25}, byrefReg
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG49
+ bne G_M10698_IG53
ldr x26, [x0, #0x08]
; gcrRegs +[x26]
;; size=56 bbWeight=0.23 PerfScore 4.11
@@ -424,7 +423,7 @@ G_M10698_IG29: ; bbWeight=0.23, gcrefRegs=6300000 {x20 x21 x25 x26}, byre
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M10698_IG52
+ bne G_M10698_IG56
ldr x0, [x25, #0x58]
; gcrRegs +[x0]
...
-40 (-2.31%) : 391679.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
@@ -15,90 +15,89 @@
; V03 loc1 [V03,T06] ( 5, 3.79) ref -> x23 class-hnd exact <Internal.TypeSystem.InstantiatedType>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.InstantiatedType>
-;* V06 tmp2 [V06,T39] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V07 tmp3 [V07,T38] ( 2, 0.71) ref -> x0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V08 tmp4 [V08,T25] ( 3, 1.41) long -> x2 "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T48] ( 2, 0 ) ref -> x19 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2 [V06,T38] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T37] ( 2, 0.71) ref -> x0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V08 tmp4 [V08,T24] ( 3, 1.41) long -> x2 "fgMakeTemp is creating a new local variable"
+; V09 tmp5 [V09,T47] ( 2, 0 ) ref -> x19 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
; V10 tmp6 [V10,T04] ( 7, 5.59) ref -> x24 class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
-; V11 tmp7 [V11,T17] ( 3, 2 ) ref -> x22 "guarded devirt return temp"
+; V11 tmp7 [V11,T16] ( 3, 2 ) ref -> x22 "guarded devirt return temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V13 tmp9 [V13,T09] ( 8, 2.82) ref -> x25 "guarded devirt return temp"
+; V13 tmp9 [V13,T08] ( 8, 2.82) ref -> x25 "guarded devirt return temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V15 tmp11 [V15,T18] ( 4, 1.94) ref -> x26 "guarded devirt return temp"
+; V15 tmp11 [V15,T17] ( 4, 1.94) ref -> x26 "guarded devirt return temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V17 tmp13 [V17,T23] ( 8, 1.56) ref -> x25 "guarded devirt return temp"
+; V17 tmp13 [V17,T22] ( 8, 1.56) ref -> x25 "guarded devirt return temp"
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref
;* V20 tmp16 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp17 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 tmp18 [V22,T24] ( 2, 0.84) int -> x0
-; V23 tmp19 [V23,T22] ( 3, 1.71) ref -> x20 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V22 tmp18 [V22,T23] ( 2, 0.84) int -> x0
+; V23 tmp19 [V23,T21] ( 3, 1.71) ref -> x20 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V25 tmp21 [V25,T35] ( 3, 0.84) ref -> x26 "guarded devirt return temp"
+; V25 tmp21 [V25,T34] ( 3, 0.84) ref -> x26 "guarded devirt return temp"
;* V26 tmp22 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V27 tmp23 [V27,T36] ( 3, 0.82) ref -> x20 "guarded devirt return temp"
-; V28 tmp24 [V28,T14] ( 5, 2.42) ref -> x0 single-def "guarded devirt arg temp"
+; V27 tmp23 [V27,T35] ( 3, 0.82) ref -> x20 "guarded devirt return temp"
+; V28 tmp24 [V28,T13] ( 5, 2.42) ref -> x0 single-def "guarded devirt arg temp"
;* V29 tmp25 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V30 tmp26 [V30,T40] ( 3, 0.68) ref -> x26 "guarded devirt return temp"
-; V31 tmp27 [V31,T16] ( 5, 2.04) ref -> x0 single-def "guarded devirt arg temp"
+; V30 tmp26 [V30,T39] ( 3, 0.68) ref -> x26 "guarded devirt return temp"
+; V31 tmp27 [V31,T15] ( 5, 2.04) ref -> x0 single-def "guarded devirt arg temp"
;* V32 tmp28 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
;* V33 tmp29 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V34 tmp30 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp31 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp32 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V37 tmp33 [V37,T12] ( 5, 2.64) ref -> x0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V38 tmp34 [V38,T34] ( 3, 0.88) ref -> x26 "guarded devirt return temp"
+; V37 tmp33 [V37,T11] ( 5, 2.64) ref -> x0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+; V38 tmp34 [V38,T33] ( 3, 0.88) ref -> x26 "guarded devirt return temp"
;* V39 tmp35 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
;* V40 tmp36 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaType>
-;* V41 tmp37 [V41,T20] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V42 tmp38 [V42,T21] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V41 tmp37 [V41,T19] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
+;* V42 tmp38 [V42,T20] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
;* V43 tmp39 [V43 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V44 tmp40 [V44,T05] ( 4, 4.04) ref -> x26 class-hnd exact single-def "impAppendStmt" <<unknown class>>
;* V45 tmp41 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V46 tmp42 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp43 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V48 tmp44 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V49 tmp45 [V49,T13] ( 2, 2.59) int -> x28 "impAppendStmt"
-; V50 tmp46 [V50,T29] ( 4, 1.29) ref -> x0 "guarded devirt return temp"
+; V49 tmp45 [V49,T12] ( 2, 2.59) int -> x28 "impAppendStmt"
+; V50 tmp46 [V50,T28] ( 4, 1.29) ref -> x0 "guarded devirt return temp"
;* V51 tmp47 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V52 tmp48 [V52,T46] ( 2, 0.00) byref -> x27 single-def "impAppendStmt"
-; V53 tmp49 [V53,T47] ( 3, 0.00) int -> x0 "guarded devirt return temp"
-; V54 tmp50 [V54,T45] ( 5, 0.00) ref -> x0 single-def "guarded devirt arg temp"
+; V52 tmp48 [V52,T45] ( 2, 0.00) byref -> x27 single-def "impAppendStmt"
+; V53 tmp49 [V53,T46] ( 3, 0.00) int -> x0 "guarded devirt return temp"
+; V54 tmp50 [V54,T44] ( 5, 0.00) ref -> x0 single-def "guarded devirt arg temp"
;* V55 tmp51 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
;* V56 tmp52 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V57 tmp53 [V57,T30] ( 3, 1.29) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V57 tmp53 [V57,T29] ( 3, 1.29) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
;* V58 tmp54 [V58 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V59 tmp55 [V59 ] ( 2, 1.21) ref -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V60 tmp56 [V60,T26] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V61 tmp57 [V61,T15] ( 4, 2.26) ref -> x0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V62 tmp58 [V62,T37] ( 2, 0.46) int -> x0
-; V63 tmp59 [V63,T33] ( 3, 0.94) ref -> x26 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V60 tmp56 [V60,T25] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V61 tmp57 [V61,T14] ( 3, 2.12) ref -> x0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V62 tmp58 [V62,T36] ( 2, 0.46) int -> x0
+; V63 tmp59 [V63,T32] ( 3, 0.94) ref -> x26 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V64 tmp60 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V65 tmp61 [V65,T41] ( 3, 0.46) ref -> x27 "guarded devirt return temp"
+; V65 tmp61 [V65,T40] ( 3, 0.46) ref -> x27 "guarded devirt return temp"
;* V66 tmp62 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V67 tmp63 [V67,T42] ( 3, 0.45) ref -> x26 "guarded devirt return temp"
-; V68 tmp64 [V68,T28] ( 5, 1.32) ref -> x0 single-def "guarded devirt arg temp"
+; V67 tmp63 [V67,T41] ( 3, 0.45) ref -> x26 "guarded devirt return temp"
+; V68 tmp64 [V68,T27] ( 5, 1.32) ref -> x0 single-def "guarded devirt arg temp"
;* V69 tmp65 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V70 tmp66 [V70,T43] ( 3, 0.37) ref -> x27 "guarded devirt return temp"
-; V71 tmp67 [V71,T32] ( 5, 1.12) ref -> x0 single-def "guarded devirt arg temp"
+; V70 tmp66 [V70,T42] ( 3, 0.37) ref -> x27 "guarded devirt return temp"
+; V71 tmp67 [V71,T31] ( 5, 1.12) ref -> x0 single-def "guarded devirt arg temp"
;* V72 tmp68 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
;* V73 tmp69 [V73 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V74 tmp70 [V74 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V75 tmp71 [V75 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V76 tmp72 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V77 tmp73 [V77,T11] ( 8, 2.67) ref -> x22 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
-; V78 tmp74 [V78,T10] ( 8, 2.67) ref -> x23 single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
-; V79 tmp75 [V79,T27] ( 3, 1.37) int -> x25 single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
+; V77 tmp73 [V77,T10] ( 8, 2.67) ref -> x22 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V78 tmp74 [V78,T09] ( 8, 2.67) ref -> x23 single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
+; V79 tmp75 [V79,T26] ( 3, 1.37) int -> x25 single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
;* V80 tmp76 [V80 ] ( 0, 0 ) ref -> zero-ref single-def "field V58._typicalMethodDef (fldOffset=0x0)" P-INDEP
;* V81 tmp77 [V81 ] ( 0, 0 ) ref -> zero-ref single-def "field V58._instantiatedType (fldOffset=0x8)" P-INDEP
;* V82 tmp78 [V82 ] ( 0, 0 ) int -> zero-ref single-def "field V58._hashcode (fldOffset=0x10)" P-INDEP
; V83 tmp79 [V83 ] ( 8, 5.82) struct (24) [fp+0x10] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
-;* V84 tmp80 [V84,T31] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V85 tmp81 [V85,T44] ( 2, 0.32) ref -> x0 single-def "argument with side effect"
-; V86 cse0 [V86,T19] ( 3, 1.94) ref -> x0 "CSE - moderate"
+;* V84 tmp80 [V84,T30] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V85 tmp81 [V85,T43] ( 2, 0.32) ref -> x0 single-def "argument with side effect"
+; V86 cse0 [V86,T18] ( 3, 1.94) ref -> x0 "CSE - moderate"
; V87 cse1 [V87,T00] ( 18, 9.88) ref -> x1 multi-def "CSE - aggressive"
; V88 cse2 [V88,T07] ( 6, 4.29) long -> x21 "CSE - aggressive"
-; V89 rat0 [V89,T08] ( 6, 2.83) ref -> x2 class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
;
; Lcl frame size = 32
@@ -149,7 +148,7 @@ G_M10698_IG06: ; bbWeight=0.65, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs
; gcrRegs +[x24]
ldr x0, [x22]
cmp x0, x21
- bne G_M10698_IG55
+ bne G_M10698_IG49
b G_M10698_IG08
;; size=20 bbWeight=0.65 PerfScore 5.50
G_M10698_IG07: ; bbWeight=0.41, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
@@ -191,7 +190,7 @@ G_M10698_IG12: ; bbWeight=0.40, gcrefRegs=3C80000 {x19 x22 x23 x24 x25},
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG56
+ bne G_M10698_IG50
ldr x20, [x0, #0x08]
; gcrRegs +[x20]
;; size=32 bbWeight=0.40 PerfScore 4.84
@@ -212,7 +211,7 @@ G_M10698_IG14: ; bbWeight=0.34, gcrefRegs=3D80000 {x19 x20 x22 x23 x24 x2
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG57
+ bne G_M10698_IG51
ldr x26, [x0, #0x08]
; gcrRegs +[x26]
;; size=32 bbWeight=0.34 PerfScore 4.08
@@ -266,7 +265,7 @@ G_M10698_IG19: ; bbWeight=0.44, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG58
+ bne G_M10698_IG52
ldr x26, [x0, #0x08]
; gcrRegs +[x26]
b G_M10698_IG22
@@ -358,10 +357,10 @@ G_M10698_IG26: ; bbWeight=0.65, gcrefRegs=4C00000 {x22 x23 x26}, byrefReg
ldr w28, [x23, #0x68]
ldr x0, [x22]
cmp x0, x21
- bne G_M10698_IG61
+ bne G_M10698_IG54
ldr x0, [x22, #0x20]
; gcrRegs +[x0]
- cbz x0, G_M10698_IG59
+ cbz x0, G_M10698_IG43
;; size=24 bbWeight=0.65 PerfScore 7.44
G_M10698_IG27: ; bbWeight=0.65, gcrefRegs=4C00001 {x0 x22 x23 x26}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E // code for Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int
@@ -410,7 +409,7 @@ G_M10698_IG30: ; bbWeight=0.35, gcVars=0000000000000000 {}, gcrefRegs=580
beq G_M10698_IG41
ldr x0, [x22]
cmp x0, x21
- bne G_M10698_IG51
+ bne G_M10698_IG58
ldr x25, [x22, #0x10]
; gcrRegs +[x25]
;; size=40 bbWeight=0.35 PerfScore 4.77
@@ -424,7 +423,7 @@ G_M10698_IG32: ; bbWeight=0.23, gcrefRegs=2500000 {x20 x22 x25}, byrefReg
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M10698_IG53
+ bne G_M10698_IG47
;; size=24 bbWeight=0.23 PerfScore 1.38
G_M10698_IG33: ; bbWeight=0.22, gcrefRegs=2500000 {x20 x22 x25}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20, #0x58]
@@ -434,7 +433,7 @@ G_M10698_IG33: ; bbWeight=0.22, gcrefRegs=2500000 {x20 x22 x25}, byrefReg
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG52
+ bne G_M10698_IG59
ldr x26, [x0, #0x08]
; gcrRegs +[x26]
;; size=32 bbWeight=0.22 PerfScore 2.64
@@ -445,7 +444,7 @@ G_M10698_IG34: ; bbWeight=0.23, gcrefRegs=6500000 {x20 x22 x25 x26}, byre
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M10698_IG54
+ bne G_M10698_IG48
;; size=24 bbWeight=0.23 PerfScore 1.38
G_M10698_IG35: ; bbWeight=0.19, gcrefRegs=6500000 {x20 x22 x25 x26}, byrefRegs=0000 {}, byref, isz
ldr x0, [x25, #0x58]
@@ -455,7 +454,7 @@ G_M10698_IG35: ; bbWeight=0.19, gcrefRegs=6500000 {x20 x22 x25 x26}, byre
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG63
+ bne G_M10698_IG60
ldr x27, [x0, #0x08]
; gcrRegs +[x27]
;; size=32 bbWeight=0.19 PerfScore 2.23
@@ -517,20 +516,6 @@ G_M10698_IG41: ; bbWeight=0.35, gcVars=0000000000000000 {}, gcrefRegs=180
ldr x1, [x1, #0x18]
blr x1
ldrsb wzr, [x0]
- mov x2, x0
- ; gcrRegs +[x2]
- cbz x2, G_M10698_IG48
- ;; size=32 bbWeight=0.35 PerfScore 5.30
-G_M10698_IG42: ; bbWeight=0.18, gcrefRegs=180005 {x0 x2 x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x2]
- movz x2, #0xD1FFAB1E
- ; gcrRegs -[x2]
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- cmp x1, x2
- beq G_M10698_IG47
- ;; size=24 bbWeight=0.18 PerfScore 1.06
-G_M10698_IG43: ; bbWeight=0.07, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
mov x1, x0
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -539,12 +524,40 @@ G_M10698_IG43: ; bbWeight=0.07, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
...
+0 (0.00%) : 221274.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsNonStringEnumerable(System.Object):System.Collections.IEnumerable (Tier1)
@@ -8,14 +8,14 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 3210
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 6, 5.21) ref -> x0 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 6, 5.15) ref -> x0 class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02,T02] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V03 rat0 [V03,T01] ( 6, 8 ) ref -> registers class-hnd "replacement local" <System.Collections.IEnumerable>
;
; Lcl frame size = 0
-G_M8290_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M8290_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
@@ -30,7 +30,7 @@ G_M8290_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
beq G_M8290_IG08
mov x2, x0
; gcrRegs +[x2]
- cbz x2, G_M8290_IG06
+ cbz x2, G_M8290_IG05
;; size=36 bbWeight=1 PerfScore 8.50
G_M8290_IG03: ; bbWeight=0.50, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
ldr x1, [x2]
@@ -39,9 +39,26 @@ G_M8290_IG03: ; bbWeight=0.50, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {},
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- beq G_M8290_IG05
+ bne G_M8290_IG07
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M8290_IG04: ; bbWeight=0.21, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M8290_IG04: ; bbWeight=0.35, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ mov x0, xzr
+ ; gcrRegs +[x0]
+ mov x2, x0
+ ; gcrRegs +[x2]
+ ;; size=8 bbWeight=0.35 PerfScore 0.35
+G_M8290_IG05: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ mov x0, x2
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M8290_IG06: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M8290_IG07: ; bbWeight=0.15, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x2]
mov x1, x0
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -52,34 +69,18 @@ G_M8290_IG04: ; bbWeight=0.21, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, by
; gcrRegs -[x1] +[x0]
mov x2, x0
; gcrRegs +[x2]
- b G_M8290_IG06
- ;; size=28 bbWeight=0.21 PerfScore 0.95
-G_M8290_IG05: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M8290_IG05
+ ;; size=28 bbWeight=0.15 PerfScore 0.67
+G_M8290_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x2]
mov x0, xzr
- ; gcrRegs +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=8 bbWeight=0.29 PerfScore 0.29
-G_M8290_IG06: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x2
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M8290_IG07: ; bbWeight=1, epilog, nogc, extend
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M8290_IG09: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M8290_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x2]
- mov x0, xzr
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M8290_IG09: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 128, prolog size 8, PerfScore 19.24, instruction count 32, allocated bytes for code 128 (MethodHash=a242df9d) for method Xunit.Sdk.CollectionTrackerExtensions:AsNonStringEnumerable(System.Object):System.Collections.IEnumerable (Tier1)
+; Total bytes of code 128, prolog size 8, PerfScore 16.52, instruction count 32, allocated bytes for code 128 (MethodHash=a242df9d) for method Xunit.Sdk.CollectionTrackerExtensions:AsNonStringEnumerable(System.Object):System.Collections.IEnumerable (Tier1)
; ============================================================
Unwind Info:
libraries_tests.run.windows.arm64.Release.mch
-4 (-0.42%) : 308650.dasm - System.Linq.Enumerable:TryGetFirstint:int (Tier1)
@@ -9,7 +9,7 @@
; 1 inlinees with PGO data; 11 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 13, 7.30) ref -> x19 class-hnd single-def <System.Collections.Generic.IEnumerable`1[int]>
+; V00 arg0 [V00,T01] ( 13, 7.26) ref -> x19 class-hnd single-def <System.Collections.Generic.IEnumerable`1[int]>
; V01 arg1 [V01,T04] ( 6, 3 ) byref -> [fp+0x20] EH-live single-def
; V02 loc0 [V02,T09] ( 3, 2.20) ref -> x0 class-hnd single-def <System.Linq.IPartition`1[int]>
; V03 loc1 [V03,T14] ( 4, 1.67) ref -> x20 class-hnd single-def <System.Collections.Generic.IList`1[int]>
@@ -54,10 +54,10 @@ G_M29477_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=28 bbWeight=1 PerfScore 5.50
G_M29477_IG02: ; bbWeight=1, gcVars=0000000000000010 {V01}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
- cbz x19, G_M29477_IG43
+ cbz x19, G_M29477_IG45
mov x0, x19
; gcrRegs +[x0]
- cbz x0, G_M29477_IG06
+ cbz x0, G_M29477_IG05
;; size=12 bbWeight=1 PerfScore 2.50
G_M29477_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x0]
@@ -66,54 +66,42 @@ G_M29477_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x0, x2
- beq G_M29477_IG05
+ bne G_M29477_IG40
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M29477_IG04: ; bbWeight=0.19, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x1, x19
- ; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[x1] +[x0]
- ; gcr arg pop 0
- b G_M29477_IG06
- ;; size=24 bbWeight=0.19 PerfScore 0.78
-G_M29477_IG05: ; bbWeight=0.30, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
+G_M29477_IG04: ; bbWeight=0.35, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, xzr
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.30 PerfScore 0.15
-G_M29477_IG06: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- cbnz x0, G_M29477_IG15
+ ;; size=4 bbWeight=0.35 PerfScore 0.17
+G_M29477_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ cbnz x0, G_M29477_IG14
;; size=4 bbWeight=1 PerfScore 1.00
-G_M29477_IG07: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M29477_IG06: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
mov x20, x19
; gcrRegs +[x20]
- cbz x20, G_M29477_IG10
+ cbz x20, G_M29477_IG09
;; size=8 bbWeight=0.80 PerfScore 1.20
-G_M29477_IG08: ; bbWeight=0.40, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M29477_IG07: ; bbWeight=0.40, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20]
movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x0, x2
- bne G_M29477_IG12
+ bne G_M29477_IG11
;; size=24 bbWeight=0.40 PerfScore 2.41
-G_M29477_IG09: ; bbWeight=0.27, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M29477_IG08: ; bbWeight=0.27, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20]
mov x20, xzr
; gcrRegs +[x20]
;; size=4 bbWeight=0.27 PerfScore 0.13
-G_M29477_IG10: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M29477_IG13
+G_M29477_IG09: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbz x20, G_M29477_IG12
;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M29477_IG11: ; bbWeight=0.06, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M29477_IG10: ; bbWeight=0.06, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
- b G_M29477_IG41
+ b G_M29477_IG42
;; size=4 bbWeight=0.06 PerfScore 0.06
-G_M29477_IG12: ; bbWeight=0.13, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M29477_IG11: ; bbWeight=0.13, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] +[x19]
mov x1, x19
; gcrRegs +[x1]
@@ -125,21 +113,21 @@ G_M29477_IG12: ; bbWeight=0.13, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcr arg pop 0
mov x20, x0
; gcrRegs +[x20]
- b G_M29477_IG10
+ b G_M29477_IG09
;; size=28 bbWeight=0.13 PerfScore 0.60
-G_M29477_IG13: ; bbWeight=0.74, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M29477_IG12: ; bbWeight=0.74, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x20]
ldr x0, [x19]
movz x21, #0xD1FFAB1E
movk x21, #0xD1FFAB1E LSL #16
movk x21, #0xD1FFAB1E LSL #32
cmp x0, x21
- bne G_M29477_IG17
+ bne G_M29477_IG16
;; size=24 bbWeight=0.74 PerfScore 4.43
-G_M29477_IG14: ; bbWeight=0.54, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M29477_IG33
+G_M29477_IG13: ; bbWeight=0.54, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M29477_IG32
;; size=4 bbWeight=0.54 PerfScore 0.54
-G_M29477_IG15: ; bbWeight=0.20, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M29477_IG14: ; bbWeight=0.20, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] +[x0]
ldr x1, [fp, #0x20] // [V01 arg1]
; byrRegs +[x1]
@@ -153,13 +141,13 @@ G_M29477_IG15: ; bbWeight=0.20, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
; byrRegs -[x1]
; gcr arg pop 0
;; size=24 bbWeight=0.20 PerfScore 1.48
-G_M29477_IG16: ; bbWeight=0.20, epilog, nogc, extend
+G_M29477_IG15: ; bbWeight=0.20, epilog, nogc, extend
ldp x21, x22, [sp, #0x40]
ldp x19, x20, [sp, #0x30]
ldp fp, lr, [sp], #0x50
ret lr
;; size=16 bbWeight=0.20 PerfScore 0.79
-G_M29477_IG17: ; bbWeight=0.20, gcVars=0000000000000010 {V01}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M29477_IG16: ; bbWeight=0.20, gcVars=0000000000000010 {V01}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19]
; GC ptr vars +{V01 V04}
mov x0, x19
@@ -174,22 +162,22 @@ G_M29477_IG17: ; bbWeight=0.20, gcVars=0000000000000010 {V01}, gcrefRegs=
mov x22, x0
; gcrRegs +[x22]
;; size=28 bbWeight=0.20 PerfScore 1.30
-G_M29477_IG18: ; bbWeight=0.74, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M29477_IG17: ; bbWeight=0.74, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
str x22, [fp, #0x18] // [V04 loc2]
;; size=4 bbWeight=0.74 PerfScore 0.74
-G_M29477_IG19: ; bbWeight=0.74, gcVars=0000000000020010 {V01 V04}, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M29477_IG18: ; bbWeight=0.74, gcVars=0000000000020010 {V01 V04}, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x1, [x22]
cmp x1, x21
- bne G_M29477_IG26
+ bne G_M29477_IG25
;; size=12 bbWeight=0.74 PerfScore 3.33
-G_M29477_IG20: ; bbWeight=0.58, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+G_M29477_IG19: ; bbWeight=0.58, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
ldr w1, [x22, #0x0C]
sub w2, w1, #2
cmn w2, #2
- ble G_M29477_IG25
+ ble G_M29477_IG24
cmp w1, #1
- bne G_M29477_IG21
+ bne G_M29477_IG20
ldr x0, [x22, #0x18]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Linq.Enumerable:ToArray[int](System.Collections.Generic.IEnumerable`1[int]):int[]
@@ -210,16 +198,16 @@ G_M29477_IG20: ; bbWeight=0.58, gcrefRegs=400000 {x22}, byrefRegs=0000 {}
add w0, w0, #2
str w0, [x22, #0x0C]
;; size=72 bbWeight=0.58 PerfScore 12.55
-G_M29477_IG21: ; bbWeight=0.58, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+G_M29477_IG20: ; bbWeight=0.58, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
ldr w11, [x22, #0x0C]
sub w1, w11, #3
cmn w1, #1
- beq G_M29477_IG25
+ beq G_M29477_IG24
ldr x2, [x22, #0x20]
; gcrRegs +[x2]
ldr w3, [x2, #0x08]
cmp w1, w3
- bhs G_M29477_IG24
+ bhs G_M29477_IG23
add x2, x2, #16
; gcrRegs -[x2]
; byrRegs +[x2]
@@ -228,7 +216,7 @@ G_M29477_IG21: ; bbWeight=0.58, gcrefRegs=400000 {x22}, byrefRegs=0000 {}
sub w11, w11, #1
str w11, [x22, #0x0C]
;; size=52 bbWeight=0.58 PerfScore 10.80
-G_M29477_IG22: ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+G_M29477_IG21: ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x2]
mov w11, #1
ldr x1, [fp, #0x20] // [V01 arg1]
@@ -236,27 +224,27 @@ G_M29477_IG22: ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=0000 {}
strb w11, [x1]
ldr x11, [x22]
cmp x11, x21
- bne G_M29477_IG28
+ bne G_M29477_IG27
;; size=24 bbWeight=0.40 PerfScore 3.22
-G_M29477_IG23: ; bbWeight=0.25, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M29477_IG22: ; bbWeight=0.25, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
; byrRegs -[x1]
ldr w20, [x22, #0x10]
- b G_M29477_IG29
+ b G_M29477_IG28
;; size=8 bbWeight=0.25 PerfScore 1.01
-G_M29477_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M29477_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M29477_IG25: ; bbWeight=0.58, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M29477_IG24: ; bbWeight=0.58, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
; gcrRegs +[x22]
str xzr, [x22, #0x20]
str wzr, [x22, #0x10]
movn w11, #0
str w11, [x22, #0x0C]
- b G_M29477_IG36
+ b G_M29477_IG35
;; size=20 bbWeight=0.58 PerfScore 2.63
-G_M29477_IG26: ; bbWeight=0.16, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+G_M29477_IG25: ; bbWeight=0.16, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
mov x0, x22
; gcrRegs +[x0]
movz x11, #0xD1FFAB1E // code for <unknown method>
@@ -266,12 +254,12 @@ G_M29477_IG26: ; bbWeight=0.16, gcrefRegs=400000 {x22}, byrefRegs=0000 {}
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M29477_IG36
+ cbz w0, G_M29477_IG35
;; size=28 bbWeight=0.16 PerfScore 1.09
-G_M29477_IG27: ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
- b G_M29477_IG22
+G_M29477_IG26: ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+ b G_M29477_IG21
;; size=4 bbWeight=0.40 PerfScore 0.40
-G_M29477_IG28: ; bbWeight=0.15, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M29477_IG27: ; bbWeight=0.15, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
mov x0, x22
; gcrRegs +[x0]
movz x11, #0xD1FFAB1E // code for <unknown method>
@@ -283,35 +271,35 @@ G_M29477_IG28: ; bbWeight=0.15, gcrefRegs=400000 {x22}, byrefRegs=0000 {}
; gcr arg pop 0
sxtw w20, w0
;; size=28 bbWeight=0.15 PerfScore 0.97
...
-4 (-0.18%) : 538090.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
@@ -204,7 +204,7 @@ G_M58093_IG11: ; bbWeight=0.75, gcrefRegs=100001 {x0 x20}, byrefRegs=0000
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x21, x1
- beq G_M58093_IG33
+ beq G_M58093_IG26
;; size=20 bbWeight=0.75 PerfScore 2.24
G_M58093_IG12: ; bbWeight=0.37, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
b G_M58093_IG19
@@ -297,7 +297,7 @@ G_M58093_IG16: ; bbWeight=0.02, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M58093_IG30
+ bne G_M58093_IG23
mov x0, x27
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Reflection.RuntimeMethodInfo:get_DeclaringType():System.Type:this
@@ -340,23 +340,23 @@ G_M58093_IG19: ; bbWeight=0.75, gcrefRegs=100001 {x0 x20}, byrefRegs=0000
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x21, x1
- beq G_M58093_IG34
+ beq G_M58093_IG27
movz x22, #0xD1FFAB1E
movk x22, #0xD1FFAB1E LSL #16
movk x22, #0xD1FFAB1E LSL #32
cmp x21, x22
- beq G_M58093_IG29
+ beq G_M58093_IG22
add x1, x22, #0xD1FFAB1E
cmp x21, x1
- beq G_M58093_IG29
+ beq G_M58093_IG22
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x21, x1
- beq G_M58093_IG32
+ beq G_M58093_IG25
;; size=72 bbWeight=0.75 PerfScore 8.22
G_M58093_IG20: ; bbWeight=0.37, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
- b G_M58093_IG35
+ b G_M58093_IG28
;; size=4 bbWeight=0.37 PerfScore 0.37
G_M58093_IG21: ; bbWeight=0, gcrefRegs=8000000 {x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x20] +[x27]
@@ -379,22 +379,323 @@ G_M58093_IG21: ; bbWeight=0, gcrefRegs=8000000 {x27}, byrefRegs=0000 {},
; gcrRegs +[x1]
mov x19, x1
; gcrRegs +[x19]
- cbz x19, G_M58093_IG31
+ cbz x19, G_M58093_IG24
ldr x0, [x19]
; gcrRegs -[x0]
movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x0, x2
- beq G_M58093_IG31
+ beq G_M58093_IG24
mov x0, x2
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1 x19] +[x0]
; gcr arg pop 0
brk_windows #0
;; size=88 bbWeight=0 PerfScore 0.00
-G_M58093_IG22: ; bbWeight=0, gcrefRegs=2200000 {x21 x25}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0] +[x21 x25]
+G_M58093_IG22: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ movz x1, #0xD1FFAB1E // code for Xunit.Internal.ArgumentFormatter:FormatDateTimeValue(System.Object):System.String
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ ; gcr arg pop 0
+ str x0, [fp, #0x10] // [V09 loc7]
+ ; GC ptr vars +{V09}
+ b G_M58093_IG51
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M58093_IG23: ; bbWeight=0, gcrefRegs=8100000 {x20 x27}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0] +[x20 x27]
+ ; GC ptr vars -{V09}
+ mov x0, x27
+ ; gcrRegs +[x0]
+ ldr x1, [x27]
+ ldr x1, [x1, #0x48]
+ ldr x1, [x1, #0x38]
+ blr x1
+ ; gcr arg pop 0
+ b G_M58093_IG17
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M58093_IG24: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x20 x27] +[x19]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ cmp x19, #0
+ csel x19, x19, x0, ne
+ str x19, [fp, #0x10] // [V09 loc7]
+ ; GC ptr vars +{V09}
+ b G_M58093_IG51
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M58093_IG25: ; bbWeight=0.75, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19] +[x0]
+ ; GC ptr vars -{V09}
+ mov x1, x0
+ ; gcrRegs +[x1]
+ movz x1, #0xD1FFAB1E // code for Xunit.Internal.ArgumentFormatter:FormatStringValue(System.String):System.String
+ ; gcrRegs -[x1]
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ ; gcr arg pop 0
+ str x0, [fp, #0x10] // [V09 loc7]
+ ; GC ptr vars +{V09}
+ b G_M58093_IG51
+ ;; size=32 bbWeight=0.75 PerfScore 5.98
+G_M58093_IG26: ; bbWeight=0.75, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ; GC ptr vars -{V09}
+ movz x1, #0xD1FFAB1E // code for Xunit.Internal.ArgumentFormatter:FormatFloatValue(System.Object):System.String
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ ; gcr arg pop 0
+ str x0, [fp, #0x10] // [V09 loc7]
+ ; GC ptr vars +{V09}
+ b G_M58093_IG51
+ ;; size=28 bbWeight=0.75 PerfScore 5.61
+G_M58093_IG27: ; bbWeight=0.75, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ; GC ptr vars -{V09}
+ movz x1, #0xD1FFAB1E // code for Xunit.Internal.ArgumentFormatter:FormatDoubleValue(System.Object):System.String
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ ; gcr arg pop 0
+ str x0, [fp, #0x10] // [V09 loc7]
+ ; GC ptr vars +{V09}
+ b G_M58093_IG51
+ ;; size=28 bbWeight=0.75 PerfScore 5.61
+G_M58093_IG28: ; bbWeight=0.58, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x20]
+ ; GC ptr vars -{V09}
+ mov x2, x0
+ ; gcrRegs +[x2]
+ cbz x2, G_M58093_IG31
+ ;; size=8 bbWeight=0.58 PerfScore 0.86
+G_M58093_IG29: ; bbWeight=0.29, gcrefRegs=100005 {x0 x2 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x2]
+ movz x2, #0xD1FFAB1E
+ ; gcrRegs -[x2]
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x1, x2
+ bne G_M58093_IG38
+ ;; size=24 bbWeight=0.29 PerfScore 1.73
+G_M58093_IG30: ; bbWeight=0.24, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
+ mov x2, xzr
+ ; gcrRegs +[x2]
+ ;; size=4 bbWeight=0.24 PerfScore 0.12
+G_M58093_IG31: ; bbWeight=0.58, gcrefRegs=100005 {x0 x2 x20}, byrefRegs=0000 {}, byref, isz
+ cbnz x2, G_M58093_IG37
+ ;; size=4 bbWeight=0.58 PerfScore 0.58
+G_M58093_IG32: ; bbWeight=0.50, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x2]
+ mov x21, x20
+ ; gcrRegs +[x21]
+ movz x22, #0xD1FFAB1E // data for <unknown class>:<unknown field>
+ movk x22, #0xD1FFAB1E LSL #16
+ movk x22, #0xD1FFAB1E LSL #32
+ ldr x1, [x22]
+ ; gcrRegs +[x1]
+ cbz x1, G_M58093_IG35
+ ldr x1, [x20]
+ ; gcrRegs -[x1]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x1, x2
+ bne G_M58093_IG44
+ mov x0, x20
+ movz x1, #0xD1FFAB1E // code for System.RuntimeType:GetInterfaces():System.Type[]:this
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ ; gcr arg pop 0
+ mov x23, x0
+ ; gcrRegs +[x23]
+ ;; size=76 bbWeight=0.50 PerfScore 9.22
+G_M58093_IG33: ; bbWeight=0.50, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
+ ldr x24, [x22]
+ ; gcrRegs +[x24]
+ mov x1, x23
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[x1] +[x0]
+ ; gcr arg pop 0
+ cbz x0, G_M58093_IG46
+ mov x1, x24
+ ; gcrRegs +[x1]
+ movz x11, #0xD1FFAB1E // code for <unknown method>
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #0xD1FFAB1E LSL #32
+ ldr x2, [x11]
+ blr x2
+ ; gcrRegs -[x0-x1 x23-x24]
+ ; gcr arg pop 0
+ ;; size=52 bbWeight=0.50 PerfScore 6.48
+G_M58093_IG34: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M58093_IG45
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M58093_IG35: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+ mov x0, x20
+ ; gcrRegs +[x0]
+ ldr x1, [x20]
+ ldr x1, [x1, #0x80]
+ ldr x1, [x1, #0x08]
+ blr x1
+ ; gcrRegs -[x0]
+ ; gcr arg pop 0
+ cbz w0, G_M58093_IG39
+ ;; size=24 bbWeight=0.50 PerfScore 5.73
+G_M58093_IG36: ; bbWeight=0.48, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
+ ldr x0, [fp, #0x18] // [V00 arg0]
+ ; gcrRegs +[x0]
+ mov x1, x21
+ ; gcrRegs +[x1]
+ movz x2, #0xD1FFAB1E // code for Xunit.Internal.ArgumentFormatter:FormatValueTypeValue(System.Object,System.Reflection.TypeInfo):System.String
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x1 x21]
+ ; gcr arg pop 0
+ str x0, [fp, #0x10] // [V09 loc7]
+ ; GC ptr vars +{V09}
+ b G_M58093_IG51
+ ;; size=36 bbWeight=0.48 PerfScore 4.76
+G_M58093_IG37: ; bbWeight=0.08, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0] +[x2]
+ ; GC ptr vars -{V09}
...
+0 (0.00%) : 421165.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsNonStringEnumerable(System.Object):System.Collections.IEnumerable (Tier1)
@@ -8,14 +8,14 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 255428
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 6, 5.19) ref -> x0 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 6, 5.15) ref -> x0 class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02,T02] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V03 rat0 [V03,T01] ( 6, 8.00) ref -> registers class-hnd "replacement local" <System.Collections.IEnumerable>
;
; Lcl frame size = 0
-G_M8290_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M8290_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
@@ -32,7 +32,7 @@ G_M8290_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
G_M8290_IG03: ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
mov x2, x0
; gcrRegs +[x2]
- cbz x2, G_M8290_IG07
+ cbz x2, G_M8290_IG06
;; size=8 bbWeight=1.00 PerfScore 1.50
G_M8290_IG04: ; bbWeight=0.50, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
ldr x1, [x2]
@@ -41,9 +41,26 @@ G_M8290_IG04: ; bbWeight=0.50, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {},
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- beq G_M8290_IG06
+ bne G_M8290_IG08
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M8290_IG05: ; bbWeight=0.19, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M8290_IG05: ; bbWeight=0.35, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ mov x0, xzr
+ ; gcrRegs +[x0]
+ mov x2, x0
+ ; gcrRegs +[x2]
+ ;; size=8 bbWeight=0.35 PerfScore 0.35
+G_M8290_IG06: ; bbWeight=1.00, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ mov x0, x2
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=1.00 PerfScore 0.50
+G_M8290_IG07: ; bbWeight=1.00, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=1.00 PerfScore 2.00
+G_M8290_IG08: ; bbWeight=0.15, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x2]
mov x1, x0
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -54,25 +71,9 @@ G_M8290_IG05: ; bbWeight=0.19, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, by
; gcrRegs -[x1] +[x0]
mov x2, x0
; gcrRegs +[x2]
- b G_M8290_IG07
- ;; size=28 bbWeight=0.19 PerfScore 0.88
-G_M8290_IG06: ; bbWeight=0.30, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x2]
- mov x0, xzr
- ; gcrRegs +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- ;; size=8 bbWeight=0.30 PerfScore 0.30
-G_M8290_IG07: ; bbWeight=1.00, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x2
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1.00 PerfScore 0.50
-G_M8290_IG08: ; bbWeight=1.00, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=1.00 PerfScore 2.00
-G_M8290_IG09: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ b G_M8290_IG06
+ ;; size=28 bbWeight=0.15 PerfScore 0.67
+G_M8290_IG09: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x2]
mov x0, xzr
;; size=4 bbWeight=0.00 PerfScore 0.00
@@ -81,7 +82,7 @@ G_M8290_IG10: ; bbWeight=0.00, epilog, nogc, extend
ret lr
;; size=8 bbWeight=0.00 PerfScore 0.00
-; Total bytes of code 128, prolog size 8, PerfScore 16.68, instruction count 32, allocated bytes for code 128 (MethodHash=a242df9d) for method Xunit.Sdk.CollectionTrackerExtensions:AsNonStringEnumerable(System.Object):System.Collections.IEnumerable (Tier1)
+; Total bytes of code 128, prolog size 8, PerfScore 16.52, instruction count 32, allocated bytes for code 128 (MethodHash=a242df9d) for method Xunit.Sdk.CollectionTrackerExtensions:AsNonStringEnumerable(System.Object):System.Collections.IEnumerable (Tier1)
; ============================================================
Unwind Info:
+4 (+1.37%) : 155426.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
@@ -9,7 +9,7 @@
; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 7, 6.02) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V00 arg0 [V00,T00] ( 7, 5.97) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
; V01 loc0 [V01,T02] ( 4, 2.54) ref -> x1 class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundConditionalOperator>
; V02 loc1 [V02,T03] ( 4, 2.41) ref -> x2 class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundConvertedSwitchExpression>
; V03 loc2 [V03,T05] ( 6, 2.04) ref -> x0 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpressionBase>
@@ -43,7 +43,7 @@ G_M35670_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x0, x2
- beq G_M35670_IG15
+ beq G_M35670_IG14
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M35670_IG04: ; bbWeight=0.96, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
@@ -63,7 +63,7 @@ G_M35670_IG06: ; bbWeight=0.96, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs -[x2]
mov x0, x19
; gcrRegs +[x0]
- cbz x0, G_M35670_IG10
+ cbz x0, G_M35670_IG09
;; size=8 bbWeight=0.96 PerfScore 1.45
G_M35670_IG07: ; bbWeight=0.48, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0]
@@ -72,31 +72,20 @@ G_M35670_IG07: ; bbWeight=0.48, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x1, x0
- beq G_M35670_IG09
+ bne G_M35670_IG17
;; size=24 bbWeight=0.48 PerfScore 2.89
-G_M35670_IG08: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x1, x19
- ; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[x1] +[x0]
- b G_M35670_IG10
- ;; size=24 bbWeight=0.17 PerfScore 0.69
-G_M35670_IG09: ; bbWeight=0.31, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
+G_M35670_IG08: ; bbWeight=0.35, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, xzr
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.31 PerfScore 0.15
-G_M35670_IG10: ; bbWeight=0.96, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- cbnz x0, G_M35670_IG18
+ ;; size=4 bbWeight=0.35 PerfScore 0.18
+G_M35670_IG09: ; bbWeight=0.96, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ cbnz x0, G_M35670_IG20
;; size=4 bbWeight=0.96 PerfScore 0.96
-G_M35670_IG11: ; bbWeight=0.91, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35670_IG10: ; bbWeight=0.91, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz x19, G_M35670_IG16
+ cbz x19, G_M35670_IG15
;; size=4 bbWeight=0.91 PerfScore 0.91
-G_M35670_IG12: ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35670_IG11: ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -104,29 +93,47 @@ G_M35670_IG12: ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
cmp x0, x1
beq G_M35670_IG22
;; size=24 bbWeight=0.46 PerfScore 2.74
-G_M35670_IG13: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35670_IG12: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
- b G_M35670_IG16
+ b G_M35670_IG15
;; size=4 bbWeight=0.23 PerfScore 0.23
-G_M35670_IG14: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35670_IG13: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1
- b G_M35670_IG17
+ b G_M35670_IG16
;; size=8 bbWeight=0.04 PerfScore 0.05
-G_M35670_IG15: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M35670_IG14: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldrb w2, [x1, #0x49]
- cbnz w2, G_M35670_IG14
+ cbnz w2, G_M35670_IG13
;; size=8 bbWeight=0.04 PerfScore 0.14
-G_M35670_IG16: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35670_IG15: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
mov w0, wzr
;; size=4 bbWeight=0.96 PerfScore 0.48
-G_M35670_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M35670_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-G_M35670_IG18: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35670_IG17: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x19]
+ mov x1, x19
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[x1] +[x0]
+ b G_M35670_IG09
+ ;; size=24 bbWeight=0.13 PerfScore 0.52
+G_M35670_IG18: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0 x19]
+ cbnz w20, G_M35670_IG13
+ ;; size=4 bbWeight=0.05 PerfScore 0.05
+G_M35670_IG19: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M35670_IG15
+ ;; size=4 bbWeight=0.02 PerfScore 0.02
+G_M35670_IG20: ; bbWeight=0.05, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldr x1, [x0]
movz x2, #0xD1FFAB1E
@@ -135,25 +142,19 @@ G_M35670_IG18: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=000
cmp x1, x2
bne G_M35670_IG23
ldrb w20, [x0, #0x39]
- ;; size=28 bbWeight=0.05 PerfScore 0.47
-G_M35670_IG19: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- cbnz w20, G_M35670_IG14
- ;; size=4 bbWeight=0.05 PerfScore 0.05
-G_M35670_IG20: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M35670_IG16
- ;; size=4 bbWeight=0.02 PerfScore 0.02
+ b G_M35670_IG18
+ ;; size=32 bbWeight=0.05 PerfScore 0.53
G_M35670_IG21: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x2]
+ ; gcrRegs -[x0] +[x2]
ldrb w0, [x2, #0x50]
- cbnz w0, G_M35670_IG14
- b G_M35670_IG16
+ cbnz w0, G_M35670_IG13
+ b G_M35670_IG15
;; size=12 bbWeight=0 PerfScore 0.00
G_M35670_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2] +[x19]
ldrb w0, [x19, #0x31]
- cbz w0, G_M35670_IG16
- b G_M35670_IG14
+ cbz w0, G_M35670_IG15
+ b G_M35670_IG13
;; size=12 bbWeight=0 PerfScore 0.00
G_M35670_IG23: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] +[x0]
@@ -163,10 +164,10 @@ G_M35670_IG23: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
blr x1
; gcrRegs -[x0]
sxtw w20, w0
- b G_M35670_IG19
+ b G_M35670_IG18
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 292, prolog size 12, PerfScore 26.09, instruction count 73, allocated bytes for code 292 (MethodHash=471574a9) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
+; Total bytes of code 296, prolog size 12, PerfScore 26.00, instruction count 74, allocated bytes for code 296 (MethodHash=471574a9) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -177,7 +178,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 73 (0x00049) Actual length = 292 (0x000124)
+ Function Length : 74 (0x0004a) Actual length = 296 (0x000128)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+1.75%) : 61180.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:Equals(Microsoft.CodeAnalysis.CSharp.Symbol,int):ubyte:this (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 5, 3 ) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
-; V01 arg1 [V01,T01] ( 6, 5.20) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V01 arg1 [V01,T01] ( 6, 5.17) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
; V02 arg2 [V02,T03] ( 4, 2 ) int -> x21 single-def
; V03 loc0 [V03,T05] ( 3, 2 ) ref -> x0 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SubstitutedMethodSymbol>
; V04 loc1 [V04,T04] ( 4, 2.50) ref -> x0 class-hnd exact <Microsoft.CodeAnalysis.CSharp.Symbols.NativeIntegerMethodSymbol>
@@ -34,7 +34,7 @@ G_M476_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
G_M476_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
- cbz x0, G_M476_IG06
+ cbz x0, G_M476_IG05
;; size=8 bbWeight=1 PerfScore 1.50
G_M476_IG03: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0]
@@ -43,9 +43,30 @@ G_M476_IG03: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=00
movk x0, #104 LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x1, x0
- beq G_M476_IG05
+ bne G_M476_IG08
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M476_IG04: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M476_IG04: ; bbWeight=0.34, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ mov x0, xzr
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=0.34 PerfScore 0.17
+G_M476_IG05: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbnz x0, G_M476_IG11
+ mov x0, x19
+ cbz x0, G_M476_IG09
+ ;; size=12 bbWeight=1 PerfScore 2.50
+G_M476_IG06: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x0]
+ movz x2, #24
+ movk x2, #97 LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x1, x2
+ beq G_M476_IG13
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M476_IG07: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ b G_M476_IG09
+ ;; size=4 bbWeight=0.25 PerfScore 0.25
+G_M476_IG08: ; bbWeight=0.17, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -54,38 +75,20 @@ G_M476_IG04: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- b G_M476_IG06
- ;; size=24 bbWeight=0.20 PerfScore 0.78
-G_M476_IG05: ; bbWeight=0.30, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, xzr
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=0.30 PerfScore 0.15
-G_M476_IG06: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
- cbnz x0, G_M476_IG10
- mov x0, x19
- cbz x0, G_M476_IG08
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M476_IG07: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0]
- movz x2, #24
- movk x2, #97 LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- cmp x1, x2
- beq G_M476_IG12
- ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M476_IG08: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ b G_M476_IG05
+ ;; size=24 bbWeight=0.17 PerfScore 0.66
+G_M476_IG09: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
cmp x20, x19
cset x0, eq
;; size=8 bbWeight=1 PerfScore 1.00
-G_M476_IG09: ; bbWeight=1, epilog, nogc, extend
+G_M476_IG10: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-G_M476_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M476_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19] +[x0]
mov x1, x20
; gcrRegs +[x1]
@@ -95,14 +98,14 @@ G_M476_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100001 {
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
;; size=24 bbWeight=0 PerfScore 0.00
-G_M476_IG11: ; bbWeight=0, epilog, nogc, extend
+G_M476_IG12: ; bbWeight=0, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x3
; gcr arg pop 0
;; size=16 bbWeight=0 PerfScore 0.00
-G_M476_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M476_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x1]
mov x1, x20
; gcrRegs +[x1]
@@ -112,7 +115,7 @@ G_M476_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100001 {
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
;; size=24 bbWeight=0 PerfScore 0.00
-G_M476_IG13: ; bbWeight=0, epilog, nogc, extend
+G_M476_IG14: ; bbWeight=0, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
@@ -120,7 +123,7 @@ G_M476_IG13: ; bbWeight=0, epilog, nogc, extend
; gcr arg pop 0
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 228, prolog size 28, PerfScore 21.93, instruction count 57, allocated bytes for code 228 (MethodHash=66bdfe23) for method Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:Equals(Microsoft.CodeAnalysis.CSharp.Symbol,int):ubyte:this (Tier1)
+; Total bytes of code 232, prolog size 28, PerfScore 22.08, instruction count 58, allocated bytes for code 232 (MethodHash=66bdfe23) for method Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:Equals(Microsoft.CodeAnalysis.CSharp.Symbol,int):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -131,7 +134,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 57 (0x00039) Actual length = 228 (0x0000e4)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+3.95%) : 559549.dasm - Xunit.Internal.ArgumentFormatter:SafeToMultiEnumerate(System.Collections.IEnumerable):ubyte (Tier1)
@@ -8,16 +8,16 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1385
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 10, 6.20) ref -> x19 class-hnd single-def <System.Collections.IEnumerable>
+; V00 arg0 [V00,T00] ( 10, 6.07) ref -> x19 class-hnd single-def <System.Collections.IEnumerable>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T04] ( 3, 3.84) ref -> x1 class-hnd "spilling QMark2" <<unknown class>>
-; V03 rat0 [V03,T01] ( 5, 7.42) ref -> x2 class-hnd "replacement local" <<unknown class>>
+; V03 rat0 [V03,T01] ( 5, 7.33) ref -> x2 class-hnd "replacement local" <<unknown class>>
; V04 rat1 [V04,T02] ( 6, 6.14) ref -> x2 class-hnd "replacement local" <<unknown class>>
; V05 rat2 [V05,T03] ( 6, 5.44) ref -> x2 class-hnd "replacement local" <<unknown class>>
;
; Lcl frame size = 8
-G_M49662_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M49662_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
@@ -27,7 +27,7 @@ G_M49662_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
G_M49662_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x2, x19
; gcrRegs +[x2]
- cbz x2, G_M49662_IG05
+ cbz x2, G_M49662_IG04
;; size=8 bbWeight=1 PerfScore 1.50
G_M49662_IG03: ; bbWeight=0.50, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x2]
@@ -35,10 +35,90 @@ G_M49662_IG03: ; bbWeight=0.50, gcrefRegs=80004 {x2 x19}, byrefRegs=0000
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x1, x0
- beq G_M49662_IG05
+ bne G_M49662_IG18
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M49662_IG04: ; bbWeight=0.21, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M49662_IG04: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
+ cbnz x2, G_M49662_IG19
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M49662_IG05: ; bbWeight=0.77, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2]
+ mov x1, x19
+ ; gcrRegs +[x1]
+ cbz x1, G_M49662_IG07
+ ;; size=8 bbWeight=0.77 PerfScore 1.15
+G_M49662_IG06: ; bbWeight=0.38, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x1]
+ ; gcrRegs -[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ cmp x1, x0
+ beq G_M49662_IG19
+ ;; size=24 bbWeight=0.38 PerfScore 2.30
+G_M49662_IG07: ; bbWeight=0.77, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ mov x2, x19
+ ; gcrRegs +[x2]
+ cbz x2, G_M49662_IG10
+ ;; size=8 bbWeight=0.77 PerfScore 1.15
+G_M49662_IG08: ; bbWeight=0.38, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x2]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ cmp x1, x0
+ bne G_M49662_IG14
+ ;; size=24 bbWeight=0.38 PerfScore 2.30
+G_M49662_IG09: ; bbWeight=0.27, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x2]
+ mov x2, xzr
+ ; gcrRegs +[x2]
+ ;; size=4 bbWeight=0.27 PerfScore 0.13
+G_M49662_IG10: ; bbWeight=0.77, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
+ cbnz x2, G_M49662_IG19
+ ;; size=4 bbWeight=0.77 PerfScore 0.77
+G_M49662_IG11: ; bbWeight=0.68, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x2]
+ mov x2, x19
+ ; gcrRegs +[x2]
+ cbz x2, G_M49662_IG16
+ ;; size=8 bbWeight=0.68 PerfScore 1.02
+G_M49662_IG12: ; bbWeight=0.34, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
+ ldr x2, [x2]
+ ; gcrRegs -[x2]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ cmp x2, x0
+ beq G_M49662_IG15
+ ;; size=24 bbWeight=0.34 PerfScore 2.04
+G_M49662_IG13: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M49662_IG23
+ ;; size=4 bbWeight=0.10 PerfScore 0.10
+G_M49662_IG14: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ mov x1, x19
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[x1] +[x0]
+ mov x2, x0
+ ; gcrRegs +[x2]
+ b G_M49662_IG10
+ ;; size=28 bbWeight=0.12 PerfScore 0.52
+G_M49662_IG15: ; bbWeight=0.24, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x2]
+ mov x2, xzr
+ ; gcrRegs +[x2]
+ ;; size=4 bbWeight=0.24 PerfScore 0.12
+G_M49662_IG16: ; bbWeight=0.68, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
+ cbnz x2, G_M49662_IG19
+ ;; size=4 bbWeight=0.68 PerfScore 0.68
+G_M49662_IG17: ; bbWeight=0.47, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x2]
+ b G_M49662_IG21
+ ;; size=4 bbWeight=0.47 PerfScore 0.47
+G_M49662_IG18: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -48,97 +128,19 @@ G_M49662_IG04: ; bbWeight=0.21, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs -[x1] +[x0]
mov x2, x0
; gcrRegs +[x2]
- ;; size=24 bbWeight=0.21 PerfScore 0.74
-G_M49662_IG05: ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- cbnz x2, G_M49662_IG20
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M49662_IG06: ; bbWeight=0.77, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
- mov x1, x19
- ; gcrRegs +[x1]
- cbz x1, G_M49662_IG08
- ;; size=8 bbWeight=0.77 PerfScore 1.15
-G_M49662_IG07: ; bbWeight=0.38, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x1]
- ; gcrRegs -[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- cmp x1, x0
- beq G_M49662_IG20
- ;; size=24 bbWeight=0.38 PerfScore 2.30
-G_M49662_IG08: ; bbWeight=0.77, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- mov x2, x19
- ; gcrRegs +[x2]
- cbz x2, G_M49662_IG12
- ;; size=8 bbWeight=0.77 PerfScore 1.15
-G_M49662_IG09: ; bbWeight=0.38, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x2]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- cmp x1, x0
- beq G_M49662_IG11
- ;; size=24 bbWeight=0.38 PerfScore 2.30
-G_M49662_IG10: ; bbWeight=0.15, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
- mov x1, x19
- ; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- b G_M49662_IG12
- ;; size=28 bbWeight=0.15 PerfScore 0.67
-G_M49662_IG11: ; bbWeight=0.23, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x2]
- mov x2, xzr
- ; gcrRegs +[x2]
- ;; size=4 bbWeight=0.23 PerfScore 0.12
-G_M49662_IG12: ; bbWeight=0.77, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
- cbnz x2, G_M49662_IG20
- ;; size=4 bbWeight=0.77 PerfScore 0.77
-G_M49662_IG13: ; bbWeight=0.68, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2]
- mov x2, x19
- ; gcrRegs +[x2]
- cbz x2, G_M49662_IG17
- ;; size=8 bbWeight=0.68 PerfScore 1.02
-G_M49662_IG14: ; bbWeight=0.34, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x2]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- cmp x1, x0
- beq G_M49662_IG16
- ;; size=24 bbWeight=0.34 PerfScore 2.04
-G_M49662_IG15: ; bbWeight=0.15, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
- mov x1, x19
- ; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[x1] +[x0]
- mov x2, x0
- ; gcrRegs +[x2]
- b G_M49662_IG17
- ;; size=28 bbWeight=0.15 PerfScore 0.69
-G_M49662_IG16: ; bbWeight=0.19, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x2]
- mov x2, xzr
- ; gcrRegs +[x2]
- ;; size=4 bbWeight=0.19 PerfScore 0.09
-G_M49662_IG17: ; bbWeight=0.68, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
- cbnz x2, G_M49662_IG20
- ;; size=4 bbWeight=0.68 PerfScore 0.68
-G_M49662_IG18: ; bbWeight=0.47, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
+ b G_M49662_IG04
+ ;; size=28 bbWeight=0.17 PerfScore 0.74
+G_M49662_IG19: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x2 x19]
+ mov w0, #1
+ ;; size=4 bbWeight=0.53 PerfScore 0.26
+G_M49662_IG20: ; bbWeight=0.53, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.53 PerfScore 2.11
+G_M49662_IG21: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x19]
mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Xunit.Internal.ArgumentFormatter:GetSetElementType(System.Object):System.Type
@@ -151,21 +153,26 @@ G_M49662_IG18: ; bbWeight=0.47, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
cset x0, ne
; gcrRegs -[x0]
;; size=32 bbWeight=0.47 PerfScore 3.32
-G_M49662_IG19: ; bbWeight=0.47, epilog, nogc, extend
+G_M49662_IG22: ; bbWeight=0.47, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.47 PerfScore 1.89
-G_M49662_IG20: ; bbWeight=0.53, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
- ;; size=4 bbWeight=0.53 PerfScore 0.26
-G_M49662_IG21: ; bbWeight=0.53, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- ret lr
...
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
Details
Improvements/regressions per collection
Collection
Contexts with diffs
Improvements
Regressions
Same size
Improvements (bytes)
Regressions (bytes)
benchmarks.run.windows.arm64.checked.mch
0
0
0
0
-0
+0
benchmarks.run_pgo.windows.arm64.checked.mch
1
0
1
0
-0
+36
benchmarks.run_tiered.windows.arm64.checked.mch
0
0
0
0
-0
+0
coreclr_tests.run.windows.arm64.checked.mch
3
2
0
1
-84
+0
libraries.crossgen2.windows.arm64.checked.mch
0
0
0
0
-0
+0
libraries.pmi.windows.arm64.checked.mch
0
0
0
0
-0
+0
libraries_tests.run.windows.arm64.Release.mch
18
3
12
3
-104
+72
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
0
0
0
0
-0
+0
realworld.run.windows.arm64.checked.mch
0
0
0
0
-0
+0
smoke_tests.nativeaot.windows.arm64.checked.mch
0
0
0
0
-0
+0
22
5
13
4
-188
+108
Context information
Collection
Diffed contexts
MinOpts
FullOpts
Missed, base
Missed, diff
benchmarks.run.windows.arm64.checked.mch
24,217
4
24,213
4 (0.02%)
232 (0.95%)
benchmarks.run_pgo.windows.arm64.checked.mch
98,203
48,543
49,660
125 (0.13%)
230 (0.23%)
benchmarks.run_tiered.windows.arm64.checked.mch
48,440
36,685
11,755
4 (0.01%)
65 (0.13%)
coreclr_tests.run.windows.arm64.checked.mch
594,979
362,737
232,242
317 (0.05%)
706 (0.12%)
libraries.crossgen2.windows.arm64.checked.mch
243,430
15
243,415
0 (0.00%)
0 (0.00%)
libraries.pmi.windows.arm64.checked.mch
301,994
6
301,988
7 (0.00%)
2,059 (0.68%)
libraries_tests.run.windows.arm64.Release.mch
629,655
461,984
167,671
2,223 (0.35%)
3,007 (0.48%)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
314,117
21,559
292,558
4 (0.00%)
2,184 (0.69%)
realworld.run.windows.arm64.checked.mch
32,826
3
32,823
3 (0.01%)
369 (1.11%)
smoke_tests.nativeaot.windows.arm64.checked.mch
24,178
7
24,171
0 (0.00%)
3 (0.01%)
2,312,039
931,543
1,380,496
2,687 (0.12%)
8,855 (0.38%)
jit-analyze output
benchmarks.run_pgo.windows.arm64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 47253428 (overridden on cmd)
Total bytes of diff: 47253464 (overridden on cmd)
Total bytes of delta: 36 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
36 : 31478.dasm (7.89 % of base)
1 total files with Code Size differences (0 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
36 (7.89 % of base) : 31478.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)
Top method regressions (percentages):
36 (7.89 % of base) : 31478.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)
1 total methods with Code Size differences (0 improved, 1 regressed).
coreclr_tests.run.windows.arm64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 494497636 (overridden on cmd)
Total bytes of diff: 494497552 (overridden on cmd)
Total bytes of delta: -84 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-44 : 387579.dasm (-2.50 % of base)
-40 : 391679.dasm (-2.31 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 1 unchanged.
Top method improvements (bytes):
-44 (-2.50 % of base) : 387579.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-40 (-2.31 % of base) : 391679.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
Top method improvements (percentages):
-44 (-2.50 % of base) : 387579.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-40 (-2.31 % of base) : 391679.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
2 total methods with Code Size differences (2 improved, 0 regressed).
libraries_tests.run.windows.arm64.Release.mch
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 309394148 (overridden on cmd)
Total bytes of diff: 309394116 (overridden on cmd)
Total bytes of delta: -32 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
12 : 405715.dasm (1.30 % of base)
12 : 559549.dasm (3.95 % of base)
8 : 196500.dasm (0.26 % of base)
8 : 83702.dasm (0.39 % of base)
4 : 196233.dasm (0.42 % of base)
4 : 196422.dasm (0.09 % of base)
4 : 196530.dasm (0.15 % of base)
4 : 49361.dasm (0.64 % of base)
4 : 61180.dasm (1.75 % of base)
4 : 155426.dasm (1.37 % of base)
4 : 116678.dasm (0.53 % of base)
4 : 331594.dasm (0.17 % of base)
Top file improvements (bytes):
-96 : 578100.dasm (-2.19 % of base)
-4 : 538090.dasm (-0.18 % of base)
-4 : 308650.dasm (-0.42 % of base)
15 total files with Code Size differences (3 improved, 12 regressed), 3 unchanged.
Top method regressions (bytes):
12 (1.30 % of base) : 405715.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
12 (3.95 % of base) : 559549.dasm - Xunit.Internal.ArgumentFormatter:SafeToMultiEnumerate(System.Collections.IEnumerable):ubyte (Tier1)
8 (0.26 % of base) : 196500.dasm - System.Collections.Tests.IEnumerable_NonGeneric_Tests:IEnumerable_NonGeneric_Enumerator_Current_ReturnsSameObjectsOnDifferentEnumerators(int):this (Tier1)
8 (0.39 % of base) : 83702.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
4 (1.37 % of base) : 155426.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
4 (1.75 % of base) : 61180.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:Equals(Microsoft.CodeAnalysis.CSharp.Symbol,int):ubyte:this (Tier1)
4 (0.64 % of base) : 49361.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
4 (0.15 % of base) : 196530.dasm - System.Collections.Tests.IEnumerable_NonGeneric_Tests:IEnumerable_NonGeneric_GetEnumerator_ReturnsUniqueEnumerator(int):this (Tier1)
4 (0.09 % of base) : 196422.dasm - System.Linq.Enumerable:SequenceEqual[int](System.Collections.Generic.IEnumerable`1[int],System.Collections.Generic.IEnumerable`1[int],System.Collections.Generic.IEqualityComparer`1[int]):ubyte (Tier1)
4 (0.53 % of base) : 116678.dasm - System.Linq.Expressions.Compiler.ILGen:TryEmitConstant(System.Reflection.Emit.ILGenerator,System.Object,System.Type,System.Linq.Expressions.Compiler.ILocalCache):ubyte (Tier1)
4 (0.42 % of base) : 196233.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectReader:Deserialize(System.Runtime.Serialization.Formatters.Binary.BinaryParser):System.Object:this (Tier1)
4 (0.17 % of base) : 331594.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
Top method improvements (bytes):
-96 (-2.19 % of base) : 578100.dasm - Microsoft.Cci.MetadataWriter:AddCustomAttributesToTable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.Reflection.Metadata.EntityHandle]):this (Tier1-OSR)
-4 (-0.42 % of base) : 308650.dasm - System.Linq.Enumerable:TryGetFirst[int](System.Collections.Generic.IEnumerable`1[int],byref):int (Tier1)
-4 (-0.18 % of base) : 538090.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
Top method regressions (percentages):
12 (3.95 % of base) : 559549.dasm - Xunit.Internal.ArgumentFormatter:SafeToMultiEnumerate(System.Collections.IEnumerable):ubyte (Tier1)
4 (1.75 % of base) : 61180.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:Equals(Microsoft.CodeAnalysis.CSharp.Symbol,int):ubyte:this (Tier1)
4 (1.37 % of base) : 155426.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
12 (1.30 % of base) : 405715.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
4 (0.64 % of base) : 49361.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
4 (0.53 % of base) : 116678.dasm - System.Linq.Expressions.Compiler.ILGen:TryEmitConstant(System.Reflection.Emit.ILGenerator,System.Object,System.Type,System.Linq.Expressions.Compiler.ILocalCache):ubyte (Tier1)
4 (0.42 % of base) : 196233.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectReader:Deserialize(System.Runtime.Serialization.Formatters.Binary.BinaryParser):System.Object:this (Tier1)
8 (0.39 % of base) : 83702.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
8 (0.26 % of base) : 196500.dasm - System.Collections.Tests.IEnumerable_NonGeneric_Tests:IEnumerable_NonGeneric_Enumerator_Current_ReturnsSameObjectsOnDifferentEnumerators(int):this (Tier1)
4 (0.17 % of base) : 331594.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
4 (0.15 % of base) : 196530.dasm - System.Collections.Tests.IEnumerable_NonGeneric_Tests:IEnumerable_NonGeneric_GetEnumerator_ReturnsUniqueEnumerator(int):this (Tier1)
4 (0.09 % of base) : 196422.dasm - System.Linq.Enumerable:SequenceEqual[int](System.Collections.Generic.IEnumerable`1[int],System.Collections.Generic.IEnumerable`1[int],System.Collections.Generic.IEqualityComparer`1[int]):ubyte (Tier1)
Top method improvements (percentages):
-96 (-2.19 % of base) : 578100.dasm - Microsoft.Cci.MetadataWriter:AddCustomAttributesToTable[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.Reflection.Metadata.EntityHandle]):this (Tier1-OSR)
-4 (-0.42 % of base) : 308650.dasm - System.Linq.Enumerable:TryGetFirst[int](System.Collections.Generic.IEnumerable`1[int],byref):int (Tier1)
-4 (-0.18 % of base) : 538090.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
15 total methods with Code Size differences (3 improved, 12 regressed).
Diffs are based on 2,486,103 contexts (983,689 MinOpts, 1,502,414 FullOpts).
MISSED contexts: base: 3,899 (0.16%), diff: 10,701 (0.43%)
Overall (+256 bytes)
Collection
Base size (bytes)
Diff size (bytes)
aspnet.run.windows.x64.checked.mch
41,693,796
+119
benchmarks.run_pgo.windows.x64.checked.mch
35,261,613
+38
coreclr_tests.run.windows.x64.checked.mch
392,818,845
-68
libraries_tests.run.windows.x64.Release.mch
280,544,593
+167
FullOpts (+256 bytes)
Collection
Base size (bytes)
Diff size (bytes)
aspnet.run.windows.x64.checked.mch
27,035,071
+119
benchmarks.run_pgo.windows.x64.checked.mch
21,026,636
+38
coreclr_tests.run.windows.x64.checked.mch
119,275,853
-68
libraries_tests.run.windows.x64.Release.mch
102,176,277
+167
Example diffs
aspnet.run.windows.x64.checked.mch
+16 (+3.09%) : 96756.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 8, 3.80) ref -> rsi this class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope>
-; V01 arg1 [V01,T00] ( 11, 5.97) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 11, 5.92) ref -> rbx class-hnd single-def <System.Object>
; V02 loc0 [V02,T07] ( 3, 0.38) ubyte -> rdi
; V03 loc1 [V03,T08] ( 4, 0.38) ref -> [rbp-0x28] class-hnd EH-live spill-single-def <System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey,System.Object]>
; V04 loc2 [V04 ] ( 5, 0.76) ubyte -> [rbp-0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op
@@ -50,7 +50,7 @@ G_M19770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=29 bbWeight=1 PerfScore 7.50
G_M19770_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp rsi, rbx
- je SHORT G_M19770_IG09
+ je SHORT G_M19770_IG08
;; size=5 bbWeight=1 PerfScore 1.25
G_M19770_IG03: ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, rbx
@@ -60,45 +60,35 @@ G_M19770_IG03: ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
test rax, rax
- jne SHORT G_M19770_IG11
+ jne SHORT G_M19770_IG10
;; size=23 bbWeight=0.99 PerfScore 2.72
G_M19770_IG04: ; bbWeight=0.80, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rax, rbx
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M19770_IG08
+ je SHORT G_M19770_IG07
;; size=8 bbWeight=0.80 PerfScore 1.20
-G_M19770_IG05: ; bbWeight=0.40, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG05: ; bbWeight=0.40, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; OrchardCore.Environment.Shell.Descriptor.Models.ShellFeature
cmp qword ptr [rax], rdx
- je SHORT G_M19770_IG07
- ;; size=15 bbWeight=0.40 PerfScore 1.70
-G_M19770_IG06: ; bbWeight=0.18, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[rdx] +[rax]
- ; gcr arg pop 0
- jmp SHORT G_M19770_IG08
- ;; size=20 bbWeight=0.18 PerfScore 0.63
-G_M19770_IG07: ; bbWeight=0.22, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ jne G_M19770_IG21
+ ;; size=19 bbWeight=0.40 PerfScore 1.70
+G_M19770_IG06: ; bbWeight=0.27, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
xor rax, rax
; gcrRegs +[rax]
- ;; size=2 bbWeight=0.22 PerfScore 0.05
-G_M19770_IG08: ; bbWeight=0.80, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.27 PerfScore 0.07
+G_M19770_IG07: ; bbWeight=0.80, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
test rax, rax
- jne SHORT G_M19770_IG11
+ jne SHORT G_M19770_IG10
;; size=5 bbWeight=0.80 PerfScore 1.00
-G_M19770_IG09: ; bbWeight=0.81, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M19770_IG08: ; bbWeight=0.81, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rsi]
mov rax, rbx
; gcrRegs +[rax]
;; size=3 bbWeight=0.81 PerfScore 0.20
-G_M19770_IG10: ; bbWeight=0.81, epilog, nogc, extend
+G_M19770_IG09: ; bbWeight=0.81, epilog, nogc, extend
add rsp, 56
pop rbx
pop rsi
@@ -106,7 +96,7 @@ G_M19770_IG10: ; bbWeight=0.81, epilog, nogc, extend
pop rbp
ret
;; size=9 bbWeight=0.81 PerfScore 2.63
-G_M19770_IG11: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+G_M19770_IG10: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] +[rsi]
xor edi, edi
mov rcx, gword ptr [rsi+0x10]
@@ -116,21 +106,21 @@ G_M19770_IG11: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=004
xor edx, edx
mov dword ptr [rbp-0x20], edx
;; size=15 bbWeight=0.19 PerfScore 0.86
-G_M19770_IG12: ; bbWeight=0.19, gcVars=0000000000000100 {V03}, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M19770_IG11: ; bbWeight=0.19, gcVars=0000000000000100 {V03}, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
cmp byte ptr [rbp-0x20], 0
- jne G_M19770_IG19
+ jne G_M19770_IG18
lea rdx, [rbp-0x20]
call <unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
cmp byte ptr [rsi+0x20], 0
- jne SHORT G_M19770_IG18
+ jne SHORT G_M19770_IG17
;; size=25 bbWeight=0.19 PerfScore 1.62
-G_M19770_IG13: ; bbWeight=0.19, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG12: ; bbWeight=0.19, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [rsi+0x08], 0
- je SHORT G_M19770_IG16
+ je SHORT G_M19770_IG15
;; size=7 bbWeight=0.19 PerfScore 0.76
-G_M19770_IG14: ; bbWeight=0.19, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG13: ; bbWeight=0.19, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rsi+0x08]
; gcrRegs +[rcx]
inc dword ptr [rcx+0x14]
@@ -138,9 +128,9 @@ G_M19770_IG14: ; bbWeight=0.19, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcrRegs +[r8]
mov edx, dword ptr [rcx+0x10]
cmp dword ptr [r8+0x08], edx
- jbe SHORT G_M19770_IG17
+ jbe SHORT G_M19770_IG16
;; size=20 bbWeight=0.19 PerfScore 2.46
-G_M19770_IG15: ; bbWeight=0.08, gcrefRegs=010A {rcx rbx r8}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG14: ; bbWeight=0.08, gcrefRegs=010A {rcx rbx r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
lea eax, [rdx+0x01]
mov dword ptr [rcx+0x10], eax
@@ -150,9 +140,9 @@ G_M19770_IG15: ; bbWeight=0.08, gcrefRegs=010A {rcx rbx r8}, byrefRegs=00
call CORINFO_HELP_ARRADDR_ST
; gcrRegs -[rcx r8]
; gcr arg pop 0
- jmp SHORT G_M19770_IG20
+ jmp SHORT G_M19770_IG19
;; size=22 bbWeight=0.08 PerfScore 0.42
-G_M19770_IG16: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG15: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
@@ -169,31 +159,31 @@ G_M19770_IG16: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- jmp SHORT G_M19770_IG14
+ jmp SHORT G_M19770_IG13
;; size=43 bbWeight=0.04 PerfScore 0.24
-G_M19770_IG17: ; bbWeight=0.11, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG16: ; bbWeight=0.11, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi] +[rcx]
mov rdx, rbx
; gcrRegs +[rdx]
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- jmp SHORT G_M19770_IG20
+ jmp SHORT G_M19770_IG19
;; size=11 bbWeight=0.11 PerfScore 0.58
-G_M19770_IG18: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG17: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov edi, 1
- jmp SHORT G_M19770_IG20
+ jmp SHORT G_M19770_IG19
;; size=7 bbWeight=0.00 PerfScore 0.00
-G_M19770_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19770_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
call [System.Threading.Monitor:ThrowLockTakenException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M19770_IG20: ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG19: ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx]
cmp byte ptr [rbp-0x20], 0
- je SHORT G_M19770_IG21
+ je SHORT G_M19770_IG20
mov rcx, gword ptr [rbp-0x28]
; gcrRegs +[rcx]
; GC ptr vars -{V03}
@@ -201,28 +191,23 @@ G_M19770_IG20: ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rcx]
; gcr arg pop 0
;; size=15 bbWeight=0.19 PerfScore 0.95
-G_M19770_IG21: ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M19770_IG20: ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
test edi, edi
- je G_M19770_IG09
- ;; size=8 bbWeight=0.19 PerfScore 0.24
-G_M19770_IG22: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne G_M19770_IG24
+ jmp G_M19770_IG08
+ ;; size=13 bbWeight=0.19 PerfScore 0.62
+G_M19770_IG21: ; bbWeight=0.13, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rsi]
mov rdx, rbx
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_ISINSTANCEOFINTERFACE
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- test rax, rax
- je SHORT G_M19770_IG23
- mov rcx, rax
- ; gcrRegs +[rcx]
- mov r11, 0xD1FFAB1E ; code for <unknown method>
- call [r11]<unknown method>
- ; gcrRegs -[rax rcx]
- ; gcr arg pop 0
- jmp SHORT G_M19770_IG24
- ;; size=41 bbWeight=0 PerfScore 0.00
-G_M19770_IG23: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M19770_IG07
+ ;; size=23 bbWeight=0.13 PerfScore 0.46
+G_M19770_IG22: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax rsi]
mov rcx, 0xD1FFAB1E ; Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope+<>c__DisplayClass24_0
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -266,7 +251,7 @@ G_M19770_IG23: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov ecx, dword ptr [rax+0x34]
and ecx, 0xD1FFAB1E
cmp ecx, 0xD1FFAB1E
- je SHORT G_M19770_IG24
+ je SHORT G_M19770_IG23
mov rcx, rax
; gcrRegs +[rcx]
xor edx, edx
@@ -274,11 +259,28 @@ G_M19770_IG23: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rax rcx]
; gcr arg pop 0
;; size=120 bbWeight=0 PerfScore 0.00
-G_M19770_IG24: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M19770_IG23: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call [<unknown method>]
; gcr arg pop 0
- jmp G_M19770_IG09
+ jmp G_M19770_IG08
;; size=11 bbWeight=0 PerfScore 0.00
+G_M19770_IG24: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
+ test rax, rax
+ je G_M19770_IG22
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ mov r11, 0xD1FFAB1E ; code for <unknown method>
+ call [r11]<unknown method>
+ ; gcrRegs -[rax rcx]
+ ; gcr arg pop 0
...
+24 (+10.57%) : 98626.dasm - System.Threading.ThreadPoolWorkQueue:DispatchWorkItem(System.Object,System.Threading.Thread) (Tier1)
@@ -9,18 +9,19 @@
; 1 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 6, 4.93) ref -> rbx class-hnd single-def <System.Object>
-; V01 arg1 [V01,T01] ( 4, 2.28) ref -> rsi class-hnd single-def <System.Threading.Thread>
-; V02 loc0 [V02,T02] ( 6, 2.56) ref -> rax class-hnd single-def <System.Threading.Tasks.Task>
+; V00 arg0 [V00,T01] ( 7, 5.17) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T02] ( 4, 2.28) ref -> rsi class-hnd single-def <System.Threading.Thread>
+; V02 loc0 [V02,T03] ( 6, 2.56) ref -> rcx class-hnd single-def <System.Threading.Tasks.Task>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <System.Threading.IThreadPoolWorkItem>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Net.Http.HttpConnection,System.Threading.Tasks.TaskCompletionSourceWithCancellation`1+<WaitWithCancellationAsync>d__1[System.Net.Http.HttpConnection]]>
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.KestrelConnection`1[Microsoft.AspNetCore.Connections.ConnectionContext]>
; V07 tmp4 [V07 ] ( 6, 2.90) struct (96) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.KestrelConnection`1+<ExecuteAsync>d__8[Microsoft.AspNetCore.Connections.ConnectionContext]>
;* V08 tmp5 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.CompilerServices.AsyncTaskMethodBuilder>
-; V09 tmp6 [V09,T03] ( 2, 1.93) ref -> rcx class-hnd single-def "dup spill" <<unknown class>>
+; V09 tmp6 [V09,T04] ( 2, 1.93) ref -> rcx class-hnd single-def "dup spill" <<unknown class>>
;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref single-def "field V08.m_task (fldOffset=0x0)" P-INDEP
+; V12 rat0 [V12,T00] ( 6, 8 ) ref -> rcx class-hnd "replacement local" <System.Threading.Tasks.Task>
;
; Lcl frame size = 136
@@ -40,22 +41,44 @@ G_M60059_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rsi]
;; size=51 bbWeight=1 PerfScore 9.33
G_M60059_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ test rcx, rcx
+ je SHORT G_M60059_IG06
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M60059_IG03: ; bbWeight=0.50, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov rdx, 0xD1FFAB1E ; Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.KestrelConnection`1[Microsoft.AspNetCore.Connections.ConnectionContext]
+ cmp qword ptr [rcx], rdx
+ je SHORT G_M60059_IG05
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M60059_IG04: ; bbWeight=0.24, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
mov rdx, rbx
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; System.Threading.Tasks.Task
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- test rax, rax
- jne SHORT G_M60059_IG05
- ;; size=23 bbWeight=1 PerfScore 2.75
-G_M60059_IG03: ; bbWeight=0.72, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax rsi]
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ jmp SHORT G_M60059_IG06
+ ;; size=23 bbWeight=0.24 PerfScore 0.90
+G_M60059_IG05: ; bbWeight=0.26, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rcx]
+ xor rcx, rcx
+ ; gcrRegs +[rcx]
+ ;; size=2 bbWeight=0.26 PerfScore 0.07
+G_M60059_IG06: ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
+ test rcx, rcx
+ jne SHORT G_M60059_IG09
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M60059_IG07: ; bbWeight=0.72, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx rsi]
mov rdx, 0xD1FFAB1E ; Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.KestrelConnection`1[Microsoft.AspNetCore.Connections.ConnectionContext]
cmp qword ptr [rbx], rdx
- jne SHORT G_M60059_IG08
+ jne SHORT G_M60059_IG12
;; size=15 bbWeight=0.72 PerfScore 3.07
-G_M60059_IG04: ; bbWeight=0.48, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M60059_IG08: ; bbWeight=0.48, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
xor edx, edx
mov qword ptr [rsp+0x68], rdx
mov gword ptr [rsp+0x28], rbx
@@ -68,37 +91,35 @@ G_M60059_IG04: ; bbWeight=0.48, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
mov rcx, gword ptr [rsp+0x68]
; gcrRegs +[rcx]
test rcx, rcx
- jne SHORT G_M60059_IG06
+ jne SHORT G_M60059_IG10
lea rcx, [rsp+0x68]
; gcrRegs -[rcx]
call [<unknown method>]
; gcrRegs +[rax]
; gcr arg pop 0
- jmp SHORT G_M60059_IG06
+ jmp SHORT G_M60059_IG10
;; size=64 bbWeight=0.48 PerfScore 7.14
-G_M60059_IG05: ; bbWeight=0.28, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rsi]
- mov rcx, 0xD1FFAB1E ; System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Net.Http.HttpConnection,System.Threading.Tasks.TaskCompletionSourceWithCancellation`1+<WaitWithCancellationAsync>d__1[System.Net.Http.HttpConnection]]
- cmp qword ptr [rax], rcx
- jne SHORT G_M60059_IG09
- mov rcx, rax
- ; gcrRegs +[rcx]
+G_M60059_IG09: ; bbWeight=0.28, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax] +[rcx rsi]
+ mov rdx, 0xD1FFAB1E ; System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Net.Http.HttpConnection,System.Threading.Tasks.TaskCompletionSourceWithCancellation`1+<WaitWithCancellationAsync>d__1[System.Net.Http.HttpConnection]]
+ cmp qword ptr [rcx], rdx
+ jne SHORT G_M60059_IG13
mov rdx, rsi
; gcrRegs +[rdx]
call [System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.__Canon,System.Threading.Tasks.TaskCompletionSourceWithCancellation`1+<WaitWithCancellationAsync>d__1[System.__Canon]]:MoveNext(System.Threading.Thread):this]
- ; gcrRegs -[rax rcx rdx rsi]
+ ; gcrRegs -[rcx rdx rsi]
; gcr arg pop 0
- ;; size=27 bbWeight=0.28 PerfScore 2.15
-G_M60059_IG06: ; bbWeight=0.28, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=0.28 PerfScore 2.08
+G_M60059_IG10: ; bbWeight=0.28, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0.28 PerfScore 0.07
-G_M60059_IG07: ; bbWeight=0.28, epilog, nogc, extend
+G_M60059_IG11: ; bbWeight=0.28, epilog, nogc, extend
add rsp, 136
pop rbx
pop rsi
ret
;; size=10 bbWeight=0.28 PerfScore 0.63
-G_M60059_IG08: ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60059_IG12: ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -106,24 +127,21 @@ G_M60059_IG08: ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=000
call [r11]<unknown method>
; gcrRegs -[rcx rbx]
; gcr arg pop 0
- jmp SHORT G_M60059_IG06
+ jmp SHORT G_M60059_IG10
;; size=18 bbWeight=0.72 PerfScore 3.97
-G_M60059_IG09: ; bbWeight=0, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rax rsi]
- mov rcx, rax
- ; gcrRegs +[rcx]
+G_M60059_IG13: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rcx rsi]
mov rdx, rsi
; gcrRegs +[rdx]
- mov rax, qword ptr [rax]
- ; gcrRegs -[rax]
+ mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+0x48]
call [rax+0x18]<unknown method>
; gcrRegs -[rcx rdx rsi]
; gcr arg pop 0
- jmp SHORT G_M60059_IG06
- ;; size=18 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M60059_IG10
+ ;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 227, prolog size 45, PerfScore 29.11, instruction count 53, allocated bytes for code 227 (MethodHash=13841564) for method System.Threading.ThreadPoolWorkQueue:DispatchWorkItem(System.Object,System.Threading.Thread) (Tier1)
+; Total bytes of code 251, prolog size 45, PerfScore 32.13, instruction count 60, allocated bytes for code 251 (MethodHash=13841564) for method System.Threading.ThreadPoolWorkQueue:DispatchWorkItem(System.Object,System.Threading.Thread) (Tier1)
; ============================================================
Unwind Info:
+23 (+11.73%) : 113150.dasm - OrchardCore.Liquid.Startup+<>c:
@@ -10,19 +10,20 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <OrchardCore.Liquid.Startup+<>c>
-; V01 arg1 [V01,T00] ( 6, 3.94) ref -> rbx class-hnd single-def <System.Object>
-; V02 loc0 [V02,T02] ( 3, 2.47) ref -> rsi class-hnd single-def <Newtonsoft.Json.Linq.JObject>
-; V03 loc1 [V03,T05] ( 3, 1.18) ref -> rax class-hnd single-def <Newtonsoft.Json.Linq.JValue>
+; V01 arg1 [V01,T01] ( 7, 4.17) ref -> rbx class-hnd single-def <System.Object>
+; V02 loc0 [V02,T03] ( 3, 2.47) ref -> rsi class-hnd single-def <Newtonsoft.Json.Linq.JObject>
+; V03 loc1 [V03,T06] ( 3, 1.18) ref -> rax class-hnd single-def <Newtonsoft.Json.Linq.JValue>
;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref <System.DateTime>
-; V05 loc3 [V05,T04] ( 5, 2 ) ref -> rsi class-hnd <System.Object>
+; V05 loc3 [V05,T05] ( 5, 2 ) ref -> rsi class-hnd <System.Object>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T01] ( 3, 2.83) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <Fluid.Values.ObjectValue>
-; V08 tmp2 [V08,T03] ( 3, 2.04) ref -> rcx class-hnd "spilling QMark2" <System.DateTime>
-; V09 tmp3 [V09,T06] ( 3, 0.04) ref -> rbx class-hnd exact single-def "Single-def Box Helper" <System.DateTime>
-; V10 tmp4 [V10,T07] ( 3, 0.04) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <Fluid.Values.ObjectValue>
+; V07 tmp1 [V07,T02] ( 3, 2.83) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <Fluid.Values.ObjectValue>
+; V08 tmp2 [V08,T04] ( 3, 2.04) ref -> rcx class-hnd "spilling QMark2" <System.DateTime>
+; V09 tmp3 [V09,T07] ( 3, 0.04) ref -> rbx class-hnd exact single-def "Single-def Box Helper" <System.DateTime>
+; V10 tmp4 [V10,T08] ( 3, 0.04) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <Fluid.Values.ObjectValue>
;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.DateTime>
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.DateTime>
-; V13 tmp7 [V13,T08] ( 2, 0.01) long -> rsi single-def "field V04._dateData (fldOffset=0x0)" P-INDEP
+; V13 tmp7 [V13,T09] ( 2, 0.01) long -> rsi single-def "field V04._dateData (fldOffset=0x0)" P-INDEP
+; V14 rat0 [V14,T00] ( 5, 7.45) ref -> rsi class-hnd "replacement local" <Newtonsoft.Json.Linq.JObject>
;
; Lcl frame size = 40
@@ -34,6 +35,18 @@ G_M10757_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
;; size=9 bbWeight=1 PerfScore 2.50
G_M10757_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rsi, rbx
+ ; gcrRegs +[rsi]
+ test rsi, rsi
+ je SHORT G_M10757_IG05
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M10757_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov rdx, 0xD1FFAB1E ; Newtonsoft.Json.Linq.JObject
+ cmp qword ptr [rsi], rdx
+ je SHORT G_M10757_IG05
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M10757_IG04: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi]
mov rdx, rbx
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; Newtonsoft.Json.Linq.JObject
@@ -42,11 +55,14 @@ G_M10757_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
+ ;; size=21 bbWeight=0.23 PerfScore 0.39
+G_M10757_IG05: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
test rsi, rsi
- jne SHORT G_M10757_IG07
- ;; size=26 bbWeight=1 PerfScore 3.00
-G_M10757_IG03: ; bbWeight=0.53, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rsi]
+ jne SHORT G_M10757_IG10
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M10757_IG06: ; bbWeight=0.53, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi]
mov rdx, rbx
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; Newtonsoft.Json.Linq.JValue
@@ -54,21 +70,21 @@ G_M10757_IG03: ; bbWeight=0.53, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
test rax, rax
- jne G_M10757_IG11
+ jne G_M10757_IG14
;; size=27 bbWeight=0.53 PerfScore 1.45
-G_M10757_IG04: ; bbWeight=0.41, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M10757_IG07: ; bbWeight=0.41, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rcx, rbx
; gcrRegs +[rcx]
test rcx, rcx
- je SHORT G_M10757_IG10
+ je SHORT G_M10757_IG13
;; size=8 bbWeight=0.41 PerfScore 0.61
-G_M10757_IG05: ; bbWeight=0.20, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
+G_M10757_IG08: ; bbWeight=0.20, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
mov rax, 0xD1FFAB1E ; System.DateTime
cmp qword ptr [rcx], rax
- jne SHORT G_M10757_IG10
+ jne SHORT G_M10757_IG13
;; size=15 bbWeight=0.20 PerfScore 0.87
-G_M10757_IG06: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M10757_IG09: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
mov rsi, qword ptr [rbx+0x08]
mov rcx, 0xD1FFAB1E ; System.DateTime
@@ -90,9 +106,9 @@ G_M10757_IG06: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx rbx]
; byrRegs -[rcx]
- jmp SHORT G_M10757_IG08
+ jmp SHORT G_M10757_IG11
;; size=58 bbWeight=0.01 PerfScore 0.06
-G_M10757_IG07: ; bbWeight=0.47, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M10757_IG10: ; bbWeight=0.47, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; Fluid.Values.ObjectValue
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -109,31 +125,31 @@ G_M10757_IG07: ; bbWeight=0.47, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
mov rsi, rbx
; gcrRegs +[rsi]
;; size=33 bbWeight=0.47 PerfScore 1.65
-G_M10757_IG08: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M10757_IG11: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
mov rax, rsi
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
-G_M10757_IG09: ; bbWeight=1, epilog, nogc, extend
+G_M10757_IG12: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=1 PerfScore 2.25
-G_M10757_IG10: ; bbWeight=0.40, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10757_IG13: ; bbWeight=0.40, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax rsi]
xor rsi, rsi
; gcrRegs +[rsi]
- jmp SHORT G_M10757_IG08
+ jmp SHORT G_M10757_IG11
;; size=4 bbWeight=0.40 PerfScore 0.90
-G_M10757_IG11: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+G_M10757_IG14: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi] +[rax]
mov rsi, gword ptr [rax+0x28]
; gcrRegs +[rsi]
- jmp SHORT G_M10757_IG08
+ jmp SHORT G_M10757_IG11
;; size=6 bbWeight=0.12 PerfScore 0.48
-; Total bytes of code 196, prolog size 6, PerfScore 14.03, instruction count 49, allocated bytes for code 196 (MethodHash=1d8cd5fa) for method OrchardCore.Liquid.Startup+<>c:<ConfigureServices>b__1_3(System.Object):System.Object:this (Tier1)
+; Total bytes of code 219, prolog size 6, PerfScore 16.30, instruction count 55, allocated bytes for code 219 (MethodHash=1d8cd5fa) for method OrchardCore.Liquid.Startup+<>c:<ConfigureServices>b__1_3(System.Object):System.Object:this (Tier1)
; ============================================================
Unwind Info:
+23 (+11.73%) : 96259.dasm - OrchardCore.Liquid.Startup+<>c:
@@ -10,19 +10,20 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <OrchardCore.Liquid.Startup+<>c>
-; V01 arg1 [V01,T00] ( 6, 3.93) ref -> rbx class-hnd single-def <System.Object>
-; V02 loc0 [V02,T02] ( 3, 2.48) ref -> rsi class-hnd single-def <Newtonsoft.Json.Linq.JObject>
-; V03 loc1 [V03,T05] ( 3, 1.16) ref -> rax class-hnd single-def <Newtonsoft.Json.Linq.JValue>
+; V01 arg1 [V01,T01] ( 7, 4.17) ref -> rbx class-hnd single-def <System.Object>
+; V02 loc0 [V02,T03] ( 3, 2.48) ref -> rsi class-hnd single-def <Newtonsoft.Json.Linq.JObject>
+; V03 loc1 [V03,T06] ( 3, 1.16) ref -> rax class-hnd single-def <Newtonsoft.Json.Linq.JValue>
;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref <System.DateTime>
-; V05 loc3 [V05,T04] ( 5, 2.00) ref -> rsi class-hnd <System.Object>
+; V05 loc3 [V05,T05] ( 5, 2.00) ref -> rsi class-hnd <System.Object>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T01] ( 3, 2.88) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <Fluid.Values.ObjectValue>
-; V08 tmp2 [V08,T03] ( 3, 2.01) ref -> rcx class-hnd "spilling QMark2" <System.DateTime>
-; V09 tmp3 [V09,T06] ( 3, 0.02) ref -> rbx class-hnd exact single-def "Single-def Box Helper" <System.DateTime>
-; V10 tmp4 [V10,T07] ( 3, 0.02) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <Fluid.Values.ObjectValue>
+; V07 tmp1 [V07,T02] ( 3, 2.88) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <Fluid.Values.ObjectValue>
+; V08 tmp2 [V08,T04] ( 3, 2.01) ref -> rcx class-hnd "spilling QMark2" <System.DateTime>
+; V09 tmp3 [V09,T07] ( 3, 0.02) ref -> rbx class-hnd exact single-def "Single-def Box Helper" <System.DateTime>
+; V10 tmp4 [V10,T08] ( 3, 0.02) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <Fluid.Values.ObjectValue>
;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.DateTime>
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.DateTime>
-; V13 tmp7 [V13,T08] ( 2, 0.01) long -> rsi single-def "field V04._dateData (fldOffset=0x0)" P-INDEP
+; V13 tmp7 [V13,T09] ( 2, 0.01) long -> rsi single-def "field V04._dateData (fldOffset=0x0)" P-INDEP
+; V14 rat0 [V14,T00] ( 5, 7.48) ref -> rsi class-hnd "replacement local" <Newtonsoft.Json.Linq.JObject>
;
; Lcl frame size = 40
@@ -34,6 +35,18 @@ G_M10757_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
;; size=9 bbWeight=1 PerfScore 2.50
G_M10757_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rsi, rbx
+ ; gcrRegs +[rsi]
+ test rsi, rsi
+ je SHORT G_M10757_IG05
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M10757_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov rdx, 0xD1FFAB1E ; Newtonsoft.Json.Linq.JObject
+ cmp qword ptr [rsi], rdx
+ je SHORT G_M10757_IG05
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M10757_IG04: ; bbWeight=0.24, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi]
mov rdx, rbx
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; Newtonsoft.Json.Linq.JObject
@@ -42,11 +55,14 @@ G_M10757_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
+ ;; size=21 bbWeight=0.24 PerfScore 0.42
+G_M10757_IG05: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
test rsi, rsi
- jne SHORT G_M10757_IG07
- ;; size=26 bbWeight=1 PerfScore 3.00
-G_M10757_IG03: ; bbWeight=0.52, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rsi]
+ jne SHORT G_M10757_IG10
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M10757_IG06: ; bbWeight=0.52, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi]
mov rdx, rbx
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; Newtonsoft.Json.Linq.JValue
@@ -54,21 +70,21 @@ G_M10757_IG03: ; bbWeight=0.52, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
test rax, rax
- jne G_M10757_IG11
+ jne G_M10757_IG14
;; size=27 bbWeight=0.52 PerfScore 1.43
-G_M10757_IG04: ; bbWeight=0.40, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M10757_IG07: ; bbWeight=0.40, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rcx, rbx
; gcrRegs +[rcx]
test rcx, rcx
- je SHORT G_M10757_IG10
+ je SHORT G_M10757_IG13
;; size=8 bbWeight=0.40 PerfScore 0.60
-G_M10757_IG05: ; bbWeight=0.20, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
+G_M10757_IG08: ; bbWeight=0.20, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
mov rax, 0xD1FFAB1E ; System.DateTime
cmp qword ptr [rcx], rax
- jne SHORT G_M10757_IG10
+ jne SHORT G_M10757_IG13
;; size=15 bbWeight=0.20 PerfScore 0.86
-G_M10757_IG06: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M10757_IG09: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
mov rsi, qword ptr [rbx+0x08]
mov rcx, 0xD1FFAB1E ; System.DateTime
@@ -90,9 +106,9 @@ G_M10757_IG06: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx rbx]
; byrRegs -[rcx]
- jmp SHORT G_M10757_IG08
+ jmp SHORT G_M10757_IG11
;; size=58 bbWeight=0.00 PerfScore 0.03
-G_M10757_IG07: ; bbWeight=0.48, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M10757_IG10: ; bbWeight=0.48, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; Fluid.Values.ObjectValue
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -109,31 +125,31 @@ G_M10757_IG07: ; bbWeight=0.48, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
mov rsi, rbx
; gcrRegs +[rsi]
;; size=33 bbWeight=0.48 PerfScore 1.68
-G_M10757_IG08: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M10757_IG11: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
mov rax, rsi
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
-G_M10757_IG09: ; bbWeight=1, epilog, nogc, extend
+G_M10757_IG12: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=1 PerfScore 2.25
-G_M10757_IG10: ; bbWeight=0.40, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10757_IG13: ; bbWeight=0.40, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax rsi]
xor rsi, rsi
; gcrRegs +[rsi]
- jmp SHORT G_M10757_IG08
+ jmp SHORT G_M10757_IG11
;; size=4 bbWeight=0.40 PerfScore 0.90
-G_M10757_IG11: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+G_M10757_IG14: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi] +[rax]
mov rsi, gword ptr [rax+0x28]
; gcrRegs +[rsi]
- jmp SHORT G_M10757_IG08
+ jmp SHORT G_M10757_IG11
;; size=6 bbWeight=0.12 PerfScore 0.47
-; Total bytes of code 196, prolog size 6, PerfScore 13.97, instruction count 49, allocated bytes for code 196 (MethodHash=1d8cd5fa) for method OrchardCore.Liquid.Startup+<>c:<ConfigureServices>b__1_3(System.Object):System.Object:this (Tier1)
+; Total bytes of code 219, prolog size 6, PerfScore 16.27, instruction count 55, allocated bytes for code 219 (MethodHash=1d8cd5fa) for method OrchardCore.Liquid.Startup+<>c:<ConfigureServices>b__1_3(System.Object):System.Object:this (Tier1)
; ============================================================
Unwind Info:
+33 (+16.84%) : 92536.dasm - OrchardCore.Liquid.Startup+<>c:
@@ -10,30 +10,32 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <OrchardCore.Liquid.Startup+<>c>
-; V01 arg1 [V01,T00] ( 6, 3.93) ref -> rbx class-hnd single-def <System.Object>
-; V02 loc0 [V02,T02] ( 3, 2.48) ref -> rsi class-hnd single-def <Newtonsoft.Json.Linq.JObject>
-; V03 loc1 [V03,T05] ( 3, 1.17) ref -> rax class-hnd single-def <Newtonsoft.Json.Linq.JValue>
+; V01 arg1 [V01,T00] ( 7, 4.05) ref -> rbx class-hnd single-def <System.Object>
+; V02 loc0 [V02,T03] ( 3, 2.48) ref -> rsi class-hnd single-def <Newtonsoft.Json.Linq.JObject>
+; V03 loc1 [V03,T06] ( 3, 1.17) ref -> rdi class-hnd single-def <Newtonsoft.Json.Linq.JValue>
;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref <System.DateTime>
-; V05 loc3 [V05,T04] ( 5, 2.00) ref -> rsi class-hnd <System.Object>
+; V05 loc3 [V05,T05] ( 5, 2.00) ref -> rbx class-hnd <System.Object>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T01] ( 3, 2.86) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <Fluid.Values.ObjectValue>
-; V08 tmp2 [V08,T03] ( 3, 2.01) ref -> rcx class-hnd "spilling QMark2" <System.DateTime>
-; V09 tmp3 [V09,T06] ( 3, 0.01) ref -> rbx class-hnd exact single-def "Single-def Box Helper" <System.DateTime>
-; V10 tmp4 [V10,T07] ( 3, 0.01) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <Fluid.Values.ObjectValue>
+; V07 tmp1 [V07,T02] ( 3, 2.86) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <Fluid.Values.ObjectValue>
+; V08 tmp2 [V08,T04] ( 3, 2.01) ref -> rcx class-hnd "spilling QMark2" <System.DateTime>
+; V09 tmp3 [V09,T07] ( 3, 0.01) ref -> rdi class-hnd exact single-def "Single-def Box Helper" <System.DateTime>
+; V10 tmp4 [V10,T08] ( 3, 0.01) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <Fluid.Values.ObjectValue>
;* V11 tmp5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.DateTime>
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.DateTime>
-; V13 tmp7 [V13,T08] ( 2, 0.00) long -> rsi single-def "field V04._dateData (fldOffset=0x0)" P-INDEP
+; V13 tmp7 [V13,T09] ( 2, 0.00) long -> rsi single-def "field V04._dateData (fldOffset=0x0)" P-INDEP
+; V14 rat0 [V14,T01] ( 6, 4.19) ref -> rdi class-hnd "replacement local" <Newtonsoft.Json.Linq.JValue>
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M10757_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push rdi
push rsi
push rbx
- sub rsp, 40
+ sub rsp, 32
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=9 bbWeight=1 PerfScore 2.50
-G_M10757_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=10 bbWeight=1 PerfScore 3.50
+G_M10757_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdx, rbx
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; Newtonsoft.Json.Linq.JObject
@@ -43,56 +45,79 @@ G_M10757_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov rsi, rax
; gcrRegs +[rsi]
test rsi, rsi
- jne SHORT G_M10757_IG07
- ;; size=26 bbWeight=1 PerfScore 3.00
-G_M10757_IG03: ; bbWeight=0.52, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jne G_M10757_IG11
+ ;; size=30 bbWeight=1 PerfScore 3.00
+G_M10757_IG03: ; bbWeight=0.52, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rsi]
+ mov rdi, rbx
+ ; gcrRegs +[rdi]
+ test rdi, rdi
+ je SHORT G_M10757_IG07
+ ;; size=8 bbWeight=0.52 PerfScore 0.79
+G_M10757_IG04: ; bbWeight=0.26, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+ mov rdx, 0xD1FFAB1E ; OrchardCore.ContentManagement.ContentItem
+ cmp qword ptr [rdi], rdx
+ je SHORT G_M10757_IG06
+ ;; size=15 bbWeight=0.26 PerfScore 1.11
+G_M10757_IG05: ; bbWeight=0.13, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
mov rdx, rbx
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; Newtonsoft.Json.Linq.JValue
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- test rax, rax
- jne G_M10757_IG11
- ;; size=27 bbWeight=0.52 PerfScore 1.44
-G_M10757_IG04: ; bbWeight=0.40, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ jmp SHORT G_M10757_IG07
+ ;; size=23 bbWeight=0.13 PerfScore 0.47
+G_M10757_IG06: ; bbWeight=0.14, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rdi]
+ xor rdi, rdi
+ ; gcrRegs +[rdi]
+ ;; size=2 bbWeight=0.14 PerfScore 0.03
+G_M10757_IG07: ; bbWeight=0.52, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+ test rdi, rdi
+ jne G_M10757_IG15
+ ;; size=9 bbWeight=0.52 PerfScore 0.65
+G_M10757_IG08: ; bbWeight=0.40, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
mov rcx, rbx
; gcrRegs +[rcx]
test rcx, rcx
- je SHORT G_M10757_IG10
+ je SHORT G_M10757_IG14
;; size=8 bbWeight=0.40 PerfScore 0.60
-G_M10757_IG05: ; bbWeight=0.20, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
+G_M10757_IG09: ; bbWeight=0.20, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
mov rax, 0xD1FFAB1E ; System.DateTime
cmp qword ptr [rcx], rax
- jne SHORT G_M10757_IG10
+ jne SHORT G_M10757_IG14
;; size=15 bbWeight=0.20 PerfScore 0.85
-G_M10757_IG06: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M10757_IG10: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
mov rsi, qword ptr [rbx+0x08]
mov rcx, 0xD1FFAB1E ; System.DateTime
call CORINFO_HELP_NEWSFAST
; gcrRegs -[rbx] +[rax]
; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
- mov qword ptr [rbx+0x08], rsi
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ mov qword ptr [rdi+0x08], rsi
mov rcx, 0xD1FFAB1E ; Fluid.Values.ObjectValue
call CORINFO_HELP_NEWSFAST
; gcr arg pop 0
- mov rsi, rax
- ; gcrRegs +[rsi]
- lea rcx, bword ptr [rsi+0x08]
+ mov rbx, rax
+ ; gcrRegs +[rbx]
+ lea rcx, bword ptr [rbx+0x08]
; byrRegs +[rcx]
- mov rdx, rbx
+ mov rdx, rdi
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx rbx]
+ ; gcrRegs -[rax rdx rdi]
; byrRegs -[rcx]
- jmp SHORT G_M10757_IG08
+ jmp SHORT G_M10757_IG12
;; size=58 bbWeight=0.00 PerfScore 0.01
-G_M10757_IG07: ; bbWeight=0.48, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M10757_IG11: ; bbWeight=0.48, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx] +[rsi]
mov rcx, 0xD1FFAB1E ; Fluid.Values.ObjectValue
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -106,34 +131,32 @@ G_M10757_IG07: ; bbWeight=0.48, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx rsi]
; byrRegs -[rcx]
- mov rsi, rbx
- ; gcrRegs +[rsi]
- ;; size=33 bbWeight=0.48 PerfScore 1.67
-G_M10757_IG08: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- mov rax, rsi
+ ;; size=30 bbWeight=0.48 PerfScore 1.55
+G_M10757_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rax, rbx
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
-G_M10757_IG09: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
+G_M10757_IG13: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 32
pop rbx
pop rsi
+ pop rdi
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M10757_IG10: ; bbWeight=0.40, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax rsi]
- xor rsi, rsi
- ; gcrRegs +[rsi]
- jmp SHORT G_M10757_IG08
+ ;; size=8 bbWeight=1 PerfScore 2.75
+G_M10757_IG14: ; bbWeight=0.40, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax rbx]
+ xor rbx, rbx
+ ; gcrRegs +[rbx]
+ jmp SHORT G_M10757_IG12
;; size=4 bbWeight=0.40 PerfScore 0.90
-G_M10757_IG11: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi] +[rax]
- mov rsi, gword ptr [rax+0x28]
- ; gcrRegs +[rsi]
- jmp SHORT G_M10757_IG08
+G_M10757_IG15: ; bbWeight=0.12, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx] +[rdi]
+ mov rbx, gword ptr [rdi+0x28]
+ ; gcrRegs +[rbx]
+ jmp SHORT G_M10757_IG12
;; size=6 bbWeight=0.12 PerfScore 0.49
-; Total bytes of code 196, prolog size 6, PerfScore 13.97, instruction count 49, allocated bytes for code 196 (MethodHash=1d8cd5fa) for method OrchardCore.Liquid.Startup+<>c:<ConfigureServices>b__1_3(System.Object):System.Object:this (Tier1)
+; Total bytes of code 229, prolog size 7, PerfScore 16.97, instruction count 59, allocated bytes for code 229 (MethodHash=1d8cd5fa) for method OrchardCore.Liquid.Startup+<>c:<ConfigureServices>b__1_3(System.Object):System.Object:this (Tier1)
; ============================================================
Unwind Info:
@@ -141,11 +164,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x06
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x07
+ CountOfUnwindCodes: 4
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
benchmarks.run_pgo.windows.x64.checked.mch
+38 (+11.95%) : 100256.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)
@@ -10,75 +10,78 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 8, 6.00) ref -> rbx this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V01 loc0 [V01,T01] ( 5, 3.00) int -> rsi
-; V02 loc1 [V02,T22] ( 3, 0.00) ref -> rdi class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-; V03 loc2 [V03,T03] ( 7, 2.50) int -> rdi
-; V04 loc3 [V04,T11] ( 7, 0.00) int -> rbx
+; V01 loc0 [V01,T02] ( 5, 3.00) int -> rsi
+; V02 loc1 [V02,T24] ( 3, 0.00) ref -> rbp class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V03 loc2 [V03,T04] ( 7, 2.50) int -> rdi
+; V04 loc3 [V04,T13] ( 7, 0.00) int -> rdi
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T23] ( 3, 0.00) ref -> rdx single-def "CASTCLASS eval op1"
-; V07 tmp2 [V07,T25] ( 3, 0.00) long -> rcx "fgMakeTemp is creating a new local variable"
-; V08 tmp3 [V08,T13] ( 5, 0.00) ref -> rdi class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-; V09 tmp4 [V09,T14] ( 2, 0.00) ref -> rax class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
-; V10 tmp5 [V10,T06] ( 4, 2 ) int -> rsi "Inline return value spill temp"
-; V11 tmp6 [V11,T08] ( 3, 1.43) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-; V12 tmp7 [V12,T09] ( 3, 1.00) ref -> rcx class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
-; V13 tmp8 [V13,T05] ( 2, 2.00) ref -> rcx "CASTCLASS eval op1"
+; V06 tmp1 [V06,T25] ( 3, 0.00) ref -> rdx single-def "CASTCLASS eval op1"
+; V07 tmp2 [V07,T27] ( 3, 0.00) long -> rcx "fgMakeTemp is creating a new local variable"
+; V08 tmp3 [V08,T15] ( 5, 0.00) ref -> rbp class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V09 tmp4 [V09,T16] ( 2, 0.00) ref -> rax class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode>
+; V10 tmp5 [V10,T08] ( 4, 2 ) int -> rsi "Inline return value spill temp"
+; V11 tmp6 [V11,T10] ( 3, 1.43) ref -> rax class-hnd single-def "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V12 tmp7 [V12,T11] ( 3, 1.00) ref -> rcx class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+; V13 tmp8 [V13,T07] ( 2, 2.00) ref -> rcx "CASTCLASS eval op1"
;* V14 tmp9 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode>
-; V15 tmp10 [V15,T07] ( 4, 1.75) ref -> rcx class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
-; V16 tmp11 [V16,T04] ( 3, 2.00) ref -> rax class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
-; V17 tmp12 [V17,T10] ( 4, 0.00) int -> r10 "Inlining Arg"
-; V18 tmp13 [V18,T26] ( 3, 0 ) ref -> rax "arr expr"
-; V19 tmp14 [V19,T12] ( 3, 0.00) ref -> rax "arr expr"
-; V20 tmp15 [V20,T15] ( 2, 0.00) ref -> rdx "arr expr"
-; V21 tmp16 [V21,T16] ( 2, 0.00) ref -> rcx "argument with side effect"
-; V22 tmp17 [V22,T17] ( 2, 0.00) ref -> rdx "argument with side effect"
-; V23 cse0 [V23,T19] ( 3, 0.00) int -> rcx "CSE - conservative"
-; V24 cse1 [V24,T18] ( 3, 0.00) ref -> rdx "CSE - conservative"
-; V25 cse2 [V25,T24] ( 3, 0.00) int -> rsi "CSE - conservative"
-; V26 cse3 [V26,T20] ( 3, 0.00) int -> r8 "CSE - conservative"
-; V27 cse4 [V27,T21] ( 3, 0.00) int -> rbx "CSE - conservative"
-; V28 cse5 [V28,T02] ( 3, 2.71) ref -> rdx "CSE - aggressive"
+; V15 tmp10 [V15,T09] ( 4, 1.75) ref -> rcx class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
+; V16 tmp11 [V16,T06] ( 3, 2.00) ref -> rbp class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
+; V17 tmp12 [V17,T12] ( 4, 0.00) int -> r10 "Inlining Arg"
+; V18 tmp13 [V18,T28] ( 3, 0 ) ref -> rax "arr expr"
+; V19 tmp14 [V19,T14] ( 3, 0.00) ref -> rax "arr expr"
+; V20 tmp15 [V20,T17] ( 2, 0.00) ref -> rdx "arr expr"
+; V21 tmp16 [V21,T18] ( 2, 0.00) ref -> rcx "argument with side effect"
+; V22 tmp17 [V22,T19] ( 2, 0.00) ref -> rdx "argument with side effect"
+; V23 cse0 [V23,T21] ( 3, 0.00) int -> rcx "CSE - conservative"
+; V24 cse1 [V24,T20] ( 3, 0.00) ref -> rdx "CSE - conservative"
+; V25 cse2 [V25,T26] ( 3, 0.00) int -> rsi "CSE - conservative"
+; V26 cse3 [V26,T22] ( 3, 0.00) int -> r8 "CSE - conservative"
+; V27 cse4 [V27,T23] ( 3, 0.00) int -> rdi "CSE - conservative"
+; V28 cse5 [V28,T03] ( 3, 2.71) ref -> rdx "CSE - aggressive"
+; V29 rat0 [V29,T05] ( 3, 2.25) ref -> rdx "Spilling to split statement for tree"
+; V30 rat1 [V30,T01] ( 5, 3.75) ref -> rbp class-hnd "replacement local" <System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]>
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M41283_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
+ push rbp
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=10 bbWeight=1 PerfScore 3.50
-G_M41283_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=11 bbWeight=1 PerfScore 4.50
+G_M41283_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call <unknown method>
; gcr arg pop 0
test eax, eax
- je G_M41283_IG21
+ je G_M41283_IG24
test byte ptr [rbx+0x28], 64
- jne G_M41283_IG21
+ jne G_M41283_IG24
mov rdx, gword ptr [rbx+0x08]
; gcrRegs +[rdx]
test rdx, rdx
- je SHORT G_M41283_IG11
- ;; size=32 bbWeight=1 PerfScore 9.50
+ je G_M41283_IG14
+ ;; size=36 bbWeight=1 PerfScore 9.50
G_M41283_IG03: ; bbWeight=0.71, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
test rax, rax
- jne G_M41283_IG23
+ jne G_M41283_IG26
mov esi, 1
;; size=29 bbWeight=0.71 PerfScore 1.96
-G_M41283_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
test esi, esi
- je SHORT G_M41283_IG13
- ;; size=4 bbWeight=1 PerfScore 1.25
+ je G_M41283_IG16
+ ;; size=8 bbWeight=1 PerfScore 1.25
G_M41283_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
xor edi, edi
test esi, esi
- jle SHORT G_M41283_IG13
+ jle SHORT G_M41283_IG16
;; size=6 bbWeight=0.50 PerfScore 0.75
G_M41283_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x08]
@@ -89,41 +92,59 @@ G_M41283_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
G_M41283_IG07: ; bbWeight=0.25, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode
cmp qword ptr [rcx], rdx
- je SHORT G_M41283_IG12
+ je SHORT G_M41283_IG15
;; size=15 bbWeight=0.25 PerfScore 1.06
G_M41283_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
mov rdx, gword ptr [rbx+0x08]
; gcrRegs +[rdx]
+ mov rbp, rdx
+ ; gcrRegs +[rbp]
+ test rbp, rbp
+ je SHORT G_M41283_IG11
+ ;; size=12 bbWeight=0.50 PerfScore 1.75
+G_M41283_IG09: ; bbWeight=0.25, gcrefRegs=002C {rdx rbx rbp}, byrefRegs=0000 {}, byref, isz
+ mov rcx, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]
+ cmp qword ptr [rbp], rcx
+ je SHORT G_M41283_IG11
+ ;; size=16 bbWeight=0.25 PerfScore 1.06
+G_M41283_IG10: ; bbWeight=0.13, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbp]
mov rcx, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Text.RegularExpressions.RegexNode]
call CORINFO_HELP_CHKCASTCLASS
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- cmp edi, dword ptr [rax+0x10]
- jb SHORT G_M41283_IG10
- ;; size=24 bbWeight=0.50 PerfScore 3.63
-G_M41283_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
+ mov rbp, rax
+ ; gcrRegs +[rbp]
+ ;; size=18 bbWeight=0.13 PerfScore 0.19
+G_M41283_IG11: ; bbWeight=0.50, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ cmp edi, dword ptr [rbp+0x10]
+ jb SHORT G_M41283_IG13
+ ;; size=5 bbWeight=0.50 PerfScore 2.00
+G_M41283_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx rbp]
call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M41283_IG10: ; bbWeight=0, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rax rbx]
- mov rax, gword ptr [rax+0x08]
+G_M41283_IG13: ; bbWeight=0, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rbx rbp]
+ mov rax, gword ptr [rbp+0x08]
+ ; gcrRegs +[rax]
cmp edi, dword ptr [rax+0x08]
- jae G_M41283_IG20
+ jae G_M41283_IG23
mov ecx, edi
mov rcx, gword ptr [rax+8*rcx+0x10]
; gcrRegs +[rcx]
- jmp SHORT G_M41283_IG12
+ jmp SHORT G_M41283_IG15
;; size=22 bbWeight=0 PerfScore 0.00
-G_M41283_IG11: ; bbWeight=0.29, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax rcx]
+G_M41283_IG14: ; bbWeight=0.29, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax rcx rbp]
xor esi, esi
jmp SHORT G_M41283_IG04
;; size=4 bbWeight=0.29 PerfScore 0.64
-G_M41283_IG12: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG15: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
cmp dword ptr [rcx], ecx
call [System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this]
@@ -133,96 +154,97 @@ G_M41283_IG12: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000
cmp edi, esi
jl SHORT G_M41283_IG06
;; size=14 bbWeight=0.50 PerfScore 3.75
-G_M41283_IG13: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG16: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbx+0x2E], 25
- jne SHORT G_M41283_IG21
+ jne SHORT G_M41283_IG24
;; size=6 bbWeight=1 PerfScore 4.00
-G_M41283_IG14: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG17: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rbx+0x08]
; gcrRegs +[rdx]
- mov rdi, rdx
- ; gcrRegs +[rdi]
- test rdi, rdi
- jne SHORT G_M41283_IG18
+ mov rbp, rdx
+ ; gcrRegs +[rbp]
+ test rbp, rbp
+ jne SHORT G_M41283_IG21
;; size=12 bbWeight=0.00 PerfScore 0.00
-G_M41283_IG15: ; bbWeight=0.00, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M41283_IG18: ; bbWeight=0.00, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx rbx]
- xor ebx, ebx
+ xor edi, edi
dec esi
test esi, esi
- jle SHORT G_M41283_IG21
+ jle SHORT G_M41283_IG24
;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M41283_IG16: ; bbWeight=0.00, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov ecx, dword ptr [rdi+0x10]
- cmp ebx, ecx
- jae SHORT G_M41283_IG09
- mov rdx, gword ptr [rdi+0x08]
+G_M41283_IG19: ; bbWeight=0.00, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz
+ mov ecx, dword ptr [rbp+0x10]
+ cmp edi, ecx
+ jae SHORT G_M41283_IG12
+ mov rdx, gword ptr [rbp+0x08]
; gcrRegs +[rdx]
mov rax, rdx
; gcrRegs +[rax]
mov r8d, dword ptr [rax+0x08]
- cmp ebx, r8d
- jae SHORT G_M41283_IG20
- mov r10d, ebx
+ cmp edi, r8d
+ jae SHORT G_M41283_IG23
+ mov r10d, edi
mov rax, gword ptr [rax+8*r10+0x10]
- inc ebx
- mov r10d, ebx
+ inc edi
+ mov r10d, edi
...
coreclr_tests.run.windows.x64.checked.mch
-43 (-3.48%) : 371075.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
@@ -15,75 +15,74 @@
; V03 loc1 [V03,T04] ( 8, 5.68) ref -> r14 class-hnd exact <Internal.TypeSystem.InstantiatedType>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.InstantiatedType>
-;* V06 tmp2 [V06,T34] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V07 tmp3 [V07,T33] ( 2, 0.82) ref -> rcx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V08 tmp4 [V08,T21] ( 3, 1.64) long -> rax "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T46] ( 2, 0 ) ref -> rbx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2 [V06,T33] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T32] ( 2, 0.82) ref -> rcx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V08 tmp4 [V08,T20] ( 3, 1.64) long -> rax "fgMakeTemp is creating a new local variable"
+; V09 tmp5 [V09,T45] ( 2, 0 ) ref -> rbx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
; V10 tmp6 [V10,T06] ( 7, 4.89) ref -> r15 class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
; V11 tmp7 [V11,T05] ( 14, 5.18) ref -> rbp "guarded devirt return temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V13 tmp9 [V13,T13] ( 8, 2.40) ref -> r13 "guarded devirt return temp"
+; V13 tmp9 [V13,T12] ( 8, 2.40) ref -> r13 "guarded devirt return temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V15 tmp11 [V15,T18] ( 4, 1.77) ref -> rsi "guarded devirt return temp"
+; V15 tmp11 [V15,T17] ( 4, 1.77) ref -> rsi "guarded devirt return temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V17 tmp13 [V17,T20] ( 8, 1.71) ref -> r14 "guarded devirt return temp"
+; V17 tmp13 [V17,T19] ( 8, 1.71) ref -> r14 "guarded devirt return temp"
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref
-; V20 tmp16 [V20,T29] ( 3, 1.18) int -> rcx
-; V21 tmp17 [V21,T25] ( 3, 1.36) ref -> r12 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V20 tmp16 [V20,T28] ( 3, 1.18) int -> rcx
+; V21 tmp17 [V21,T24] ( 3, 1.36) ref -> r12 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V22 tmp18 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V23 tmp19 [V23,T36] ( 3, 0.68) ref -> rax "guarded devirt return temp"
+; V23 tmp19 [V23,T35] ( 3, 0.68) ref -> rax "guarded devirt return temp"
;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V25 tmp21 [V25,T37] ( 3, 0.68) ref -> r12 "guarded devirt return temp"
-; V26 tmp22 [V26,T16] ( 5, 2.04) ref -> rcx single-def "guarded devirt arg temp"
+; V25 tmp21 [V25,T36] ( 3, 0.68) ref -> r12 "guarded devirt return temp"
+; V26 tmp22 [V26,T15] ( 5, 2.04) ref -> rcx single-def "guarded devirt arg temp"
;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V28 tmp24 [V28,T38] ( 3, 0.68) ref -> rax "guarded devirt return temp"
-; V29 tmp25 [V29,T17] ( 5, 2.04) ref -> rcx single-def "guarded devirt arg temp"
+; V28 tmp24 [V28,T37] ( 3, 0.68) ref -> rax "guarded devirt return temp"
+; V29 tmp25 [V29,T16] ( 5, 2.04) ref -> rcx single-def "guarded devirt arg temp"
;* V30 tmp26 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V31 tmp27 [V31,T15] ( 5, 2.09) ref -> rcx class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V32 tmp28 [V32,T35] ( 3, 0.70) ref -> rsi "guarded devirt return temp"
+; V31 tmp27 [V31,T14] ( 5, 2.09) ref -> rcx class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+; V32 tmp28 [V32,T34] ( 3, 0.70) ref -> rsi "guarded devirt return temp"
;* V33 tmp29 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
;* V34 tmp30 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaType>
; V35 tmp31 [V35,T02] ( 5, 5.89) ref -> rcx class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
; V36 tmp32 [V36,T03] ( 5, 5.89) ref -> rcx class-hnd "spilling QMark2" <<unknown class>>
;* V37 tmp33 [V37 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V38 tmp34 [V38,T07] ( 4, 3.66) ref -> rsi class-hnd exact single-def "impAppendStmt" <<unknown class>>
-; V39 tmp35 [V39,T14] ( 2, 2.36) int -> rbx "impAppendStmt"
-; V40 tmp36 [V40,T27] ( 4, 1.18) ref -> rcx "guarded devirt return temp"
+; V39 tmp35 [V39,T13] ( 2, 2.36) int -> rbx "impAppendStmt"
+; V40 tmp36 [V40,T26] ( 4, 1.18) ref -> rcx "guarded devirt return temp"
;* V41 tmp37 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V42 tmp38 [V42,T44] ( 2, 0.00) byref -> r12 single-def "impAppendStmt"
-; V43 tmp39 [V43,T45] ( 3, 0.00) int -> rax "guarded devirt return temp"
-; V44 tmp40 [V44,T43] ( 5, 0.01) ref -> rcx single-def "guarded devirt arg temp"
+; V42 tmp38 [V42,T43] ( 2, 0.00) byref -> r12 single-def "impAppendStmt"
+; V43 tmp39 [V43,T44] ( 3, 0.00) int -> rax "guarded devirt return temp"
+; V44 tmp40 [V44,T42] ( 5, 0.01) ref -> rcx single-def "guarded devirt arg temp"
;* V45 tmp41 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
;* V46 tmp42 [V46 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V47 tmp43 [V47,T28] ( 3, 1.18) ref -> rax class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V47 tmp43 [V47,T27] ( 3, 1.18) ref -> rax class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
;* V48 tmp44 [V48 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V49 tmp45 [V49 ] ( 2, 1.11) ref -> [rsp+0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V50 tmp46 [V50,T22] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V51 tmp47 [V51,T10] ( 4, 2.67) ref -> rax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V52 tmp48 [V52,T32] ( 3, 0.82) int -> rcx
-; V53 tmp49 [V53,T31] ( 3, 0.95) ref -> rdi class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V50 tmp46 [V50,T21] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V51 tmp47 [V51,T09] ( 3, 2.46) ref -> rax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V52 tmp48 [V52,T31] ( 3, 0.82) int -> rcx
+; V53 tmp49 [V53,T30] ( 3, 0.95) ref -> rdi class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V54 tmp50 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V55 tmp51 [V55,T39] ( 3, 0.47) ref -> rax "guarded devirt return temp"
+; V55 tmp51 [V55,T38] ( 3, 0.47) ref -> rax "guarded devirt return temp"
;* V56 tmp52 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V57 tmp53 [V57,T40] ( 3, 0.47) ref -> rdi "guarded devirt return temp"
-; V58 tmp54 [V58,T23] ( 5, 1.42) ref -> rcx single-def "guarded devirt arg temp"
+; V57 tmp53 [V57,T39] ( 3, 0.47) ref -> rdi "guarded devirt return temp"
+; V58 tmp54 [V58,T22] ( 5, 1.42) ref -> rcx single-def "guarded devirt arg temp"
;* V59 tmp55 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V60 tmp56 [V60,T41] ( 3, 0.47) ref -> rax "guarded devirt return temp"
-; V61 tmp57 [V61,T24] ( 5, 1.42) ref -> rcx single-def "guarded devirt arg temp"
+; V60 tmp56 [V60,T40] ( 3, 0.47) ref -> rax "guarded devirt return temp"
+; V61 tmp57 [V61,T23] ( 5, 1.42) ref -> rcx single-def "guarded devirt arg temp"
;* V62 tmp58 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V63 tmp59 [V63,T12] ( 8, 2.42) ref -> rbp single-def "field V37._typicalMethodDef (fldOffset=0x0)" P-INDEP
-; V64 tmp60 [V64,T11] ( 8, 2.42) ref -> r14 single-def "field V37._instantiatedType (fldOffset=0x8)" P-INDEP
-; V65 tmp61 [V65,T26] ( 3, 1.24) int -> rbx single-def "field V37._hashcode (fldOffset=0x10)" P-INDEP
+; V63 tmp59 [V63,T11] ( 8, 2.42) ref -> rbp single-def "field V37._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V64 tmp60 [V64,T10] ( 8, 2.42) ref -> r14 single-def "field V37._instantiatedType (fldOffset=0x8)" P-INDEP
+; V65 tmp61 [V65,T25] ( 3, 1.24) int -> rbx single-def "field V37._hashcode (fldOffset=0x10)" P-INDEP
;* V66 tmp62 [V66 ] ( 0, 0 ) ref -> zero-ref single-def "field V48._typicalMethodDef (fldOffset=0x0)" P-INDEP
;* V67 tmp63 [V67 ] ( 0, 0 ) ref -> zero-ref single-def "field V48._instantiatedType (fldOffset=0x8)" P-INDEP
;* V68 tmp64 [V68 ] ( 0, 0 ) int -> zero-ref single-def "field V48._hashcode (fldOffset=0x10)" P-INDEP
; V69 tmp65 [V69 ] ( 8, 5.23) struct (24) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
-;* V70 tmp66 [V70,T30] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V71 tmp67 [V71,T42] ( 2, 0.26) ref -> rcx single-def "argument with side effect"
-; V72 cse0 [V72,T19] ( 3, 1.77) ref -> rcx "CSE - moderate"
+;* V70 tmp66 [V70,T29] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V71 tmp67 [V71,T41] ( 2, 0.26) ref -> rcx single-def "argument with side effect"
+; V72 cse0 [V72,T18] ( 3, 1.77) ref -> rcx "CSE - moderate"
; V73 cse1 [V73,T08] ( 6, 4.18) long -> rdi "CSE - aggressive"
-; V74 rat0 [V74,T09] ( 6, 3.29) ref -> r8 class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
;
; Lcl frame size = 72
@@ -156,7 +155,7 @@ G_M10698_IG08: ; bbWeight=0.59, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0
mov r15, gword ptr [r14+0x50]
; gcrRegs +[r15]
cmp qword ptr [rbp], rdi
- jne G_M10698_IG43
+ jne G_M10698_IG46
mov r13, gword ptr [rbp+0x10]
; gcrRegs +[r13]
;; size=18 bbWeight=0.59 PerfScore 4.71
@@ -171,12 +170,12 @@ G_M10698_IG10: ; bbWeight=0.54, gcrefRegs=E028 {rbx rbp r13 r14 r15}, byr
G_M10698_IG11: ; bbWeight=0.34, gcrefRegs=E028 {rbx rbp r13 r14 r15}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
cmp qword ptr [r15], rcx
- jne G_M10698_IG45
+ jne G_M10698_IG48
mov rcx, gword ptr [r15+0x58]
; gcrRegs +[rcx]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rcx], rax
- jne G_M10698_IG44
+ jne G_M10698_IG47
mov r12, gword ptr [rcx+0x08]
; gcrRegs +[r12]
;; size=46 bbWeight=0.34 PerfScore 4.25
@@ -184,12 +183,12 @@ G_M10698_IG12: ; bbWeight=0.34, gcrefRegs=F028 {rbx rbp r12 r13 r14 r15},
; gcrRegs -[rcx]
mov rcx, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
cmp qword ptr [r13], rcx
- jne G_M10698_IG47
+ jne G_M10698_IG50
mov rcx, gword ptr [r13+0x58]
; gcrRegs +[rcx]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rcx], rax
- jne G_M10698_IG46
+ jne G_M10698_IG49
mov rax, gword ptr [rcx+0x08]
; gcrRegs +[rax]
;; size=47 bbWeight=0.34 PerfScore 4.25
@@ -218,7 +217,7 @@ G_M10698_IG15: ; bbWeight=0.35, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0
mov rcx, gword ptr [rcx+0x58]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rcx], rax
- jne G_M10698_IG48
+ jne G_M10698_IG51
mov rsi, gword ptr [rcx+0x08]
; gcrRegs +[rsi]
jmp SHORT G_M10698_IG17
@@ -266,11 +265,11 @@ G_M10698_IG17: ; bbWeight=0.59, gcrefRegs=4060 {rbp rsi r14}, byrefRegs=0
G_M10698_IG18: ; bbWeight=0.59, gcrefRegs=4060 {rbp rsi r14}, byrefRegs=0000 {}, byref
mov ebx, dword ptr [r14+0x68]
cmp qword ptr [rbp], rdi
- jne G_M10698_IG40
+ jne G_M10698_IG53
mov rcx, gword ptr [rbp+0x20]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M10698_IG39
+ je G_M10698_IG52
;; size=27 bbWeight=0.59 PerfScore 5.45
G_M10698_IG19: ; bbWeight=0.59, gcrefRegs=4062 {rcx rbp rsi r14}, byrefRegs=0000 {}, byref
call [Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int]
@@ -289,7 +288,7 @@ G_M10698_IG19: ; bbWeight=0.59, gcrefRegs=4062 {rcx rbp rsi r14}, byrefRe
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- je G_M10698_IG41
+ je G_M10698_IG37
;; size=52 bbWeight=0.59 PerfScore 8.69
G_M10698_IG20: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp rsi r14]
@@ -316,7 +315,7 @@ G_M10698_IG22: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=406
; gcrRegs +[rcx]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
cmp qword ptr [rcx], rax
- jne G_M10698_IG49
+ jne G_M10698_IG34
call [Internal.TypeSystem.Ecma.EcmaType:GetHashCode():int:this]
; gcrRegs -[rcx]
; gcr arg pop 0
@@ -342,26 +341,26 @@ G_M10698_IG24: ; bbWeight=0.41, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0
cmp qword ptr [rsi], rcx
je G_M10698_IG32
cmp qword ptr [rbp], rdi
- jne G_M10698_IG53
+ jne G_M10698_IG41
mov r14, gword ptr [rbp+0x10]
; gcrRegs +[r14]
;; size=33 bbWeight=0.41 PerfScore 4.21
G_M10698_IG25: ; bbWeight=0.41, gcrefRegs=4060 {rbp rsi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
test r14, r14
- je G_M10698_IG42
+ je G_M10698_IG36
;; size=9 bbWeight=0.41 PerfScore 0.51
G_M10698_IG26: ; bbWeight=0.24, gcrefRegs=4060 {rbp rsi r14}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
cmp qword ptr [rsi], rcx
- jne G_M10698_IG55
+ jne G_M10698_IG43
;; size=19 bbWeight=0.24 PerfScore 1.01
G_M10698_IG27: ; bbWeight=0.24, gcrefRegs=4060 {rbp rsi r14}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rsi+0x58]
; gcrRegs +[rcx]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rcx], rax
- jne G_M10698_IG54
+ jne G_M10698_IG42
mov rdi, gword ptr [rcx+0x08]
; gcrRegs +[rdi]
;; size=27 bbWeight=0.24 PerfScore 1.95
@@ -369,12 +368,12 @@ G_M10698_IG28: ; bbWeight=0.24, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefRe
; gcrRegs -[rcx]
mov rcx, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
cmp qword ptr [r14], rcx
- jne G_M10698_IG57
+ jne G_M10698_IG45
mov rcx, gword ptr [r14+0x58]
; gcrRegs +[rcx]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rcx], rax
- jne G_M10698_IG56
+ jne G_M10698_IG44
mov rax, gword ptr [rcx+0x08]
; gcrRegs +[rax]
;; size=46 bbWeight=0.24 PerfScore 2.96
@@ -419,31 +418,38 @@ G_M10698_IG32: ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=004
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
cmp byte ptr [rax], al
- mov r8, rax
- ; gcrRegs +[r8]
- test r8, r8
- je SHORT G_M10698_IG37
- ;; size=23 bbWeight=0.41 PerfScore 4.83
-G_M10698_IG33: ; bbWeight=0.21, gcrefRegs=0149 {rax rbx rsi r8}, byrefRegs=0000 {}, byref, isz
- mov rdx, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaMethod
...
-25 (-1.94%) : 367012.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
@@ -15,36 +15,36 @@
; V03 loc1 [V03,T02] ( 8, 5.89) ref -> rbp class-hnd exact <Internal.TypeSystem.InstantiatedType>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.InstantiatedType>
-;* V06 tmp2 [V06,T40] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V07 tmp3 [V07,T39] ( 2, 0.61) ref -> rcx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V08 tmp4 [V08,T28] ( 3, 1.22) long -> rax "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T48] ( 2, 0 ) ref -> rbx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2 [V06,T39] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T38] ( 2, 0.61) ref -> rcx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V08 tmp4 [V08,T27] ( 3, 1.22) long -> rax "fgMakeTemp is creating a new local variable"
+; V09 tmp5 [V09,T47] ( 2, 0 ) ref -> rbx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
; V10 tmp6 [V10,T03] ( 7, 5.84) ref -> r14 class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
; V11 tmp7 [V11,T07] ( 12, 5.39) ref -> rdi "guarded devirt return temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.MethodForInstantiatedType>
; V13 tmp9 [V13,T09] ( 8, 2.92) ref -> r13 "guarded devirt return temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V15 tmp11 [V15,T18] ( 4, 2.09) ref -> rsi "guarded devirt return temp"
+; V15 tmp11 [V15,T17] ( 4, 2.09) ref -> rsi "guarded devirt return temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.MethodForInstantiatedType>
-; V17 tmp13 [V17,T27] ( 8, 1.29) ref -> rbp "guarded devirt return temp"
+; V17 tmp13 [V17,T26] ( 8, 1.29) ref -> rbp "guarded devirt return temp"
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref
-; V20 tmp16 [V20,T25] ( 3, 1.39) int -> rcx
-; V21 tmp17 [V21,T21] ( 3, 1.67) ref -> r12 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V20 tmp16 [V20,T24] ( 3, 1.39) int -> rcx
+; V21 tmp17 [V21,T20] ( 3, 1.67) ref -> r12 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V22 tmp18 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V23 tmp19 [V23,T32] ( 3, 0.83) ref -> rax "guarded devirt return temp"
+; V23 tmp19 [V23,T31] ( 3, 0.83) ref -> rax "guarded devirt return temp"
;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V25 tmp21 [V25,T33] ( 3, 0.83) ref -> r12 "guarded devirt return temp"
+; V25 tmp21 [V25,T32] ( 3, 0.83) ref -> r12 "guarded devirt return temp"
; V26 tmp22 [V26,T12] ( 5, 2.50) ref -> rcx single-def "guarded devirt arg temp"
;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V28 tmp24 [V28,T36] ( 3, 0.75) ref -> rax "guarded devirt return temp"
-; V29 tmp25 [V29,T16] ( 5, 2.25) ref -> rcx single-def "guarded devirt arg temp"
+; V28 tmp24 [V28,T35] ( 3, 0.75) ref -> rax "guarded devirt return temp"
+; V29 tmp25 [V29,T15] ( 5, 2.25) ref -> rcx single-def "guarded devirt arg temp"
;* V30 tmp26 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V31 tmp27 [V31,T34] ( 3, 0.78) ref -> rsi "guarded devirt return temp"
-; V32 tmp28 [V32,T14] ( 5, 2.34) ref -> rcx single-def "guarded devirt arg temp"
+; V31 tmp27 [V31,T33] ( 3, 0.78) ref -> rsi "guarded devirt return temp"
+; V32 tmp28 [V32,T13] ( 5, 2.34) ref -> rcx single-def "guarded devirt arg temp"
;* V33 tmp29 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V34 tmp30 [V34,T15] ( 5, 2.34) ref -> rcx class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V35 tmp31 [V35,T35] ( 3, 0.78) ref -> rsi "guarded devirt return temp"
+; V34 tmp30 [V34,T14] ( 5, 2.34) ref -> rcx class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+; V35 tmp31 [V35,T34] ( 3, 0.78) ref -> rsi "guarded devirt return temp"
;* V36 tmp32 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
;* V37 tmp33 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaType>
; V38 tmp34 [V38,T05] ( 4, 5.57) ref -> rcx class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
@@ -52,41 +52,40 @@
;* V40 tmp36 [V40 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V41 tmp37 [V41,T04] ( 4, 4.34) ref -> rsi class-hnd exact single-def "impAppendStmt" <<unknown class>>
; V42 tmp38 [V42,T11] ( 2, 2.78) int -> rbx "impAppendStmt"
-; V43 tmp39 [V43,T23] ( 4, 1.39) ref -> rcx "guarded devirt return temp"
+; V43 tmp39 [V43,T22] ( 4, 1.39) ref -> rcx "guarded devirt return temp"
;* V44 tmp40 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V45 tmp41 [V45,T46] ( 2, 0.00) byref -> r12 single-def "impAppendStmt"
-; V46 tmp42 [V46,T47] ( 3, 0.00) int -> rax "guarded devirt return temp"
-; V47 tmp43 [V47,T45] ( 5, 0.00) ref -> rcx single-def "guarded devirt arg temp"
+; V45 tmp41 [V45,T45] ( 2, 0.00) byref -> r12 single-def "impAppendStmt"
+; V46 tmp42 [V46,T46] ( 3, 0.00) int -> rax "guarded devirt return temp"
+; V47 tmp43 [V47,T44] ( 5, 0.00) ref -> rcx single-def "guarded devirt arg temp"
;* V48 tmp44 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
;* V49 tmp45 [V49 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V50 tmp46 [V50,T24] ( 3, 1.39) ref -> rax class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V50 tmp46 [V50,T23] ( 3, 1.39) ref -> rax class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
;* V51 tmp47 [V51 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V52 tmp48 [V52 ] ( 2, 1.31) ref -> [rsp+0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V53 tmp49 [V53,T29] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V54 tmp50 [V54,T20] ( 4, 1.93) ref -> rax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V55 tmp51 [V55,T38] ( 3, 0.61) int -> rcx
-; V56 tmp52 [V56,T37] ( 3, 0.73) ref -> r12 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V53 tmp49 [V53,T28] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V54 tmp50 [V54,T19] ( 3, 1.82) ref -> rax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V55 tmp51 [V55,T37] ( 3, 0.61) int -> rcx
+; V56 tmp52 [V56,T36] ( 3, 0.73) ref -> r12 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V57 tmp53 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V58 tmp54 [V58,T41] ( 3, 0.36) ref -> rax "guarded devirt return temp"
+; V58 tmp54 [V58,T40] ( 3, 0.36) ref -> rax "guarded devirt return temp"
;* V59 tmp55 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V60 tmp56 [V60,T42] ( 3, 0.36) ref -> r12 "guarded devirt return temp"
-; V61 tmp57 [V61,T30] ( 5, 1.09) ref -> rcx single-def "guarded devirt arg temp"
+; V60 tmp56 [V60,T41] ( 3, 0.36) ref -> r12 "guarded devirt return temp"
+; V61 tmp57 [V61,T29] ( 5, 1.09) ref -> rcx single-def "guarded devirt arg temp"
;* V62 tmp58 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V63 tmp59 [V63,T43] ( 3, 0.33) ref -> rax "guarded devirt return temp"
-; V64 tmp60 [V64,T31] ( 5, 0.98) ref -> rcx single-def "guarded devirt arg temp"
+; V63 tmp59 [V63,T42] ( 3, 0.33) ref -> rax "guarded devirt return temp"
+; V64 tmp60 [V64,T30] ( 5, 0.98) ref -> rcx single-def "guarded devirt arg temp"
;* V65 tmp61 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V66 tmp62 [V66,T17] ( 6, 2.17) ref -> rdi single-def "field V40._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V66 tmp62 [V66,T16] ( 6, 2.17) ref -> rdi single-def "field V40._typicalMethodDef (fldOffset=0x0)" P-INDEP
; V67 tmp63 [V67,T10] ( 8, 2.87) ref -> rbp single-def "field V40._instantiatedType (fldOffset=0x8)" P-INDEP
-; V68 tmp64 [V68,T22] ( 3, 1.47) int -> rbx single-def "field V40._hashcode (fldOffset=0x10)" P-INDEP
+; V68 tmp64 [V68,T21] ( 3, 1.47) int -> rbx single-def "field V40._hashcode (fldOffset=0x10)" P-INDEP
;* V69 tmp65 [V69 ] ( 0, 0 ) ref -> zero-ref single-def "field V51._typicalMethodDef (fldOffset=0x0)" P-INDEP
;* V70 tmp66 [V70 ] ( 0, 0 ) ref -> zero-ref single-def "field V51._instantiatedType (fldOffset=0x8)" P-INDEP
;* V71 tmp67 [V71 ] ( 0, 0 ) int -> zero-ref single-def "field V51._hashcode (fldOffset=0x10)" P-INDEP
; V72 tmp68 [V72 ] ( 8, 6.22) struct (24) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
-;* V73 tmp69 [V73,T26] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V74 tmp70 [V74,T44] ( 2, 0.33) ref -> rcx single-def "argument with side effect"
-; V75 cse0 [V75,T19] ( 3, 2.09) ref -> rcx "CSE - moderate"
+;* V73 tmp69 [V73,T25] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V74 tmp70 [V74,T43] ( 2, 0.33) ref -> rcx single-def "argument with side effect"
+; V75 cse0 [V75,T18] ( 3, 2.09) ref -> rcx "CSE - moderate"
; V76 cse1 [V76,T08] ( 10, 4.09) long -> r15 multi-def "CSE - aggressive"
-; V77 rat0 [V77,T13] ( 6, 2.43) ref -> rdx class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
;
; Lcl frame size = 72
@@ -147,7 +146,7 @@ G_M10698_IG07: ; bbWeight=0.70, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0
mov r15, qword ptr [rdi]
mov rcx, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaMethod
cmp r15, rcx
- jne G_M10698_IG55
+ jne G_M10698_IG47
mov r13, gword ptr [rdi+0x10]
; gcrRegs +[r13]
;; size=30 bbWeight=0.70 PerfScore 5.22
@@ -162,12 +161,12 @@ G_M10698_IG09: ; bbWeight=0.65, gcrefRegs=60A8 {rbx rbp rdi r13 r14}, byr
G_M10698_IG10: ; bbWeight=0.42, gcrefRegs=60A8 {rbx rbp rdi r13 r14}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
cmp qword ptr [r14], rcx
- jne G_M10698_IG57
+ jne G_M10698_IG49
mov rcx, gword ptr [r14+0x58]
; gcrRegs +[rcx]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rcx], rax
- jne G_M10698_IG56
+ jne G_M10698_IG48
mov r12, gword ptr [rcx+0x08]
; gcrRegs +[r12]
jmp G_M10698_IG27
@@ -236,13 +235,13 @@ G_M10698_IG14: ; bbWeight=0.70, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0
mov ebx, dword ptr [rbp+0x68]
mov rcx, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaMethod
cmp r15, rcx
- jne G_M10698_IG62
+ jne G_M10698_IG54
;; size=22 bbWeight=0.70 PerfScore 2.44
G_M10698_IG15: ; bbWeight=0.70, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rdi+0x20]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M10698_IG61
+ je G_M10698_IG53
;; size=13 bbWeight=0.70 PerfScore 2.26
G_M10698_IG16: ; bbWeight=0.70, gcrefRegs=00E2 {rcx rbp rsi rdi}, byrefRegs=0000 {}, byref
call [Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int]
@@ -338,12 +337,12 @@ G_M10698_IG25: ; bbWeight=0.39, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0
; gcrRegs +[rcx]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaMethod
cmp qword ptr [rcx], rax
- jne G_M10698_IG60
+ jne G_M10698_IG52
mov rcx, gword ptr [rcx+0x10]
mov rcx, gword ptr [rcx+0x58]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rcx], rax
- jne G_M10698_IG59
+ jne G_M10698_IG51
mov rsi, gword ptr [rcx+0x08]
; gcrRegs +[rsi]
;; size=54 bbWeight=0.39 PerfScore 6.43
@@ -362,7 +361,7 @@ G_M10698_IG28: ; bbWeight=0.38, gcrefRegs=70A8 {rbx rbp rdi r12 r13 r14},
; gcrRegs +[rcx]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rcx], rax
- jne G_M10698_IG58
+ jne G_M10698_IG50
mov rax, gword ptr [rcx+0x08]
; gcrRegs +[rax]
;; size=27 bbWeight=0.38 PerfScore 3.10
@@ -407,7 +406,7 @@ G_M10698_IG33: ; bbWeight=0.08, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0
; gcr arg pop 0
jmp G_M10698_IG18
;; size=33 bbWeight=0.08 PerfScore 0.71
-G_M10698_IG34: ; bbWeight=0.30, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M10698_IG34: ; bbWeight=0.30, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] +[rbx rsi]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -419,133 +418,75 @@ G_M10698_IG34: ; bbWeight=0.30, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
cmp byte ptr [rax], al
mov rdx, rax
; gcrRegs +[rdx]
- test rdx, rdx
- je SHORT G_M10698_IG42
- ;; size=23 bbWeight=0.30 PerfScore 3.57
-G_M10698_IG35: ; bbWeight=0.15, gcrefRegs=004D {rax rdx rbx rsi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M10698_IG39
- ;; size=2 bbWeight=0.15 PerfScore 0.30
-G_M10698_IG36: ; bbWeight=0.30, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax rdx rbx] +[rdi]
- mov r15, qword ptr [rdi]
- mov rcx, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaMethod
- cmp r15, rcx
- jne SHORT G_M10698_IG45
- mov rbp, gword ptr [rdi+0x10]
- ; gcrRegs +[rbp]
- ;; size=22 bbWeight=0.30 PerfScore 1.67
-G_M10698_IG37: ; bbWeight=0.30, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref
- test rbp, rbp
- je G_M10698_IG53
- ;; size=9 bbWeight=0.30 PerfScore 0.38
-G_M10698_IG38: ; bbWeight=0.18, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M10698_IG46
- ;; size=2 bbWeight=0.18 PerfScore 0.36
-G_M10698_IG39: ; bbWeight=0.15, gcrefRegs=004D {rax rdx rbx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbp rdi] +[rax rdx rbx]
- mov rcx, 0xD1FFAB1E ; Internal.TypeSystem.MethodForInstantiatedType
- cmp qword ptr [rdx], rcx
- je SHORT G_M10698_IG41
- ;; size=15 bbWeight=0.15 PerfScore 0.65
-G_M10698_IG40: ; bbWeight=0.05, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdx]
- mov rdx, rax
- ; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; Internal.TypeSystem.ArrayType
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[rdx]
; gcr arg pop 0
- mov rdx, rax
- ; gcrRegs +[rdx]
- jmp SHORT G_M10698_IG42
- ;; size=23 bbWeight=0.05 PerfScore 0.20
-G_M10698_IG41: ; bbWeight=0.10, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rdx]
- xor rdx, rdx
- ; gcrRegs +[rdx]
- ;; size=2 bbWeight=0.10 PerfScore 0.02
-G_M10698_IG42: ; bbWeight=0.30, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
xor ecx, ecx
- test rdx, rdx
+ test rax, rax
setne cl
call [<unknown method>]
- ; gcrRegs -[rdx]
+ ; gcrRegs -[rax]
; gcr arg pop 0
mov rcx, rsi
; gcrRegs +[rcx]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.ArrayMethod
cmp qword ptr [rbx], rax
- jne G_M10698_IG63
...
libraries_tests.run.windows.x64.Release.mch
-4 (-0.76%) : 168536.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 this [V00,T01] ( 20, 7.76) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]>
-; V01 arg1 [V01,T03] ( 10, 3.31) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundNode>
+; V01 arg1 [V01,T03] ( 10, 3.28) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundNode>
; V02 loc0 [V02,T04] ( 9, 3.77) ref -> rdi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
@@ -35,7 +35,7 @@
;* V23 tmp20 [V23 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
;* V24 tmp21 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.BoundBlock>
;* V25 tmp22 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1>
-; V26 rat0 [V26,T02] ( 5, 7.36) ref -> rdi class-hnd "replacement local" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V26 rat0 [V26,T02] ( 5, 7.30) ref -> rdi class-hnd "replacement local" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;
; Lcl frame size = 32
@@ -55,41 +55,29 @@ G_M16580_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
mov rdi, rsi
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M16580_IG05
+ je SHORT G_M16580_IG04
;; size=8 bbWeight=1 PerfScore 1.50
G_M16580_IG03: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundAttribute
cmp qword ptr [rdi], rdx
- je SHORT G_M16580_IG05
+ jne SHORT G_M16580_IG08
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M16580_IG04: ; bbWeight=0.18, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- mov rdx, rsi
- ; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundExpression
- call CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[rdx] +[rax]
- ; gcr arg pop 0
- mov rdi, rax
- ; gcrRegs +[rdi]
- ;; size=21 bbWeight=0.18 PerfScore 0.32
-G_M16580_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+G_M16580_IG04: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
test rdi, rdi
- je G_M16580_IG22
+ je G_M16580_IG23
;; size=9 bbWeight=1 PerfScore 1.25
-G_M16580_IG06: ; bbWeight=0.96, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M16580_IG05: ; bbWeight=0.96, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
lea rbp, bword ptr [rbx+0x68]
; byrRegs +[rbp]
inc dword ptr [rbp]
cmp dword ptr [rbp], 1
- jg SHORT G_M16580_IG08
+ jg SHORT G_M16580_IG12
;; size=13 bbWeight=0.96 PerfScore 7.19
-G_M16580_IG07: ; bbWeight=0.56, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref
+G_M16580_IG06: ; bbWeight=0.56, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.NullableWalker
cmp qword ptr [rbx], rcx
- je G_M16580_IG18
+ je SHORT G_M16580_IG09
mov rcx, rbx
; gcrRegs +[rcx]
mov rax, qword ptr [rbx]
@@ -98,19 +86,59 @@ G_M16580_IG07: ; bbWeight=0.56, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jne G_M16580_IG18
- ;; size=40 bbWeight=0.56 PerfScore 7.10
-G_M16580_IG08: ; bbWeight=0.40, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
+ jne SHORT G_M16580_IG09
+ ;; size=32 bbWeight=0.56 PerfScore 7.10
+G_M16580_IG07: ; bbWeight=0.40, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
+ jmp SHORT G_M16580_IG12
+ ;; size=2 bbWeight=0.40 PerfScore 0.80
+G_M16580_IG08: ; bbWeight=0.15, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi] +[rsi]
+ ; byrRegs -[rbp]
+ mov rdx, rsi
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundExpression
+ call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ jmp SHORT G_M16580_IG04
+ ;; size=23 bbWeight=0.15 PerfScore 0.56
+G_M16580_IG09: ; bbWeight=0.56, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref
+ ; gcrRegs -[rax rsi]
+ ; byrRegs +[rbp]
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx rbx rdi] +[rax]
+ ; gcr arg pop 0
+ ;; size=12 bbWeight=0.56 PerfScore 1.95
+G_M16580_IG10: ; bbWeight=0.96, gcrefRegs=0001 {rax}, byrefRegs=0020 {rbp}, byref
+ dec dword ptr [rbp]
+ ;; size=3 bbWeight=0.96 PerfScore 2.88
+G_M16580_IG11: ; bbWeight=0.96, epilog, nogc, extend
+ add rsp, 32
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ ret
+ ;; size=11 bbWeight=0.96 PerfScore 3.60
+G_M16580_IG12: ; bbWeight=0.40, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, gcvars, byref, isz
+ ; gcrRegs -[rax] +[rbx rdi]
mov r14d, dword ptr [rbp]
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.NullableWalker
cmp qword ptr [rbx], rcx
- jne SHORT G_M16580_IG17
+ jne SHORT G_M16580_IG21
;; size=19 bbWeight=0.40 PerfScore 2.51
-G_M16580_IG09: ; bbWeight=0.28, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref
+G_M16580_IG13: ; bbWeight=0.28, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref
cmp r14d, 20
- jg G_M16580_IG33
+ jg G_M16580_IG34
;; size=10 bbWeight=0.28 PerfScore 0.35
-G_M16580_IG10: ; bbWeight=0.25, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
+G_M16580_IG14: ; bbWeight=0.25, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
mov rsi, rbx
; gcrRegs +[rsi]
mov rcx, rsi
@@ -120,9 +148,9 @@ G_M16580_IG10: ; bbWeight=0.25, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020
; gcr arg pop 0
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundBlock
cmp qword ptr [rdi], rcx
- jne SHORT G_M16580_IG21
+ jne SHORT G_M16580_IG22
;; size=27 bbWeight=0.25 PerfScore 1.90
-G_M16580_IG11: ; bbWeight=0.13, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref
+G_M16580_IG15: ; bbWeight=0.13, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref
mov rcx, rsi
; gcrRegs +[rcx]
mov rdx, rdi
@@ -133,22 +161,22 @@ G_M16580_IG11: ; bbWeight=0.13, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
mov rdx, rax
; gcrRegs +[rdx]
;; size=15 bbWeight=0.13 PerfScore 0.49
-G_M16580_IG12: ; bbWeight=0.25, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
+G_M16580_IG16: ; bbWeight=0.25, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
; gcrRegs -[rax]
test rdx, rdx
- je SHORT G_M16580_IG15
+ je SHORT G_M16580_IG19
;; size=5 bbWeight=0.25 PerfScore 0.31
-G_M16580_IG13: ; bbWeight=0.12, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
+G_M16580_IG17: ; bbWeight=0.12, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundExpression
cmp qword ptr [rdx], rcx
- je SHORT G_M16580_IG15
+ je SHORT G_M16580_IG19
;; size=15 bbWeight=0.12 PerfScore 0.52
-G_M16580_IG14: ; bbWeight=0.06, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0020 {rbp}, byref
+G_M16580_IG18: ; bbWeight=0.06, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0020 {rbp}, byref
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
;; size=5 bbWeight=0.06 PerfScore 0.06
-G_M16580_IG15: ; bbWeight=0.25, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref
+G_M16580_IG19: ; bbWeight=0.25, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref
; gcrRegs -[rax]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -160,10 +188,10 @@ G_M16580_IG15: ; bbWeight=0.25, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020
xor rax, rax
; gcrRegs +[rax]
;; size=14 bbWeight=0.25 PerfScore 0.92
-G_M16580_IG16: ; bbWeight=0.40, gcrefRegs=0001 {rax}, byrefRegs=0020 {rbp}, byref, isz
- jmp SHORT G_M16580_IG19
+G_M16580_IG20: ; bbWeight=0.40, gcrefRegs=0001 {rax}, byrefRegs=0020 {rbp}, byref, isz
+ jmp SHORT G_M16580_IG10
;; size=2 bbWeight=0.40 PerfScore 0.80
-G_M16580_IG17: ; bbWeight=0.40, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
+G_M16580_IG21: ; bbWeight=0.40, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
; gcrRegs -[rax] +[rbx rdi]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -182,31 +210,9 @@ G_M16580_IG17: ; bbWeight=0.40, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020
call [rax]<unknown method>
; gcrRegs -[rcx rdx rbx rdi] +[rax]
; gcr arg pop 0
- jmp SHORT G_M16580_IG16
+ jmp SHORT G_M16580_IG20
;; size=33 bbWeight=0.40 PerfScore 6.84
-G_M16580_IG18: ; bbWeight=0.56, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref
- ; gcrRegs -[rax] +[rbx rdi]
- mov rcx, rbx
- ; gcrRegs +[rcx]
- mov rdx, rdi
- ; gcrRegs +[rdx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx rbx rdi] +[rax]
- ; gcr arg pop 0
- ;; size=12 bbWeight=0.56 PerfScore 1.95
-G_M16580_IG19: ; bbWeight=0.96, gcrefRegs=0001 {rax}, byrefRegs=0020 {rbp}, byref
- dec dword ptr [rbp]
- ;; size=3 bbWeight=0.96 PerfScore 2.88
-G_M16580_IG20: ; bbWeight=0.96, epilog, nogc, extend
- add rsp, 32
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- ret
- ;; size=11 bbWeight=0.96 PerfScore 3.60
-G_M16580_IG21: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, gcvars, byref, isz
+G_M16580_IG22: ; bbWeight=0.09, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref, isz
; gcrRegs -[rax] +[rbx rsi rdi]
mov rcx, rdi
; gcrRegs +[rcx]
@@ -219,31 +225,31 @@ G_M16580_IG21: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=00C
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- jmp SHORT G_M16580_IG12
+ jmp SHORT G_M16580_IG16
;; size=21 bbWeight=0.09 PerfScore 0.92
-G_M16580_IG22: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M16580_IG23: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rdx rdi] +[rsi]
; byrRegs -[rbp]
test rsi, rsi
- je SHORT G_M16580_IG31
+ je SHORT G_M16580_IG32
;; size=5 bbWeight=0.04 PerfScore 0.05
-G_M16580_IG23: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M16580_IG24: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundBlock
cmp qword ptr [rsi], rcx
- jne SHORT G_M16580_IG29
+ jne SHORT G_M16580_IG30
;; size=15 bbWeight=0.04 PerfScore 0.16
-G_M16580_IG24: ; bbWeight=0.02, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M16580_IG25: ; bbWeight=0.02, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1
cmp qword ptr [rbx], rcx
...
-7 (-0.47%) : 621014.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:
@@ -15,7 +15,7 @@
; V03 loc1 [V03,T29] ( 3, 1 ) ubyte -> r15
;* V04 loc2 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbol]>
;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]>
-; V06 loc4 [V06,T01] ( 13, 24.01) ref -> rbp class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V06 loc4 [V06,T01] ( 13, 23.88) ref -> rdi class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
; V07 loc5 [V07,T10] ( 10, 8.83) ref -> [rsp+0x30] class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol>
; V08 loc6 [V08,T16] ( 2, 0.07) ref -> [rsp+0x28] ld-addr-op class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
; V09 loc7 [V09,T53] ( 4, 0 ) ref -> rax class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
@@ -51,7 +51,7 @@
; V39 tmp29 [V39,T34] ( 3, 0.04) byref -> rcx single-def "Inlining Arg"
; V40 tmp30 [V40,T38] ( 2, 0.03) ref -> r8 class-hnd exact single-def "Inlining Arg" <<unknown class>>
; V41 tmp31 [V41,T43] ( 2, 0.01) ubyte -> rax "Inline stloc first use temp"
-; V42 tmp32 [V42,T37] ( 4, 0.03) ref -> r14 class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag>
+; V42 tmp32 [V42,T37] ( 4, 0.03) ref -> r15 class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag>
; V43 tmp33 [V43,T47] ( 2, 0.01) ref -> rdx class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
; V44 tmp34 [V44,T41] ( 5, 0.02) ref -> rcx class-hnd single-def "spilling ret_expr" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
; V45 tmp35 [V45,T49] ( 3, 0.01) ubyte -> rax single-def "Inline stloc first use temp"
@@ -84,7 +84,7 @@
;* V72 tmp62 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
; V73 tmp63 [V73,T11] ( 3, 8.81) byref -> rax "Inline stloc first use temp"
;* V74 tmp64 [V74 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V75 tmp65 [V75,T05] ( 6, 12.79) ref -> rax class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
+; V75 tmp65 [V75,T05] ( 6, 12.79) ref -> rcx class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
; V76 tmp66 [V76,T13] ( 4, 6.71) ref -> rcx class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol>
;* V77 tmp67 [V77,T18] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
; V78 tmp68 [V78,T25] ( 2, 2.03) int -> rax "guarded devirt return temp"
@@ -93,10 +93,10 @@
;* V81 tmp71 [V81 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2[System.String,Microsoft.CodeAnalysis.CSharp.Symbol]>
; V82 tmp72 [V82,T57] ( 2, 0 ) ref -> [rsp+0x20] class-hnd exact spill-single-def "Inlining Arg" <System.String>
; V83 tmp73 [V83,T56] ( 3, 0 ) ref -> rax class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
-; V84 tmp74 [V84,T02] ( 5, 18.48) int -> rax "Inline stloc first use temp"
+; V84 tmp74 [V84,T02] ( 5, 18.48) int -> rbx "Inline stloc first use temp"
; V85 tmp75 [V85,T09] ( 4, 9.74) ref -> r14 single-def "field V02._dictionary (fldOffset=0x0)" P-INDEP
; V86 tmp76 [V86,T14] ( 2, 5.37) ref -> r12 single-def "field V04._array (fldOffset=0x0)" P-INDEP
-; V87 tmp77 [V87,T04] ( 4, 14.11) int -> rdi "field V04._index (fldOffset=0x8)" P-INDEP
+; V87 tmp77 [V87,T04] ( 4, 14.11) int -> rbp "field V04._index (fldOffset=0x8)" P-INDEP
;* V88 tmp78 [V88 ] ( 0, 0 ) ref -> zero-ref "field V05.array (fldOffset=0x0)" P-INDEP
; V89 tmp79 [V89,T27] ( 3, 2 ) ref -> r14 single-def "field V16._dictionary (fldOffset=0x0)" P-INDEP
; V90 tmp80 [V90,T23] ( 4, 3 ) ref -> rdx single-def "field V24.array (fldOffset=0x0)" P-INDEP
@@ -146,11 +146,11 @@ G_M20484_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi},
mov rdi, qword ptr [rbx]
mov rbp, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol
cmp rdi, rbp
- jne G_M20484_IG38
+ jne G_M20484_IG55
mov rcx, gword ptr [rbx+0xE0]
mov rax, 0xD1FFAB1E ; const ptr
cmp rcx, gword ptr [rax]
- je G_M20484_IG26
+ je G_M20484_IG40
;; size=53 bbWeight=1 PerfScore 11.00
G_M20484_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rcx]
@@ -164,16 +164,16 @@ G_M20484_IG04: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0040 {rs
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jne G_M20484_IG58
+ jne G_M20484_IG59
;; size=19 bbWeight=1 PerfScore 5.50
G_M20484_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
cmp rdi, rbp
- jne G_M20484_IG63
+ jne G_M20484_IG57
mov rcx, gword ptr [rbx+0xE0]
; gcrRegs +[rcx]
mov rax, 0xD1FFAB1E ; const ptr
cmp rcx, gword ptr [rax]
- je G_M20484_IG21
+ je G_M20484_IG37
;; size=35 bbWeight=1 PerfScore 7.50
G_M20484_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rcx]
@@ -182,7 +182,7 @@ G_M20484_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi},
;; size=7 bbWeight=1 PerfScore 2.00
G_M20484_IG07: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0040 {rsi}, byref
test rcx, rcx
- je G_M20484_IG18
+ je G_M20484_IG35
;; size=9 bbWeight=1 PerfScore 1.25
G_M20484_IG08: ; bbWeight=1.00, gcrefRegs=000A {rcx rbx}, byrefRegs=0040 {rsi}, byref
call [<unknown method>]
@@ -191,10 +191,10 @@ G_M20484_IG08: ; bbWeight=1.00, gcrefRegs=000A {rcx rbx}, byrefRegs=0040
mov r14, rax
; gcrRegs +[r14]
;; size=9 bbWeight=1.00 PerfScore 3.25
-G_M20484_IG09: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, byref, isz
+G_M20484_IG09: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rax]
cmp rdi, rbp
- jne G_M20484_IG64
+ jne G_M20484_IG58
mov rcx, rbx
; gcrRegs +[rcx]
call [Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:get_HasDeclaredRequiredMembers():ubyte:this]
@@ -204,38 +204,150 @@ G_M20484_IG09: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rs
mov rdx, gword ptr [rbx+0xA8]
; gcrRegs +[rdx]
test rdx, rdx
- je SHORT G_M20484_IG14
- ;; size=33 bbWeight=1 PerfScore 8.00
+ je G_M20484_IG27
+ ;; size=37 bbWeight=1 PerfScore 8.00
G_M20484_IG10: ; bbWeight=1, gcrefRegs=4004 {rdx r14}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rbx]
mov r13d, dword ptr [rdx+0x08]
mov r12, rdx
; gcrRegs +[r12]
- xor eax, eax
- xor edi, edi
+ xor ebx, ebx
+ xor ebp, ebp
test r13d, r13d
- jle G_M20484_IG44
+ jle G_M20484_IG21
;; size=20 bbWeight=1 PerfScore 4.00
G_M20484_IG11: ; bbWeight=4.37, gcrefRegs=5000 {r12 r14}, byrefRegs=0040 {rsi}, byref, isz
; gcrRegs -[rdx]
- cmp eax, r13d
- jae G_M20484_IG60
- mov edx, eax
- mov rbp, gword ptr [r12+8*rdx+0x10]
- ; gcrRegs +[rbp]
- mov rbx, rbp
+ cmp ebx, r13d
+ jae G_M20484_IG48
+ mov ecx, ebx
+ mov rdi, gword ptr [r12+8*rcx+0x10]
+ ; gcrRegs +[rdi]
+ mov rbx, rdi
; gcrRegs +[rbx]
test rbx, rbx
- je SHORT G_M20484_IG16
+ je SHORT G_M20484_IG14
;; size=24 bbWeight=4.37 PerfScore 21.85
-G_M20484_IG12: ; bbWeight=2.19, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0040 {rsi}, byref, isz
- mov rdx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberFieldSymbolFromDeclarator
- cmp qword ptr [rbx], rdx
- je SHORT G_M20484_IG15
- ;; size=15 bbWeight=2.19 PerfScore 9.29
-G_M20484_IG13: ; bbWeight=0.85, gcrefRegs=5020 {rbp r12 r14}, byrefRegs=0040 {rsi}, byref, isz
+G_M20484_IG12: ; bbWeight=2.19, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRegs=0040 {rsi}, byref
+ mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberFieldSymbolFromDeclarator
+ cmp qword ptr [rbx], rcx
+ jne G_M20484_IG26
+ ;; size=19 bbWeight=2.19 PerfScore 9.29
+G_M20484_IG13: ; bbWeight=1.46, gcrefRegs=5080 {rdi r12 r14}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rbx]
- mov rdx, rbp
+ xor rbx, rbx
+ ; gcrRegs +[rbx]
+ ;; size=2 bbWeight=1.46 PerfScore 0.37
+G_M20484_IG14: ; bbWeight=4.37, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRegs=0040 {rsi}, byref
+ mov rax, rbx
+ ; gcrRegs +[rax]
+ mov gword ptr [rsp+0x30], rax
+ ; GC ptr vars +{V07}
+ test rax, rax
+ jne G_M20484_IG29
+ ;; size=17 bbWeight=4.37 PerfScore 10.93
+G_M20484_IG15: ; bbWeight=4.37, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRegs=0040 {rsi}, byref, isz
+ ; gcrRegs -[rax]
+ ; GC ptr vars -{V07}
+ mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberFieldSymbolFromDeclarator
+ cmp qword ptr [rdi], rcx
+ jne SHORT G_M20484_IG23
+ ;; size=15 bbWeight=4.37 PerfScore 18.57
+G_M20484_IG16: ; bbWeight=3.06, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRegs=0040 {rsi}, byref
+ mov rdx, gword ptr [rdi+0x28]
+ ; gcrRegs +[rdx]
+ ;; size=4 bbWeight=3.06 PerfScore 6.12
+G_M20484_IG17: ; bbWeight=4.37, gcrefRegs=508C {rdx rbx rdi r12 r14}, byrefRegs=0040 {rsi}, byref
+ cmp byte ptr [r14], r14b
+ mov rcx, r14
+ ; gcrRegs +[rcx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx]
+ ; byrRegs +[rax]
+ ; gcr arg pop 0
+ mov rdx, rax
+ test rdx, rdx
+ jne G_M20484_IG28
+ ;; size=24 bbWeight=4.37 PerfScore 33.87
+G_M20484_IG18: ; bbWeight=4.37, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRegs=0040 {rsi}, byref, isz
+ ; byrRegs -[rax]
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol
+ call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ test rcx, rcx
+ jne SHORT G_M20484_IG24
+ ;; size=26 bbWeight=4.37 PerfScore 13.11
+G_M20484_IG19: ; bbWeight=3.36, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRegs=0040 {rsi}, byref
+ ; gcrRegs -[rax rcx]
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ test rcx, rcx
+ jne G_M20484_IG49
+ ;; size=12 bbWeight=3.36 PerfScore 5.03
+G_M20484_IG20: ; bbWeight=4.37, gcrefRegs=5000 {r12 r14}, byrefRegs=0040 {rsi}, byref
+ ; gcrRegs -[rcx rbx rdi]
+ lea ebx, [rbp+0x01]
+ mov ebp, ebx
+ cmp r13d, ebp
+ jg G_M20484_IG11
+ ;; size=14 bbWeight=4.37 PerfScore 8.74
+G_M20484_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r12 r14]
+ ; byrRegs -[rsi]
+ mov eax, 1
+ ;; size=5 bbWeight=1 PerfScore 0.25
+G_M20484_IG22: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 56
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ ret
+ ;; size=17 bbWeight=1 PerfScore 5.25
+G_M20484_IG23: ; bbWeight=1.31, gcVars=0000000000000000 {}, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRegs=0040 {rsi}, gcvars, byref, isz
+ ; gcrRegs +[rbx rdi r12 r14]
+ ; byrRegs +[rsi]
+ mov rcx, rdi
+ ; gcrRegs +[rcx]
+ mov rax, qword ptr [rdi]
+ mov rax, qword ptr [rax+0x50]
+ call [rax+0x28]<unknown method>
+ ; gcrRegs -[rcx] +[rax]
+ ; gcr arg pop 0
+ mov rdx, rax
+ ; gcrRegs +[rdx]
+ jmp SHORT G_M20484_IG17
+ ;; size=18 bbWeight=1.31 PerfScore 12.45
+G_M20484_IG24: ; bbWeight=1.01, gcrefRegs=5082 {rcx rdi r12 r14}, byrefRegs=0040 {rsi}, byref, isz
+ ; gcrRegs -[rax rdx rbx] +[rcx]
+ mov rax, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberFieldSymbolFromDeclarator
+ cmp qword ptr [rcx], rax
+ jne SHORT G_M20484_IG25
+ test dword ptr [rcx+0x60], 0xD1FFAB1E
+ jne G_M20484_IG51
+ jmp SHORT G_M20484_IG20
...
+0 (0.00%) : 267653.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsNonStringEnumerable(System.Object):System.Collections.IEnumerable (Tier1)
@@ -8,37 +8,55 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 3086
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 6, 4.92) ref -> rcx class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 6, 4.88) ref -> rcx class-hnd single-def <System.Object>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02,T02] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V03 rat0 [V03,T01] ( 6, 6.24) ref -> rax class-hnd "replacement local" <System.Collections.IEnumerable>
;
; Lcl frame size = 40
-G_M8290_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M8290_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 40
;; size=4 bbWeight=1 PerfScore 0.25
G_M8290_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
test rcx, rcx
- je SHORT G_M8290_IG08
+ je SHORT G_M8290_IG07
mov rdx, 0xD1FFAB1E ; <unknown class>
cmp qword ptr [rcx], rdx
- je SHORT G_M8290_IG08
+ je SHORT G_M8290_IG07
;; size=20 bbWeight=1 PerfScore 5.50
G_M8290_IG03: ; bbWeight=0.78, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov rax, rcx
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M8290_IG07
+ je SHORT G_M8290_IG06
;; size=8 bbWeight=0.78 PerfScore 1.17
G_M8290_IG04: ; bbWeight=0.39, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; System.Int32
cmp qword ptr [rax], rdx
- je SHORT G_M8290_IG06
+ jne SHORT G_M8290_IG09
;; size=15 bbWeight=0.39 PerfScore 1.66
-G_M8290_IG05: ; bbWeight=0.14, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M8290_IG05: ; bbWeight=0.28, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rcx]
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=2 bbWeight=0.28 PerfScore 0.07
+G_M8290_IG06: ; bbWeight=0.78, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+ add rsp, 40
+ ret
+ ;; size=5 bbWeight=0.78 PerfScore 0.97
+G_M8290_IG07: ; bbWeight=0.22, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=2 bbWeight=0.22 PerfScore 0.06
+G_M8290_IG08: ; bbWeight=0.22, epilog, nogc, extend
+ add rsp, 40
+ ret
+ ;; size=5 bbWeight=0.22 PerfScore 0.28
+G_M8290_IG09: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax] +[rcx]
mov rdx, rcx
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; System.Collections.IEnumerable
@@ -46,28 +64,10 @@ G_M8290_IG05: ; bbWeight=0.14, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, b
call CORINFO_HELP_ISINSTANCEOFINTERFACE
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
- jmp SHORT G_M8290_IG07
- ;; size=20 bbWeight=0.14 PerfScore 0.49
-G_M8290_IG06: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=2 bbWeight=0.25 PerfScore 0.06
-G_M8290_IG07: ; bbWeight=0.78, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- add rsp, 40
- ret
- ;; size=5 bbWeight=0.78 PerfScore 0.97
-G_M8290_IG08: ; bbWeight=0.22, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax]
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=2 bbWeight=0.22 PerfScore 0.06
-G_M8290_IG09: ; bbWeight=0.22, epilog, nogc, extend
- add rsp, 40
- ret
- ;; size=5 bbWeight=0.22 PerfScore 0.28
+ jmp SHORT G_M8290_IG06
+ ;; size=20 bbWeight=0.11 PerfScore 0.37
-; Total bytes of code 81, prolog size 4, PerfScore 10.43, instruction count 22, allocated bytes for code 81 (MethodHash=a242df9d) for method Xunit.Sdk.CollectionTrackerExtensions:AsNonStringEnumerable(System.Object):System.Collections.IEnumerable (Tier1)
+; Total bytes of code 81, prolog size 4, PerfScore 10.32, instruction count 22, allocated bytes for code 81 (MethodHash=a242df9d) for method Xunit.Sdk.CollectionTrackerExtensions:AsNonStringEnumerable(System.Object):System.Collections.IEnumerable (Tier1)
; ============================================================
Unwind Info:
+4 (+1.72%) : 364035.dasm - System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo:GetSingleParsedValue():System.Object:this (Tier1)
@@ -27,7 +27,7 @@
;* V15 tmp10 [V15,T10] ( 0, 0 ) ref -> zero-ref single-def "field V09._current (fldOffset=0x8)" P-INDEP
;* V16 tmp11 [V16,T11] ( 0, 0 ) int -> zero-ref single-def "field V09._index (fldOffset=0x10)" P-INDEP
; V17 tmp12 [V17,T09] ( 2, 0.03) int -> rcx single-def "field V09._version (fldOffset=0x14)" P-INDEP
-; V18 cse0 [V18,T03] ( 6, 4.78) ref -> rbx "CSE - aggressive"
+; V18 cse0 [V18,T03] ( 6, 4.73) ref -> rbx "CSE - aggressive"
; V19 rat0 [V19,T00] ( 6, 8 ) ref -> rsi class-hnd "replacement local" <System.Collections.Generic.List`1[System.Object]>
;
; Lcl frame size = 56
@@ -46,20 +46,59 @@ G_M59589_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
mov rbx, gword ptr [rcx+0x10]
; gcrRegs +[rbx]
test rbx, rbx
- je SHORT G_M59589_IG10
+ je SHORT G_M59589_IG09
mov rsi, rbx
; gcrRegs +[rsi]
test rsi, rsi
- je SHORT G_M59589_IG06
+ je SHORT G_M59589_IG05
;; size=17 bbWeight=1 PerfScore 4.75
G_M59589_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
mov rdx, 0xD1FFAB1E ; System.Net.Http.Headers.HttpHeaders+InvalidValue
cmp qword ptr [rsi], rdx
- je SHORT G_M59589_IG05
+ jne SHORT G_M59589_IG11
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M59589_IG04: ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M59589_IG04: ; bbWeight=0.36, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
+ xor rsi, rsi
+ ; gcrRegs +[rsi]
+ ;; size=2 bbWeight=0.36 PerfScore 0.09
+G_M59589_IG05: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ test rsi, rsi
+ jne SHORT G_M59589_IG12
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M59589_IG06: ; bbWeight=0.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rsi]
+ mov rax, rbx
+ ; gcrRegs +[rax]
+ mov rcx, 0xD1FFAB1E ; System.Net.Http.Headers.HttpHeaders+InvalidValue
+ cmp qword ptr [rax], rcx
+ je SHORT G_M59589_IG09
+ ;; size=18 bbWeight=0.98 PerfScore 4.43
+G_M59589_IG07: ; bbWeight=0.61, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ mov rax, rbx
+ ; gcrRegs +[rax]
+ ;; size=3 bbWeight=0.61 PerfScore 0.15
+G_M59589_IG08: ; bbWeight=0.61, epilog, nogc, extend
+ add rsp, 56
+ pop rbx
+ pop rsi
+ ret
+ ;; size=7 bbWeight=0.61 PerfScore 1.38
+G_M59589_IG09: ; bbWeight=0.37, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rbx]
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=2 bbWeight=0.37 PerfScore 0.09
+G_M59589_IG10: ; bbWeight=0.37, epilog, nogc, extend
+ add rsp, 56
+ pop rbx
+ pop rsi
+ ret
+ ;; size=7 bbWeight=0.37 PerfScore 0.84
+G_M59589_IG11: ; bbWeight=0.14, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax] +[rbx]
mov rdx, rbx
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Object]
@@ -68,49 +107,10 @@ G_M59589_IG04: ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
- jmp SHORT G_M59589_IG06
- ;; size=23 bbWeight=0.18 PerfScore 0.68
-G_M59589_IG05: ; bbWeight=0.32, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rsi]
- xor rsi, rsi
- ; gcrRegs +[rsi]
- ;; size=2 bbWeight=0.32 PerfScore 0.08
-G_M59589_IG06: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- test rsi, rsi
- jne SHORT G_M59589_IG12
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M59589_IG07: ; bbWeight=0.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi]
- mov rax, rbx
- ; gcrRegs +[rax]
- mov rcx, 0xD1FFAB1E ; System.Net.Http.Headers.HttpHeaders+InvalidValue
- cmp qword ptr [rax], rcx
- je SHORT G_M59589_IG10
- ;; size=18 bbWeight=0.98 PerfScore 4.43
-G_M59589_IG08: ; bbWeight=0.61, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, rbx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=0.61 PerfScore 0.15
-G_M59589_IG09: ; bbWeight=0.61, epilog, nogc, extend
- add rsp, 56
- pop rbx
- pop rsi
- ret
- ;; size=7 bbWeight=0.61 PerfScore 1.38
-G_M59589_IG10: ; bbWeight=0.37, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ jmp SHORT G_M59589_IG05
+ ;; size=23 bbWeight=0.14 PerfScore 0.51
+G_M59589_IG12: ; bbWeight=0.02, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx]
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=2 bbWeight=0.37 PerfScore 0.09
-G_M59589_IG11: ; bbWeight=0.37, epilog, nogc, extend
- add rsp, 56
- pop rbx
- pop rsi
- ret
- ;; size=7 bbWeight=0.37 PerfScore 0.84
-G_M59589_IG12: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax] +[rsi]
mov ecx, dword ptr [rsi+0x14]
mov gword ptr [rsp+0x20], rsi
xor rdx, rdx
@@ -126,7 +126,7 @@ G_M59589_IG13: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
call [System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this]
; gcr arg pop 0
test eax, eax
- je SHORT G_M59589_IG10
+ je SHORT G_M59589_IG09
;; size=33 bbWeight=0.02 PerfScore 0.12
G_M59589_IG14: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rsp+0x28]
@@ -148,9 +148,9 @@ G_M59589_IG16: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
call [System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this]
; gcr arg pop 0
test eax, eax
- je SHORT G_M59589_IG10
+ je G_M59589_IG09
jmp SHORT G_M59589_IG14
- ;; size=27 bbWeight=0.02 PerfScore 0.17
+ ;; size=31 bbWeight=0.02 PerfScore 0.17
G_M59589_IG17: ; bbWeight=0.02, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[rax]
add rsp, 56
@@ -159,7 +159,7 @@ G_M59589_IG17: ; bbWeight=0.02, gcrefRegs=0001 {rax}, byrefRegs=0000 {},
ret
;; size=7 bbWeight=0.02 PerfScore 0.04
-; Total bytes of code 232, prolog size 23, PerfScore 22.11, instruction count 66, allocated bytes for code 232 (MethodHash=ea4d173a) for method System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo:GetSingleParsedValue():System.Object:this (Tier1)
+; Total bytes of code 236, prolog size 23, PerfScore 21.95, instruction count 66, allocated bytes for code 236 (MethodHash=ea4d173a) for method System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo:GetSingleParsedValue():System.Object:this (Tier1)
; ============================================================
Unwind Info:
+27 (+1.89%) : 385672.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 14, 3.42) ref -> rsi this class-hnd single-def <System.Threading.Tasks.Task>
-; V01 arg1 [V01,T01] ( 12, 5.09) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T01] ( 12, 5.02) ref -> rbx class-hnd single-def <System.Object>
; V02 loc0 [V02,T06] ( 6, 2 ) ref -> rdi class-hnd exact single-def <System.Threading.Tasks.TplEventSource>
; V03 loc1 [V03,T07] ( 5, 2 ) ubyte -> r14
; V04 loc2 [V04,T05] ( 11, 2 ) ubyte -> r15
@@ -92,12 +92,12 @@ G_M51094_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
; gcrRegs +[rdi]
movzx r14, byte ptr [rdi+0x9D]
test r14d, r14d
- jne G_M51094_IG54
+ jne G_M51094_IG38
;; size=44 bbWeight=1 PerfScore 10.00
-G_M51094_IG03: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG03: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
test byte ptr [rsi+0x34], 64
- jne SHORT G_M51094_IG08
- ;; size=6 bbWeight=1 PerfScore 4.00
+ jne G_M51094_IG22
+ ;; size=10 bbWeight=1 PerfScore 4.00
G_M51094_IG04: ; bbWeight=0.97, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
call <unknown method>
; gcr arg pop 0
@@ -107,38 +107,34 @@ G_M51094_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
mov rcx, rbx
; gcrRegs +[rcx]
test rcx, rcx
- je SHORT G_M51094_IG10
+ je SHORT G_M51094_IG08
;; size=12 bbWeight=1 PerfScore 1.75
-G_M51094_IG06: ; bbWeight=0.50, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG06: ; bbWeight=0.50, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation
cmp qword ptr [rcx], rdx
- je SHORT G_M51094_IG09
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M51094_IG07: ; bbWeight=0.23, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ jne G_M51094_IG20
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M51094_IG07: ; bbWeight=0.35, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[rdx] +[rax]
- ; gcr arg pop 0
- mov rcx, rax
- ; gcrRegs +[rcx]
- jmp SHORT G_M51094_IG10
- ;; size=23 bbWeight=0.23 PerfScore 0.84
-G_M51094_IG08: ; bbWeight=0.03, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax rcx]
- xor eax, eax
- jmp SHORT G_M51094_IG05
- ;; size=4 bbWeight=0.03 PerfScore 0.06
-G_M51094_IG09: ; bbWeight=0.27, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
xor rcx, rcx
; gcrRegs +[rcx]
- ;; size=2 bbWeight=0.27 PerfScore 0.07
-G_M51094_IG10: ; bbWeight=1, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.35 PerfScore 0.09
+G_M51094_IG08: ; bbWeight=1, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
test rcx, rcx
- jne SHORT G_M51094_IG19
+ jne SHORT G_M51094_IG17
;; size=5 bbWeight=1 PerfScore 1.25
+G_M51094_IG09: ; bbWeight=0.42, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ test rcx, rcx
+ je SHORT G_M51094_IG11
+ ;; size=8 bbWeight=0.42 PerfScore 0.62
+G_M51094_IG10: ; bbWeight=0.21, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref
+ mov rdx, 0xD1FFAB1E ; <unknown class>
+ cmp qword ptr [rcx], rdx
+ je G_M51094_IG39
+ ;; size=19 bbWeight=0.21 PerfScore 0.88
G_M51094_IG11: ; bbWeight=0.42, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
mov rcx, rbx
@@ -146,43 +142,31 @@ G_M51094_IG11: ; bbWeight=0.42, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
test rcx, rcx
je SHORT G_M51094_IG13
;; size=8 bbWeight=0.42 PerfScore 0.62
-G_M51094_IG12: ; bbWeight=0.21, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref
- mov rdx, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rcx], rdx
- je G_M51094_IG55
- ;; size=19 bbWeight=0.21 PerfScore 0.88
-G_M51094_IG13: ; bbWeight=0.42, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- mov rcx, rbx
- ; gcrRegs +[rcx]
- test rcx, rcx
- je SHORT G_M51094_IG15
- ;; size=8 bbWeight=0.42 PerfScore 0.62
-G_M51094_IG14: ; bbWeight=0.21, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG12: ; bbWeight=0.21, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation
cmp qword ptr [rcx], rdx
- jne SHORT G_M51094_IG18
+ jne SHORT G_M51094_IG16
;; size=15 bbWeight=0.21 PerfScore 0.88
-G_M51094_IG15: ; bbWeight=0.42, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG13: ; bbWeight=0.42, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref
test rcx, rcx
- je SHORT G_M51094_IG23
- ;; size=5 bbWeight=0.42 PerfScore 0.52
-G_M51094_IG16: ; bbWeight=0.42, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
+ je G_M51094_IG23
+ ;; size=9 bbWeight=0.42 PerfScore 0.52
+G_M51094_IG14: ; bbWeight=0.42, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rdi]
mov rdx, 0xD1FFAB1E ; System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation
cmp qword ptr [rcx], rdx
- jne SHORT G_M51094_IG22
+ jne SHORT G_M51094_IG21
;; size=15 bbWeight=0.42 PerfScore 1.77
-G_M51094_IG17: ; bbWeight=0.34, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG15: ; bbWeight=0.34, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, rsi
; gcrRegs +[rdx]
mov r8d, r15d
call [System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation:Run(System.Threading.Tasks.Task,ubyte):this]
; gcrRegs -[rcx rdx rsi]
; gcr arg pop 0
- jmp SHORT G_M51094_IG20
+ jmp SHORT G_M51094_IG18
;; size=14 bbWeight=0.34 PerfScore 1.85
-G_M51094_IG18: ; bbWeight=0.03, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG16: ; bbWeight=0.03, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rsi rdi]
mov rdx, rbx
; gcrRegs +[rdx]
@@ -192,21 +176,21 @@ G_M51094_IG18: ; bbWeight=0.03, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
- jmp SHORT G_M51094_IG15
+ jmp SHORT G_M51094_IG13
;; size=23 bbWeight=0.03 PerfScore 0.12
-G_M51094_IG19: ; bbWeight=0.58, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M51094_IG17: ; bbWeight=0.58, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx rsi rdi]
mov edx, r15d
call [<unknown method>]
; gcrRegs -[rcx]
; gcr arg pop 0
;; size=9 bbWeight=0.58 PerfScore 1.90
-G_M51094_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51094_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.Threading.Tasks.Task:LogFinishCompletionNotification()]
; gcr arg pop 0
nop
;; size=7 bbWeight=1 PerfScore 3.25
-G_M51094_IG21: ; bbWeight=1, epilog, nogc, extend
+G_M51094_IG19: ; bbWeight=1, epilog, nogc, extend
add rsp, 120
pop rbx
pop rsi
@@ -218,8 +202,20 @@ G_M51094_IG21: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=17 bbWeight=1 PerfScore 5.25
-G_M51094_IG22: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rcx rsi]
+G_M51094_IG20: ; bbWeight=0.15, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx rsi rdi]
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ jmp G_M51094_IG08
+ ;; size=26 bbWeight=0.15 PerfScore 0.56
+G_M51094_IG21: ; bbWeight=0.08, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax rbx rdi]
mov rdx, rsi
; gcrRegs +[rdx]
mov r8d, r15d
@@ -228,94 +224,41 @@ G_M51094_IG22: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=004
call [rax+0x20]<unknown method>
; gcrRegs -[rcx rdx rsi]
; gcr arg pop 0
- jmp SHORT G_M51094_IG20
+ jmp SHORT G_M51094_IG18
;; size=18 bbWeight=0.08 PerfScore 0.75
-G_M51094_IG23: ; bbWeight=0.00, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG22: ; bbWeight=0.03, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx rsi rdi]
+ xor eax, eax
+ jmp G_M51094_IG05
+ ;; size=7 bbWeight=0.03 PerfScore 0.06
+G_M51094_IG23: ; bbWeight=0.00, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, rbx
; gcrRegs +[rdx]
test rdx, rdx
- je SHORT G_M51094_IG27
+ jne SHORT G_M51094_IG28
;; size=8 bbWeight=0.00 PerfScore 0.00
G_M51094_IG24: ; bbWeight=0.00, gcrefRegs=00CC {rdx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M51094_IG26
- ;; size=2 bbWeight=0.00 PerfScore 0.00
-G_M51094_IG25: ; bbWeight=0.00, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx rdi]
- mov rcx, rsi
- ; gcrRegs +[rcx]
- mov r8d, r15d
- call [System.Threading.Tasks.Task:RunOrQueueCompletionAction(System.Threading.Tasks.ITaskCompletionAction,ubyte):this]
- ; gcrRegs -[rcx rdx rsi]
- ; gcr arg pop 0
- jmp SHORT G_M51094_IG20
- ;; size=14 bbWeight=0.00 PerfScore 0.00
-G_M51094_IG26: ; bbWeight=0.00, gcrefRegs=00CC {rdx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rdx rbx rsi rdi]
- mov rcx, 0xD1FFAB1E ; System.Threading.Tasks.UnwrapPromise`1[Xunit.Sdk.RunSummary]
- cmp qword ptr [rdx], rcx
- jne SHORT G_M51094_IG36
- ;; size=15 bbWeight=0.00 PerfScore 0.00
-G_M51094_IG27: ; bbWeight=0.00, gcrefRegs=00CC {rdx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
test rdx, rdx
- jne SHORT G_M51094_IG25
+ jne SHORT G_M51094_IG30
;; size=5 bbWeight=0.00 PerfScore 0.00
-G_M51094_IG28: ; bbWeight=0.00, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG25: ; bbWeight=0.00, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
mov r13, rbx
; gcrRegs +[r13]
test r13, r13
- jne SHORT G_M51094_IG34
- ;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M51094_IG29: ; bbWeight=0.00, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0000 {}, byref
+ jne G_M51094_IG35
+ ;; size=12 bbWeight=0.00 PerfScore 0.00
+G_M51094_IG26: ; bbWeight=0.00, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
mov gword ptr [rbp-0x68], r13
; GC ptr vars +{V11}
xor edx, edx
mov dword ptr [rbp-0x40], edx
- ;; size=9 bbWeight=0.00 PerfScore 0.00
...
+23 (+1.94%) : 596369.dasm - System.Text.Json.Serialization.Tests.PolymorphicTests+PolymorphicEqualityComparer`1[System.Canon]:Equals(System.Canon,System.__Canon):ubyte:this (Tier1)
@@ -10,40 +10,40 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Text.Json.Serialization.Tests.PolymorphicTests+PolymorphicEqualityComparer`1[System.__Canon]>
-; V01 arg1 [V01,T02] ( 9, 14.95) ref -> rbx class-hnd single-def <System.__Canon>
-; V02 arg2 [V02,T04] ( 8, 12.03) ref -> rsi class-hnd single-def <System.__Canon>
+; V01 arg1 [V01,T02] ( 9, 14.89) ref -> rbx class-hnd single-def <System.__Canon>
+; V02 arg2 [V02,T04] ( 9, 12.08) ref -> rsi class-hnd single-def <System.__Canon>
; V03 loc0 [V03,T15] ( 3, 2.74) ref -> rdi class-hnd exact single-def <System.RuntimeType>
-; V04 loc1 [V04,T24] ( 2, 1.26) ref -> rbp class-hnd exact single-def <<unknown class>>
+; V04 loc1 [V04,T25] ( 2, 1.26) ref -> rbp class-hnd exact single-def <<unknown class>>
; V05 loc2 [V05,T18] ( 4, 2.51) ref -> r14 class-hnd single-def <System.Collections.IEnumerable>
-; V06 loc3 [V06,T27] ( 3, 0.77) ref -> r15 class-hnd single-def <System.Collections.IEnumerable>
+; V06 loc3 [V06,T28] ( 3, 0.77) ref -> r15 class-hnd single-def <System.Collections.IEnumerable>
; V07 loc4 [V07,T11] ( 4, 5.37) ref -> rdi class-hnd single-def <System.Reflection.PropertyInfo[]>
; V08 loc5 [V08,T08] ( 5, 8.51) int -> r14
; V09 loc6 [V09,T00] ( 8, 17.48) ref -> r12 class-hnd <System.Reflection.PropertyInfo>
; V10 OutArgs [V10 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Object>
-; V12 tmp2 [V12,T25] ( 3, 1.03) ref -> r12 class-hnd "impAppendStmt" <<unknown class>>
-; V13 tmp3 [V13,T28] ( 3, 0.51) ref -> r13 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V12 tmp2 [V12,T26] ( 3, 1.03) ref -> r12 class-hnd "impAppendStmt" <<unknown class>>
+; V13 tmp3 [V13,T29] ( 3, 0.51) ref -> r13 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V14 tmp4 [V14,T16] ( 5, 2.57) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V15 tmp5 [V15,T29] ( 3, 0.51) ref -> r8 class-hnd "Inline return value spill temp" <<unknown class>>
-; V16 tmp6 [V16,T30] ( 3, 0.51) ref -> r8 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V15 tmp5 [V15,T30] ( 3, 0.51) ref -> r8 class-hnd "Inline return value spill temp" <<unknown class>>
+; V16 tmp6 [V16,T31] ( 3, 0.51) ref -> r8 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V17 tmp7 [V17,T17] ( 5, 2.57) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V18 tmp8 [V18 ] ( 12, 5.64) struct (24) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]>
-; V19 tmp9 [V19,T22] ( 4, 1.49) ref -> rdi class-hnd "Inline return value spill temp" <System.Reflection.PropertyInfo[]>
-; V20 tmp10 [V20,T23] ( 3, 1.34) ref -> rdi class-hnd exact single-def "dup spill" <System.Reflection.PropertyInfo[]>
+; V19 tmp9 [V19,T23] ( 4, 1.49) ref -> rdi class-hnd "Inline return value spill temp" <System.Reflection.PropertyInfo[]>
+; V20 tmp10 [V20,T24] ( 3, 1.34) ref -> rdi class-hnd exact single-def "dup spill" <System.Reflection.PropertyInfo[]>
; V21 tmp11 [V21,T14] ( 7, 3.55) int -> r14 "Inlining Arg"
-; V22 tmp12 [V22,T21] ( 5, 1.70) ref -> rdi class-hnd single-def "Inline stloc first use temp" <System.Reflection.PropertyInfo[]>
-; V23 tmp13 [V23,T36] ( 3, 0.22) ref -> r12 class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.PropertyInfo[]>
-; V24 tmp14 [V24,T33] ( 3, 0.29) byref -> rcx single-def "impAppendStmt"
-; V25 tmp15 [V25,T34] ( 3, 0.29) byref -> rdx single-def "impAppendStmt"
-; V26 tmp16 [V26,T37] ( 2, 0.15) int -> r14 "Inline return value spill temp"
-; V27 tmp17 [V27,T32] ( 3, 0.44) int -> r8 "Inlining Arg"
-; V28 tmp18 [V28,T35] ( 2, 0.29) long -> r8 "Inlining Arg"
-; V29 tmp19 [V29,T31] ( 4, 0.44) long -> r8 "Inlining Arg"
+; V22 tmp12 [V22,T22] ( 5, 1.70) ref -> rdi class-hnd single-def "Inline stloc first use temp" <System.Reflection.PropertyInfo[]>
+; V23 tmp13 [V23,T37] ( 3, 0.22) ref -> r12 class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.PropertyInfo[]>
+; V24 tmp14 [V24,T34] ( 3, 0.29) byref -> rcx single-def "impAppendStmt"
+; V25 tmp15 [V25,T35] ( 3, 0.29) byref -> rdx single-def "impAppendStmt"
+; V26 tmp16 [V26,T38] ( 2, 0.15) int -> r14 "Inline return value spill temp"
+; V27 tmp17 [V27,T33] ( 3, 0.44) int -> r8 "Inlining Arg"
+; V28 tmp18 [V28,T36] ( 2, 0.29) long -> r8 "Inlining Arg"
+; V29 tmp19 [V29,T32] ( 4, 0.44) long -> r8 "Inlining Arg"
; V30 tmp20 [V30,T03] ( 7, 15.54) ref -> rbp "guarded devirt return temp"
;* V31 tmp21 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimePropertyInfo>
;* V32 tmp22 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Object>
;* V33 tmp23 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo>
-; V34 tmp24 [V34,T38] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V34 tmp24 [V34,T39] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
; V35 tmp25 [V35,T06] ( 4, 11.65) ref -> rcx class-hnd "Inline return value spill temp" <System.Reflection.RuntimeMethodInfo>
;* V36 tmp26 [V36,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V37 tmp27 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
@@ -52,7 +52,7 @@
;* V40 tmp30 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimePropertyInfo>
;* V41 tmp31 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Object>
;* V42 tmp32 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo>
-; V43 tmp33 [V43,T39] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V43 tmp33 [V43,T40] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
; V44 tmp34 [V44,T07] ( 4, 11.65) ref -> rcx class-hnd "Inline return value spill temp" <System.Reflection.RuntimeMethodInfo>
;* V45 tmp35 [V45,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V46 tmp36 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
@@ -62,16 +62,17 @@
; V50 tmp40 [V50,T13] ( 3, 3.88) int -> r8 "guarded devirt return temp"
;* V51 tmp41 [V51 ] ( 0, 0 ) ref -> zero-ref "guarded devirt arg temp"
;* V52 tmp42 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
-; V53 tmp43 [V53,T26] ( 3, 1.03) int -> rax "Single return block return value"
+; V53 tmp43 [V53,T27] ( 3, 1.03) int -> rax "Single return block return value"
; V54 tmp44 [V54 ] ( 6, 2.37) ref -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V18._items (fldOffset=0x0)" P-DEP
; V55 tmp45 [V55 ] ( 2, 0.97) ref -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V18._item (fldOffset=0x8)" P-DEP
; V56 tmp46 [V56 ] ( 5, 3.27) int -> [rsp+0x40] do-not-enreg[X] addr-exposed "field V18._count (fldOffset=0x10)" P-DEP
; V57 tmp47 [V57 ] ( 2, 1.26) int -> [rsp+0x44] do-not-enreg[X] addr-exposed "field V18._capacity (fldOffset=0x14)" P-DEP
-; V58 tmp48 [V58,T40] ( 2, 0 ) ref -> rdx "argument with side effect"
-; V59 tmp49 [V59,T41] ( 2, 0 ) ref -> rdx "argument with side effect"
+; V58 tmp48 [V58,T41] ( 2, 0 ) ref -> rdx "argument with side effect"
+; V59 tmp49 [V59,T42] ( 2, 0 ) ref -> rdx "argument with side effect"
; V60 cse0 [V60,T10] ( 3, 5.83) ref -> rcx "CSE - aggressive"
; V61 cse1 [V61,T01] ( 3, 17.48) ref -> rcx "CSE - aggressive"
; V62 rat0 [V62,T09] ( 6, 8 ) ref -> r14 class-hnd "replacement local" <System.Collections.IEnumerable>
+; V63 rat1 [V63,T21] ( 5, 1.90) ref -> r15 class-hnd "replacement local" <System.Collections.IEnumerable>
;
; Lcl frame size = 72
@@ -96,9 +97,9 @@ G_M57964_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=39 bbWeight=1 PerfScore 12.33
G_M57964_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
- je G_M57964_IG34
+ je G_M57964_IG37
test rsi, rsi
- je G_M57964_IG34
+ je G_M57964_IG37
mov rcx, rbx
; gcrRegs +[rcx]
call <unknown method>
@@ -112,7 +113,7 @@ G_M57964_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
; gcrRegs -[rcx]
; gcr arg pop 0
cmp rax, rdi
- jne G_M57964_IG46
+ jne G_M57964_IG49
mov rdx, 0xD1FFAB1E ; const ptr
mov rbp, gword ptr [rdx]
; gcrRegs +[rbp]
@@ -127,7 +128,7 @@ G_M57964_IG03: ; bbWeight=0.50, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byr
cmp qword ptr [r14], rdx
je SHORT G_M57964_IG05
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M57964_IG04: ; bbWeight=0.24, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M57964_IG04: ; bbWeight=0.18, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r14]
mov rdx, rbx
; gcrRegs +[rdx]
@@ -138,12 +139,12 @@ G_M57964_IG04: ; bbWeight=0.24, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRe
mov r14, rax
; gcrRegs +[r14]
jmp SHORT G_M57964_IG06
- ;; size=23 bbWeight=0.24 PerfScore 0.90
-G_M57964_IG05: ; bbWeight=0.26, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
+ ;; size=23 bbWeight=0.18 PerfScore 0.68
+G_M57964_IG05: ; bbWeight=0.32, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax r14]
xor r14, r14
; gcrRegs +[r14]
- ;; size=3 bbWeight=0.26 PerfScore 0.07
+ ;; size=3 bbWeight=0.32 PerfScore 0.08
G_M57964_IG06: ; bbWeight=1, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=0000 {}, byref
test r14, r14
jne G_M57964_IG29
@@ -168,18 +169,18 @@ G_M57964_IG08: ; bbWeight=0.74, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
; gcrRegs -[rcx rdi r8]
; gcr arg pop 0
cmp dword ptr [rsp+0x40], 0
- je G_M57964_IG35
+ je G_M57964_IG38
cmp dword ptr [rsp+0x40], 1
je G_M57964_IG28
;; size=49 bbWeight=0.74 PerfScore 8.36
G_M57964_IG09: ; bbWeight=0.52, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov r14d, dword ptr [rsp+0x40]
test r14d, r14d
- jl G_M57964_IG36
+ jl G_M57964_IG39
mov rdi, gword ptr [rsp+0x30]
; gcrRegs +[rdi]
test rdi, rdi
- je G_M57964_IG37
+ je G_M57964_IG40
cmp dword ptr [rdi+0x08], r14d
jne G_M57964_IG25
;; size=38 bbWeight=0.52 PerfScore 4.41
@@ -212,11 +213,11 @@ G_M57964_IG13: ; bbWeight=1.94, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
mov rcx, gword ptr [r12+0x18]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M57964_IG39
+ je G_M57964_IG42
;; size=42 bbWeight=1.94 PerfScore 18.94
G_M57964_IG14: ; bbWeight=1.94, gcrefRegs=10CA {rcx rbx rsi rdi r12}, byrefRegs=0000 {}, byref
test rcx, rcx
- je G_M57964_IG44
+ je G_M57964_IG47
;; size=9 bbWeight=1.94 PerfScore 2.43
G_M57964_IG15: ; bbWeight=7.77, gcrefRegs=10CA {rcx rbx rsi rdi r12}, byrefRegs=0000 {}, byref
xor rdx, rdx
@@ -241,12 +242,12 @@ G_M57964_IG16: ; bbWeight=7.77, gcrefRegs=10CA {rcx rbx rsi rdi r12}, byr
mov rcx, gword ptr [r12+0x18]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M57964_IG40
+ je G_M57964_IG43
;; size=40 bbWeight=7.77 PerfScore 64.09
G_M57964_IG17: ; bbWeight=1.94, gcrefRegs=00EA {rcx rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax r12]
test rcx, rcx
- je G_M57964_IG45
+ je G_M57964_IG48
;; size=9 bbWeight=1.94 PerfScore 2.43
G_M57964_IG18: ; bbWeight=7.77, gcrefRegs=00EA {rcx rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
xor rdx, rdx
@@ -272,12 +273,12 @@ G_M57964_IG19: ; bbWeight=7.77, gcrefRegs=00EA {rcx rbx rbp rsi rdi}, byr
G_M57964_IG20: ; bbWeight=1.94, gcrefRegs=00EC {rdx rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
test rbp, rbp
- je G_M57964_IG43
- test rdx, rdx
je G_M57964_IG46
+ test rdx, rdx
+ je G_M57964_IG49
mov rax, 0xD1FFAB1E ; System.RuntimeType
cmp qword ptr [rbp], rax
- jne G_M57964_IG42
+ jne G_M57964_IG45
xor r8d, r8d
cmp rdx, rbp
sete r8b
@@ -286,7 +287,7 @@ G_M57964_IG21: ; bbWeight=1.94, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
; gcrRegs -[rdx rbp]
movzx rax, r8b
test eax, eax
- je G_M57964_IG46
+ je G_M57964_IG49
;; size=12 bbWeight=1.94 PerfScore 2.91
G_M57964_IG22: ; bbWeight=1.94, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
inc r14d
@@ -328,7 +329,7 @@ G_M57964_IG25: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=00C
mov r8d, r14d
shl r8, 3
cmp r8, 0x400
- ja G_M57964_IG38
+ ja G_M57964_IG41
call <unknown method>
; gcrRegs -[rax rdi]
; byrRegs -[rcx rdx]
@@ -353,7 +354,7 @@ G_M57964_IG27: ; bbWeight=1.94, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRe
; gcr arg pop 0
mov rbp, rax
; gcrRegs +[rbp]
- jmp G_M57964_IG41
+ jmp G_M57964_IG44
;; size=28 bbWeight=1.94 PerfScore 19.42
G_M57964_IG28: ; bbWeight=0.22, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbp rdi r12]
@@ -374,8 +375,20 @@ G_M57964_IG28: ; bbWeight=0.22, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcr arg pop 0
jmp G_M57964_IG12
;; size=43 bbWeight=0.22 PerfScore 1.40
-G_M57964_IG29: ; bbWeight=0.26, gcrefRegs=4060 {rbp rsi r14}, byrefRegs=0000 {}, byref
+G_M57964_IG29: ; bbWeight=0.26, gcrefRegs=4060 {rbp rsi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rdi] +[rbp r14]
+ mov r15, rsi
+ ; gcrRegs +[r15]
+ test r15, r15
+ je SHORT G_M57964_IG32
+ ;; size=8 bbWeight=0.26 PerfScore 0.39
+G_M57964_IG30: ; bbWeight=0.13, gcrefRegs=C060 {rbp rsi r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov rdx, 0xD1FFAB1E ; System.Text.Json.Serialization.Tests.PolymorphicTests+PolymorphicClass+DerivedCollection_TypeDiscriminator
+ cmp qword ptr [r15], rdx
+ je SHORT G_M57964_IG32
+ ;; size=15 bbWeight=0.13 PerfScore 0.55
+G_M57964_IG31: ; bbWeight=0.05, gcrefRegs=4060 {rbp rsi r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r15]
mov rdx, rsi
...
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
Details
Improvements/regressions per collection
Collection
Contexts with diffs
Improvements
Regressions
Same size
Improvements (bytes)
Regressions (bytes)
aspnet.run.windows.x64.checked.mch
5
0
5
0
-0
+119
benchmarks.run.windows.x64.checked.mch
0
0
0
0
-0
+0
benchmarks.run_pgo.windows.x64.checked.mch
1
0
1
0
-0
+38
benchmarks.run_tiered.windows.x64.checked.mch
0
0
0
0
-0
+0
coreclr_tests.run.windows.x64.checked.mch
2
2
0
0
-68
+0
libraries.crossgen2.windows.x64.checked.mch
0
0
0
0
-0
+0
libraries.pmi.windows.x64.checked.mch
0
0
0
0
-0
+0
libraries_tests.run.windows.x64.Release.mch
20
2
14
4
-11
+178
librariestestsnotieredcompilation.run.windows.x64.Release.mch
0
0
0
0
-0
+0
realworld.run.windows.x64.checked.mch
0
0
0
0
-0
+0
smoke_tests.nativeaot.windows.x64.checked.mch
0
0
0
0
-0
+0
28
4
20
4
-79
+335
Context information
Collection
Diffed contexts
MinOpts
FullOpts
Missed, base
Missed, diff
aspnet.run.windows.x64.checked.mch
113,023
48,462
64,561
972 (0.85%)
1,384 (1.21%)
benchmarks.run.windows.x64.checked.mch
27,947
4
27,943
4 (0.01%)
231 (0.82%)
benchmarks.run_pgo.windows.x64.checked.mch
100,902
50,170
50,732
131 (0.13%)
251 (0.25%)
benchmarks.run_tiered.windows.x64.checked.mch
54,187
36,844
17,343
2 (0.00%)
68 (0.13%)
coreclr_tests.run.windows.x64.checked.mch
573,709
341,113
232,596
301 (0.05%)
703 (0.12%)
libraries.crossgen2.windows.x64.checked.mch
243,023
15
243,008
0 (0.00%)
0 (0.00%)
libraries.pmi.windows.x64.checked.mch
305,581
6
305,575
9 (0.00%)
2,060 (0.67%)
libraries_tests.run.windows.x64.Release.mch
681,207
485,176
196,031
2,467 (0.36%)
3,410 (0.50%)
librariestestsnotieredcompilation.run.windows.x64.Release.mch
317,594
21,886
295,708
10 (0.00%)
2,192 (0.69%)
realworld.run.windows.x64.checked.mch
36,489
3
36,486
3 (0.01%)
399 (1.08%)
smoke_tests.nativeaot.windows.x64.checked.mch
32,441
10
32,431
0 (0.00%)
3 (0.01%)
2,486,103
983,689
1,502,414
3,899 (0.16%)
10,701 (0.43%)
jit-analyze output
aspnet.run.windows.x64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 41693796 (overridden on cmd)
Total bytes of diff: 41693915 (overridden on cmd)
Total bytes of delta: 119 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
33 : 92536.dasm (16.84 % of base)
24 : 98626.dasm (10.57 % of base)
23 : 96259.dasm (11.73 % of base)
23 : 113150.dasm (11.73 % of base)
16 : 96756.dasm (3.09 % of base)
5 total files with Code Size differences (0 improved, 5 regressed), 0 unchanged.
Top method regressions (bytes):
33 (16.84 % of base) : 92536.dasm - OrchardCore.Liquid.Startup+<>c:<ConfigureServices>b__1_3(System.Object):System.Object:this (Tier1)
24 (10.57 % of base) : 98626.dasm - System.Threading.ThreadPoolWorkQueue:DispatchWorkItem(System.Object,System.Threading.Thread) (Tier1)
23 (11.73 % of base) : 96259.dasm - OrchardCore.Liquid.Startup+<>c:<ConfigureServices>b__1_3(System.Object):System.Object:this (Tier1)
23 (11.73 % of base) : 113150.dasm - OrchardCore.Liquid.Startup+<>c:<ConfigureServices>b__1_3(System.Object):System.Object:this (Tier1)
16 (3.09 % of base) : 96756.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
Top method regressions (percentages):
33 (16.84 % of base) : 92536.dasm - OrchardCore.Liquid.Startup+<>c:<ConfigureServices>b__1_3(System.Object):System.Object:this (Tier1)
23 (11.73 % of base) : 96259.dasm - OrchardCore.Liquid.Startup+<>c:<ConfigureServices>b__1_3(System.Object):System.Object:this (Tier1)
23 (11.73 % of base) : 113150.dasm - OrchardCore.Liquid.Startup+<>c:<ConfigureServices>b__1_3(System.Object):System.Object:this (Tier1)
24 (10.57 % of base) : 98626.dasm - System.Threading.ThreadPoolWorkQueue:DispatchWorkItem(System.Object,System.Threading.Thread) (Tier1)
16 (3.09 % of base) : 96756.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
5 total methods with Code Size differences (0 improved, 5 regressed).
benchmarks.run_pgo.windows.x64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 35261613 (overridden on cmd)
Total bytes of diff: 35261651 (overridden on cmd)
Total bytes of delta: 38 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
38 : 100256.dasm (11.95 % of base)
1 total files with Code Size differences (0 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
38 (11.95 % of base) : 100256.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)
Top method regressions (percentages):
38 (11.95 % of base) : 100256.dasm - System.Text.RegularExpressions.RegexNode:FindAndMakeLoopsAtomic():this (Tier1)
1 total methods with Code Size differences (0 improved, 1 regressed).
coreclr_tests.run.windows.x64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 392818845 (overridden on cmd)
Total bytes of diff: 392818777 (overridden on cmd)
Total bytes of delta: -68 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-43 : 371075.dasm (-3.48 % of base)
-25 : 367012.dasm (-1.94 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-43 (-3.48 % of base) : 371075.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-25 (-1.94 % of base) : 367012.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
Top method improvements (percentages):
-43 (-3.48 % of base) : 371075.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-25 (-1.94 % of base) : 367012.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
2 total methods with Code Size differences (2 improved, 0 regressed).
libraries_tests.run.windows.x64.Release.mch
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 280544593 (overridden on cmd)
Total bytes of diff: 280544760 (overridden on cmd)
Total bytes of delta: 167 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
27 : 385672.dasm (1.89 % of base)
25 : 219872.dasm (1.08 % of base)
23 : 596369.dasm (1.94 % of base)
21 : 363657.dasm (0.74 % of base)
16 : 490037.dasm (1.33 % of base)
15 : 322478.dasm (1.08 % of base)
12 : 439220.dasm (1.57 % of base)
12 : 83487.dasm (0.82 % of base)
7 : 367365.dasm (0.36 % of base)
5 : 120114.dasm (0.87 % of base)
4 : 364035.dasm (1.72 % of base)
4 : 48495.dasm (0.79 % of base)
4 : 342340.dasm (0.55 % of base)
3 : 219856.dasm (0.38 % of base)
Top file improvements (bytes):
-7 : 621014.dasm (-0.47 % of base)
-4 : 168536.dasm (-0.76 % of base)
16 total files with Code Size differences (2 improved, 14 regressed), 4 unchanged.
Top method regressions (bytes):
27 (1.89 % of base) : 385672.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
25 (1.08 % of base) : 219872.dasm - System.Collections.Tests.IEnumerable_NonGeneric_Tests:IEnumerable_NonGeneric_Enumerator_Current_ReturnsSameObjectsOnDifferentEnumerators(int):this (Tier1)
23 (1.94 % of base) : 596369.dasm - System.Text.Json.Serialization.Tests.PolymorphicTests+PolymorphicEqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this (Tier1)
21 (0.74 % of base) : 363657.dasm - Xunit.Sdk.TestInvoker`1+<<RunAsync>b__47_0>d[System.__Canon]:MoveNext():this (Tier1)
16 (1.33 % of base) : 490037.dasm - Xunit.MemberDataAttributeBase:GetData(System.Reflection.MethodInfo):System.Collections.Generic.IEnumerable`1[System.Object[]]:this (Tier1)
15 (1.08 % of base) : 322478.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
12 (1.57 % of base) : 439220.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
12 (0.82 % of base) : 83487.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
7 (0.36 % of base) : 367365.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
5 (0.87 % of base) : 120114.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
4 (0.55 % of base) : 342340.dasm - System.Collections.Generic.List`1[int]:AddRange(System.Collections.Generic.IEnumerable`1[int]):this (Tier1)
4 (0.79 % of base) : 48495.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
4 (1.72 % of base) : 364035.dasm - System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo:GetSingleParsedValue():System.Object:this (Tier1)
3 (0.38 % of base) : 219856.dasm - System.Collections.Tests.IEnumerable_NonGeneric_Tests:CloneEnumerator_MatchesOriginal(int):this (Tier1)
Top method improvements (bytes):
-7 (-0.47 % of base) : 621014.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:<EnsureRequiredMembersCalculated>g__tryCalculateRequiredMembers|191_0(byref):ubyte:this (Tier1)
-4 (-0.76 % of base) : 168536.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
Top method regressions (percentages):
23 (1.94 % of base) : 596369.dasm - System.Text.Json.Serialization.Tests.PolymorphicTests+PolymorphicEqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this (Tier1)
27 (1.89 % of base) : 385672.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
4 (1.72 % of base) : 364035.dasm - System.Net.Http.Headers.HttpHeaders+HeaderStoreItemInfo:GetSingleParsedValue():System.Object:this (Tier1)
12 (1.57 % of base) : 439220.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
16 (1.33 % of base) : 490037.dasm - Xunit.MemberDataAttributeBase:GetData(System.Reflection.MethodInfo):System.Collections.Generic.IEnumerable`1[System.Object[]]:this (Tier1)
25 (1.08 % of base) : 219872.dasm - System.Collections.Tests.IEnumerable_NonGeneric_Tests:IEnumerable_NonGeneric_Enumerator_Current_ReturnsSameObjectsOnDifferentEnumerators(int):this (Tier1)
15 (1.08 % of base) : 322478.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
5 (0.87 % of base) : 120114.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
12 (0.82 % of base) : 83487.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
4 (0.79 % of base) : 48495.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
21 (0.74 % of base) : 363657.dasm - Xunit.Sdk.TestInvoker`1+<<RunAsync>b__47_0>d[System.__Canon]:MoveNext():this (Tier1)
4 (0.55 % of base) : 342340.dasm - System.Collections.Generic.List`1[int]:AddRange(System.Collections.Generic.IEnumerable`1[int]):this (Tier1)
3 (0.38 % of base) : 219856.dasm - System.Collections.Tests.IEnumerable_NonGeneric_Tests:CloneEnumerator_MatchesOriginal(int):this (Tier1)
7 (0.36 % of base) : 367365.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
Top method improvements (percentages):
-4 (-0.76 % of base) : 168536.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
-7 (-0.47 % of base) : 621014.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:<EnsureRequiredMembersCalculated>g__tryCalculateRequiredMembers|191_0(byref):ubyte:this (Tier1)
16 total methods with Code Size differences (2 improved, 14 regressed).