Assembly Diffs
linux arm64
Diffs are based on 2,498,787 contexts (1,011,240 MinOpts, 1,487,547 FullOpts).
MISSED contexts: base: 0 (0.00%), diff: 6,564 (0.26%)
Overall (-16 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| coreclr_tests.run.linux.arm64.checked.mch |
509,268,220 |
-88 |
| libraries_tests.run.linux.arm64.Release.mch |
384,368,152 |
+72 |
FullOpts (-16 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| coreclr_tests.run.linux.arm64.checked.mch |
160,122,292 |
-88 |
| libraries_tests.run.linux.arm64.Release.mch |
168,479,656 |
+72 |
Example diffs
coreclr_tests.run.linux.arm64.checked.mch
-48 (-2.84%) : 418890.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.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,T35] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V07 tmp3 [V07,T34] ( 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,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.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,T45] ( 2, 0 ) ref -> x19 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
; V10 tmp6 [V10,T04] ( 7, 4.75) ref -> x23 class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
; V11 tmp7 [V11,T03] ( 12, 5.09) 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.37) ref -> x25 "guarded devirt return temp"
+; V13 tmp9 [V13,T11] ( 8, 2.37) 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 -> x27 "guarded devirt return temp"
+; V15 tmp11 [V15,T22] ( 4, 1.63) 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.02) ref -> x22 "guarded devirt return temp"
+; V17 tmp13 [V17,T15] ( 8, 2.02) ref -> x22 "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.09) int -> x0
-; V21 tmp17 [V21,T25] ( 3, 1.50) ref -> x26 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V20 tmp16 [V20,T29] ( 3, 1.09) int -> x0
+; V21 tmp17 [V21,T24] ( 3, 1.50) 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.73) ref -> x27 "guarded devirt return temp"
+; V23 tmp19 [V23,T35] ( 3, 0.73) 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,T37] ( 3, 0.72) ref -> x26 "guarded devirt return temp"
-; V26 tmp22 [V26,T15] ( 5, 2.12) ref -> x0 single-def "guarded devirt arg temp"
+; V25 tmp21 [V25,T36] ( 3, 0.72) ref -> x26 "guarded devirt return temp"
+; V26 tmp22 [V26,T14] ( 5, 2.12) 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,T38] ( 3, 0.67) ref -> x27 "guarded devirt return temp"
-; V29 tmp25 [V29,T17] ( 5, 2.00) ref -> x0 single-def "guarded devirt arg temp"
+; V28 tmp24 [V28,T37] ( 3, 0.67) ref -> x27 "guarded devirt return temp"
+; V29 tmp25 [V29,T16] ( 5, 2.00) 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,T11] ( 5, 2.93) ref -> x0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V32 tmp28 [V32,T32] ( 3, 0.98) ref -> x27 "guarded devirt return temp"
+; V31 tmp27 [V31,T09] ( 5, 2.93) ref -> x0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+; V32 tmp28 [V32,T31] ( 3, 0.98) 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,T06] ( 4, 4.34) ref -> x0 class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
; V36 tmp32 [V36,T07] ( 4, 4.34) 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,T05] ( 4, 3.54) ref -> x27 class-hnd exact single-def "impAppendStmt" <<unknown class>>
-; V39 tmp35 [V39,T14] ( 2, 2.17) int -> x28 "impAppendStmt"
-; V40 tmp36 [V40,T28] ( 4, 1.09) ref -> x0 "guarded devirt return temp"
+; V39 tmp35 [V39,T13] ( 2, 2.17) int -> x28 "impAppendStmt"
+; V40 tmp36 [V40,T27] ( 4, 1.09) 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.05) byref -> x28 single-def "impAppendStmt"
-; V43 tmp39 [V43,T45] ( 3, 0.03) int -> x0 "guarded devirt return temp"
-; V44 tmp40 [V44,T43] ( 5, 0.08) ref -> x0 single-def "guarded devirt arg temp"
+; V42 tmp38 [V42,T43] ( 2, 0.05) byref -> x28 single-def "impAppendStmt"
+; V43 tmp39 [V43,T44] ( 3, 0.03) int -> x0 "guarded devirt return temp"
+; V44 tmp40 [V44,T42] ( 5, 0.08) 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.09) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V47 tmp43 [V47,T28] ( 3, 1.09) 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.94) 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,T19] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V51 tmp47 [V51,T10] ( 4, 2.95) ref -> x0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V52 tmp48 [V52,T33] ( 3, 0.91) int -> x0
-; V53 tmp49 [V53,T26] ( 3, 1.26) ref -> x27 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V50 tmp46 [V50,T18] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V51 tmp47 [V51,T10] ( 3, 2.74) ref -> x0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V52 tmp48 [V52,T32] ( 3, 0.91) int -> x0
+; V53 tmp49 [V53,T25] ( 3, 1.26) 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,T39] ( 3, 0.62) ref -> x1 "guarded devirt return temp"
+; V55 tmp51 [V55,T38] ( 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,T40] ( 3, 0.61) ref -> x27 "guarded devirt return temp"
-; V58 tmp54 [V58,T20] ( 5, 1.78) ref -> x0 single-def "guarded devirt arg temp"
+; V57 tmp53 [V57,T39] ( 3, 0.61) ref -> x27 "guarded devirt return temp"
+; V58 tmp54 [V58,T19] ( 5, 1.78) 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.56) ref -> x1 "guarded devirt return temp"
-; V61 tmp57 [V61,T22] ( 5, 1.69) ref -> x0 single-def "guarded devirt arg temp"
+; V60 tmp56 [V60,T41] ( 3, 0.56) ref -> x1 "guarded devirt return temp"
+; V61 tmp57 [V61,T21] ( 5, 1.69) 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,T21] ( 6, 1.77) ref -> x21 single-def "field V37._typicalMethodDef (fldOffset=0x0)" P-INDEP
-; V64 tmp60 [V64,T13] ( 8, 2.35) ref -> x22 single-def "field V37._instantiatedType (fldOffset=0x8)" P-INDEP
-; V65 tmp61 [V65,T27] ( 3, 1.23) int -> x20 single-def "field V37._hashcode (fldOffset=0x10)" P-INDEP
+; V63 tmp59 [V63,T20] ( 6, 1.77) ref -> x21 single-def "field V37._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V64 tmp60 [V64,T12] ( 8, 2.35) ref -> x22 single-def "field V37._instantiatedType (fldOffset=0x8)" P-INDEP
+; V65 tmp61 [V65,T26] ( 3, 1.23) 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.49) 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,T41] ( 2, 0.57) ref -> x0 single-def "argument with side effect"
-; V72 cse0 [V72,T24] ( 3, 1.63) ref -> x0 "CSE - moderate"
-; V73 cse1 [V73,T09] ( 10, 3.63) long -> x24 multi-def "CSE - aggressive"
-; V74 rat0 [V74,T08] ( 6, 3.66) ref -> x2 class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
+;* V70 tmp66 [V70,T30] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V71 tmp67 [V71,T40] ( 2, 0.57) ref -> x0 single-def "argument with side effect"
+; V72 cse0 [V72,T23] ( 3, 1.63) ref -> x0 "CSE - moderate"
+; V73 cse1 [V73,T08] ( 10, 3.63) long -> x24 multi-def "CSE - aggressive"
;
; Lcl frame size = 32
@@ -146,7 +145,7 @@ G_M10698_IG07: ; 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_IG48
+ bne G_M10698_IG34
ldr x25, [x21, #0x10]
; gcrRegs +[x25]
;; size=32 bbWeight=0.54 PerfScore 6.51
@@ -162,7 +161,7 @@ G_M10698_IG10: ; bbWeight=0.37, gcrefRegs=2E80000 {x19 x21 x22 x23 x25},
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M10698_IG41
+ bne G_M10698_IG42
;; size=24 bbWeight=0.37 PerfScore 2.20
G_M10698_IG11: ; bbWeight=0.35, gcrefRegs=2E80000 {x19 x21 x22 x23 x25}, byrefRegs=0000 {}, byref, isz
ldr x0, [x23, #0x58]
@@ -172,10 +171,10 @@ G_M10698_IG11: ; bbWeight=0.35, gcrefRegs=2E80000 {x19 x21 x22 x23 x25},
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG49
+ bne G_M10698_IG35
ldr x26, [x0, #0x08]
; gcrRegs +[x26]
- b G_M10698_IG35
+ b G_M10698_IG36
;; size=36 bbWeight=0.35 PerfScore 4.58
G_M10698_IG12: ; bbWeight=0.44, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x21-x23 x25-x26] +[x20]
@@ -212,7 +211,7 @@ G_M10698_IG14: ; bbWeight=0.54, gcrefRegs=2E80000 {x19 x21 x22 x23 x25},
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M10698_IG43
+ bne G_M10698_IG41
;; size=72 bbWeight=0.54 PerfScore 9.77
G_M10698_IG15: ; bbWeight=0.49, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x10]
@@ -223,7 +222,7 @@ G_M10698_IG15: ; 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_IG51
+ bne G_M10698_IG47
ldr x27, [x0, #0x08]
; gcrRegs +[x27]
;; size=36 bbWeight=0.49 PerfScore 7.32
@@ -270,10 +269,10 @@ G_M10698_IG17: ; bbWeight=0.54, gcrefRegs=8600000 {x21 x22 x27}, byrefReg
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x24, x0
- bne G_M10698_IG54
+ bne G_M10698_IG50
ldr x0, [x21, #0x20]
; gcrRegs +[x0]
- cbz x0, G_M10698_IG53
+ cbz x0, G_M10698_IG49
;; size=32 bbWeight=0.54 PerfScore 5.43
G_M10698_IG18: ; bbWeight=0.54, gcrefRegs=8600001 {x0 x21 x22 x27}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E // code for Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int
@@ -296,7 +295,7 @@ G_M10698_IG18: ; bbWeight=0.54, gcrefRegs=8600001 {x0 x21 x22 x27}, byref
ldr x3, [x3]
blr x3
; gcrRegs -[x0]
- cbz w0, G_M10698_IG45
+ cbz w0, G_M10698_IG40
;; size=72 bbWeight=0.54 PerfScore 10.31
G_M10698_IG19: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x21-x22 x27]
@@ -323,7 +322,7 @@ G_M10698_IG21: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=860
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG52
+ bne G_M10698_IG48
movz x1, #0xD1FFAB1E // code for Internal.TypeSystem.Ecma.EcmaType:GetHashCode():int:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -361,13 +360,13 @@ G_M10698_IG23: ; bbWeight=0.46, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x24, x0
- bne G_M10698_IG58
+ bne G_M10698_IG54
ldr x22, [x21, #0x10]
; gcrRegs +[x22]
;; size=52 bbWeight=0.46 PerfScore 6.86
G_M10698_IG24: ; bbWeight=0.46, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19]
- cbz x22, G_M10698_IG44
+ cbz x22, G_M10698_IG39
;; size=4 bbWeight=0.46 PerfScore 0.46
G_M10698_IG25: ; bbWeight=0.31, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20]
@@ -375,7 +374,7 @@ G_M10698_IG25: ; bbWeight=0.31, gcrefRegs=700000 {x20 x21 x22}, byrefRegs
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.86
G_M10698_IG26: ; bbWeight=0.30, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20, #0x58]
@@ -385,7 +384,7 @@ G_M10698_IG26: ; bbWeight=0.30, gcrefRegs=700000 {x20 x21 x22}, byrefRegs
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG59
+ bne G_M10698_IG55
ldr x27, [x0, #0x08]
; gcrRegs +[x27]
;; size=32 bbWeight=0.30 PerfScore 3.57
@@ -396,7 +395,7 @@ G_M10698_IG27: ; bbWeight=0.31, gcrefRegs=8700000 {x20 x21 x22 x27}, byre
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.86
G_M10698_IG28: ; bbWeight=0.28, gcrefRegs=8700000 {x20 x21 x22 x27}, byrefRegs=0000 {}, byref, isz
ldr x0, [x22, #0x58]
@@ -406,7 +405,7 @@ G_M10698_IG28: ; bbWeight=0.28, gcrefRegs=8700000 {x20 x21 x22 x27}, byre
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG60
+ bne G_M10698_IG56
ldr x1, [x0, #0x08]
; gcrRegs +[x1]
;; size=32 bbWeight=0.28 PerfScore 3.38
@@ -451,20 +450,6 @@ G_M10698_IG32: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=180
ldr x1, [x1, #0x18]
blr x1
ldrsb wzr, [x0]
...
-40 (-2.33%) : 424198.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 -> 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,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,T19] ( 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,T18] ( 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.74) 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,T11] ( 8, 2.36) ref -> x25 "guarded devirt return temp"
+; V13 tmp9 [V13,T10] ( 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,T16] ( 8, 2.02) ref -> x25 "guarded devirt return temp"
+; V17 tmp13 [V17,T15] ( 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,T28] ( 2, 0.73) int -> x0
-; V23 tmp19 [V23,T27] ( 3, 1.48) ref -> x20 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V22 tmp18 [V22,T27] ( 2, 0.73) int -> x0
+; V23 tmp19 [V23,T26] ( 3, 1.48) 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.73) ref -> x26 "guarded devirt return temp"
+; V25 tmp21 [V25,T37] ( 3, 0.73) 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,T39] ( 3, 0.71) ref -> x20 "guarded devirt return temp"
-; V28 tmp24 [V28,T15] ( 5, 2.09) ref -> x0 single-def "guarded devirt arg temp"
+; V27 tmp23 [V27,T38] ( 3, 0.71) ref -> x20 "guarded devirt return temp"
+; V28 tmp24 [V28,T14] ( 5, 2.09) 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.65) ref -> x26 "guarded devirt return temp"
-; V31 tmp27 [V31,T18] ( 5, 1.96) ref -> x0 single-def "guarded devirt arg temp"
+; V30 tmp26 [V30,T39] ( 3, 0.65) ref -> x26 "guarded devirt return temp"
+; V31 tmp27 [V31,T17] ( 5, 1.96) 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,T10] ( 5, 2.93) ref -> x0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V38 tmp34 [V38,T35] ( 3, 0.98) ref -> x26 "guarded devirt return temp"
+; V37 tmp33 [V37,T08] ( 5, 2.93) ref -> x0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+; V38 tmp34 [V38,T34] ( 3, 0.98) 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.53) 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,T14] ( 2, 2.17) int -> x27 "impAppendStmt"
-; V50 tmp46 [V50,T31] ( 4, 1.09) ref -> x0 "guarded devirt return temp"
+; V49 tmp45 [V49,T13] ( 2, 2.17) int -> x27 "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.05) byref -> x27 single-def "impAppendStmt"
-; V53 tmp49 [V53,T47] ( 3, 0.02) int -> x0 "guarded devirt return temp"
-; V54 tmp50 [V54,T45] ( 5, 0.07) ref -> x0 single-def "guarded devirt arg temp"
+; V52 tmp48 [V52,T45] ( 2, 0.05) byref -> x27 single-def "impAppendStmt"
+; V53 tmp49 [V53,T46] ( 3, 0.02) int -> x0 "guarded devirt return temp"
+; V54 tmp50 [V54,T44] ( 5, 0.07) 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.95) ref -> [fp+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,T20] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V61 tmp57 [V61,T09] ( 4, 2.93) ref -> x0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V62 tmp58 [V62,T34] ( 2, 0.61) int -> x0
-; V63 tmp59 [V63,T29] ( 3, 1.25) ref -> x26 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V60 tmp56 [V60,T19] ( 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.61) int -> x0
+; V63 tmp59 [V63,T28] ( 3, 1.25) 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.61) ref -> x27 "guarded devirt return temp"
+; V65 tmp61 [V65,T40] ( 3, 0.61) 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.60) ref -> x26 "guarded devirt return temp"
-; V68 tmp64 [V68,T21] ( 5, 1.76) ref -> x0 single-def "guarded devirt arg temp"
+; V67 tmp63 [V67,T41] ( 3, 0.60) ref -> x26 "guarded devirt return temp"
+; V68 tmp64 [V68,T20] ( 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,T43] ( 3, 0.55) ref -> x27 "guarded devirt return temp"
-; V71 tmp67 [V71,T22] ( 5, 1.65) ref -> x0 single-def "guarded devirt arg temp"
+; V70 tmp66 [V70,T42] ( 3, 0.55) ref -> x27 "guarded devirt return temp"
+; V71 tmp67 [V71,T21] ( 5, 1.65) 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,T13] ( 8, 2.31) ref -> x22 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
-; V78 tmp74 [V78,T12] ( 8, 2.34) ref -> x23 single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
-; V79 tmp75 [V79,T30] ( 3, 1.22) int -> x25 single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
+; V77 tmp73 [V77,T12] ( 8, 2.31) ref -> x22 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V78 tmp74 [V78,T11] ( 8, 2.34) ref -> x23 single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
+; V79 tmp75 [V79,T29] ( 3, 1.22) 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.44) struct (24) [fp+0x18] 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,T44] ( 2, 0.55) 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,T43] ( 2, 0.55) 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,T07] ( 6, 4.09) long -> x21 "CSE - aggressive"
-; V89 rat0 [V89,T08] ( 6, 3.66) ref -> x2 class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
;
; Lcl frame size = 40
@@ -149,7 +148,7 @@ G_M10698_IG06: ; bbWeight=0.54, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs
; gcrRegs +[x24]
ldr x0, [x22]
cmp x0, x21
- bne G_M10698_IG58
+ bne G_M10698_IG54
b G_M10698_IG08
;; size=20 bbWeight=0.54 PerfScore 4.61
G_M10698_IG07: ; bbWeight=0.41, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
@@ -191,7 +190,7 @@ G_M10698_IG12: ; bbWeight=0.35, gcrefRegs=3C80000 {x19 x22 x23 x24 x25},
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG59
+ bne G_M10698_IG55
ldr x20, [x0, #0x08]
; gcrRegs +[x20]
;; size=32 bbWeight=0.35 PerfScore 4.19
@@ -212,7 +211,7 @@ G_M10698_IG14: ; bbWeight=0.33, gcrefRegs=3D80000 {x19 x20 x22 x23 x24 x2
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG60
+ bne G_M10698_IG56
ldr x26, [x0, #0x08]
; gcrRegs +[x26]
;; size=32 bbWeight=0.33 PerfScore 3.92
@@ -324,7 +323,7 @@ G_M10698_IG23: ; bbWeight=0.49, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG61
+ bne G_M10698_IG57
ldr x26, [x0, #0x08]
; gcrRegs +[x26]
;; size=36 bbWeight=0.49 PerfScore 7.32
@@ -380,10 +379,10 @@ G_M10698_IG29: ; bbWeight=0.54, gcrefRegs=4C00000 {x22 x23 x26}, byrefReg
ldr w27, [x23, #0x68]
ldr x0, [x22]
cmp x0, x21
- bne G_M10698_IG64
+ bne G_M10698_IG50
ldr x0, [x22, #0x20]
; gcrRegs +[x0]
- cbz x0, G_M10698_IG63
+ cbz x0, G_M10698_IG49
;; size=24 bbWeight=0.54 PerfScore 6.24
G_M10698_IG30: ; bbWeight=0.54, gcrefRegs=4C00001 {x0 x22 x23 x26}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E // code for Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int
@@ -406,7 +405,7 @@ G_M10698_IG30: ; bbWeight=0.54, gcrefRegs=4C00001 {x0 x22 x23 x26}, byref
ldr x3, [x3]
blr x3
; gcrRegs -[x0]
- cbz w0, G_M10698_IG49
+ cbz w0, G_M10698_IG51
;; size=72 bbWeight=0.54 PerfScore 10.31
G_M10698_IG31: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x22-x23 x26]
@@ -433,7 +432,7 @@ G_M10698_IG33: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=4C0
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG62
+ bne G_M10698_IG48
movz x1, #0xD1FFAB1E // code for Internal.TypeSystem.Ecma.EcmaType:GetHashCode():int:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -453,7 +452,7 @@ G_M10698_IG34: ; bbWeight=0.46, gcrefRegs=580000 {x19 x20 x22}, byrefRegs
beq G_M10698_IG46
ldr x0, [x22]
cmp x0, x21
- bne G_M10698_IG54
+ bne G_M10698_IG61
ldr x25, [x22, #0x10]
; gcrRegs +[x25]
;; size=40 bbWeight=0.46 PerfScore 6.18
@@ -467,7 +466,7 @@ G_M10698_IG36: ; bbWeight=0.31, gcrefRegs=2500000 {x20 x22 x25}, byrefReg
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M10698_IG56
+ bne G_M10698_IG52
;; size=24 bbWeight=0.31 PerfScore 1.84
G_M10698_IG37: ; bbWeight=0.29, gcrefRegs=2500000 {x20 x22 x25}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20, #0x58]
@@ -477,7 +476,7 @@ G_M10698_IG37: ; bbWeight=0.29, gcrefRegs=2500000 {x20 x22 x25}, byrefReg
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG55
+ bne G_M10698_IG62
;; size=28 bbWeight=0.29 PerfScore 2.65
G_M10698_IG38: ; bbWeight=0.29, gcrefRegs=2500001 {x0 x20 x22 x25}, byrefRegs=0000 {}, byref
ldr x26, [x0, #0x08]
@@ -490,7 +489,7 @@ G_M10698_IG39: ; bbWeight=0.31, gcrefRegs=6500000 {x20 x22 x25 x26}, byre
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M10698_IG57
+ bne G_M10698_IG53
;; size=24 bbWeight=0.31 PerfScore 1.84
G_M10698_IG40: ; bbWeight=0.28, gcrefRegs=6500000 {x20 x22 x25 x26}, byrefRegs=0000 {}, byref, isz
ldr x0, [x25, #0x58]
@@ -500,7 +499,7 @@ G_M10698_IG40: ; bbWeight=0.28, gcrefRegs=6500000 {x20 x22 x25 x26}, byre
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG66
+ bne G_M10698_IG63
ldr x27, [x0, #0x08]
; gcrRegs +[x27]
;; size=32 bbWeight=0.28 PerfScore 3.31
@@ -562,20 +561,6 @@ G_M10698_IG46: ; 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_IG51
...
libraries_tests.run.linux.arm64.Release.mch
+0 (0.00%) : 43273.dasm - System.Collections.Immutable.ImmutableArray:CreateRangeSystem.__Canon:System.Collections.Immutable.ImmutableArray`1System.__Canon
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 TypeCtx [V00,T02] ( 11, 5.42) long -> x20 single-def
-; V01 arg0 [V01,T01] ( 8, 5.75) ref -> x19 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V01 arg0 [V01,T01] ( 8, 5.69) ref -> x19 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V02 loc0 [V02,T07] ( 5, 2.44) ref -> x0 class-hnd single-def <System.Collections.Immutable.IImmutableArray>
; V03 loc1 [V03 ] ( 2, 1.18) int -> [fp+0x10] do-not-enreg[X] addr-exposed ld-addr-op
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Array>
@@ -71,7 +71,7 @@ G_M43512_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
cbz x19, G_M43512_IG31
mov x0, x19
; gcrRegs +[x0]
- cbz x0, G_M43512_IG06
+ cbz x0, G_M43512_IG05
;; size=12 bbWeight=1 PerfScore 2.50
G_M43512_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0]
@@ -80,38 +80,27 @@ G_M43512_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x1, x0
- beq G_M43512_IG05
+ bne G_M43512_IG27
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M43512_IG04: ; bbWeight=0.20, 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]
- b G_M43512_IG06
- ;; size=24 bbWeight=0.20 PerfScore 0.78
-G_M43512_IG05: ; bbWeight=0.30, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
+G_M43512_IG04: ; bbWeight=0.36, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, xzr
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.30 PerfScore 0.15
-G_M43512_IG06: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- cbnz x0, G_M43512_IG19
+ ;; size=4 bbWeight=0.36 PerfScore 0.18
+G_M43512_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ cbnz x0, G_M43512_IG18
;; size=4 bbWeight=1 PerfScore 1.00
-G_M43512_IG07: ; bbWeight=0.78, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG06: ; bbWeight=0.78, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x0, [x20, #0x38]
ldr x1, [x0, #0x08]
cmp x1, #24
- ble G_M43512_IG18
+ ble G_M43512_IG17
;; size=16 bbWeight=0.78 PerfScore 5.85
-G_M43512_IG08: ; bbWeight=0.62, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG07: ; bbWeight=0.62, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x0, #0x18]
- cbz x0, G_M43512_IG18
+ cbz x0, G_M43512_IG17
;; size=8 bbWeight=0.62 PerfScore 2.50
-G_M43512_IG09: ; bbWeight=0.78, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG08: ; bbWeight=0.78, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
add x2, fp, #16 // [V03 loc1]
mov x1, x19
; gcrRegs +[x1]
@@ -121,19 +110,19 @@ G_M43512_IG09: ; bbWeight=0.78, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x3, [x3]
blr x3
; gcrRegs -[x1]
- cbz w0, G_M43512_IG14
+ cbz w0, G_M43512_IG13
;; size=32 bbWeight=0.78 PerfScore 5.85
-G_M43512_IG10: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG09: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20, #0x38]
ldr x1, [x0, #0x08]
cmp x1, #48
- ble G_M43512_IG26
+ ble G_M43512_IG25
;; size=16 bbWeight=0.40 PerfScore 2.99
-G_M43512_IG11: ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG10: ; bbWeight=0.32, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x0, #0x30]
- cbz x0, G_M43512_IG26
+ cbz x0, G_M43512_IG25
;; size=8 bbWeight=0.32 PerfScore 1.28
-G_M43512_IG12: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M43512_IG11: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
ldr w2, [fp, #0x10] // [V03 loc1]
@@ -144,23 +133,23 @@ G_M43512_IG12: ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
blr x3
; gcrRegs -[x1 x19] +[x0]
;; size=28 bbWeight=0.40 PerfScore 3.19
-G_M43512_IG13: ; bbWeight=0.40, epilog, nogc, extend
+G_M43512_IG12: ; bbWeight=0.40, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=0.40 PerfScore 1.20
-G_M43512_IG14: ; bbWeight=0.38, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43512_IG13: ; bbWeight=0.38, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x19]
ldr x0, [x20, #0x38]
ldr x1, [x0, #0x08]
cmp x1, #32
- ble G_M43512_IG27
+ ble G_M43512_IG26
;; size=16 bbWeight=0.38 PerfScore 2.86
-G_M43512_IG15: ; bbWeight=0.30, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG14: ; bbWeight=0.30, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x0, #0x20]
- cbz x0, G_M43512_IG27
+ cbz x0, G_M43512_IG26
;; size=8 bbWeight=0.30 PerfScore 1.22
-G_M43512_IG16: ; bbWeight=0.38, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M43512_IG15: ; bbWeight=0.38, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[]
@@ -170,21 +159,21 @@ G_M43512_IG16: ; bbWeight=0.38, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
blr x2
; gcrRegs -[x1 x19] +[x0]
;; size=24 bbWeight=0.38 PerfScore 2.29
-G_M43512_IG17: ; bbWeight=0.38, epilog, nogc, extend
+G_M43512_IG16: ; bbWeight=0.38, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=0.38 PerfScore 1.14
-G_M43512_IG18: ; bbWeight=0.28, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M43512_IG17: ; bbWeight=0.28, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x19]
mov x0, x20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- b G_M43512_IG09
+ b G_M43512_IG08
;; size=24 bbWeight=0.28 PerfScore 1.12
-G_M43512_IG19: ; bbWeight=0.22, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG18: ; bbWeight=0.22, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19] +[x0]
ldr x11, [x0]
movz x1, #0xD1FFAB1E
@@ -193,11 +182,11 @@ G_M43512_IG19: ; bbWeight=0.22, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
cmp x11, x1
bne G_M43512_IG30
;; size=24 bbWeight=0.22 PerfScore 1.32
-G_M43512_IG20: ; bbWeight=0.18, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M43512_IG19: ; bbWeight=0.18, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr x19, [x0, #0x08]
; gcrRegs +[x19]
;; size=4 bbWeight=0.18 PerfScore 0.54
-G_M43512_IG21: ; bbWeight=0.22, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG20: ; bbWeight=0.22, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
cbz x19, G_M43512_IG32
ldr x0, [x20, #0x38]
@@ -205,11 +194,11 @@ G_M43512_IG21: ; bbWeight=0.22, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
cmp x1, #56
ble G_M43512_IG28
;; size=20 bbWeight=0.22 PerfScore 1.87
-G_M43512_IG22: ; bbWeight=0.18, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG21: ; bbWeight=0.18, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x2, [x0, #0x38]
cbz x2, G_M43512_IG28
;; size=8 bbWeight=0.18 PerfScore 0.70
-G_M43512_IG23: ; bbWeight=0.22, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG22: ; bbWeight=0.22, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x0, x2
mov x3, x19
; gcrRegs +[x3]
@@ -217,41 +206,52 @@ G_M43512_IG23: ; bbWeight=0.22, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
cmp x1, x2
bne G_M43512_IG29
;; size=20 bbWeight=0.22 PerfScore 1.21
-G_M43512_IG24: ; bbWeight=0.22, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref
+G_M43512_IG23: ; bbWeight=0.22, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
mov x0, x3
; gcrRegs +[x0]
;; size=4 bbWeight=0.22 PerfScore 0.11
-G_M43512_IG25: ; bbWeight=0.22, epilog, nogc, extend
+G_M43512_IG24: ; bbWeight=0.22, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=0.22 PerfScore 0.66
-G_M43512_IG26: ; bbWeight=0.14, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M43512_IG25: ; bbWeight=0.14, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x3] +[x19]
mov x0, x20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- b G_M43512_IG12
+ b G_M43512_IG11
;; size=24 bbWeight=0.14 PerfScore 0.57
-G_M43512_IG27: ; bbWeight=0.14, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M43512_IG26: ; bbWeight=0.14, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- b G_M43512_IG16
+ b G_M43512_IG15
;; size=24 bbWeight=0.14 PerfScore 0.55
+G_M43512_IG27: ; bbWeight=0.14, 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]
+ b G_M43512_IG05
+ ;; size=24 bbWeight=0.14 PerfScore 0.54
G_M43512_IG28: ; bbWeight=0.08, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
mov x0, x20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov x2, x0
- b G_M43512_IG23
+ b G_M43512_IG22
;; size=28 bbWeight=0.08 PerfScore 0.36
G_M43512_IG29: ; bbWeight=0.06, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
@@ -260,7 +260,7 @@ G_M43512_IG29: ; bbWeight=0.06, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs -[x1 x19] +[x0]
mov x3, x0
; gcrRegs +[x3]
- b G_M43512_IG24
+ b G_M43512_IG23
;; size=16 bbWeight=0.06 PerfScore 0.17
G_M43512_IG30: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs -[x3]
@@ -271,7 +271,7 @@ G_M43512_IG30: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
blr x1
mov x19, x0
; gcrRegs +[x19]
...
+0 (0.00%) : 123549.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.32) ref -> x20 this class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope>
-; V01 arg1 [V01,T00] ( 12, 6.30) ref -> x19 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 12, 6.19) ref -> x19 class-hnd single-def <System.Object>
; V02 loc0 [V02,T10] ( 3, 0.14) ubyte -> x21
; V03 loc1 [V03,T09] ( 4, 0.14) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey,System.Object]>
; V04 loc2 [V04 ] ( 6, 0.34) ubyte -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op
@@ -33,7 +33,7 @@
;* V21 tmp13 [V21,T16] ( 0, 0 ) ref -> zero-ref single-def "field V16._source (fldOffset=0x0)" P-INDEP
; V22 tmp14 [V22 ] ( 2, 0.00) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V18.m_task (fldOffset=0x0)" P-DEP
; V23 PSPSym [V23,T04] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
-; V24 rat0 [V24,T02] ( 5, 7.33) ref -> x2 class-hnd "replacement local" <System.IDisposable>
+; V24 rat0 [V24,T02] ( 5, 7.24) ref -> x2 class-hnd "replacement local" <System.IDisposable>
; V25 rat1 [V25,T01] ( 6, 7.50) ref -> x2 class-hnd "replacement local" <<unknown class>>
;
; Lcl frame size = 40
@@ -53,7 +53,7 @@ G_M19770_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=36 bbWeight=1 PerfScore 7.00
G_M19770_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cmp x20, x19
- beq G_M19770_IG11
+ beq G_M19770_IG09
mov x2, x19
; gcrRegs +[x2]
cbz x2, G_M19770_IG04
@@ -64,7 +64,7 @@ G_M19770_IG03: ; bbWeight=0.50, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x1, x0
- bne G_M19770_IG08
+ bne G_M19770_IG12
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M19770_IG04: ; bbWeight=1, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref, isz
cbnz x2, G_M19770_IG13
@@ -73,7 +73,7 @@ G_M19770_IG05: ; bbWeight=0.94, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x2]
mov x2, x19
; gcrRegs +[x2]
- cbz x2, G_M19770_IG10
+ cbz x2, G_M19770_IG08
;; size=8 bbWeight=0.94 PerfScore 1.41
G_M19770_IG06: ; bbWeight=0.47, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x1, [x2]
@@ -81,10 +81,29 @@ G_M19770_IG06: ; bbWeight=0.47, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x1, x0
- beq G_M19770_IG09
+ bne G_M19770_IG11
;; size=24 bbWeight=0.47 PerfScore 2.81
-G_M19770_IG07: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M19770_IG07: ; bbWeight=0.34, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
+ mov x2, xzr
+ ; gcrRegs +[x2]
+ ;; size=4 bbWeight=0.34 PerfScore 0.17
+G_M19770_IG08: ; bbWeight=0.94, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbnz x2, G_M19770_IG13
+ ;; size=4 bbWeight=0.94 PerfScore 0.94
+G_M19770_IG09: ; bbWeight=0.93, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x2 x20]
+ mov x0, x19
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=0.93 PerfScore 0.47
+G_M19770_IG10: ; bbWeight=0.93, epilog, nogc, extend
+ ldr x21, [sp, #0x48]
+ ldp x19, x20, [sp, #0x38]
+ ldp fp, lr, [sp], #0x50
+ ret lr
+ ;; size=16 bbWeight=0.93 PerfScore 4.66
+G_M19770_IG11: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0] +[x20]
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -95,9 +114,9 @@ G_M19770_IG07: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcr arg pop 0
mov x2, x0
; gcrRegs +[x2]
- b G_M19770_IG10
- ;; size=28 bbWeight=0.20 PerfScore 0.89
-G_M19770_IG08: ; bbWeight=0.17, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ b G_M19770_IG08
+ ;; size=28 bbWeight=0.13 PerfScore 0.57
+G_M19770_IG12: ; bbWeight=0.12, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x2]
mov x1, x19
; gcrRegs +[x1]
@@ -110,28 +129,9 @@ G_M19770_IG08: ; bbWeight=0.17, gcrefRegs=180000 {x19 x20}, byrefRegs=000
mov x2, x0
; gcrRegs +[x2]
b G_M19770_IG04
- ;; size=28 bbWeight=0.17 PerfScore 0.74
-G_M19770_IG09: ; bbWeight=0.27, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=28 bbWeight=0.12 PerfScore 0.54
+G_M19770_IG13: ; bbWeight=0.07, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x2]
- mov x2, xzr
- ; gcrRegs +[x2]
- ;; size=4 bbWeight=0.27 PerfScore 0.14
-G_M19770_IG10: ; bbWeight=0.94, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref, isz
- cbnz x2, G_M19770_IG13
- ;; size=4 bbWeight=0.94 PerfScore 0.94
-G_M19770_IG11: ; bbWeight=0.93, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2 x20]
- mov x0, x19
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=0.93 PerfScore 0.47
-G_M19770_IG12: ; bbWeight=0.93, epilog, nogc, extend
- ldr x21, [sp, #0x48]
- ldp x19, x20, [sp, #0x38]
- ldp fp, lr, [sp], #0x50
- ret lr
- ;; size=16 bbWeight=0.93 PerfScore 4.66
-G_M19770_IG13: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0] +[x20]
mov w21, wzr
ldr x0, [x20, #0x10]
; gcrRegs +[x0]
@@ -241,7 +241,7 @@ G_M19770_IG21: ; bbWeight=0.07, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcr arg pop 0
;; size=16 bbWeight=0.07 PerfScore 0.41
G_M19770_IG22: ; bbWeight=0.07, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz w21, G_M19770_IG11
+ cbz w21, G_M19770_IG09
;; size=4 bbWeight=0.07 PerfScore 0.07
G_M19770_IG23: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x19
@@ -342,7 +342,7 @@ G_M19770_IG26: ; bbWeight=0.07, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x0, [x0]
blr x0
; gcr arg pop 0
- b G_M19770_IG11
+ b G_M19770_IG09
;; size=24 bbWeight=0.07 PerfScore 0.45
G_M19770_IG27: ; bbWeight=0, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
@@ -382,7 +382,7 @@ G_M19770_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 788, prolog size 36, PerfScore 30.50, instruction count 197, allocated bytes for code 788 (MethodHash=dc07b2c5) for method Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
+; Total bytes of code 788, prolog size 36, PerfScore 30.02, instruction count 197, allocated bytes for code 788 (MethodHash=dc07b2c5) for method Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
; ============================================================
Unwind Info:
+0 (0.00%) : 385213.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 15, 3.72) ref -> x20 this class-hnd single-def <System.Threading.Tasks.Task>
-; V01 arg1 [V01,T01] ( 12, 5.83) ref -> x19 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T01] ( 12, 5.78) ref -> x19 class-hnd single-def <System.Object>
; V02 loc0 [V02,T20] ( 6, 2 ) ref -> x22 class-hnd exact single-def <System.Threading.Tasks.TplEventSource>
; V03 loc1 [V03,T19] ( 5, 2.09) ubyte -> x23
; V04 loc2 [V04,T11] ( 11, 2.65) ubyte -> x24
@@ -136,7 +136,7 @@ G_M51094_IG03: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=00
; byrRegs +[x0]
ldapr w0, [x0]
; byrRegs -[x0]
- tbnz w0, #6, G_M51094_IG08
+ tbnz w0, #6, G_M51094_IG39
;; size=12 bbWeight=1 PerfScore 4.50
G_M51094_IG04: ; bbWeight=0.91, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
bl <unknown method>
@@ -146,7 +146,7 @@ G_M51094_IG05: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=00
uxtb w24, w0
mov x0, x19
; gcrRegs +[x0]
- cbz x0, G_M51094_IG10
+ cbz x0, G_M51094_IG08
;; size=12 bbWeight=1 PerfScore 2.00
G_M51094_IG06: ; bbWeight=0.50, gcrefRegs=580001 {x0 x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0]
@@ -155,38 +155,22 @@ G_M51094_IG06: ; bbWeight=0.50, gcrefRegs=580001 {x0 x19 x20 x22}, byrefR
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x1, x0
- beq G_M51094_IG09
+ bne G_M51094_IG35
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M51094_IG07: ; bbWeight=0.20, gcrefRegs=580000 {x19 x20 x22}, 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_M51094_IG10
- ;; size=24 bbWeight=0.20 PerfScore 0.78
-G_M51094_IG08: ; bbWeight=0.09, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov w0, wzr
- b G_M51094_IG05
- ;; size=8 bbWeight=0.09 PerfScore 0.13
-G_M51094_IG09: ; bbWeight=0.30, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
+G_M51094_IG07: ; bbWeight=0.35, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
mov x0, xzr
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.30 PerfScore 0.15
-G_M51094_IG10: ; bbWeight=1, gcrefRegs=580001 {x0 x19 x20 x22}, byrefRegs=0000 {}, byref, isz
- cbnz x0, G_M51094_IG37
+ ;; size=4 bbWeight=0.35 PerfScore 0.17
+G_M51094_IG08: ; bbWeight=1, gcrefRegs=580001 {x0 x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+ cbnz x0, G_M51094_IG40
;; size=4 bbWeight=1 PerfScore 1.00
-G_M51094_IG11: ; bbWeight=0.70, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG09: ; bbWeight=0.70, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
mov x0, x19
; gcrRegs +[x0]
- cbz x0, G_M51094_IG13
+ cbz x0, G_M51094_IG11
;; size=8 bbWeight=0.70 PerfScore 1.06
-G_M51094_IG12: ; bbWeight=0.35, gcrefRegs=580001 {x0 x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG10: ; bbWeight=0.35, gcrefRegs=580001 {x0 x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0]
movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
@@ -194,36 +178,36 @@ G_M51094_IG12: ; bbWeight=0.35, gcrefRegs=580001 {x0 x19 x20 x22}, byrefR
cmp x1, x2
beq G_M51094_IG77
;; size=24 bbWeight=0.35 PerfScore 2.11
-G_M51094_IG13: ; bbWeight=0.70, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG11: ; bbWeight=0.70, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
mov x25, x19
; gcrRegs +[x25]
- cbz x25, G_M51094_IG15
+ cbz x25, G_M51094_IG13
;; size=8 bbWeight=0.70 PerfScore 1.06
-G_M51094_IG14: ; bbWeight=0.35, gcrefRegs=2580000 {x19 x20 x22 x25}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG12: ; bbWeight=0.35, gcrefRegs=2580000 {x19 x20 x22 x25}, byrefRegs=0000 {}, byref, isz
ldr x1, [x25]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x1, x0
- bne G_M51094_IG35
+ bne G_M51094_IG33
;; size=24 bbWeight=0.35 PerfScore 2.11
-G_M51094_IG15: ; bbWeight=0.70, gcrefRegs=2580000 {x19 x20 x22 x25}, byrefRegs=0000 {}, byref, isz
- cbz x25, G_M51094_IG25
+G_M51094_IG13: ; bbWeight=0.70, gcrefRegs=2580000 {x19 x20 x22 x25}, byrefRegs=0000 {}, byref, isz
+ cbz x25, G_M51094_IG23
;; size=4 bbWeight=0.70 PerfScore 0.70
-G_M51094_IG16: ; bbWeight=0.61, gcrefRegs=2100000 {x20 x25}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG14: ; bbWeight=0.61, gcrefRegs=2100000 {x20 x25}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19 x22]
ldr x0, [x25]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M51094_IG29
+ bne G_M51094_IG27
;; size=24 bbWeight=0.61 PerfScore 3.63
-G_M51094_IG17: ; bbWeight=0.58, gcrefRegs=2100000 {x20 x25}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG15: ; bbWeight=0.58, gcrefRegs=2100000 {x20 x25}, byrefRegs=0000 {}, byref, isz
cbz w24, G_M51094_IG41
;; size=4 bbWeight=0.58 PerfScore 0.58
-G_M51094_IG18: ; bbWeight=0.55, gcrefRegs=2100000 {x20 x25}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG16: ; bbWeight=0.55, gcrefRegs=2100000 {x20 x25}, byrefRegs=0000 {}, byref, isz
ldr x27, [x25, #0x20]
; gcrRegs +[x27]
mrs x0, tpidr_el0
@@ -238,11 +222,11 @@ G_M51094_IG18: ; bbWeight=0.55, gcrefRegs=2100000 {x20 x25}, byrefRegs=00
add x28, x0, #16
; byrRegs +[x28]
;; size=40 bbWeight=0.55 PerfScore 10.36
-G_M51094_IG19: ; bbWeight=0.55, gcrefRegs=A100000 {x20 x25 x27}, byrefRegs=10000000 {x28}, byref, isz
+G_M51094_IG17: ; bbWeight=0.55, gcrefRegs=A100000 {x20 x25 x27}, byrefRegs=10000000 {x28}, byref, isz
; byrRegs -[x0]
ldr x0, [x28, #0x20]
; gcrRegs +[x0]
- cbnz x0, G_M51094_IG20
+ cbnz x0, G_M51094_IG18
movz x0, #0xD1FFAB1E // code for <unknown method>
; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
@@ -253,13 +237,13 @@ G_M51094_IG19: ; bbWeight=0.55, gcrefRegs=A100000 {x20 x25 x27}, byrefReg
; byrRegs -[x28]
; gcr arg pop 0
;; size=28 bbWeight=0.55 PerfScore 5.18
-G_M51094_IG20: ; bbWeight=0.55, gcrefRegs=A100001 {x0 x20 x25 x27}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG18: ; bbWeight=0.55, gcrefRegs=A100001 {x0 x20 x25 x27}, byrefRegs=0000 {}, byref, isz
ldr x3, [x0, #0x10]
; gcrRegs +[x3]
cmp x27, x3
bne G_M51094_IG41
;; size=12 bbWeight=0.55 PerfScore 2.45
-G_M51094_IG21: ; bbWeight=0.33, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG19: ; bbWeight=0.33, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x3 x20 x27]
ldr x27, [x21, #-0x50]
; gcrRegs +[x27]
@@ -277,7 +261,7 @@ G_M51094_IG21: ; bbWeight=0.33, gcrefRegs=2000000 {x25}, byrefRegs=0000 {
add x4, x3, #16
; byrRegs +[x4]
;; size=44 bbWeight=0.33 PerfScore 7.25
-G_M51094_IG22: ; bbWeight=0.33, gcrefRegs=1A000000 {x25 x27 x28}, byrefRegs=0010 {x4}, byref
+G_M51094_IG20: ; bbWeight=0.33, gcrefRegs=1A000000 {x25 x27 x28}, byrefRegs=0010 {x4}, byref
; byrRegs -[x3]
add x3, x4, #80
; byrRegs +[x3]
@@ -297,7 +281,7 @@ G_M51094_IG22: ; bbWeight=0.33, gcrefRegs=1A000000 {x25 x27 x28}, byrefRe
; byrRegs -[x3]
; gcr arg pop 0
;; size=36 bbWeight=0.33 PerfScore 2.47
-G_M51094_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51094_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Threading.Tasks.Task:LogFinishCompletionNotification()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -305,7 +289,7 @@ G_M51094_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x0
; gcr arg pop 0
;; size=20 bbWeight=1 PerfScore 5.50
-G_M51094_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M51094_IG22: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x80]
ldp x25, x26, [sp, #0x70]
ldp x23, x24, [sp, #0x60]
@@ -314,24 +298,24 @@ G_M51094_IG24: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x90
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M51094_IG25: ; bbWeight=0.10, gcVars=00000000000000000000000000000000 {}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M51094_IG23: ; bbWeight=0.10, gcVars=00000000000000000000000000000000 {}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x20 x22]
mov x1, x19
; gcrRegs +[x1]
- cbz x1, G_M51094_IG27
+ cbz x1, G_M51094_IG25
;; size=8 bbWeight=0.10 PerfScore 0.15
-G_M51094_IG26: ; bbWeight=0.05, gcrefRegs=580002 {x1 x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG24: ; bbWeight=0.05, gcrefRegs=580002 {x1 x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x0, [x1]
movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x0, x2
- bne G_M51094_IG33
+ bne G_M51094_IG31
;; size=24 bbWeight=0.05 PerfScore 0.30
-G_M51094_IG27: ; bbWeight=0.10, gcrefRegs=580002 {x1 x19 x20 x22}, byrefRegs=0000 {}, byref, isz
- cbz x1, G_M51094_IG31
+G_M51094_IG25: ; bbWeight=0.10, gcrefRegs=580002 {x1 x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+ cbz x1, G_M51094_IG29
;; size=4 bbWeight=0.10 PerfScore 0.10
-G_M51094_IG28: ; bbWeight=0.07, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}, byref
+G_M51094_IG26: ; bbWeight=0.07, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19 x22]
mov x0, x20
; gcrRegs +[x0]
@@ -343,9 +327,9 @@ G_M51094_IG28: ; bbWeight=0.07, gcrefRegs=100002 {x1 x20}, byrefRegs=0000
blr x3
; gcrRegs -[x0-x1 x20]
; gcr arg pop 0
- b G_M51094_IG23
+ b G_M51094_IG21
;; size=32 bbWeight=0.07 PerfScore 0.49
-G_M51094_IG29: ; bbWeight=0.61, gcrefRegs=2100000 {x20 x25}, byrefRegs=0000 {}, byref
+G_M51094_IG27: ; bbWeight=0.61, gcrefRegs=2100000 {x20 x25}, byrefRegs=0000 {}, byref
; gcrRegs +[x20 x25]
mov x0, x25
; gcrRegs +[x0]
@@ -358,25 +342,25 @@ G_M51094_IG29: ; bbWeight=0.61, gcrefRegs=2100000 {x20 x25}, byrefRegs=00
blr x3
; gcrRegs -[x0-x1 x20 x25]
; gcr arg pop 0
- b G_M51094_IG23
+ b G_M51094_IG21
;; size=32 bbWeight=0.61 PerfScore 7.57
-G_M51094_IG30: ; bbWeight=0.25, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG28: ; bbWeight=0.25, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x25]
ldr x26, [x21, #-0x78]
; gcrRegs +[x26]
- cbnz x26, G_M51094_IG39
- b G_M51094_IG34
+ cbnz x26, G_M51094_IG37
+ b G_M51094_IG32
;; size=12 bbWeight=0.25 PerfScore 1.26
-G_M51094_IG31: ; bbWeight=0.03, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M51094_IG29: ; bbWeight=0.03, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25-x26] +[x19-x20 x22]
mov x26, x19
; gcrRegs +[x26]
cbz x26, G_M51094_IG43
;; size=8 bbWeight=0.03 PerfScore 0.05
-G_M51094_IG32: ; bbWeight=0.02, gcrefRegs=4580000 {x19 x20 x22 x26}, byrefRegs=0000 {}, byref
+G_M51094_IG30: ; bbWeight=0.02, gcrefRegs=4580000 {x19 x20 x22 x26}, byrefRegs=0000 {}, byref
b G_M51094_IG42
;; size=4 bbWeight=0.02 PerfScore 0.02
...
+4 (+0.64%) : 78434.dasm - System.Collections.Immutable.ImmutableArray:CreateRangeSystem.__Canon:System.Collections.Immutable.ImmutableArray`1System.__Canon
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 TypeCtx [V00,T01] ( 11, 5.49) long -> x20 single-def
-; V01 arg0 [V01,T00] ( 8, 5.91) ref -> x19 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V01 arg0 [V01,T00] ( 8, 5.83) ref -> x19 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V02 loc0 [V02,T08] ( 5, 2.33) ref -> x0 class-hnd single-def <System.Collections.Immutable.IImmutableArray>
; V03 loc1 [V03 ] ( 2, 1.26) int -> [fp+0x10] do-not-enreg[X] addr-exposed ld-addr-op
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Array>
@@ -54,7 +54,7 @@
; V42 rat9 [V42,T14] ( 3, 1.64) long -> x0 "runtime lookup"
; V43 rat10 [V43,T09] ( 3, 2.29) long -> x0 "spilling expr"
; V44 rat11 [V44,T11] ( 3, 1.83) long -> x0 "fgMakeTemp is creating a new local variable"
-; V45 rat12 [V45,T02] ( 5, 7.48) ref -> x0 class-hnd "replacement local" <System.Collections.Immutable.IImmutableArray>
+; V45 rat12 [V45,T02] ( 5, 7.33) ref -> x0 class-hnd "replacement local" <System.Collections.Immutable.IImmutableArray>
;
; Lcl frame size = 16
@@ -71,7 +71,7 @@ G_M43512_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
cbz x19, G_M43512_IG30
mov x0, x19
; gcrRegs +[x0]
- cbz x0, G_M43512_IG05
+ cbz x0, G_M43512_IG04
;; size=12 bbWeight=1 PerfScore 2.50
G_M43512_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0]
@@ -79,33 +79,23 @@ G_M43512_IG03: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- beq G_M43512_IG05
+ bne G_M43512_IG24
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M43512_IG04: ; bbWeight=0.24, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- 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]
- ;; size=20 bbWeight=0.24 PerfScore 0.72
-G_M43512_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- cbnz x0, G_M43512_IG18
+G_M43512_IG04: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ cbnz x0, G_M43512_IG17
;; size=4 bbWeight=1 PerfScore 1.00
-G_M43512_IG06: ; bbWeight=0.83, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG05: ; bbWeight=0.83, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x0, [x20, #0x38]
ldr x1, [x0, #0x08]
cmp x1, #24
- ble G_M43512_IG17
+ ble G_M43512_IG16
;; size=16 bbWeight=0.83 PerfScore 6.26
-G_M43512_IG07: ; bbWeight=0.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG06: ; bbWeight=0.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x0, #0x18]
- cbz x0, G_M43512_IG17
+ cbz x0, G_M43512_IG16
;; size=8 bbWeight=0.67 PerfScore 2.67
-G_M43512_IG08: ; bbWeight=0.83, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG07: ; bbWeight=0.83, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
add x2, fp, #16 // [V03 loc1]
mov x1, x19
; gcrRegs +[x1]
@@ -115,19 +105,19 @@ G_M43512_IG08: ; bbWeight=0.83, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x3, [x3]
blr x3
; gcrRegs -[x1]
- cbz w0, G_M43512_IG13
+ cbz w0, G_M43512_IG12
;; size=32 bbWeight=0.83 PerfScore 6.26
-G_M43512_IG09: ; bbWeight=0.43, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG08: ; bbWeight=0.43, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20, #0x38]
ldr x1, [x0, #0x08]
cmp x1, #48
ble G_M43512_IG25
;; size=16 bbWeight=0.43 PerfScore 3.19
-G_M43512_IG10: ; bbWeight=0.34, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG09: ; bbWeight=0.34, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x0, #0x30]
cbz x0, G_M43512_IG25
;; size=8 bbWeight=0.34 PerfScore 1.36
-G_M43512_IG11: ; bbWeight=0.43, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M43512_IG10: ; bbWeight=0.43, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
ldr w2, [fp, #0x10] // [V03 loc1]
@@ -138,23 +128,23 @@ G_M43512_IG11: ; bbWeight=0.43, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
blr x3
; gcrRegs -[x1 x19] +[x0]
;; size=28 bbWeight=0.43 PerfScore 3.40
-G_M43512_IG12: ; bbWeight=0.43, epilog, nogc, extend
+G_M43512_IG11: ; bbWeight=0.43, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=0.43 PerfScore 1.28
-G_M43512_IG13: ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43512_IG12: ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x19]
ldr x0, [x20, #0x38]
ldr x1, [x0, #0x08]
cmp x1, #32
ble G_M43512_IG26
;; size=16 bbWeight=0.41 PerfScore 3.07
-G_M43512_IG14: ; bbWeight=0.33, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG13: ; bbWeight=0.33, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x0, #0x20]
cbz x0, G_M43512_IG26
;; size=8 bbWeight=0.33 PerfScore 1.31
-G_M43512_IG15: ; bbWeight=0.41, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M43512_IG14: ; bbWeight=0.41, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[]
@@ -164,21 +154,21 @@ G_M43512_IG15: ; bbWeight=0.41, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
blr x2
; gcrRegs -[x1 x19] +[x0]
;; size=24 bbWeight=0.41 PerfScore 2.45
-G_M43512_IG16: ; bbWeight=0.41, epilog, nogc, extend
+G_M43512_IG15: ; bbWeight=0.41, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=0.41 PerfScore 1.23
-G_M43512_IG17: ; bbWeight=0.30, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M43512_IG16: ; bbWeight=0.30, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x19]
mov x0, x20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- b G_M43512_IG08
+ b G_M43512_IG07
;; size=24 bbWeight=0.30 PerfScore 1.20
-G_M43512_IG18: ; bbWeight=0.17, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG17: ; bbWeight=0.17, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19] +[x0]
ldr x11, [x0]
movz x1, #0xD1FFAB1E
@@ -187,11 +177,11 @@ G_M43512_IG18: ; bbWeight=0.17, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
cmp x11, x1
bne G_M43512_IG29
;; size=24 bbWeight=0.17 PerfScore 0.99
-G_M43512_IG19: ; bbWeight=0.15, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M43512_IG18: ; bbWeight=0.15, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr x19, [x0, #0x08]
; gcrRegs +[x19]
;; size=4 bbWeight=0.15 PerfScore 0.45
-G_M43512_IG20: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG19: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
cbz x19, G_M43512_IG31
ldr x0, [x20, #0x38]
@@ -199,11 +189,11 @@ G_M43512_IG20: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
cmp x1, #56
ble G_M43512_IG27
;; size=20 bbWeight=0.17 PerfScore 1.41
-G_M43512_IG21: ; bbWeight=0.13, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG20: ; bbWeight=0.13, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x2, [x0, #0x38]
cbz x2, G_M43512_IG27
;; size=8 bbWeight=0.13 PerfScore 0.53
-G_M43512_IG22: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG21: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x0, x2
mov x3, x19
; gcrRegs +[x3]
@@ -211,24 +201,35 @@ G_M43512_IG22: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
cmp x1, x2
bne G_M43512_IG28
;; size=20 bbWeight=0.17 PerfScore 0.91
-G_M43512_IG23: ; bbWeight=0.17, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref
+G_M43512_IG22: ; bbWeight=0.17, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
mov x0, x3
; gcrRegs +[x0]
;; size=4 bbWeight=0.17 PerfScore 0.08
-G_M43512_IG24: ; bbWeight=0.17, epilog, nogc, extend
+G_M43512_IG23: ; bbWeight=0.17, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=0.17 PerfScore 0.50
-G_M43512_IG25: ; bbWeight=0.15, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M43512_IG24: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x3] +[x19]
+ 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]
+ b G_M43512_IG04
+ ;; size=24 bbWeight=0.17 PerfScore 0.66
+G_M43512_IG25: ; bbWeight=0.15, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
mov x0, x20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- b G_M43512_IG11
+ b G_M43512_IG10
;; size=24 bbWeight=0.15 PerfScore 0.61
G_M43512_IG26: ; bbWeight=0.15, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x20
@@ -236,7 +237,7 @@ G_M43512_IG26: ; bbWeight=0.15, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- b G_M43512_IG15
+ b G_M43512_IG14
;; size=24 bbWeight=0.15 PerfScore 0.59
G_M43512_IG27: ; bbWeight=0.06, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x20
@@ -245,7 +246,7 @@ G_M43512_IG27: ; bbWeight=0.06, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov x2, x0
- b G_M43512_IG22
+ b G_M43512_IG21
;; size=28 bbWeight=0.06 PerfScore 0.27
G_M43512_IG28: ; bbWeight=0.04, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
@@ -254,7 +255,7 @@ G_M43512_IG28: ; bbWeight=0.04, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs -[x1 x19] +[x0]
mov x3, x0
; gcrRegs +[x3]
- b G_M43512_IG23
+ b G_M43512_IG22
;; size=16 bbWeight=0.04 PerfScore 0.12
G_M43512_IG29: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs -[x3]
@@ -265,7 +266,7 @@ G_M43512_IG29: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
blr x1
mov x19, x0
; gcrRegs +[x19]
- b G_M43512_IG20
+ b G_M43512_IG19
;; size=28 bbWeight=0.01 PerfScore 0.10
G_M43512_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
...
+8 (+0.83%) : 178618.dasm - Microsoft.Cci.MetadataWriter:ResolveEntityHandleFromPseudoToken(int):System.Reflection.Metadata.EntityHandle:this (Tier1)
@@ -12,7 +12,7 @@
; V00 this [V00,T02] ( 12, 6.44) ref -> x20 this class-hnd single-def <Microsoft.Cci.MetadataWriter>
; V01 arg1 [V01,T01] ( 9, 6.81) int -> x19 single-def
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref single-def
-; V03 loc1 [V03,T05] ( 10, 5.21) ref -> x22 class-hnd single-def <System.Object>
+; V03 loc1 [V03,T05] ( 10, 5.20) ref -> x22 class-hnd single-def <System.Object>
; V04 loc2 [V04,T08] ( 5, 3.85) ref -> x23 class-hnd single-def <Microsoft.Cci.IReference>
;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.Reflection.Metadata.EntityHandle>
; V06 loc4 [V06,T19] ( 3, 0 ) ref -> x1 class-hnd single-def <Microsoft.Cci.ISignature>
@@ -40,7 +40,7 @@
; V28 tmp21 [V28,T06] ( 3, 4.89) ref -> x1 single-def "arr expr"
; V29 tmp22 [V29,T07] ( 3, 4.89) ref -> x1 single-def "arr expr"
; V30 cse0 [V30,T09] ( 3, 2.81) long -> x21 "CSE - aggressive"
-; V31 rat0 [V31,T03] ( 5, 6.05) ref -> x23 class-hnd "replacement local" <Microsoft.Cci.IReference>
+; V31 rat0 [V31,T03] ( 5, 6.02) ref -> x23 class-hnd "replacement local" <Microsoft.Cci.IReference>
;
; Lcl frame size = 8
@@ -73,7 +73,7 @@ G_M47371_IG03: ; bbWeight=0.81, gcrefRegs=500000 {x20 x22}, byrefRegs=000
; byrRegs -[x1]
mov x23, x22
; gcrRegs +[x23]
- cbz x23, G_M47371_IG06
+ cbz x23, G_M47371_IG05
;; size=8 bbWeight=0.81 PerfScore 1.22
G_M47371_IG04: ; bbWeight=0.41, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz
ldr x1, [x23]
@@ -81,23 +81,10 @@ G_M47371_IG04: ; bbWeight=0.41, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x1, x0
- beq G_M47371_IG06
+ bne G_M47371_IG13
;; size=24 bbWeight=0.41 PerfScore 2.44
-G_M47371_IG05: ; bbWeight=0.18, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x23]
- mov x1, x22
- ; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[x1] +[x0]
- mov x23, x0
- ; gcrRegs +[x23]
- ;; size=24 bbWeight=0.18 PerfScore 0.61
-G_M47371_IG06: ; bbWeight=0.81, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- cbz x23, G_M47371_IG21
+G_M47371_IG05: ; bbWeight=0.81, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs=0000 {}, byref, isz
+ cbz x23, G_M47371_IG20
ldr x24, [x20, #0x40]
; gcrRegs +[x24]
ldrsb wzr, [x24]
@@ -110,7 +97,7 @@ G_M47371_IG06: ; bbWeight=0.81, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs
; gcrRegs -[x1] +[x0]
mov x1, x0
; gcrRegs +[x1]
- cbnz x1, G_M47371_IG20
+ cbnz x1, G_M47371_IG22
mov x1, x23
movz x0, #0xD1FFAB1E
; gcrRegs -[x0]
@@ -120,9 +107,9 @@ G_M47371_IG06: ; bbWeight=0.81, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs
; gcrRegs -[x1] +[x0]
mov x25, x0
; gcrRegs +[x25]
- cbnz x25, G_M47371_IG13
+ cbnz x25, G_M47371_IG12
;; size=68 bbWeight=0.81 PerfScore 13.04
-G_M47371_IG07: ; bbWeight=0.59, gcrefRegs=1D00000 {x20 x22 x23 x24}, byrefRegs=0000 {}, byref, isz
+G_M47371_IG06: ; bbWeight=0.59, gcrefRegs=1D00000 {x20 x22 x23 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x25]
mov x1, x23
; gcrRegs +[x1]
@@ -133,14 +120,14 @@ G_M47371_IG07: ; bbWeight=0.59, gcrefRegs=1D00000 {x20 x22 x23 x24}, byre
; gcrRegs -[x1 x23] +[x0]
mov x1, x0
; gcrRegs +[x1]
- cbz x1, G_M47371_IG09
+ cbz x1, G_M47371_IG08
ldr x0, [x24]
; gcrRegs -[x0]
movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x0, x2
- bne G_M47371_IG08
+ bne G_M47371_IG07
mov x0, x24
; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for Microsoft.Cci.ReferenceIndexerBase:Visit(Microsoft.Cci.IMethodReference):this
@@ -149,9 +136,9 @@ G_M47371_IG07: ; bbWeight=0.59, gcrefRegs=1D00000 {x20 x22 x23 x24}, byre
ldr x2, [x2]
blr x2
; gcrRegs -[x0-x1 x24]
- b G_M47371_IG09
+ b G_M47371_IG08
;; size=80 bbWeight=0.59 PerfScore 10.37
-G_M47371_IG08: ; bbWeight=0.81, gcrefRegs=1500002 {x1 x20 x22 x24}, byrefRegs=0000 {}, byref
+G_M47371_IG07: ; bbWeight=0.81, gcrefRegs=1500002 {x1 x20 x22 x24}, byrefRegs=0000 {}, byref
; gcrRegs +[x1 x24]
mov x0, x24
; gcrRegs +[x0]
@@ -161,7 +148,7 @@ G_M47371_IG08: ; bbWeight=0.81, gcrefRegs=1500002 {x1 x20 x22 x24}, byref
blr x2
; gcrRegs -[x0-x1 x24]
;; size=20 bbWeight=0.81 PerfScore 8.56
-G_M47371_IG09: ; bbWeight=0.81, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M47371_IG08: ; bbWeight=0.81, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
mov x1, x22
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -183,7 +170,7 @@ G_M47371_IG09: ; bbWeight=0.81, gcrefRegs=500000 {x20 x22}, byrefRegs=000
; gcrRegs +[x1]
cbnz x1, G_M47371_IG16
;; size=56 bbWeight=0.81 PerfScore 7.33
-G_M47371_IG10: ; bbWeight=0.59, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M47371_IG09: ; bbWeight=0.59, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0-x1]
mov x1, x22
; gcrRegs +[x1]
@@ -194,7 +181,7 @@ G_M47371_IG10: ; bbWeight=0.59, gcrefRegs=500000 {x20 x22}, byrefRegs=000
; gcrRegs -[x1] +[x0]
mov x1, x0
; gcrRegs +[x1]
- cbz x1, G_M47371_IG22
+ cbz x1, G_M47371_IG21
mov x0, x20
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
@@ -203,7 +190,7 @@ G_M47371_IG10: ; bbWeight=0.59, gcrefRegs=500000 {x20 x22}, byrefRegs=000
blr x2
; gcrRegs -[x0-x1 x22]
;; size=52 bbWeight=0.59 PerfScore 6.22
-G_M47371_IG11: ; bbWeight=0.81, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M47371_IG10: ; bbWeight=0.81, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
ldr x1, [x20, #0x20]
; gcrRegs +[x1]
ldr w2, [x1, #0x08]
@@ -221,7 +208,7 @@ G_M47371_IG11: ; bbWeight=0.81, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
; byrRegs +[x1]
str xzr, [x1, x21]
;; size=52 bbWeight=0.81 PerfScore 15.48
-G_M47371_IG12: ; bbWeight=0.81, epilog, nogc, extend
+G_M47371_IG11: ; bbWeight=0.81, epilog, nogc, extend
ldr x25, [sp, #0x48]
ldp x23, x24, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
@@ -229,7 +216,7 @@ G_M47371_IG12: ; bbWeight=0.81, epilog, nogc, extend
ldp fp, lr, [sp], #0x50
ret lr
;; size=24 bbWeight=0.81 PerfScore 5.70
-G_M47371_IG13: ; bbWeight=0.22, gcVars=0000000000000000 {}, gcrefRegs=3500000 {x20 x22 x24 x25}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M47371_IG12: ; bbWeight=0.22, gcVars=0000000000000000 {}, gcrefRegs=3500000 {x20 x22 x24 x25}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x22 x24-x25]
; byrRegs -[x1]
ldr x0, [x25]
@@ -247,8 +234,23 @@ G_M47371_IG13: ; bbWeight=0.22, gcVars=0000000000000000 {}, gcrefRegs=350
blr x1
; gcrRegs -[x0]
cbnz w0, G_M47371_IG23
- ;; size=52 bbWeight=0.22 PerfScore 2.89
+ b G_M47371_IG14
+ ;; size=56 bbWeight=0.22 PerfScore 3.11
+G_M47371_IG13: ; bbWeight=0.16, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x24-x25]
+ mov x1, x22
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[x1] +[x0]
+ mov x23, x0
+ ; gcrRegs +[x23]
+ b G_M47371_IG05
+ ;; size=28 bbWeight=0.16 PerfScore 0.71
G_M47371_IG14: ; bbWeight=0.22, gcrefRegs=3500000 {x20 x22 x24 x25}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0 x23] +[x24-x25]
ldr x0, [x24]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -265,7 +267,7 @@ G_M47371_IG14: ; bbWeight=0.22, gcrefRegs=3500000 {x20 x22 x24 x25}, byre
ldr x2, [x2]
blr x2
; gcrRegs -[x0-x1 x24-x25]
- b G_M47371_IG09
+ b G_M47371_IG08
;; size=56 bbWeight=0.22 PerfScore 3.00
G_M47371_IG15: ; bbWeight=0.22, gcrefRegs=3500000 {x20 x22 x24 x25}, byrefRegs=0000 {}, byref
; gcrRegs +[x24-x25]
@@ -278,7 +280,7 @@ G_M47371_IG15: ; bbWeight=0.22, gcrefRegs=3500000 {x20 x22 x24 x25}, byre
ldr x2, [x2, #0x10]
blr x2
; gcrRegs -[x0-x1 x24-x25]
- b G_M47371_IG09
+ b G_M47371_IG08
;; size=28 bbWeight=0.22 PerfScore 2.67
G_M47371_IG16: ; bbWeight=0.22, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] +[x1]
@@ -290,7 +292,7 @@ G_M47371_IG16: ; bbWeight=0.22, gcrefRegs=100002 {x1 x20}, byrefRegs=0000
ldr x2, [x2]
blr x2
; gcrRegs -[x0-x1]
- b G_M47371_IG11
+ b G_M47371_IG10
;; size=28 bbWeight=0.22 PerfScore 1.56
G_M47371_IG17: ; bbWeight=0.19, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20, #0x20]
@@ -315,20 +317,8 @@ G_M47371_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcrRegs -[x20]
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M47371_IG20: ; bbWeight=0, gcrefRegs=1500002 {x1 x20 x22 x24}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x1 x20 x22 x24]
- mov w0, #1
- strb w0, [x24, #0x48]
- mov x0, x24
- ; gcrRegs +[x0]
- ldr x2, [x24]
- ldr x2, [x2, #0x78]
- ldr x2, [x2, #0x18]
- blr x2
- ; gcrRegs -[x0-x1 x24]
- b G_M47371_IG09
- ;; size=32 bbWeight=0 PerfScore 0.00
-G_M47371_IG21: ; bbWeight=0, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M47371_IG20: ; bbWeight=0, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x20 x22]
mov x1, x22
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -338,7 +328,7 @@ G_M47371_IG21: ; bbWeight=0, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {
; gcrRegs -[x1] +[x0]
mov x1, x0
; gcrRegs +[x1]
- cbz x1, G_M47371_IG09
+ cbz x1, G_M47371_IG08
ldr x0, [x20, #0x40]
movz x2, #0xD1FFAB1E // code for Microsoft.Cci.ReferenceIndexerBase:VisitSignature(Microsoft.Cci.ISignature):this
movk x2, #0xD1FFAB1E LSL #16
@@ -347,9 +337,9 @@ G_M47371_IG21: ; bbWeight=0, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {
ldr wzr, [x0]
blr x2
; gcrRegs -[x0-x1]
- b G_M47371_IG09
+ b G_M47371_IG08
;; size=60 bbWeight=0 PerfScore 0.00
-G_M47371_IG22: ; bbWeight=0, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
...
+12 (+1.30%) : 471112.dasm - OLEDB.Test.ModuleCore.CTestModule+d__56:MoveNext():ubyte:this (Tier1)
@@ -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
...
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 |
0 |
0 |
0 |
0 |
-0 |
+0 |
| 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 |
26 |
0 |
12 |
14 |
-0 |
+72 |
| 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 |
|
28 |
2 |
12 |
14 |
-88 |
+72 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.arm64.checked.mch |
34,614 |
3,148 |
31,466 |
0 (0.00%) |
238 (0.68%) |
| benchmarks.run_pgo.linux.arm64.checked.mch |
150,972 |
59,296 |
91,676 |
0 (0.00%) |
132 (0.09%) |
| benchmarks.run_tiered.linux.arm64.checked.mch |
71,125 |
53,989 |
17,136 |
0 (0.00%) |
82 (0.12%) |
| coreclr_tests.run.linux.arm64.checked.mch |
626,766 |
383,796 |
242,970 |
0 (0.00%) |
455 (0.07%) |
| libraries.crossgen2.linux.arm64.checked.mch |
234,183 |
15 |
234,168 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.linux.arm64.checked.mch |
293,135 |
6 |
293,129 |
0 (0.00%) |
1,908 (0.65%) |
| libraries_tests.run.linux.arm64.Release.mch |
733,491 |
489,338 |
244,153 |
0 (0.00%) |
1,321 (0.18%) |
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
302,708 |
21,560 |
281,148 |
0 (0.00%) |
2,089 (0.69%) |
| realworld.run.linux.arm64.checked.mch |
32,766 |
85 |
32,681 |
0 (0.00%) |
337 (1.02%) |
| smoke_tests.nativeaot.linux.arm64.checked.mch |
19,027 |
7 |
19,020 |
0 (0.00%) |
2 (0.01%) |
|
2,498,787 |
1,011,240 |
1,487,547 |
0 (0.00%) |
6,564 (0.26%) |
jit-analyze output
coreclr_tests.run.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 509268220 (overridden on cmd)
Total bytes of diff: 509268132 (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 : 418890.dasm (-2.84 % of base)
-40 : 424198.dasm (-2.33 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-48 (-2.84 % of base) : 418890.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-40 (-2.33 % of base) : 424198.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
Top method improvements (percentages):
-48 (-2.84 % of base) : 418890.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-40 (-2.33 % of base) : 424198.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
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 384368152 (overridden on cmd)
Total bytes of diff: 384368224 (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):
12 : 471112.dasm (1.30 % of base)
8 : 448690.dasm (0.52 % of base)
8 : 624648.dasm (0.53 % of base)
8 : 405975.dasm (0.54 % of base)
8 : 178618.dasm (0.83 % of base)
4 : 353187.dasm (0.37 % of base)
4 : 623305.dasm (0.31 % of base)
4 : 637130.dasm (0.56 % of base)
4 : 684623.dasm (0.63 % of base)
4 : 78434.dasm (0.64 % of base)
4 : 79340.dasm (0.20 % of base)
4 : 224011.dasm (0.19 % of base)
12 total files with Code Size differences (0 improved, 12 regressed), 14 unchanged.
Top method regressions (bytes):
12 (1.30 % of base) : 471112.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
8 (0.83 % of base) : 178618.dasm - Microsoft.Cci.MetadataWriter:ResolveEntityHandleFromPseudoToken(int):System.Reflection.Metadata.EntityHandle:this (Tier1)
8 (0.52 % of base) : 448690.dasm - MS.Internal.Xml.XPath.QueryBuilder:ProcessFilter(MS.Internal.Xml.XPath.Filter,int,byref):MS.Internal.Xml.XPath.Query:this (Tier1)
8 (0.54 % of base) : 405975.dasm - ReflectionAbstractionExtensions:DisposeTestClass(Xunit.Abstractions.ITest,System.Object,Xunit.Sdk.IMessageBus,Xunit.Sdk.ExecutionTimer,System.Threading.CancellationTokenSource) (Tier1)
8 (0.53 % of base) : 624648.dasm - System.Text.Json.Serialization.Tests.ConstructorTests+<ReadSimpleObjectWithTrailingTriviaAsync>d__148:MoveNext():this (Tier1)
4 (0.63 % of base) : 684623.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:Visit(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
4 (0.64 % of base) : 78434.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.19 % of base) : 224011.dasm - System.Collections.Tests.IEnumerable_NonGeneric_Tests:IEnumerable_NonGeneric_GetEnumerator_ReturnsUniqueEnumerator(int):this (Tier1-OSR)
4 (0.37 % of base) : 353187.dasm - System.Linq.Enumerable:TryGetLast[int](System.Collections.Generic.IEnumerable`1[int],System.Func`2[int,ubyte],byref):int (Tier1)
4 (0.56 % of base) : 637130.dasm - System.Text.Json.ReadStack:<JsonPath>g__AppendStackFrame|22_0(System.Text.StringBuilder,byref) (Tier1)
4 (0.31 % of base) : 623305.dasm - System.Text.Json.Serialization.Tests.ConstructorTests+<ReadSimpleObjectAsync>d__146:MoveNext():this (Tier1)
4 (0.20 % of base) : 79340.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
Top method regressions (percentages):
12 (1.30 % of base) : 471112.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
8 (0.83 % of base) : 178618.dasm - Microsoft.Cci.MetadataWriter:ResolveEntityHandleFromPseudoToken(int):System.Reflection.Metadata.EntityHandle:this (Tier1)
4 (0.64 % of base) : 78434.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.63 % of base) : 684623.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:Visit(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
4 (0.56 % of base) : 637130.dasm - System.Text.Json.ReadStack:<JsonPath>g__AppendStackFrame|22_0(System.Text.StringBuilder,byref) (Tier1)
8 (0.54 % of base) : 405975.dasm - ReflectionAbstractionExtensions:DisposeTestClass(Xunit.Abstractions.ITest,System.Object,Xunit.Sdk.IMessageBus,Xunit.Sdk.ExecutionTimer,System.Threading.CancellationTokenSource) (Tier1)
8 (0.53 % of base) : 624648.dasm - System.Text.Json.Serialization.Tests.ConstructorTests+<ReadSimpleObjectWithTrailingTriviaAsync>d__148:MoveNext():this (Tier1)
8 (0.52 % of base) : 448690.dasm - MS.Internal.Xml.XPath.QueryBuilder:ProcessFilter(MS.Internal.Xml.XPath.Filter,int,byref):MS.Internal.Xml.XPath.Query:this (Tier1)
4 (0.37 % of base) : 353187.dasm - System.Linq.Enumerable:TryGetLast[int](System.Collections.Generic.IEnumerable`1[int],System.Func`2[int,ubyte],byref):int (Tier1)
4 (0.31 % of base) : 623305.dasm - System.Text.Json.Serialization.Tests.ConstructorTests+<ReadSimpleObjectAsync>d__146:MoveNext():this (Tier1)
4 (0.20 % of base) : 79340.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
4 (0.19 % of base) : 224011.dasm - System.Collections.Tests.IEnumerable_NonGeneric_Tests:IEnumerable_NonGeneric_GetEnumerator_ReturnsUniqueEnumerator(int):this (Tier1-OSR)
12 total methods with Code Size differences (0 improved, 12 regressed).
linux x64
Diffs are based on 2,505,538 contexts (977,780 MinOpts, 1,527,758 FullOpts).
MISSED contexts: base: 0 (0.00%), diff: 6,724 (0.27%)
Overall (+159 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| coreclr_tests.run.linux.x64.checked.mch |
403,034,105 |
-78 |
| libraries_tests.run.linux.x64.Release.mch |
340,326,239 |
+237 |
FullOpts (+159 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| coreclr_tests.run.linux.x64.checked.mch |
123,216,185 |
-78 |
| libraries_tests.run.linux.x64.Release.mch |
156,408,468 |
+237 |
Example diffs
coreclr_tests.run.linux.x64.checked.mch
-49 (-3.84%) : 388915.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.65) 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,T32] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V07 tmp3 [V07,T31] ( 2, 0.85) ref -> rdi class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V08 tmp4 [V08,T22] ( 3, 1.70) 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,T31] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T30] ( 2, 0.85) ref -> rdi class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V08 tmp4 [V08,T21] ( 3, 1.70) 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,T06] ( 7, 5.06) ref -> r12 class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
; V11 tmp7 [V11,T05] ( 14, 5.15) 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,T11] ( 8, 2.51) ref -> r15 "guarded devirt return temp"
+; V13 tmp9 [V13,T10] ( 8, 2.51) 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,T20] ( 4, 1.72) ref -> r15 "guarded devirt return temp"
+; V15 tmp11 [V15,T19] ( 4, 1.72) 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.87) ref -> r13 "guarded devirt return temp"
+; V17 tmp13 [V17,T16] ( 8, 1.87) 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.15) int -> rdi
-; V21 tmp17 [V21,T24] ( 3, 1.61) ref -> [rbp-0x38] class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V20 tmp16 [V20,T28] ( 3, 1.15) int -> rdi
+; V21 tmp17 [V21,T23] ( 3, 1.61) 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,T33] ( 3, 0.80) ref -> rax "guarded devirt return temp"
+; V23 tmp19 [V23,T32] ( 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,T34] ( 3, 0.80) ref -> registers "guarded devirt return temp"
-; V26 tmp22 [V26,T13] ( 5, 2.41) ref -> rdi single-def "guarded devirt arg temp"
+; V25 tmp21 [V25,T33] ( 3, 0.80) ref -> registers "guarded devirt return temp"
+; V26 tmp22 [V26,T12] ( 5, 2.41) 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,T35] ( 3, 0.80) ref -> rax "guarded devirt return temp"
-; V29 tmp25 [V29,T14] ( 5, 2.41) ref -> rdi single-def "guarded devirt arg temp"
+; V28 tmp24 [V28,T34] ( 3, 0.80) ref -> rax "guarded devirt return temp"
+; V29 tmp25 [V29,T13] ( 5, 2.41) 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,T15] ( 5, 2.34) ref -> rdi class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V32 tmp28 [V32,T36] ( 3, 0.78) ref -> r15 "guarded devirt return temp"
+; V31 tmp27 [V31,T14] ( 5, 2.34) ref -> rdi class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+; V32 tmp28 [V32,T35] ( 3, 0.78) 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.75) ref -> rdi class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
; V36 tmp32 [V36,T03] ( 5, 5.75) 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.83) ref -> r15 class-hnd exact single-def "impAppendStmt" <<unknown class>>
-; V39 tmp35 [V39,T16] ( 2, 2.30) int -> rbx "impAppendStmt"
-; V40 tmp36 [V40,T27] ( 4, 1.15) ref -> rdi "guarded devirt return temp"
+; V39 tmp35 [V39,T15] ( 2, 2.30) int -> rbx "impAppendStmt"
+; V40 tmp36 [V40,T26] ( 4, 1.15) 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.04) int -> rax "guarded devirt return temp"
-; V44 tmp40 [V44,T40] ( 5, 0.11) 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.04) int -> rax "guarded devirt return temp"
+; V44 tmp40 [V44,T39] ( 5, 0.11) 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.15) ref -> rax class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V47 tmp43 [V47,T27] ( 3, 1.15) 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.96) 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,T23] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V51 tmp47 [V51,T09] ( 4, 2.70) ref -> rax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V52 tmp48 [V52,T30] ( 3, 0.85) int -> rdi
-; V53 tmp49 [V53,T26] ( 3, 1.19) ref -> r12 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V50 tmp46 [V50,T22] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V51 tmp47 [V51,T08] ( 3, 2.55) ref -> rax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V52 tmp48 [V52,T29] ( 3, 0.85) int -> rdi
+; V53 tmp49 [V53,T25] ( 3, 1.19) 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.60) ref -> rax "guarded devirt return temp"
+; V55 tmp51 [V55,T36] ( 3, 0.60) 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.60) ref -> r12 "guarded devirt return temp"
-; V58 tmp54 [V58,T18] ( 5, 1.79) ref -> rdi single-def "guarded devirt arg temp"
+; V57 tmp53 [V57,T37] ( 3, 0.60) ref -> r12 "guarded devirt return temp"
+; V58 tmp54 [V58,T17] ( 5, 1.79) 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.60) ref -> rax "guarded devirt return temp"
-; V61 tmp57 [V61,T19] ( 5, 1.79) ref -> rdi single-def "guarded devirt arg temp"
+; V60 tmp56 [V60,T38] ( 3, 0.60) ref -> rax "guarded devirt return temp"
+; V61 tmp57 [V61,T18] ( 5, 1.79) 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,T12] ( 8, 2.49) ref -> r14 single-def "field V37._typicalMethodDef (fldOffset=0x0)" P-INDEP
-; V64 tmp60 [V64,T10] ( 8, 2.55) ref -> r13 single-def "field V37._instantiatedType (fldOffset=0x8)" P-INDEP
-; V65 tmp61 [V65,T25] ( 3, 1.34) int -> rbx single-def "field V37._hashcode (fldOffset=0x10)" P-INDEP
+; V63 tmp59 [V63,T11] ( 8, 2.49) ref -> r14 single-def "field V37._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V64 tmp60 [V64,T09] ( 8, 2.55) ref -> r13 single-def "field V37._instantiatedType (fldOffset=0x8)" P-INDEP
+; V65 tmp61 [V65,T24] ( 3, 1.34) 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,T21] ( 3, 1.72) ref -> rdi "CSE - moderate"
-; V70 rat0 [V70,T08] ( 6, 3.40) ref -> rcx class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
+; V69 cse0 [V69,T20] ( 3, 1.72) ref -> rdi "CSE - moderate"
;
; Lcl frame size = 40
@@ -134,7 +133,7 @@ G_M10698_IG07: ; bbWeight=0.57, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0
; gcrRegs +[r12]
mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaMethod
cmp qword ptr [r14], rdi
- jne G_M10698_IG44
+ jne G_M10698_IG31
mov r15, gword ptr [r14+0x10]
; gcrRegs +[r15]
;; size=27 bbWeight=0.57 PerfScore 4.74
@@ -149,15 +148,15 @@ 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_IG46
+ jne G_M10698_IG39
mov rdi, gword ptr [r12+0x58]
; gcrRegs +[rdi]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rdi], rax
- jne G_M10698_IG45
+ jne G_M10698_IG32
mov rax, gword ptr [rdi+0x08]
; gcrRegs +[rax]
- jmp G_M10698_IG32
+ jmp G_M10698_IG33
;; size=53 bbWeight=0.40 PerfScore 5.83
G_M10698_IG11: ; bbWeight=0.35, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rdi r12-r14]
@@ -184,7 +183,7 @@ G_M10698_IG13: ; bbWeight=0.57, 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_IG35
+ jne G_M10698_IG36
;; size=40 bbWeight=0.57 PerfScore 6.75
G_M10698_IG14: ; bbWeight=0.39, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x10]
@@ -192,7 +191,7 @@ G_M10698_IG14: ; bbWeight=0.39, 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_IG49
+ jne G_M10698_IG42
mov r15, gword ptr [rdi+0x08]
; gcrRegs +[r15]
;; size=31 bbWeight=0.39 PerfScore 4.01
@@ -233,11 +232,11 @@ G_M10698_IG16: ; bbWeight=0.57, 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_IG41
+ jne G_M10698_IG45
mov rdi, gword ptr [r14+0x20]
; gcrRegs +[rdi]
test rdi, rdi
- je G_M10698_IG40
+ je G_M10698_IG44
;; size=36 bbWeight=0.57 PerfScore 5.46
G_M10698_IG17: ; bbWeight=0.57, gcrefRegs=E080 {rdi r13 r14 r15}, byrefRegs=0000 {}, byref
call [Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int]
@@ -253,7 +252,7 @@ G_M10698_IG17: ; bbWeight=0.57, gcrefRegs=E080 {rdi r13 r14 r15}, byrefRe
call [<unknown method>]
; gcrRegs -[rdi]
test eax, eax
- je G_M10698_IG42
+ je G_M10698_IG37
;; size=45 bbWeight=0.57 PerfScore 8.19
G_M10698_IG18: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r13-r15]
@@ -278,7 +277,7 @@ G_M10698_IG20: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=E00
; gcrRegs +[rdi]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
cmp qword ptr [rdi], rax
- jne G_M10698_IG39
+ jne G_M10698_IG43
call [Internal.TypeSystem.Ecma.EcmaType:GetHashCode():int:this]
; gcrRegs -[rdi]
;; size=33 bbWeight=0.02 PerfScore 0.17
@@ -300,24 +299,24 @@ G_M10698_IG22: ; bbWeight=0.43, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
je G_M10698_IG29
mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaMethod
cmp qword ptr [r14], rdi
- jne G_M10698_IG53
+ jne G_M10698_IG49
mov r13, gword ptr [r14+0x10]
; gcrRegs +[r13]
;; size=42 bbWeight=0.43 PerfScore 4.47
G_M10698_IG23: ; bbWeight=0.43, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
test r13, r13
- je G_M10698_IG43
+ je G_M10698_IG38
;; size=9 bbWeight=0.43 PerfScore 0.53
G_M10698_IG24: ; bbWeight=0.30, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
cmp qword ptr [r15], rdi
- jne G_M10698_IG55
+ jne G_M10698_IG51
mov rdi, gword ptr [r15+0x58]
; gcrRegs +[rdi]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rdi], rax
- jne G_M10698_IG54
+ jne G_M10698_IG50
mov r12, gword ptr [rdi+0x08]
; gcrRegs +[r12]
;; size=46 bbWeight=0.30 PerfScore 3.72
@@ -325,12 +324,12 @@ G_M10698_IG25: ; bbWeight=0.30, gcrefRegs=F000 {r12 r13 r14 r15}, byrefRe
; gcrRegs -[rdi]
mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
cmp qword ptr [r13], rdi
- jne G_M10698_IG57
+ jne G_M10698_IG53
mov rdi, gword ptr [r13+0x58]
; gcrRegs +[rdi]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rdi], rax
- jne G_M10698_IG56
+ jne G_M10698_IG52
mov rax, gword ptr [rdi+0x08]
; gcrRegs +[rax]
;; size=47 bbWeight=0.30 PerfScore 3.72
@@ -370,57 +369,78 @@ G_M10698_IG29: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=800
call [rax+0x18]<unknown method>
; gcrRegs -[rdi] +[rax]
cmp byte ptr [rax], al
- mov rcx, rax
- ; gcrRegs +[rcx]
- test rcx, rcx
- je G_M10698_IG37
- ;; size=27 bbWeight=0.43 PerfScore 5.00
-G_M10698_IG30: ; bbWeight=0.21, gcrefRegs=800B {rax rcx rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rsi, 0xD1FFAB1E ; Internal.TypeSystem.MethodForInstantiatedType
- cmp qword ptr [rcx], rsi
- je SHORT G_M10698_IG36
- ;; size=15 bbWeight=0.21 PerfScore 0.90
-G_M10698_IG31: ; bbWeight=0.07, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
mov rsi, rax
; gcrRegs +[rsi]
mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.ArrayType
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[rsi]
...
-29 (-2.25%) : 396625.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.71) 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,T37] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V07 tmp3 [V07,T36] ( 2, 0.79) ref -> rdi class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V08 tmp4 [V08,T24] ( 3, 1.58) 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,T36] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T35] ( 2, 0.79) ref -> rdi class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V08 tmp4 [V08,T23] ( 3, 1.58) 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.47) ref -> r15 class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
-; V11 tmp7 [V11,T16] ( 3, 2 ) ref -> r13 "guarded devirt return temp"
+; V11 tmp7 [V11,T15] ( 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,T10] ( 8, 2.77) ref -> [rbp-0x38] "guarded devirt return temp"
+; V13 tmp9 [V13,T09] ( 8, 2.77) 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,T18] ( 4, 1.82) ref -> r15 "guarded devirt return temp"
+; V15 tmp11 [V15,T17] ( 4, 1.82) 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.83) ref -> r12 "guarded devirt return temp"
+; V17 tmp13 [V17,T16] ( 8, 1.83) 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,T26] ( 2, 0.84) int -> rdi
-; V23 tmp19 [V23,T22] ( 3, 1.68) ref -> [rbp-0x40] class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V22 tmp18 [V22,T25] ( 2, 0.84) int -> rdi
+; V23 tmp19 [V23,T21] ( 3, 1.68) 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,T35] ( 3, 0.84) ref -> rcx "guarded devirt return temp"
+; V25 tmp21 [V25,T34] ( 3, 0.84) 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,T38] ( 3, 0.69) ref -> registers "guarded devirt return temp"
-; V28 tmp24 [V28,T15] ( 5, 2.07) ref -> rdi single-def "guarded devirt arg temp"
+; V27 tmp23 [V27,T37] ( 3, 0.69) ref -> registers "guarded devirt return temp"
+; V28 tmp24 [V28,T14] ( 5, 2.07) 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,T40] ( 3, 0.55) ref -> rcx "guarded devirt return temp"
-; V31 tmp27 [V31,T23] ( 5, 1.64) ref -> rdi single-def "guarded devirt arg temp"
+; V30 tmp26 [V30,T39] ( 3, 0.55) ref -> rcx "guarded devirt return temp"
+; V31 tmp27 [V31,T22] ( 5, 1.64) 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.12) ref -> rdi class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V38 tmp34 [V38,T33] ( 3, 1.04) ref -> r15 "guarded devirt return temp"
+; V37 tmp33 [V37,T08] ( 5, 3.12) ref -> rdi class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+; V38 tmp34 [V38,T32] ( 3, 1.04) ref -> r15 "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,T07] ( 4, 3.99) ref -> r15 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,T14] ( 2, 2.42) int -> rbx "impAppendStmt"
-; V50 tmp46 [V50,T29] ( 4, 1.21) ref -> rdi "guarded devirt return temp"
+; V49 tmp45 [V49,T12] ( 2, 2.42) int -> rbx "impAppendStmt"
+; V50 tmp46 [V50,T28] ( 4, 1.21) 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.07) byref -> rbx single-def "impAppendStmt"
-; V53 tmp49 [V53,T45] ( 3, 0.03) int -> rax "guarded devirt return temp"
-; V54 tmp50 [V54,T43] ( 5, 0.10) ref -> rdi single-def "guarded devirt arg temp"
+; V52 tmp48 [V52,T43] ( 2, 0.07) byref -> rbx single-def "impAppendStmt"
+; V53 tmp49 [V53,T44] ( 3, 0.03) int -> rax "guarded devirt return temp"
+; V54 tmp50 [V54,T42] ( 5, 0.10) 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,T30] ( 3, 1.21) ref -> rax class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V57 tmp53 [V57,T29] ( 3, 1.21) 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, 1.03) 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,T25] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V61 tmp57 [V61,T13] ( 4, 2.54) ref -> rax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V62 tmp58 [V62,T34] ( 2, 0.55) int -> rdi
-; V63 tmp59 [V63,T31] ( 3, 1.10) ref -> rbx 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,T13] ( 3, 2.37) ref -> rax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V62 tmp58 [V62,T33] ( 2, 0.55) int -> rdi
+; V63 tmp59 [V63,T30] ( 3, 1.10) 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,T39] ( 3, 0.55) ref -> rax "guarded devirt return temp"
+; V65 tmp61 [V65,T38] ( 3, 0.55) 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,T41] ( 3, 0.45) ref -> rbx "guarded devirt return temp"
-; V68 tmp64 [V68,T28] ( 5, 1.35) ref -> rdi single-def "guarded devirt arg temp"
+; V67 tmp63 [V67,T40] ( 3, 0.45) ref -> rbx "guarded devirt return temp"
+; V68 tmp64 [V68,T27] ( 5, 1.35) 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,T42] ( 3, 0.36) ref -> rax "guarded devirt return temp"
-; V71 tmp67 [V71,T32] ( 5, 1.07) ref -> rdi single-def "guarded devirt arg temp"
+; V70 tmp66 [V70,T41] ( 3, 0.36) ref -> rax "guarded devirt return temp"
+; V71 tmp67 [V71,T31] ( 5, 1.07) 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,T12] ( 8, 2.60) ref -> r13 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
-; V78 tmp74 [V78,T11] ( 8, 2.65) ref -> r12 single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
-; V79 tmp75 [V79,T27] ( 3, 1.39) int -> rbx single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
+; V77 tmp73 [V77,T11] ( 8, 2.60) ref -> r13 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V78 tmp74 [V78,T10] ( 8, 2.65) ref -> r12 single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
+; V79 tmp75 [V79,T26] ( 3, 1.39) int -> rbx 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,T19] ( 3, 1.82) ref -> rdi "CSE - moderate"
+; V83 cse0 [V83,T18] ( 3, 1.82) ref -> rdi "CSE - moderate"
; V84 cse1 [V84,T00] ( 18, 9.63) ref -> rsi multi-def "CSE - aggressive"
; V85 cse2 [V85,T06] ( 6, 4.21) long -> r14 "CSE - moderate"
-; V86 rat0 [V86,T08] ( 6, 3.16) ref -> rcx class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
;
; Lcl frame size = 56
@@ -140,7 +139,7 @@ G_M10698_IG06: ; bbWeight=0.61, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0
mov r15, gword ptr [r12+0x50]
; gcrRegs +[r15]
cmp qword ptr [r13], r14
- jne G_M10698_IG58
+ jne G_M10698_IG53
jmp SHORT G_M10698_IG08
;; size=17 bbWeight=0.61 PerfScore 4.84
G_M10698_IG07: ; bbWeight=0.44, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
@@ -170,7 +169,7 @@ G_M10698_IG10: ; bbWeight=0.57, gcrefRegs=B009 {rax rbx r12 r13 r15}, byr
test rax, rax
je SHORT G_M10698_IG16
;; size=9 bbWeight=0.57 PerfScore 1.29
-G_M10698_IG11: ; bbWeight=0.42, gcVars=0000000000000400 {V13}, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10698_IG11: ; bbWeight=0.42, gcVars=0000000000000200 {V13}, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
cmp qword ptr [r15], rdi
@@ -181,7 +180,7 @@ G_M10698_IG12: ; bbWeight=0.35, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRe
; gcrRegs +[rdi]
mov rcx, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rdi], rcx
- jne G_M10698_IG59
+ jne G_M10698_IG54
mov rcx, gword ptr [rdi+0x08]
; gcrRegs +[rcx]
;; size=27 bbWeight=0.35 PerfScore 2.85
@@ -204,14 +203,14 @@ G_M10698_IG15: ; bbWeight=0.27, gcVars=0000000000000000 {}, gcrefRegs=B00
; gcrRegs +[rdi]
mov rcx, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rdi], rcx
- jne G_M10698_IG60
+ jne G_M10698_IG55
mov rcx, gword ptr [rdi+0x08]
; gcrRegs +[rcx]
jmp SHORT G_M10698_IG18
;; size=29 bbWeight=0.27 PerfScore 2.80
-G_M10698_IG16: ; bbWeight=0.29, gcVars=0000000000000400 {V13}, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10698_IG16: ; bbWeight=0.29, gcVars=0000000000000200 {V13}, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax rcx rdx rdi]
- ; GC ptr vars +{V10 V13}
+ ; GC ptr vars +{V09 V13}
mov rax, gword ptr [rbp-0x38]
; gcrRegs +[rax]
jmp SHORT G_M10698_IG21
@@ -232,7 +231,7 @@ G_M10698_IG17: ; bbWeight=0.08, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRe
;; size=23 bbWeight=0.08 PerfScore 0.85
G_M10698_IG18: ; bbWeight=0.42, gcVars=0000000000000000 {}, gcrefRegs=B00F {rax rcx rdx rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx]
- ; GC ptr vars -{V10 V13 V23}
+ ; GC ptr vars -{V09 V13 V23}
xor edi, edi
cmp rdx, rcx
sete dil
@@ -294,7 +293,7 @@ G_M10698_IG23: ; bbWeight=0.52, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0
mov rdi, gword ptr [rdi+0x58]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rdi], rax
- jne G_M10698_IG61
+ jne G_M10698_IG56
mov r15, gword ptr [rdi+0x08]
; gcrRegs +[r15]
;; size=31 bbWeight=0.52 PerfScore 5.34
@@ -344,11 +343,11 @@ G_M10698_IG27: ; bbWeight=0.61, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0
G_M10698_IG28: ; bbWeight=0.61, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0000 {}, byref
mov ebx, dword ptr [r12+0x68]
cmp qword ptr [r13], r14
- jne G_M10698_IG64
+ jne G_M10698_IG58
mov rdi, gword ptr [r13+0x20]
; gcrRegs +[rdi]
test rdi, rdi
- je G_M10698_IG62
+ je G_M10698_IG46
;; size=28 bbWeight=0.61 PerfScore 5.60
G_M10698_IG29: ; bbWeight=0.61, gcrefRegs=B080 {rdi r12 r13 r15}, byrefRegs=0000 {}, byref
call [Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int]
@@ -387,7 +386,7 @@ G_M10698_IG32: ; bbWeight=0.39, gcVars=0000000000000000 {}, gcrefRegs=A00
cmp qword ptr [r15], rdi
je G_M10698_IG44
cmp qword ptr [r13], r14
- jne G_M10698_IG54
+ jne G_M10698_IG62
mov r12, gword ptr [r13+0x10]
; gcrRegs +[r12]
;; size=33 bbWeight=0.39 PerfScore 4.05
@@ -399,14 +398,14 @@ G_M10698_IG33: ; bbWeight=0.39, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0
G_M10698_IG34: ; bbWeight=0.27, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
cmp qword ptr [r15], rdi
- jne G_M10698_IG56
+ jne G_M10698_IG51
;; size=19 bbWeight=0.27 PerfScore 1.17
G_M10698_IG35: ; bbWeight=0.23, 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_IG55
+ jne G_M10698_IG63
mov rbx, gword ptr [rdi+0x08]
; gcrRegs +[rbx]
;; size=27 bbWeight=0.23 PerfScore 1.86
@@ -414,14 +413,14 @@ G_M10698_IG36: ; bbWeight=0.27, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRe
; gcrRegs -[rdi]
mov rdi, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
cmp qword ptr [r12], rdi
- jne G_M10698_IG57
+ jne G_M10698_IG50
;; size=20 bbWeight=0.27 PerfScore 1.17
G_M10698_IG37: ; bbWeight=0.18, gcrefRegs=B008 {rbx r12 r13 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_IG66
+ jne G_M10698_IG52
;; size=24 bbWeight=0.18 PerfScore 1.12
G_M10698_IG38: ; bbWeight=0.18, gcrefRegs=B088 {rbx rdi r12 r13 r15}, byrefRegs=0000 {}, byref
mov rax, gword ptr [rdi+0x08]
@@ -477,36 +476,45 @@ G_M10698_IG44: ; bbWeight=0.39, gcVars=0000000000000000 {}, gcrefRegs=800
call [rax+0x18]<unknown method>
; gcrRegs -[rdi] +[rax]
cmp byte ptr [rax], al
...
libraries_tests.run.linux.x64.Release.mch
-11 (-1.19%) : 565909.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
...
-13 (-1.06%) : 129099.dasm - System.Linq.Expressions.Compiler.ILGen:CanEmitConstant(System.Object,System.Type):ubyte (Tier1)
@@ -9,7 +9,7 @@
; 11 inlinees with PGO data; 9 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 7, 4.43) ref -> r15 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T01] ( 7, 4.39) ref -> r15 class-hnd single-def <System.Object>
; V01 arg1 [V01,T00] ( 16, 5.47) ref -> rbx class-hnd single-def <System.Type>
; V02 loc0 [V02,T10] ( 8, 2.26) ref -> r13 class-hnd single-def <System.Type>
; V03 loc1 [V03,T25] ( 3, 0.84) ref -> rdi class-hnd single-def <System.Reflection.MethodBase>
@@ -61,7 +61,7 @@
; V49 cse0 [V49,T15] ( 3, 2.45) long -> rdi "CSE - moderate"
; V50 cse1 [V50,T08] ( 7, 2.79) long -> r14 "CSE - moderate"
; V51 cse2 [V51,T16] ( 3, 2.45) int -> rdi "CSE - moderate"
-; V52 rat0 [V52,T02] ( 5, 5.44) ref -> r13 class-hnd "replacement local" <System.Type>
+; V52 rat0 [V52,T02] ( 5, 5.40) ref -> r13 class-hnd "replacement local" <System.Type>
; V53 rat1 [V53,T05] ( 6, 3.37) ref -> rdi class-hnd "replacement local" <System.Reflection.MethodBase>
;
; Lcl frame size = 8
@@ -82,7 +82,7 @@ G_M30614_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=22 bbWeight=1 PerfScore 8.00
G_M30614_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
test r15, r15
- je G_M30614_IG50
+ je G_M30614_IG32
;; size=9 bbWeight=1 PerfScore 1.25
G_M30614_IG03: ; bbWeight=0.82, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov r14, 0xD1FFAB1E ; System.RuntimeType
@@ -192,17 +192,17 @@ G_M30614_IG15: ; bbWeight=0.82, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0
mov r13d, dword ptr [r13+0x90]
; gcrRegs -[r13]
test r13d, r13d
- je G_M30614_IG32
+ je G_M30614_IG34
;; size=16 bbWeight=0.82 PerfScore 2.65
G_M30614_IG16: ; bbWeight=0.82, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
lea eax, [r13-0x03]
cmp eax, 12
- jbe G_M30614_IG50
+ jbe G_M30614_IG32
;; size=13 bbWeight=0.82 PerfScore 1.43
G_M30614_IG17: ; bbWeight=0.66, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
cmp r13d, 18
- je G_M30614_IG50
+ je G_M30614_IG32
;; size=10 bbWeight=0.66 PerfScore 0.83
G_M30614_IG18: ; bbWeight=0.82, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
mov r13, r15
@@ -210,11 +210,11 @@ G_M30614_IG18: ; bbWeight=0.82, gcrefRegs=8000 {r15}, byrefRegs=0000 {},
test r13, r13
je SHORT G_M30614_IG20
;; size=8 bbWeight=0.82 PerfScore 1.22
-G_M30614_IG19: ; bbWeight=0.33, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M30614_IG19: ; bbWeight=0.33, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; System.RuntimeType
cmp qword ptr [r13], rsi
- jne SHORT G_M30614_IG28
- ;; size=16 bbWeight=0.33 PerfScore 1.40
+ jne G_M30614_IG31
+ ;; size=20 bbWeight=0.33 PerfScore 1.40
G_M30614_IG20: ; bbWeight=0.66, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref, isz
test r13, r13
je SHORT G_M30614_IG25
@@ -256,46 +256,24 @@ G_M30614_IG25: ; bbWeight=0.42, gcVars=0000000000000000 {}, gcrefRegs=800
mov rdi, r15
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M30614_IG30
+ je SHORT G_M30614_IG28
;; size=8 bbWeight=0.42 PerfScore 0.63
G_M30614_IG26: ; bbWeight=0.21, gcrefRegs=8080 {rdi r15}, byrefRegs=0000 {}, byref, isz
mov rsi, 0xD1FFAB1E ; System.ArgumentNullException
cmp qword ptr [rdi], rsi
- je SHORT G_M30614_IG29
+ jne SHORT G_M30614_IG30
;; size=15 bbWeight=0.21 PerfScore 0.89
-G_M30614_IG27: ; bbWeight=0.09, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
- mov rsi, r15
- ; gcrRegs +[rsi]
- mov rdi, 0xD1FFAB1E ; System.Reflection.MethodBase
- call CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[rsi r15] +[rax]
- mov rdi, rax
- ; gcrRegs +[rdi]
- jmp SHORT G_M30614_IG30
- ;; size=23 bbWeight=0.09 PerfScore 0.35
-G_M30614_IG28: ; bbWeight=0.10, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rdi] +[r15]
- mov rsi, r15
- ; gcrRegs +[rsi]
- mov rdi, 0xD1FFAB1E ; System.Type
- call CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[rsi] +[rax]
- mov r13, rax
- ; gcrRegs +[r13]
- jmp G_M30614_IG20
- ;; size=26 bbWeight=0.10 PerfScore 0.37
-G_M30614_IG29: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax r13 r15]
+G_M30614_IG27: ; bbWeight=0.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdi r15]
xor rdi, rdi
; gcrRegs +[rdi]
- ;; size=2 bbWeight=0.12 PerfScore 0.03
-G_M30614_IG30: ; bbWeight=0.42, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ ;; size=2 bbWeight=0.14 PerfScore 0.04
+G_M30614_IG28: ; bbWeight=0.42, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
test rdi, rdi
jne G_M30614_IG74
xor eax, eax
;; size=11 bbWeight=0.42 PerfScore 0.63
-G_M30614_IG31: ; bbWeight=0.42, epilog, nogc, extend
+G_M30614_IG29: ; bbWeight=0.42, epilog, nogc, extend
add rsp, 8
pop rbx
pop r12
@@ -305,145 +283,33 @@ G_M30614_IG31: ; bbWeight=0.42, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.42 PerfScore 1.79
-G_M30614_IG32: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rdi] +[rbx r15]
- mov r13, rbx
+G_M30614_IG30: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rdi] +[r15]
+ mov rsi, r15
+ ; gcrRegs +[rsi]
+ mov rdi, 0xD1FFAB1E ; System.Reflection.MethodBase
+ call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[rsi r15] +[rax]
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ jmp SHORT G_M30614_IG28
+ ;; size=23 bbWeight=0.07 PerfScore 0.26
+G_M30614_IG31: ; bbWeight=0.08, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rdi] +[r15]
+ mov rsi, r15
+ ; gcrRegs +[rsi]
+ mov rdi, 0xD1FFAB1E ; System.Type
+ call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[rsi] +[rax]
+ mov r13, rax
; gcrRegs +[r13]
- mov rdi, r13
- ; gcrRegs +[rdi]
- call [System.RuntimeType:get_IsActualEnum():ubyte:this]
- ; gcrRegs -[rdi]
- test eax, eax
- jne G_M30614_IG52
- ;; size=20 bbWeight=0.03 PerfScore 0.13
-G_M30614_IG33: ; bbWeight=0.03, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
- cmp r13, rdi
- je G_M30614_IG66
- ;; size=19 bbWeight=0.03 PerfScore 0.04
-G_M30614_IG34: ; bbWeight=0.03, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
- cmp r13, rdi
- je G_M30614_IG54
- ;; size=19 bbWeight=0.03 PerfScore 0.04
-G_M30614_IG35: ; bbWeight=0.02, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
- cmp r13, rdi
- je G_M30614_IG65
- ;; size=19 bbWeight=0.02 PerfScore 0.04
-G_M30614_IG36: ; bbWeight=0.02, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
- cmp r13, rdi
- je G_M30614_IG63
- ;; size=19 bbWeight=0.02 PerfScore 0.04
-G_M30614_IG37: ; bbWeight=0.02, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
- cmp r13, rdi
- je G_M30614_IG55
- ;; size=19 bbWeight=0.02 PerfScore 0.03
-G_M30614_IG38: ; bbWeight=0.02, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
- cmp r13, rdi
- je G_M30614_IG56
- ;; size=19 bbWeight=0.02 PerfScore 0.03
-G_M30614_IG39: ; bbWeight=0.02, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
- cmp r13, rdi
- je G_M30614_IG62
- ;; size=19 bbWeight=0.02 PerfScore 0.03
-G_M30614_IG40: ; bbWeight=0.02, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
- cmp r13, rdi
- je G_M30614_IG61
- ;; size=19 bbWeight=0.02 PerfScore 0.03
-G_M30614_IG41: ; bbWeight=0.02, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
- cmp r13, rdi
- je G_M30614_IG60
- ;; size=19 bbWeight=0.02 PerfScore 0.03
-G_M30614_IG42: ; bbWeight=0.02, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
- cmp r13, rdi
- je G_M30614_IG69
- ;; size=19 bbWeight=0.02 PerfScore 0.02
-G_M30614_IG43: ; bbWeight=0.02, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
- cmp r13, rdi
- je G_M30614_IG64
- ;; size=19 bbWeight=0.02 PerfScore 0.02
-G_M30614_IG44: ; bbWeight=0.02, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
- cmp r13, rdi
- je G_M30614_IG59
- ;; size=19 bbWeight=0.02 PerfScore 0.02
-G_M30614_IG45: ; bbWeight=0.01, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
- cmp r13, rdi
- je G_M30614_IG68
- ;; size=19 bbWeight=0.01 PerfScore 0.02
-G_M30614_IG46: ; bbWeight=0.01, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
- cmp r13, rdi
- je G_M30614_IG67
- ;; size=19 bbWeight=0.01 PerfScore 0.02
-G_M30614_IG47: ; bbWeight=0.01, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
...
-8 (-0.58%) : 467602.dasm - MS.Internal.Xml.XPath.QueryBuilder:ProcessFilter(MS.Internal.Xml.XPath.Filter,int,byref):MS.Internal.Xml.XPath.Query:this (Tier1)
@@ -16,20 +16,20 @@
; V04 loc0 [V04,T25] ( 2, 2 ) ubyte -> r12
; V05 loc1 [V05 ] ( 9, 5.73) int -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op
; V06 loc2 [V06,T04] ( 13, 7.18) ref -> [rbp-0x48] class-hnd <MS.Internal.Xml.XPath.Query>
-; V07 loc3 [V07,T05] ( 18, 7.11) ref -> registers class-hnd <MS.Internal.Xml.XPath.Query>
+; V07 loc3 [V07,T05] ( 18, 7.08) ref -> registers class-hnd <MS.Internal.Xml.XPath.Query>
; V08 loc4 [V08,T28] ( 2, 1.87) ubyte -> [rbp-0x34] spill-single-def
-; V09 loc5 [V09,T29] ( 2, 1.62) ubyte -> rdi
+; V09 loc5 [V09,T29] ( 2, 1.62) ubyte -> r13
; V10 loc6 [V10,T15] ( 5, 2.76) ref -> r13 class-hnd exact <MS.Internal.Xml.XPath.FilterQuery>
; V11 loc7 [V11,T35] ( 6, 0.51) ref -> r14 class-hnd <MS.Internal.Xml.XPath.Query>
-; V12 loc8 [V12,T27] ( 4, 1.89) ref -> r12 class-hnd single-def <MS.Internal.Xml.XPath.Query>
+; V12 loc8 [V12,T27] ( 4, 1.89) ref -> r14 class-hnd single-def <MS.Internal.Xml.XPath.Query>
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V14 tmp1 [V14,T10] ( 3, 6 ) ref -> rdi class-hnd single-def "spilling ret_expr" <MS.Internal.Xml.XPath.AstNode>
;* V15 tmp2 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <MS.Internal.Xml.XPath.FilterQuery>
-; V16 tmp3 [V16,T08] ( 9, 6.84) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <MS.Internal.Xml.XPath.FilterQuery>
+; V16 tmp3 [V16,T08] ( 9, 6.84) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <MS.Internal.Xml.XPath.FilterQuery>
; V17 tmp4 [V17,T00] ( 10, 11.16) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <MS.Internal.Xml.XPath.FilterQuery>
; V18 tmp5 [V18,T17] ( 3, 2.98) ref -> rax class-hnd exact single-def "NewObj constructor temp" <MS.Internal.Xml.XPath.ContextQuery>
; V19 tmp6 [V19,T26] ( 2, 1.99) ref -> r13 class-hnd single-def "impAppendStmt" <MS.Internal.Xml.XPath.BaseAxisQuery>
-; V20 tmp7 [V20,T07] ( 7, 6.96) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <MS.Internal.Xml.XPath.MergeFilterQuery>
+; V20 tmp7 [V20,T07] ( 7, 6.96) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <MS.Internal.Xml.XPath.MergeFilterQuery>
; V21 tmp8 [V21,T32] ( 6, 0.84) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <MS.Internal.Xml.XPath.ForwardPositionQuery>
; V22 tmp9 [V22,T42] ( 3, 0.14) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <MS.Internal.Xml.XPath.ReversePositionQuery>
; V23 tmp10 [V23,T14] ( 3, 3.10) ref -> rsi class-hnd "spilling QMark2" <<unknown class>>
@@ -56,7 +56,7 @@
;* V44 tmp31 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <MS.Internal.Xml.XPath.OperandQuery>
; V45 tmp32 [V45,T36] ( 3, 0.42) ref -> rax class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V46 tmp33 [V46,T18] ( 3, 2.98) ref -> rax class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V47 tmp34 [V47,T30] ( 2, 1.52) ubyte -> r15 "Inlining Arg"
+; V47 tmp34 [V47,T30] ( 2, 1.52) ubyte -> rbx "Inlining Arg"
; V48 cse0 [V48,T40] ( 3, 0.39) long -> rax "CSE - conservative"
; V49 cse1 [V49,T41] ( 3, 0.39) long -> rax "CSE - conservative"
; V50 cse2 [V50,T19] ( 4, 2.86) ref -> r13 "CSE - moderate"
@@ -64,7 +64,7 @@
; V52 cse4 [V52,T12] ( 8, 4 ) ref -> r12 multi-def "CSE - moderate"
; V53 cse5 [V53,T16] ( 3, 3 ) long -> rax "CSE - moderate"
; V54 cse6 [V54,T37] ( 4, 0.39) long -> [rbp-0x40] spill-single-def "CSE - conservative"
-; V55 rat0 [V55,T09] ( 5, 6.44) ref -> rsi class-hnd "replacement local" <MS.Internal.Xml.XPath.BaseAxisQuery>
+; V55 rat0 [V55,T09] ( 5, 6.39) ref -> rsi class-hnd "replacement local" <MS.Internal.Xml.XPath.BaseAxisQuery>
; V56 rat1 [V56,T11] ( 6, 4.96) ref -> rax class-hnd "replacement local" <MS.Internal.Xml.XPath.ContextQuery>
;
; Lcl frame size = 56
@@ -256,7 +256,7 @@ G_M51233_IG20: ; bbWeight=0.13, gcrefRegs=A000 {r13 r15}, byrefRegs=0008
call [rax+0x08]<unknown method>
; gcrRegs -[rdi]
test eax, eax
- je G_M51233_IG56
+ je G_M51233_IG57
;; size=34 bbWeight=0.13 PerfScore 1.64
G_M51233_IG21: ; bbWeight=0.13, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0008 {rbx}, byref
mov rdi, 0xD1FFAB1E ; MS.Internal.Xml.XPath.BooleanExpr
@@ -298,26 +298,54 @@ G_M51233_IG23: ; bbWeight=0.62, gcrefRegs=C000 {r14 r15}, byrefRegs=0008
G_M51233_IG24: ; bbWeight=0.31, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=0008 {rbx}, byref
mov rdi, 0xD1FFAB1E ; <unknown class>
cmp qword ptr [rsi], rdi
- je G_M51233_IG57
+ je G_M51233_IG58
;; size=19 bbWeight=0.31 PerfScore 1.32
G_M51233_IG25: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rsi]
cmp gword ptr [r15+0x10], 0
- jne SHORT G_M51233_IG30
+ jne SHORT G_M51233_IG29
;; size=7 bbWeight=1 PerfScore 4.00
G_M51233_IG26: ; bbWeight=0.87, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz
mov rsi, r14
; gcrRegs +[rsi]
test rsi, rsi
- je SHORT G_M51233_IG29
+ je SHORT G_M51233_IG28
;; size=8 bbWeight=0.87 PerfScore 1.31
G_M51233_IG27: ; bbWeight=0.44, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=0008 {rbx}, byref, isz
mov rdi, 0xD1FFAB1E ; MS.Internal.Xml.XPath.ChildrenQuery
cmp qword ptr [rsi], rdi
- je SHORT G_M51233_IG29
+ jne SHORT G_M51233_IG33
;; size=15 bbWeight=0.44 PerfScore 1.85
-G_M51233_IG28: ; bbWeight=0.17, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref
+G_M51233_IG28: ; bbWeight=0.87, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=0008 {rbx}, byref
+ lea rdi, bword ptr [r15+0x10]
+ ; byrRegs +[rdi]
+ call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rsi]
+ ; byrRegs -[rdi]
+ ;; size=9 bbWeight=0.87 PerfScore 1.31
+G_M51233_IG29: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz
+ mov r13, qword ptr [r14]
+ mov rdi, 0xD1FFAB1E ; MS.Internal.Xml.XPath.ChildrenQuery
+ cmp r13, rdi
+ jne SHORT G_M51233_IG37
+ ;; size=18 bbWeight=1 PerfScore 3.50
+G_M51233_IG30: ; bbWeight=0.54, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref
+ mov eax, 16
+ ;; size=5 bbWeight=0.54 PerfScore 0.13
+G_M51233_IG31: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz
+ test al, 16
+ setne al
+ movzx rax, al
+ mov dword ptr [rbp-0x34], eax
+ mov rdi, 0xD1FFAB1E ; MS.Internal.Xml.XPath.ChildrenQuery
+ cmp r13, rdi
+ jne SHORT G_M51233_IG34
+ ;; size=26 bbWeight=1 PerfScore 4.00
+G_M51233_IG32: ; bbWeight=0.46, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz
+ mov ecx, 16
+ jmp SHORT G_M51233_IG35
+ ;; size=7 bbWeight=0.46 PerfScore 1.04
+G_M51233_IG33: ; bbWeight=0.14, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz
mov rsi, r14
; gcrRegs +[rsi]
mov rdi, 0xD1FFAB1E ; MS.Internal.Xml.XPath.BaseAxisQuery
@@ -325,46 +353,10 @@ G_M51233_IG28: ; bbWeight=0.17, gcrefRegs=C000 {r14 r15}, byrefRegs=0008
; gcrRegs -[rsi] +[rax]
mov rsi, rax
; gcrRegs +[rsi]
- ;; size=21 bbWeight=0.17 PerfScore 0.30
-G_M51233_IG29: ; bbWeight=0.87, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=0008 {rbx}, byref
- ; gcrRegs -[rax]
- lea rdi, bword ptr [r15+0x10]
- ; byrRegs +[rdi]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rsi]
- ; byrRegs -[rdi]
- ;; size=9 bbWeight=0.87 PerfScore 1.31
-G_M51233_IG30: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz
- mov r13, qword ptr [r14]
- mov rdi, 0xD1FFAB1E ; MS.Internal.Xml.XPath.ChildrenQuery
- cmp r13, rdi
- jne SHORT G_M51233_IG34
- ;; size=18 bbWeight=1 PerfScore 3.50
-G_M51233_IG31: ; bbWeight=0.54, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref
- mov eax, 16
- ;; size=5 bbWeight=0.54 PerfScore 0.13
-G_M51233_IG32: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz
- test al, 16
- setne al
- movzx rax, al
- mov dword ptr [rbp-0x34], eax
- mov rdi, 0xD1FFAB1E ; MS.Internal.Xml.XPath.ChildrenQuery
- cmp r13, rdi
- jne SHORT G_M51233_IG35
- ;; size=26 bbWeight=1 PerfScore 4.00
-G_M51233_IG33: ; bbWeight=0.46, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz
- mov ecx, 16
- jmp SHORT G_M51233_IG36
- ;; size=7 bbWeight=0.46 PerfScore 1.04
-G_M51233_IG34: ; bbWeight=0.46, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz
- mov rdi, r14
- ; gcrRegs +[rdi]
- mov rax, qword ptr [r13+0x58]
- call [rax+0x10]MS.Internal.Xml.XPath.Query:get_Properties():int:this
- ; gcrRegs -[rdi]
- jmp SHORT G_M51233_IG32
- ;; size=12 bbWeight=0.46 PerfScore 3.33
-G_M51233_IG35: ; bbWeight=0.54, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref
+ jmp SHORT G_M51233_IG28
+ ;; size=23 bbWeight=0.14 PerfScore 0.54
+G_M51233_IG34: ; bbWeight=0.54, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref
+ ; gcrRegs -[rax rsi]
mov rdi, r14
; gcrRegs +[rdi]
mov rcx, qword ptr [r13+0x58]
@@ -372,36 +364,101 @@ G_M51233_IG35: ; bbWeight=0.54, gcrefRegs=C000 {r14 r15}, byrefRegs=0008
; gcrRegs -[rdi]
mov ecx, eax
;; size=12 bbWeight=0.54 PerfScore 2.97
-G_M51233_IG36: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz
- xor edi, edi
+G_M51233_IG35: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref
+ xor r13d, r13d
test cl, 8
- setne dil
+ setne r13b
test byte ptr [rbp-0x30], 2
- je SHORT G_M51233_IG39
- ;; size=15 bbWeight=1 PerfScore 4.50
-G_M51233_IG37: ; bbWeight=0.62, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref
- test edi, edi
- jne G_M51233_IG48
- ;; size=8 bbWeight=0.62 PerfScore 0.77
+ je G_M51233_IG43
+ ;; size=20 bbWeight=1 PerfScore 4.50
+G_M51233_IG36: ; bbWeight=0.62, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz
+ jmp SHORT G_M51233_IG40
+ ;; size=2 bbWeight=0.62 PerfScore 1.24
+G_M51233_IG37: ; bbWeight=0.46, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz
+ mov rdi, r14
+ ; gcrRegs +[rdi]
+ mov rax, qword ptr [r13+0x58]
+ call [rax+0x10]MS.Internal.Xml.XPath.Query:get_Properties():int:this
+ ; gcrRegs -[rdi]
+ jmp SHORT G_M51233_IG31
+ ;; size=12 bbWeight=0.46 PerfScore 3.33
G_M51233_IG38: ; bbWeight=0.60, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref
test byte ptr [rbp-0x30], 4
- jne G_M51233_IG44
+ je G_M51233_IG43
;; size=10 bbWeight=0.60 PerfScore 1.79
-G_M51233_IG39: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref
+G_M51233_IG39: ; bbWeight=0.07, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz
+ jmp SHORT G_M51233_IG42
+ ;; size=2 bbWeight=0.07 PerfScore 0.14
+G_M51233_IG40: ; bbWeight=0.62, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz
+ test r13d, r13d
+ je SHORT G_M51233_IG38
+ ;; size=5 bbWeight=0.62 PerfScore 0.77
+G_M51233_IG41: ; bbWeight=0.02, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz
+ mov rdi, 0xD1FFAB1E ; MS.Internal.Xml.XPath.ReversePositionQuery
+ call CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[rax]
+ mov r13, rax
+ ; gcrRegs +[r13]
+ mov rdi, r13
+ ; gcrRegs +[rdi]
+ mov rsi, r14
+ ; gcrRegs +[rsi]
+ call [MS.Internal.Xml.XPath.CacheOutputQuery:.ctor(MS.Internal.Xml.XPath.Query):this]
+ ; gcrRegs -[rax rsi rdi r14]
+ mov r14, r13
+ ; gcrRegs +[r14]
+ jmp SHORT G_M51233_IG43
+ ;; size=35 bbWeight=0.02 PerfScore 0.17
+G_M51233_IG42: ; bbWeight=0.07, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref
+ ; gcrRegs -[r13]
+ mov rdi, 0xD1FFAB1E ; MS.Internal.Xml.XPath.ForwardPositionQuery
+ call CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[rax]
+ mov r13, rax
+ ; gcrRegs +[r13]
+ mov dword ptr [r13+0x08], -1
+ lea rdi, bword ptr [r13+0x10]
+ ; byrRegs +[rdi]
+ mov rsi, r14
+ ; gcrRegs +[rsi]
+ call CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[rax rsi r14]
+ ; byrRegs -[rdi]
+ mov rdi, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[rax]
+ mov rdi, 0xD1FFAB1E
+ ; gcrRegs +[rdi]
+ mov gword ptr [rax+0x08], rdi
+ lea rdi, bword ptr [r13+0x18]
+ ; gcrRegs -[rdi]
+ ; byrRegs +[rdi]
+ mov rsi, rax
+ ; gcrRegs +[rsi]
...
+9 (+1.80%) : 79692.dasm - System.Collections.Immutable.ImmutableArray:CreateRangeSystem.__Canon:System.Collections.Immutable.ImmutableArray`1System.__Canon
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 TypeCtx [V00,T01] ( 11, 5.45) long -> r15 single-def
-; V01 arg0 [V01,T00] ( 8, 5.81) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V01 arg0 [V01,T00] ( 8, 5.76) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V02 loc0 [V02,T08] ( 5, 2.40) ref -> rdi class-hnd single-def <System.Collections.Immutable.IImmutableArray>
; V03 loc1 [V03 ] ( 2, 1.27) int -> [rbp-0x20] do-not-enreg[X] addr-exposed ld-addr-op
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Array>
@@ -54,7 +54,7 @@
; V42 rat9 [V42,T15] ( 3, 1.30) long -> rdi "runtime lookup"
; V43 rat10 [V43,T12] ( 3, 1.82) long -> rdi "spilling expr"
; V44 rat11 [V44,T13] ( 3, 1.45) long -> rdi "fgMakeTemp is creating a new local variable"
-; V45 rat12 [V45,T02] ( 5, 7.42) ref -> rdi class-hnd "replacement local" <System.Collections.Immutable.IImmutableArray>
+; V45 rat12 [V45,T02] ( 5, 7.33) ref -> rdi class-hnd "replacement local" <System.Collections.Immutable.IImmutableArray>
;
; Lcl frame size = 16
@@ -75,59 +75,48 @@ G_M43512_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov rdi, rbx
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M43512_IG05
+ je SHORT G_M43512_IG04
;; size=17 bbWeight=1 PerfScore 2.75
-G_M43512_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; System.Collections.Immutable.ImmutableArray`1[System.String]
cmp qword ptr [rdi], rsi
- je SHORT G_M43512_IG05
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M43512_IG04: ; bbWeight=0.21, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- mov rsi, rbx
- ; gcrRegs +[rsi]
- mov rdi, 0xD1FFAB1E ; System.Collections.Immutable.IImmutableArray
- call CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[rsi] +[rax]
- mov rdi, rax
- ; gcrRegs +[rdi]
- ;; size=21 bbWeight=0.21 PerfScore 0.37
-G_M43512_IG05: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+ jne G_M43512_IG25
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M43512_IG04: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
test rdi, rdi
- jne G_M43512_IG18
+ jne G_M43512_IG17
;; size=9 bbWeight=1 PerfScore 1.25
-G_M43512_IG06: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG05: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
mov rdi, qword ptr [r15+0x38]
cmp qword ptr [rdi+0x08], 24
- jle SHORT G_M43512_IG17
+ jle SHORT G_M43512_IG16
;; size=11 bbWeight=0.80 PerfScore 4.79
-G_M43512_IG07: ; bbWeight=0.64, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG06: ; bbWeight=0.64, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rdi+0x18]
test rdi, rdi
- je SHORT G_M43512_IG17
+ je SHORT G_M43512_IG16
;; size=9 bbWeight=0.64 PerfScore 2.08
-G_M43512_IG08: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG07: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
lea rdx, [rbp-0x20]
mov rsi, rbx
; gcrRegs +[rsi]
call [System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte]
; gcrRegs -[rsi]
test eax, eax
- je SHORT G_M43512_IG13
+ je SHORT G_M43512_IG12
;; size=17 bbWeight=0.80 PerfScore 3.99
-G_M43512_IG09: ; bbWeight=0.47, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M43512_IG08: ; bbWeight=0.47, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, qword ptr [r15+0x38]
cmp qword ptr [rdi+0x08], 48
- jle G_M43512_IG25
+ jle G_M43512_IG24
;; size=15 bbWeight=0.47 PerfScore 2.84
-G_M43512_IG10: ; bbWeight=0.38, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M43512_IG09: ; bbWeight=0.38, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, qword ptr [rdi+0x30]
test rdi, rdi
- je G_M43512_IG25
+ je G_M43512_IG24
;; size=13 bbWeight=0.38 PerfScore 1.23
-G_M43512_IG11: ; bbWeight=0.47, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M43512_IG10: ; bbWeight=0.47, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rsi, rbx
; gcrRegs +[rsi]
mov edx, dword ptr [rbp-0x20]
@@ -135,57 +124,57 @@ G_M43512_IG11: ; bbWeight=0.47, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rbx rsi] +[rax]
nop
;; size=13 bbWeight=0.47 PerfScore 2.13
-G_M43512_IG12: ; bbWeight=0.47, epilog, nogc, extend
+G_M43512_IG11: ; bbWeight=0.47, epilog, nogc, extend
add rsp, 16
pop rbx
pop r15
pop rbp
ret
;; size=9 bbWeight=0.47 PerfScore 1.30
-G_M43512_IG13: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M43512_IG12: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] +[rbx]
mov rdi, qword ptr [r15+0x38]
cmp qword ptr [rdi+0x08], 32
jle G_M43512_IG26
;; size=15 bbWeight=0.32 PerfScore 1.95
-G_M43512_IG14: ; bbWeight=0.26, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M43512_IG13: ; bbWeight=0.26, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, qword ptr [rdi+0x20]
test rdi, rdi
je G_M43512_IG26
;; size=13 bbWeight=0.26 PerfScore 0.84
-G_M43512_IG15: ; bbWeight=0.32, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M43512_IG14: ; bbWeight=0.32, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rsi, rbx
; gcrRegs +[rsi]
call [System.Linq.Enumerable:ToArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[]]
; gcrRegs -[rbx rsi] +[rax]
nop
;; size=10 bbWeight=0.32 PerfScore 1.14
-G_M43512_IG16: ; bbWeight=0.32, epilog, nogc, extend
+G_M43512_IG15: ; bbWeight=0.32, epilog, nogc, extend
add rsp, 16
pop rbx
pop r15
pop rbp
ret
;; size=9 bbWeight=0.32 PerfScore 0.89
-G_M43512_IG17: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M43512_IG16: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] +[rbx]
mov rdi, r15
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov rdi, rax
- jmp G_M43512_IG08
+ jmp G_M43512_IG07
;; size=26 bbWeight=0.29 PerfScore 1.08
-G_M43512_IG18: ; bbWeight=0.20, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M43512_IG17: ; bbWeight=0.20, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] +[rdi]
mov r11, 0xD1FFAB1E ; System.Collections.Immutable.ImmutableArray`1[System.String]
cmp qword ptr [rdi], r11
jne G_M43512_IG29
;; size=19 bbWeight=0.20 PerfScore 0.86
-G_M43512_IG19: ; bbWeight=0.17, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M43512_IG18: ; bbWeight=0.17, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov rbx, gword ptr [rdi+0x08]
; gcrRegs +[rbx]
;; size=4 bbWeight=0.17 PerfScore 0.34
-G_M43512_IG20: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG19: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
test rbx, rbx
je G_M43512_IG31
@@ -193,50 +182,61 @@ G_M43512_IG20: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
cmp qword ptr [rdi+0x08], 56
jle SHORT G_M43512_IG27
;; size=20 bbWeight=0.20 PerfScore 1.46
-G_M43512_IG21: ; bbWeight=0.16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG20: ; bbWeight=0.16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rax, qword ptr [rdi+0x38]
test rax, rax
je SHORT G_M43512_IG27
;; size=9 bbWeight=0.16 PerfScore 0.52
-G_M43512_IG22: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M43512_IG21: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, rax
mov rcx, rbx
; gcrRegs +[rcx]
cmp qword ptr [rcx], rax
jne SHORT G_M43512_IG28
;; size=11 bbWeight=0.20 PerfScore 0.91
-G_M43512_IG23: ; bbWeight=0.20, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M43512_IG22: ; bbWeight=0.20, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
mov rax, rcx
; gcrRegs +[rax]
;; size=3 bbWeight=0.20 PerfScore 0.05
-G_M43512_IG24: ; bbWeight=0.20, epilog, nogc, extend
+G_M43512_IG23: ; bbWeight=0.20, epilog, nogc, extend
add rsp, 16
pop rbx
pop r15
pop rbp
ret
;; size=9 bbWeight=0.20 PerfScore 0.55
-G_M43512_IG25: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M43512_IG24: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rcx] +[rbx]
mov rdi, r15
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov rdi, rax
- jmp G_M43512_IG11
+ jmp G_M43512_IG10
;; size=26 bbWeight=0.17 PerfScore 0.64
+G_M43512_IG25: ; bbWeight=0.17, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rsi, rbx
+ ; gcrRegs +[rsi]
+ mov rdi, 0xD1FFAB1E ; System.Collections.Immutable.IImmutableArray
+ call CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[rsi] +[rax]
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ jmp G_M43512_IG04
+ ;; size=26 bbWeight=0.17 PerfScore 0.62
G_M43512_IG26: ; bbWeight=0.12, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rdi]
mov rdi, r15
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov rdi, rax
- jmp G_M43512_IG15
+ jmp G_M43512_IG14
;; size=26 bbWeight=0.12 PerfScore 0.44
G_M43512_IG27: ; bbWeight=0.07, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, r15
mov rsi, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- jmp SHORT G_M43512_IG22
+ jmp SHORT G_M43512_IG21
;; size=20 bbWeight=0.07 PerfScore 0.25
G_M43512_IG28: ; bbWeight=0.05, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, rbx
@@ -245,7 +245,7 @@ G_M43512_IG28: ; bbWeight=0.05, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rbx rsi] +[rax]
mov rcx, rax
; gcrRegs +[rcx]
- jmp SHORT G_M43512_IG23
+ jmp SHORT G_M43512_IG22
;; size=13 bbWeight=0.05 PerfScore 0.18
G_M43512_IG29: ; bbWeight=0.03, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rcx] +[rdi]
@@ -254,7 +254,7 @@ G_M43512_IG29: ; bbWeight=0.03, gcrefRegs=0080 {rdi}, byrefRegs=0000 {},
; gcrRegs -[rdi] +[rax]
mov rbx, rax
; gcrRegs +[rbx]
- jmp G_M43512_IG20
+ jmp G_M43512_IG19
;; size=21 bbWeight=0.03 PerfScore 0.17
G_M43512_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
...
+13 (+2.57%) : 423898.dasm - System.Threading.Tasks.Task:TrySetException(System.Object):ubyte:this (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 11, 8.82) ref -> rbx this class-hnd single-def <System.Threading.Tasks.Task>
-; V01 arg1 [V01,T01] ( 12, 6.57) ref -> r15 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T01] ( 12, 6.55) ref -> r15 class-hnd single-def <System.Object>
; V02 loc0 [V02,T07] ( 3, 2.97) ubyte -> r14
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T08] ( 2, 0.28) int -> rdi
@@ -27,7 +27,7 @@
; V15 tmp12 [V15,T05] ( 5, 5.00) int -> [rbp-0x1C] spill-single-def "Inline stloc first use temp"
;* V16 tmp13 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V17 tmp14 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V18 rat0 [V18,T02] ( 5, 7.38) ref -> rax class-hnd "replacement local" <<unknown class>>
+; V18 rat0 [V18,T02] ( 5, 7.35) ref -> rax class-hnd "replacement local" <<unknown class>>
; V19 rat1 [V19,T09] ( 6, 1.10) ref -> rax class-hnd "replacement local" <<unknown class>>
; V20 rat2 [V20,T11] ( 5, 0.97) ref -> rcx class-hnd "replacement local" <<unknown class>>
;
@@ -61,26 +61,18 @@ G_M26266_IG04: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
mov rax, r15
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M26266_IG07
+ je SHORT G_M26266_IG06
;; size=8 bbWeight=1 PerfScore 1.50
-G_M26266_IG05: ; bbWeight=0.50, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M26266_IG05: ; bbWeight=0.50, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; System.Security.Authentication.AuthenticationException
cmp qword ptr [rax], rsi
- je SHORT G_M26266_IG07
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M26266_IG06: ; bbWeight=0.19, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rsi, r15
- ; gcrRegs +[rsi]
- mov rdi, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[rsi] +[rax]
- ;; size=18 bbWeight=0.19 PerfScore 0.29
-G_M26266_IG07: ; bbWeight=1, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
+ jne G_M26266_IG17
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M26266_IG06: ; bbWeight=1, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
test rax, rax
- je SHORT G_M26266_IG10
+ je SHORT G_M26266_IG09
;; size=5 bbWeight=1 PerfScore 1.25
-G_M26266_IG08: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M26266_IG07: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
xor r14d, r14d
mov rax, gword ptr [rbx+0x28]
@@ -88,56 +80,56 @@ G_M26266_IG08: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
test rax, rax
jne G_M26266_IG19
;; size=16 bbWeight=1 PerfScore 3.50
-G_M26266_IG09: ; bbWeight=0.93, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M26266_IG08: ; bbWeight=0.93, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- jmp G_M26266_IG18
+ jmp G_M26266_IG28
;; size=5 bbWeight=0.93 PerfScore 1.86
-G_M26266_IG10: ; bbWeight=0.14, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M26266_IG09: ; bbWeight=0.14, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rax, r15
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M26266_IG12
+ je SHORT G_M26266_IG11
;; size=8 bbWeight=0.14 PerfScore 0.21
-G_M26266_IG11: ; bbWeight=0.07, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref
+G_M26266_IG10: ; bbWeight=0.07, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Runtime.ExceptionServices.ExceptionDispatchInfo]
cmp qword ptr [rax], rdi
- jne G_M26266_IG30
+ jne G_M26266_IG31
xor rax, rax
;; size=21 bbWeight=0.07 PerfScore 0.31
-G_M26266_IG12: ; bbWeight=0.14, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M26266_IG11: ; bbWeight=0.14, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
test rax, rax
- jne SHORT G_M26266_IG08
+ jne SHORT G_M26266_IG07
mov rdi, r15
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M26266_IG14
+ je SHORT G_M26266_IG13
;; size=13 bbWeight=0.14 PerfScore 0.38
-G_M26266_IG13: ; bbWeight=0.07, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
+G_M26266_IG12: ; bbWeight=0.07, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rsi, 0xD1FFAB1E ; System.Runtime.ExceptionServices.ExceptionDispatchInfo
cmp qword ptr [rdi], rsi
- je SHORT G_M26266_IG08
+ je SHORT G_M26266_IG07
;; size=15 bbWeight=0.07 PerfScore 0.29
-G_M26266_IG14: ; bbWeight=0.14, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M26266_IG13: ; bbWeight=0.14, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
mov rcx, r15
; gcrRegs +[rcx]
test rcx, rcx
- je SHORT G_M26266_IG16
+ je SHORT G_M26266_IG15
;; size=8 bbWeight=0.14 PerfScore 0.21
-G_M26266_IG15: ; bbWeight=0.07, gcrefRegs=800A {rcx rbx r15}, byrefRegs=0000 {}, byref
+G_M26266_IG14: ; bbWeight=0.07, gcrefRegs=800A {rcx rbx r15}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Runtime.ExceptionServices.ExceptionDispatchInfo]
cmp qword ptr [rcx], rdi
- jne G_M26266_IG31
+ jne G_M26266_IG33
;; size=19 bbWeight=0.07 PerfScore 0.29
-G_M26266_IG16: ; bbWeight=0.14, gcrefRegs=800A {rcx rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M26266_IG15: ; bbWeight=0.14, gcrefRegs=800A {rcx rbx r15}, byrefRegs=0000 {}, byref, isz
xor edi, edi
test rcx, rcx
setne dil
test dil, dil
- jne SHORT G_M26266_IG08
+ jne SHORT G_M26266_IG07
;; size=14 bbWeight=0.14 PerfScore 0.38
-G_M26266_IG17: ; bbWeight=1.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M26266_IG16: ; bbWeight=1.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
@@ -145,17 +137,18 @@ G_M26266_IG17: ; bbWeight=1.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
; gcrRegs +[rsi]
call [<unknown method>]
; gcrRegs -[rsi rdi]
- jmp G_M26266_IG08
+ jmp G_M26266_IG07
;; size=31 bbWeight=1.00 PerfScore 5.50
-G_M26266_IG18: ; bbWeight=0.93, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task+ContingentProperties
- call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[rax]
- lea rdi, bword ptr [rbx+0x28]
+G_M26266_IG17: ; bbWeight=0.17, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ mov rsi, r15
+ ; gcrRegs +[rsi]
+ mov rdi, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[rsi] +[rax]
+ jmp G_M26266_IG06
+ ;; size=23 bbWeight=0.17 PerfScore 0.61
+G_M26266_IG18: ; bbWeight=0.93, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0080 {rdi}, byref
; byrRegs +[rdi]
- mov dword ptr [rax+0x3C], 1
- test rdi, rdi
- je G_M26266_IG32
mov rsi, rax
; gcrRegs +[rsi]
xor rdx, rdx
@@ -163,7 +156,7 @@ G_M26266_IG18: ; bbWeight=0.93, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
call <unknown method>
; gcrRegs -[rdx rsi]
; byrRegs -[rdi]
- ;; size=45 bbWeight=0.93 PerfScore 5.11
+ ;; size=10 bbWeight=0.93 PerfScore 1.39
G_M26266_IG19: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov eax, dword ptr [rbx+0x34]
@@ -179,7 +172,7 @@ G_M26266_IG20: ; bbWeight=1.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
lock
cmpxchg dword ptr [rdi], esi
cmp eax, dword ptr [rbp-0x1C]
- jne G_M26266_IG33
+ jne G_M26266_IG34
;; size=25 bbWeight=1.00 PerfScore 21.99
G_M26266_IG21: ; bbWeight=1.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi]
@@ -203,7 +196,7 @@ G_M26266_IG23: ; bbWeight=0.97, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
call [<unknown method>]
; gcrRegs -[rsi rdi r15]
cmp gword ptr [rbx+0x28], 0
- je SHORT G_M26266_IG28
+ je SHORT G_M26266_IG29
;; size=21 bbWeight=0.97 PerfScore 7.48
G_M26266_IG24: ; bbWeight=0.88, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, rbx
@@ -226,30 +219,48 @@ G_M26266_IG27: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=1 PerfScore 3.25
-G_M26266_IG28: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx]
+G_M26266_IG28: ; bbWeight=0.93, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rbx r15]
+ mov rdi, 0xD1FFAB1E ; System.Threading.Tasks.Task+ContingentProperties
+ call CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[rax]
+ lea rdi, bword ptr [rbx+0x28]
+ ; byrRegs +[rdi]
+ mov dword ptr [rax+0x3C], 1
+ test rdi, rdi
+ je SHORT G_M26266_IG32
+ jmp G_M26266_IG18
+ ;; size=36 bbWeight=0.93 PerfScore 5.57
+G_M26266_IG29: ; bbWeight=0.09, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax r15]
+ ; byrRegs -[rdi]
mov rdi, rbx
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rbx rdi]
jmp SHORT G_M26266_IG25
;; size=11 bbWeight=0.09 PerfScore 0.47
-G_M26266_IG29: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M26266_IG30: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx r15]
test eax, eax
je SHORT G_M26266_IG26
- jmp SHORT G_M26266_IG21
- ;; size=6 bbWeight=0 PerfScore 0.00
-G_M26266_IG30: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ jmp G_M26266_IG21
+ ;; size=9 bbWeight=0 PerfScore 0.00
+G_M26266_IG31: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rsi, r15
; gcrRegs +[rsi]
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[rsi] +[rax]
- jmp G_M26266_IG12
+ jmp G_M26266_IG11
;; size=23 bbWeight=0 PerfScore 0.00
-G_M26266_IG31: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+G_M26266_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rbx r15]
+ call [System.ThrowHelper:ThrowNullReferenceException()]
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M26266_IG33: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx r15]
mov rsi, r15
; gcrRegs +[rsi]
mov rdi, 0xD1FFAB1E ; <unknown class>
@@ -257,25 +268,20 @@ G_M26266_IG31: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
; gcrRegs -[rsi] +[rax]
mov rcx, rax
; gcrRegs +[rcx]
- jmp G_M26266_IG16
+ jmp G_M26266_IG15
;; size=26 bbWeight=0 PerfScore 0.00
-G_M26266_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rcx rbx r15]
- call [System.ThrowHelper:ThrowNullReferenceException()]
...
+25 (+4.50%) : 138511.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.09) 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
@@ -29,7 +29,7 @@
; V17 tmp9 [V17,T14] ( 3, 0 ) ref -> rax "field V07.m_task (fldOffset=0x0)" P-INDEP
;* V18 tmp10 [V18,T15] ( 0, 0 ) ref -> zero-ref single-def "field V15._source (fldOffset=0x0)" P-INDEP
; V19 PSPSym [V19,T05] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
-; V20 rat0 [V20,T01] ( 5, 7.42) ref -> rax class-hnd "replacement local" <<unknown class>>
+; V20 rat0 [V20,T01] ( 5, 7.30) ref -> rax class-hnd "replacement local" <<unknown class>>
; V21 rat1 [V21,T02] ( 6, 6.57) ref -> rax class-hnd "replacement local" <<unknown class>>
;
; Lcl frame size = 24
@@ -51,67 +51,48 @@ 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_IG11
+ je SHORT G_M19770_IG09
mov rax, rbx
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M19770_IG05
+ je SHORT G_M19770_IG04
;; 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.Hosting.Internal.Host
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
- ; gcrRegs -[rax]
- mov rsi, rbx
- ; gcrRegs +[rsi]
- mov rdi, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[rsi] +[rax]
- ; gcr arg pop 0
- ;; size=18 bbWeight=0.21 PerfScore 0.32
-G_M19770_IG05: ; bbWeight=1, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
+ jne G_M19770_IG22
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M19770_IG04: ; bbWeight=1, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
test rax, rax
- jne SHORT G_M19770_IG13
+ jne SHORT G_M19770_IG11
;; size=5 bbWeight=1 PerfScore 1.25
-G_M19770_IG06: ; bbWeight=0.82, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG05: ; 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_IG10
+ je SHORT G_M19770_IG08
;; size=8 bbWeight=0.82 PerfScore 1.23
-G_M19770_IG07: ; bbWeight=0.41, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG06: ; 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
- je SHORT G_M19770_IG09
- ;; size=15 bbWeight=0.41 PerfScore 1.75
-G_M19770_IG08: ; 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_IG10
- ;; size=20 bbWeight=0.20 PerfScore 0.69
-G_M19770_IG09: ; bbWeight=0.21, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ jne G_M19770_IG21
+ ;; size=19 bbWeight=0.41 PerfScore 1.75
+G_M19770_IG07: ; bbWeight=0.29, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
xor rax, rax
; gcrRegs +[rax]
- ;; size=2 bbWeight=0.21 PerfScore 0.05
-G_M19770_IG10: ; bbWeight=0.82, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.29 PerfScore 0.07
+G_M19770_IG08: ; bbWeight=0.82, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
test rax, rax
- jne SHORT G_M19770_IG13
+ jne SHORT G_M19770_IG11
;; size=5 bbWeight=0.82 PerfScore 1.03
-G_M19770_IG11: ; bbWeight=0.82, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M19770_IG09: ; 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_IG12: ; bbWeight=0.82, epilog, nogc, extend
+G_M19770_IG10: ; bbWeight=0.82, epilog, nogc, extend
add rsp, 24
pop rbx
pop r14
@@ -119,7 +100,7 @@ G_M19770_IG12: ; bbWeight=0.82, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=0.82 PerfScore 2.67
-G_M19770_IG13: ; bbWeight=0.18, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref
+G_M19770_IG11: ; 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]
@@ -129,9 +110,9 @@ G_M19770_IG13: ; 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_IG14: ; bbWeight=0.18, gcVars=0000000000000100 {V03}, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M19770_IG12: ; 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_IG19
+ jne G_M19770_IG17
lea rsi, [rbp-0x20]
call <unknown method>
; gcrRegs -[rdi]
@@ -140,11 +121,11 @@ G_M19770_IG14: ; bbWeight=0.18, gcVars=0000000000000100 {V03}, gcrefRegs=
call [<unknown method>]
; gcr arg pop 0
cmp byte ptr [r15+0x20], 0
- jne SHORT G_M19770_IG18
+ jne SHORT G_M19770_IG16
cmp gword ptr [r15+0x08], 0
- je SHORT G_M19770_IG17
+ je SHORT G_M19770_IG15
;; size=44 bbWeight=0.18 PerfScore 2.95
-G_M19770_IG15: ; bbWeight=0.18, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG13: ; bbWeight=0.18, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [r15+0x08]
; gcrRegs +[rdi]
inc dword ptr [rdi+0x14]
@@ -152,9 +133,9 @@ G_M19770_IG15: ; 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_IG20
+ jbe SHORT G_M19770_IG18
;; size=19 bbWeight=0.18 PerfScore 2.32
-G_M19770_IG16: ; bbWeight=0.07, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG14: ; bbWeight=0.07, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
lea eax, [rsi+0x01]
mov dword ptr [rdi+0x10], eax
@@ -164,9 +145,9 @@ G_M19770_IG16: ; bbWeight=0.07, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0
call CORINFO_HELP_ARRADDR_ST
; gcrRegs -[rdx rdi]
; gcr arg pop 0
- jmp SHORT G_M19770_IG21
+ jmp SHORT G_M19770_IG19
;; size=22 bbWeight=0.07 PerfScore 0.38
-G_M19770_IG17: ; bbWeight=0.04, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG15: ; bbWeight=0.04, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r15]
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
@@ -183,20 +164,20 @@ G_M19770_IG17: ; bbWeight=0.04, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- jmp SHORT G_M19770_IG15
+ jmp SHORT G_M19770_IG13
;; size=43 bbWeight=0.04 PerfScore 0.22
-G_M19770_IG18: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG16: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
mov r14d, 1
- jmp SHORT G_M19770_IG21
+ jmp SHORT G_M19770_IG19
;; size=8 bbWeight=0 PerfScore 0.00
-G_M19770_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19770_IG17: ; 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.11, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+G_M19770_IG18: ; bbWeight=0.11, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx rdi]
mov rsi, rbx
; gcrRegs +[rsi]
@@ -205,9 +186,9 @@ G_M19770_IG20: ; bbWeight=0.11, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcr arg pop 0
nop
;; size=10 bbWeight=0.11 PerfScore 0.38
-G_M19770_IG21: ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M19770_IG19: ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbp-0x20], 0
- je SHORT G_M19770_IG22
+ je SHORT G_M19770_IG20
mov rdi, gword ptr [rbp-0x28]
; gcrRegs +[rdi]
; GC ptr vars -{V03}
@@ -215,28 +196,33 @@ G_M19770_IG21: ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rdi]
; gcr arg pop 0
;; size=15 bbWeight=0.18 PerfScore 0.89
-G_M19770_IG22: ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M19770_IG20: ; bbWeight=0.18, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
test r14d, r14d
- je G_M19770_IG11
- ;; size=9 bbWeight=0.18 PerfScore 0.22
-G_M19770_IG23: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne G_M19770_IG25
+ jmp G_M19770_IG09
+ ;; size=14 bbWeight=0.18 PerfScore 0.58
+G_M19770_IG21: ; 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_IG24
- mov rdi, rax
- ; gcrRegs +[rdi]
- mov r11, 0xD1FFAB1E ; code for <unknown method>
- call [r11]<unknown method>
- ; gcrRegs -[rax rdi]
+ jmp G_M19770_IG08
+ ;; size=23 bbWeight=0.12 PerfScore 0.43
+G_M19770_IG22: ; bbWeight=0.15, 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_IG25
- ;; size=41 bbWeight=0 PerfScore 0.00
-G_M19770_IG24: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M19770_IG04
+ ;; size=23 bbWeight=0.15 PerfScore 0.52
+G_M19770_IG23: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax r15]
mov rdi, 0xD1FFAB1E ; Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope+<>c__DisplayClass24_0
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
...
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 |
0 |
0 |
0 |
0 |
-0 |
+0 |
| benchmarks.run_tiered.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| coreclr_tests.run.linux.x64.checked.mch |
2 |
2 |
0 |
0 |
-78 |
+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 |
23 |
5 |
18 |
0 |
-46 |
+283 |
| 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 |
|
25 |
7 |
18 |
0 |
-124 |
+283 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.x64.checked.mch |
42,539 |
3,142 |
39,397 |
0 (0.00%) |
318 (0.74%) |
| benchmarks.run_pgo.linux.x64.checked.mch |
158,225 |
60,175 |
98,050 |
0 (0.00%) |
152 (0.10%) |
| benchmarks.run_tiered.linux.x64.checked.mch |
56,420 |
42,284 |
14,136 |
0 (0.00%) |
80 (0.14%) |
| coreclr_tests.run.linux.x64.checked.mch |
596,318 |
354,686 |
241,632 |
0 (0.00%) |
453 (0.08%) |
| libraries.crossgen2.linux.x64.checked.mch |
234,032 |
15 |
234,017 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.linux.x64.checked.mch |
294,325 |
6 |
294,319 |
0 (0.00%) |
1,909 (0.64%) |
| libraries_tests.run.linux.x64.Release.mch |
760,268 |
495,580 |
264,688 |
0 (0.00%) |
1,384 (0.18%) |
| librariestestsnotieredcompilation.run.linux.x64.Release.mch |
303,262 |
21,873 |
281,389 |
0 (0.00%) |
2,086 (0.68%) |
| realworld.run.linux.x64.checked.mch |
32,732 |
9 |
32,723 |
0 (0.00%) |
337 (1.02%) |
| smoke_tests.nativeaot.linux.x64.checked.mch |
27,417 |
10 |
27,407 |
0 (0.00%) |
5 (0.02%) |
|
2,505,538 |
977,780 |
1,527,758 |
0 (0.00%) |
6,724 (0.27%) |
jit-analyze output
coreclr_tests.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 403034105 (overridden on cmd)
Total bytes of diff: 403034027 (overridden on cmd)
Total bytes of delta: -78 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-49 : 388915.dasm (-3.84 % of base)
-29 : 396625.dasm (-2.25 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-49 (-3.84 % of base) : 388915.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-29 (-2.25 % of base) : 396625.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
Top method improvements (percentages):
-49 (-3.84 % of base) : 388915.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-29 (-2.25 % of base) : 396625.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
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 340326239 (overridden on cmd)
Total bytes of diff: 340326476 (overridden on cmd)
Total bytes of delta: 237 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
62 : 565700.dasm (4.74 % of base)
57 : 694924.dasm (13.57 % of base)
33 : 524234.dasm (0.83 % of base)
25 : 138511.dasm (4.50 % of base)
14 : 684512.dasm (1.24 % of base)
14 : 423378.dasm (0.48 % of base)
13 : 423898.dasm (2.57 % of base)
12 : 489909.dasm (1.57 % of base)
12 : 187837.dasm (1.61 % of base)
9 : 79692.dasm (1.80 % of base)
8 : 691668.dasm (0.75 % of base)
7 : 746437.dasm (0.42 % of base)
5 : 202118.dasm (0.38 % of base)
5 : 656848.dasm (0.28 % of base)
3 : 96635.dasm (0.62 % of base)
2 : 330658.dasm (0.09 % of base)
1 : 262735.dasm (0.01 % of base)
1 : 325522.dasm (0.07 % of base)
Top file improvements (bytes):
-13 : 129099.dasm (-1.06 % of base)
-11 : 565909.dasm (-1.19 % of base)
-9 : 744334.dasm (-0.50 % of base)
-8 : 467602.dasm (-0.58 % of base)
-5 : 80211.dasm (-0.28 % of base)
23 total files with Code Size differences (5 improved, 18 regressed), 0 unchanged.
Top method regressions (bytes):
62 (4.74 % of base) : 565700.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormatted[System.__Canon](System.__Canon,System.String):this (Tier1)
57 (13.57 % of base) : 694924.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetTupleCardinality(Microsoft.CodeAnalysis.CSharp.BoundExpression):int (Tier1)
33 (0.83 % of base) : 524234.dasm - System.Runtime.Serialization.Formatters.Tests.EqualityExtensions:CheckSequenceEquals(System.Collections.IEnumerable,System.Collections.IEnumerable,ubyte) (Tier1-OSR)
25 (4.50 % of base) : 138511.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
14 (1.24 % of base) : 684512.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<TestEscapedValuesOnDeserialize>d__160:MoveNext():this (Tier1)
14 (0.48 % of base) : 423378.dasm - Xunit.Sdk.TestInvoker`1+<<RunAsync>b__47_0>d[System.__Canon]:MoveNext():this (Tier1)
13 (2.57 % of base) : 423898.dasm - System.Threading.Tasks.Task:TrySetException(System.Object):ubyte:this (Tier1)
12 (1.61 % of base) : 187837.dasm - Microsoft.Cci.MetadataWriter:ResolveEntityHandleFromPseudoToken(int):System.Reflection.Metadata.EntityHandle:this (Tier1)
12 (1.57 % of base) : 489909.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
9 (1.80 % of base) : 79692.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.75 % of base) : 691668.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsInScopeOfAssociatedSyntaxTree(Microsoft.CodeAnalysis.CSharp.Symbol):ubyte:this (Tier1)
7 (0.42 % of base) : 746437.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
5 (0.38 % of base) : 202118.dasm - Microsoft.VisualBasic.CompilerServices.StringType:FromObject(System.Object):System.String (Tier1)
5 (0.28 % of base) : 656848.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
3 (0.62 % of base) : 96635.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
2 (0.09 % of base) : 330658.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
1 (0.01 % of base) : 262735.dasm - System.Configuration.ConfigurationElement:DeserializeElement(System.Xml.XmlReader,ubyte):this (Tier1)
1 (0.07 % of base) : 325522.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
Top method improvements (bytes):
-13 (-1.06 % of base) : 129099.dasm - System.Linq.Expressions.Compiler.ILGen:CanEmitConstant(System.Object,System.Type):ubyte (Tier1)
-11 (-1.19 % of base) : 565909.dasm - System.Linq.Expressions.Compiler.VariableBinder:MergeScopes(System.Linq.Expressions.Expression):System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]:this (Tier1)
-9 (-0.50 % of base) : 744334.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
-8 (-0.58 % of base) : 467602.dasm - MS.Internal.Xml.XPath.QueryBuilder:ProcessFilter(MS.Internal.Xml.XPath.Filter,int,byref):MS.Internal.Xml.XPath.Query:this (Tier1)
-5 (-0.28 % of base) : 80211.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
Top method regressions (percentages):
57 (13.57 % of base) : 694924.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetTupleCardinality(Microsoft.CodeAnalysis.CSharp.BoundExpression):int (Tier1)
62 (4.74 % of base) : 565700.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormatted[System.__Canon](System.__Canon,System.String):this (Tier1)
25 (4.50 % of base) : 138511.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
13 (2.57 % of base) : 423898.dasm - System.Threading.Tasks.Task:TrySetException(System.Object):ubyte:this (Tier1)
9 (1.80 % of base) : 79692.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
12 (1.61 % of base) : 187837.dasm - Microsoft.Cci.MetadataWriter:ResolveEntityHandleFromPseudoToken(int):System.Reflection.Metadata.EntityHandle:this (Tier1)
12 (1.57 % of base) : 489909.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
14 (1.24 % of base) : 684512.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<TestEscapedValuesOnDeserialize>d__160:MoveNext():this (Tier1)
33 (0.83 % of base) : 524234.dasm - System.Runtime.Serialization.Formatters.Tests.EqualityExtensions:CheckSequenceEquals(System.Collections.IEnumerable,System.Collections.IEnumerable,ubyte) (Tier1-OSR)
8 (0.75 % of base) : 691668.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsInScopeOfAssociatedSyntaxTree(Microsoft.CodeAnalysis.CSharp.Symbol):ubyte:this (Tier1)
3 (0.62 % of base) : 96635.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
14 (0.48 % of base) : 423378.dasm - Xunit.Sdk.TestInvoker`1+<<RunAsync>b__47_0>d[System.__Canon]:MoveNext():this (Tier1)
7 (0.42 % of base) : 746437.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
5 (0.38 % of base) : 202118.dasm - Microsoft.VisualBasic.CompilerServices.StringType:FromObject(System.Object):System.String (Tier1)
5 (0.28 % of base) : 656848.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
2 (0.09 % of base) : 330658.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
1 (0.07 % of base) : 325522.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
1 (0.01 % of base) : 262735.dasm - System.Configuration.ConfigurationElement:DeserializeElement(System.Xml.XmlReader,ubyte):this (Tier1)
Top method improvements (percentages):
-11 (-1.19 % of base) : 565909.dasm - System.Linq.Expressions.Compiler.VariableBinder:MergeScopes(System.Linq.Expressions.Expression):System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]:this (Tier1)
-13 (-1.06 % of base) : 129099.dasm - System.Linq.Expressions.Compiler.ILGen:CanEmitConstant(System.Object,System.Type):ubyte (Tier1)
-8 (-0.58 % of base) : 467602.dasm - MS.Internal.Xml.XPath.QueryBuilder:ProcessFilter(MS.Internal.Xml.XPath.Filter,int,byref):MS.Internal.Xml.XPath.Query:this (Tier1)
-9 (-0.50 % of base) : 744334.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
-5 (-0.28 % of base) : 80211.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
23 total methods with Code Size differences (5 improved, 18 regressed).
windows arm64
Diffs are based on 2,308,464 contexts (929,692 MinOpts, 1,378,772 FullOpts).
MISSED contexts: base: 0 (0.00%), diff: 6,334 (0.27%)
Overall (-68 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| coreclr_tests.run.windows.arm64.checked.mch |
494,677,796 |
-88 |
| libraries_tests.run.windows.arm64.Release.mch |
308,948,488 |
+20 |
FullOpts (-68 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| coreclr_tests.run.windows.arm64.checked.mch |
155,910,688 |
-88 |
| libraries_tests.run.windows.arm64.Release.mch |
107,542,328 |
+20 |
Example diffs
coreclr_tests.run.windows.arm64.checked.mch
-48 (-2.65%) : 387516.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
@@ -15,93 +15,92 @@
; V03 loc1 [V03,T06] ( 5, 3.79) 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.71) ref -> x0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V08 tmp4 [V08,T25] ( 3, 1.42) long -> x2 "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T50] ( 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.71) ref -> x0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V08 tmp4 [V08,T24] ( 3, 1.42) long -> x2 "fgMakeTemp is creating a new local variable"
+; V09 tmp5 [V09,T49] ( 2, 0 ) ref -> x19 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
; V10 tmp6 [V10,T03] ( 7, 5.45) ref -> x23 class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
-; V11 tmp7 [V11,T18] ( 3, 2 ) ref -> x21 "guarded devirt return temp"
+; V11 tmp7 [V11,T17] ( 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,T09] ( 8, 2.68) ref -> x25 "guarded devirt return temp"
+; V13 tmp9 [V13,T08] ( 8, 2.68) 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.93) ref -> x26 "guarded devirt return temp"
+; V15 tmp11 [V15,T18] ( 4, 1.93) ref -> x26 "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,T24] ( 8, 1.50) ref -> x25 "guarded devirt return temp"
+; V17 tmp13 [V17,T23] ( 8, 1.50) 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,T27] ( 2, 0.77) int -> x0
-; V23 tmp19 [V23,T23] ( 3, 1.59) ref -> x20 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V22 tmp18 [V22,T26] ( 2, 0.77) int -> x0
+; V23 tmp19 [V23,T22] ( 3, 1.59) 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.77) ref -> x26 "guarded devirt return temp"
+; V25 tmp21 [V25,T35] ( 3, 0.77) 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.74) ref -> x20 "guarded devirt return temp"
-; V28 tmp24 [V28,T14] ( 5, 2.14) ref -> x0 single-def "guarded devirt arg temp"
+; V27 tmp23 [V27,T36] ( 3, 0.74) ref -> x20 "guarded devirt return temp"
+; V28 tmp24 [V28,T12] ( 5, 2.14) 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.74) ref -> x26 "guarded devirt return temp"
-; V31 tmp27 [V31,T13] ( 5, 2.21) ref -> x0 single-def "guarded devirt arg temp"
+; V30 tmp26 [V30,T37] ( 3, 0.74) ref -> x26 "guarded devirt return temp"
+; V31 tmp27 [V31,T11] ( 5, 2.21) 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,T41] ( 3, 0.68) ref -> x26 "guarded devirt return temp"
-; V38 tmp34 [V38,T15] ( 5, 2.05) ref -> x0 single-def "guarded devirt arg temp"
+; V37 tmp33 [V37,T40] ( 3, 0.68) ref -> x26 "guarded devirt return temp"
+; V38 tmp34 [V38,T14] ( 5, 2.05) ref -> x0 single-def "guarded devirt arg temp"
;* V39 tmp35 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V40 tmp36 [V40,T16] ( 5, 2.05) ref -> x0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V41 tmp37 [V41,T42] ( 3, 0.68) ref -> x26 "guarded devirt return temp"
+; V40 tmp36 [V40,T15] ( 5, 2.05) ref -> x0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+; V41 tmp37 [V41,T41] ( 3, 0.68) ref -> x26 "guarded devirt return temp"
;* V42 tmp38 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
;* V43 tmp39 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaType>
-;* V44 tmp40 [V44,T21] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V45 tmp41 [V45,T22] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V44 tmp40 [V44,T20] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
+;* V45 tmp41 [V45,T21] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
;* V46 tmp42 [V46 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V47 tmp43 [V47,T04] ( 4, 4.04) ref -> x26 class-hnd exact single-def "impAppendStmt" <<unknown class>>
;* V48 tmp44 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V49 tmp45 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V50 tmp46 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V51 tmp47 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V52 tmp48 [V52,T11] ( 2, 2.58) int -> x28 "impAppendStmt"
-; V53 tmp49 [V53,T29] ( 4, 1.29) ref -> x0 "guarded devirt return temp"
+; V52 tmp48 [V52,T10] ( 2, 2.58) int -> x28 "impAppendStmt"
+; V53 tmp49 [V53,T28] ( 4, 1.29) ref -> x0 "guarded devirt return temp"
;* V54 tmp50 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V55 tmp51 [V55,T48] ( 2, 0.00) byref -> x27 single-def "impAppendStmt"
-; V56 tmp52 [V56,T49] ( 3, 0.00) int -> x0 "guarded devirt return temp"
-; V57 tmp53 [V57,T47] ( 5, 0.00) ref -> x0 single-def "guarded devirt arg temp"
+; V55 tmp51 [V55,T47] ( 2, 0.00) byref -> x27 single-def "impAppendStmt"
+; V56 tmp52 [V56,T48] ( 3, 0.00) int -> x0 "guarded devirt return temp"
+; V57 tmp53 [V57,T46] ( 5, 0.00) ref -> x0 single-def "guarded devirt arg temp"
;* V58 tmp54 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
;* V59 tmp55 [V59 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V60 tmp56 [V60,T30] ( 3, 1.29) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V60 tmp56 [V60,T29] ( 3, 1.29) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
;* V61 tmp57 [V61 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V62 tmp58 [V62 ] ( 2, 1.20) 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>
-;* V63 tmp59 [V63,T26] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V64 tmp60 [V64,T12] ( 4, 2.25) ref -> x0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V65 tmp61 [V65,T35] ( 2, 0.42) int -> x0
-; V66 tmp62 [V66,T34] ( 3, 0.88) ref -> x26 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V63 tmp59 [V63,T25] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V64 tmp60 [V64,T13] ( 3, 2.14) ref -> x0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V65 tmp61 [V65,T34] ( 2, 0.42) int -> x0
+; V66 tmp62 [V66,T33] ( 3, 0.88) ref -> x26 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V67 tmp63 [V67 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V68 tmp64 [V68,T43] ( 3, 0.42) ref -> x27 "guarded devirt return temp"
+; V68 tmp64 [V68,T42] ( 3, 0.42) ref -> x27 "guarded devirt return temp"
;* V69 tmp65 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V70 tmp66 [V70,T44] ( 3, 0.41) ref -> x26 "guarded devirt return temp"
-; V71 tmp67 [V71,T33] ( 5, 1.18) ref -> x0 single-def "guarded devirt arg temp"
+; V70 tmp66 [V70,T43] ( 3, 0.41) ref -> x26 "guarded devirt return temp"
+; V71 tmp67 [V71,T32] ( 5, 1.18) 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,T45] ( 3, 0.41) ref -> x27 "guarded devirt return temp"
-; V74 tmp70 [V74,T32] ( 5, 1.22) ref -> x0 single-def "guarded devirt arg temp"
+; V73 tmp69 [V73,T44] ( 3, 0.41) ref -> x27 "guarded devirt return temp"
+; V74 tmp70 [V74,T31] ( 5, 1.22) ref -> x0 single-def "guarded devirt arg temp"
;* V75 tmp71 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
;* V76 tmp72 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V77 tmp73 [V77 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V78 tmp74 [V78 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V79 tmp75 [V79 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V80 tmp76 [V80,T17] ( 6, 2.02) ref -> x21 single-def "field V46._typicalMethodDef (fldOffset=0x0)" P-INDEP
-; V81 tmp77 [V81,T10] ( 8, 2.66) ref -> x22 single-def "field V46._instantiatedType (fldOffset=0x8)" P-INDEP
-; V82 tmp78 [V82,T28] ( 3, 1.37) int -> x24 single-def "field V46._hashcode (fldOffset=0x10)" P-INDEP
+; V80 tmp76 [V80,T16] ( 6, 2.02) ref -> x21 single-def "field V46._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V81 tmp77 [V81,T09] ( 8, 2.66) ref -> x22 single-def "field V46._instantiatedType (fldOffset=0x8)" P-INDEP
+; V82 tmp78 [V82,T27] ( 3, 1.37) int -> x24 single-def "field V46._hashcode (fldOffset=0x10)" P-INDEP
;* V83 tmp79 [V83 ] ( 0, 0 ) ref -> zero-ref single-def "field V61._typicalMethodDef (fldOffset=0x0)" P-INDEP
;* V84 tmp80 [V84 ] ( 0, 0 ) ref -> zero-ref single-def "field V61._instantiatedType (fldOffset=0x8)" P-INDEP
;* V85 tmp81 [V85 ] ( 0, 0 ) int -> zero-ref single-def "field V61._hashcode (fldOffset=0x10)" P-INDEP
; V86 tmp82 [V86 ] ( 8, 5.85) struct (24) [fp+0x10] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
-;* V87 tmp83 [V87,T31] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V88 tmp84 [V88,T46] ( 2, 0.35) ref -> x0 single-def "argument with side effect"
-; V89 cse0 [V89,T20] ( 3, 1.93) ref -> x0 "CSE - moderate"
+;* V87 tmp83 [V87,T30] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V88 tmp84 [V88,T45] ( 2, 0.35) ref -> x0 single-def "argument with side effect"
+; V89 cse0 [V89,T19] ( 3, 1.93) ref -> x0 "CSE - moderate"
; V90 cse1 [V90,T00] ( 18, 9.86) ref -> x1 multi-def "CSE - aggressive"
; V91 cse2 [V91,T07] ( 10, 3.93) long -> x24 multi-def "CSE - aggressive"
-; V92 rat0 [V92,T08] ( 6, 2.85) ref -> x2 class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
;
; Lcl frame size = 32
@@ -155,7 +154,7 @@ G_M10698_IG06: ; bbWeight=0.64, gcrefRegs=680000 {x19 x21 x22}, byrefRegs
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x24, x0
- bne G_M10698_IG52
+ bne G_M10698_IG49
b G_M10698_IG08
;; size=32 bbWeight=0.64 PerfScore 6.44
G_M10698_IG07: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
@@ -197,7 +196,7 @@ G_M10698_IG12: ; bbWeight=0.36, gcrefRegs=2E80000 {x19 x21 x22 x23 x25},
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG53
+ bne G_M10698_IG50
ldr x20, [x0, #0x08]
; gcrRegs +[x20]
;; size=32 bbWeight=0.36 PerfScore 4.28
@@ -218,7 +217,7 @@ G_M10698_IG14: ; bbWeight=0.37, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x2
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG54
+ bne G_M10698_IG51
ldr x26, [x0, #0x08]
; gcrRegs +[x26]
;; size=32 bbWeight=0.37 PerfScore 4.42
@@ -298,7 +297,7 @@ G_M10698_IG21: ; bbWeight=0.34, gcrefRegs=680000 {x19 x21 x22}, byrefRegs
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG56
+ bne G_M10698_IG53
ldr x0, [x0, #0x10]
ldr x0, [x0, #0x58]
ldr x1, [x0]
@@ -306,7 +305,7 @@ G_M10698_IG21: ; bbWeight=0.34, gcrefRegs=680000 {x19 x21 x22}, byrefRegs
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG55
+ bne G_M10698_IG52
ldr x26, [x0, #0x08]
; gcrRegs +[x26]
;; size=64 bbWeight=0.34 PerfScore 8.19
@@ -366,7 +365,7 @@ G_M10698_IG24: ; bbWeight=0.64, gcrefRegs=4600000 {x21 x22 x26}, byrefReg
G_M10698_IG25: ; bbWeight=0.64, gcrefRegs=4600000 {x21 x22 x26}, byrefRegs=0000 {}, byref, isz
ldr x26, [x26, #0x50]
ldr w0, [x22, #0x68]
- cbz w0, G_M10698_IG49
+ cbz w0, G_M10698_IG44
;; size=12 bbWeight=0.64 PerfScore 4.51
G_M10698_IG26: ; bbWeight=0.64, gcrefRegs=4600000 {x21 x22 x26}, byrefRegs=0000 {}, byref, isz
ldr w28, [x22, #0x68]
@@ -374,10 +373,10 @@ G_M10698_IG26: ; bbWeight=0.64, gcrefRegs=4600000 {x21 x22 x26}, byrefReg
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x24, x0
- bne G_M10698_IG59
+ bne G_M10698_IG55
ldr x0, [x21, #0x20]
; gcrRegs +[x0]
- cbz x0, G_M10698_IG57
+ cbz x0, G_M10698_IG43
;; size=32 bbWeight=0.64 PerfScore 6.44
G_M10698_IG27: ; bbWeight=0.64, gcrefRegs=4600001 {x0 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E // code for Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int
@@ -400,7 +399,7 @@ G_M10698_IG27: ; bbWeight=0.64, gcrefRegs=4600001 {x0 x21 x22 x26}, byref
ldr x3, [x3]
blr x3
; gcrRegs -[x0]
- cbz w0, G_M10698_IG47
+ cbz w0, G_M10698_IG46
;; size=72 bbWeight=0.64 PerfScore 12.23
G_M10698_IG28: ; bbWeight=0.56, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x21-x22 x26]
@@ -429,7 +428,7 @@ G_M10698_IG30: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=380
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x24, x0
- bne G_M10698_IG63
+ bne G_M10698_IG59
ldr x25, [x21, #0x10]
; gcrRegs +[x25]
;; size=52 bbWeight=0.36 PerfScore 5.34
@@ -443,7 +442,7 @@ G_M10698_IG32: ; bbWeight=0.21, gcrefRegs=2300000 {x20 x21 x25}, byrefReg
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M10698_IG48
+ bne G_M10698_IG47
;; size=24 bbWeight=0.21 PerfScore 1.27
G_M10698_IG33: ; bbWeight=0.20, gcrefRegs=2300000 {x20 x21 x25}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20, #0x58]
@@ -453,7 +452,7 @@ G_M10698_IG33: ; bbWeight=0.20, gcrefRegs=2300000 {x20 x21 x25}, byrefReg
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG64
+ bne G_M10698_IG60
ldr x26, [x0, #0x08]
; gcrRegs +[x26]
;; size=32 bbWeight=0.20 PerfScore 2.37
@@ -464,7 +463,7 @@ G_M10698_IG34: ; bbWeight=0.21, gcrefRegs=6300000 {x20 x21 x25 x26}, byre
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M10698_IG51
+ bne G_M10698_IG48
;; size=24 bbWeight=0.21 PerfScore 1.27
G_M10698_IG35: ; bbWeight=0.20, gcrefRegs=6300000 {x20 x21 x25 x26}, byrefRegs=0000 {}, byref, isz
ldr x0, [x25, #0x58]
@@ -474,7 +473,7 @@ G_M10698_IG35: ; bbWeight=0.20, gcrefRegs=6300000 {x20 x21 x25 x26}, byre
movk x2, #0xD1FFAB1E LSL #16
...
-40 (-2.26%) : 391628.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.78) 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.72) ref -> x0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V08 tmp4 [V08,T24] ( 3, 1.45) 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.72) ref -> x0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V08 tmp4 [V08,T23] ( 3, 1.45) 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.44) ref -> x23 class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
-; V11 tmp7 [V11,T17] ( 3, 2.00) ref -> x21 "guarded devirt return temp"
+; V11 tmp7 [V11,T16] ( 3, 2.00) 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.69) ref -> x25 "guarded devirt return temp"
+; V13 tmp9 [V13,T09] ( 8, 2.69) 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.92) ref -> x20 "guarded devirt return temp"
+; V15 tmp11 [V15,T17] ( 4, 1.92) ref -> x20 "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.55) ref -> x25 "guarded devirt return temp"
+; V17 tmp13 [V17,T22] ( 8, 1.55) 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.80) int -> x0
-; V23 tmp19 [V23,T22] ( 3, 1.60) ref -> x20 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V22 tmp18 [V22,T25] ( 2, 0.80) int -> x0
+; V23 tmp19 [V23,T21] ( 3, 1.60) 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.80) ref -> x26 "guarded devirt return temp"
+; V25 tmp21 [V25,T35] ( 3, 0.80) 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.80) ref -> x20 "guarded devirt return temp"
-; V28 tmp24 [V28,T13] ( 5, 2.41) ref -> x0 single-def "guarded devirt arg temp"
+; V27 tmp23 [V27,T36] ( 3, 0.80) ref -> x20 "guarded devirt return temp"
+; V28 tmp24 [V28,T12] ( 5, 2.41) 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.77) ref -> x26 "guarded devirt return temp"
-; V31 tmp27 [V31,T14] ( 5, 2.31) ref -> x0 single-def "guarded devirt arg temp"
+; V30 tmp26 [V30,T37] ( 3, 0.77) ref -> x26 "guarded devirt return temp"
+; V31 tmp27 [V31,T13] ( 5, 2.31) 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.99) ref -> x0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V38 tmp34 [V38,T33] ( 3, 1.00) ref -> x20 "guarded devirt return temp"
+; V38 tmp34 [V38,T32] ( 3, 1.00) ref -> x20 "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,T04] ( 4, 4.00) 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,T12] ( 2, 2.55) int -> x27 "impAppendStmt"
-; V50 tmp46 [V50,T30] ( 4, 1.28) ref -> x0 "guarded devirt return temp"
+; V49 tmp45 [V49,T11] ( 2, 2.55) int -> x27 "impAppendStmt"
+; V50 tmp46 [V50,T29] ( 4, 1.28) 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 -> x20 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 -> x20 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.28) ref -> x0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V57 tmp53 [V57,T30] ( 3, 1.28) 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.19) ref -> [fp+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,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.45) 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.17) ref -> x0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V62 tmp58 [V62,T34] ( 2, 0.45) 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.45) ref -> x27 "guarded devirt return temp"
+; V65 tmp61 [V65,T40] ( 3, 0.45) 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.36) 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.36) 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.44) ref -> x27 "guarded devirt return temp"
-; V71 tmp67 [V71,T29] ( 5, 1.31) ref -> x0 single-def "guarded devirt arg temp"
+; V70 tmp66 [V70,T42] ( 3, 0.44) ref -> x27 "guarded devirt return temp"
+; V71 tmp67 [V71,T28] ( 5, 1.31) 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.00) ref -> x21 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
-; V78 tmp74 [V78,T11] ( 8, 2.64) ref -> x22 single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
-; V79 tmp75 [V79,T27] ( 3, 1.36) int -> x25 single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
+; V77 tmp73 [V77,T15] ( 6, 2.00) ref -> x21 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V78 tmp74 [V78,T10] ( 8, 2.64) ref -> x22 single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
+; V79 tmp75 [V79,T26] ( 3, 1.36) 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.79) struct (24) [fp+0x18] 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.34) ref -> x0 single-def "argument with side effect"
-; V86 cse0 [V86,T19] ( 3, 1.92) 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.34) ref -> x0 single-def "argument with side effect"
+; V86 cse0 [V86,T18] ( 3, 1.92) ref -> x0 "CSE - moderate"
; V87 cse1 [V87,T00] ( 18, 9.83) ref -> x1 multi-def "CSE - aggressive"
; V88 cse2 [V88,T07] ( 10, 3.92) long -> x24 multi-def "CSE - aggressive"
-; V89 rat0 [V89,T09] ( 6, 2.89) ref -> x2 class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
;
; Lcl frame size = 40
@@ -152,7 +151,7 @@ G_M10698_IG06: ; bbWeight=0.64, 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_IG47
b G_M10698_IG10
;; size=32 bbWeight=0.64 PerfScore 6.39
G_M10698_IG07: ; bbWeight=0.38, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
@@ -228,7 +227,7 @@ G_M10698_IG15: ; 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_IG59
+ bne G_M10698_IG51
ldr x20, [x0, #0x08]
; gcrRegs +[x20]
;; size=36 bbWeight=0.50 PerfScore 7.47
@@ -263,7 +262,7 @@ G_M10698_IG18: ; 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_IG57
+ bne G_M10698_IG49
ldr x0, [x23, #0x58]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -271,7 +270,7 @@ G_M10698_IG18: ; 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_IG56
+ bne G_M10698_IG48
ldr x20, [x0, #0x08]
; gcrRegs +[x20]
;; size=56 bbWeight=0.40 PerfScore 7.22
@@ -292,7 +291,7 @@ G_M10698_IG20: ; bbWeight=0.38, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x2
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG58
+ bne G_M10698_IG50
ldr x26, [x0, #0x08]
; gcrRegs +[x26]
;; size=32 bbWeight=0.38 PerfScore 4.62
@@ -361,10 +360,10 @@ G_M10698_IG26: ; bbWeight=0.64, gcrefRegs=4600000 {x21 x22 x26}, byrefReg
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x24, x0
- bne G_M10698_IG62
+ bne G_M10698_IG53
ldr x0, [x21, #0x20]
; gcrRegs +[x0]
- cbz x0, G_M10698_IG60
+ cbz x0, G_M10698_IG42
;; size=32 bbWeight=0.64 PerfScore 6.39
G_M10698_IG27: ; bbWeight=0.64, gcrefRegs=4600001 {x0 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E // code for Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int
@@ -416,7 +415,7 @@ G_M10698_IG30: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=380
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x24, x0
- bne G_M10698_IG50
+ bne G_M10698_IG57
ldr x25, [x21, #0x10]
; gcrRegs +[x25]
;; size=52 bbWeight=0.36 PerfScore 5.42
@@ -430,7 +429,7 @@ G_M10698_IG32: ; 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_IG52
+ bne G_M10698_IG59
ldr x0, [x20, #0x58]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -438,7 +437,7 @@ G_M10698_IG32: ; 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_IG51
+ bne G_M10698_IG58
ldr x26, [x0, #0x08]
; gcrRegs +[x26]
;; size=56 bbWeight=0.23 PerfScore 4.08
@@ -449,7 +448,7 @@ G_M10698_IG33: ; 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_IG54
+ bne G_M10698_IG46
;; size=24 bbWeight=0.23 PerfScore 1.36
G_M10698_IG34: ; bbWeight=0.22, gcrefRegs=6300000 {x20 x21 x25 x26}, byrefRegs=0000 {}, byref, isz
ldr x0, [x25, #0x58]
@@ -459,7 +458,7 @@ G_M10698_IG34: ; bbWeight=0.22, gcrefRegs=6300000 {x20 x21 x25 x26}, byre
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M10698_IG53
+ bne G_M10698_IG60
ldr x27, [x0, #0x08]
; gcrRegs +[x27]
;; size=32 bbWeight=0.22 PerfScore 2.61
@@ -521,20 +520,6 @@ G_M10698_IG40: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=180
ldr x1, [x1, #0x18]
blr x1
ldrsb wzr, [x0]
- mov x2, x0
- ; gcrRegs +[x2]
- cbz x2, G_M10698_IG47
- ;; size=32 bbWeight=0.36 PerfScore 5.42
-G_M10698_IG41: ; 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_IG46
- ;; size=24 bbWeight=0.18 PerfScore 1.08
...
libraries_tests.run.windows.arm64.Release.mch
-48 (-1.56%) : 582125.dasm - Microsoft.Cci.MetadataWriter:AddCustomAttributesToTableSystem.__Canon:this (Tier1-OSR)
@@ -35,7 +35,7 @@
; V22 tmp15 [V22,T22] ( 5, 200 ) int -> x0 "guarded devirt return temp"
;* V23 tmp16 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.Cci.IMethodDefinition]>
;* V24 tmp17 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.Cci.ITypeDefinition]>
-;* V25 tmp18 [V25,T51] ( 0, 0 ) int -> zero-ref single-def "OSR entry state var"
+;* V25 tmp18 [V25,T50] ( 0, 0 ) int -> zero-ref single-def "OSR entry state var"
;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
;* V27 tmp20 [V27 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Reflection.Metadata.MethodDefinitionHandle>
;* V28 tmp21 [V28 ] ( 0, 0 ) struct ( 8) zero-ref "guarded devirt return temp" <System.Reflection.Metadata.MethodDefinitionHandle>
@@ -60,26 +60,26 @@
; V47 tmp40 [V47 ] ( 8, 3.73) ref -> [fp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData]>
;* V48 tmp41 [V48 ] ( 0, 0 ) struct ( 8) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
; V49 tmp42 [V49,T35] ( 3, 0.93) ref -> x2 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
-; V50 tmp43 [V50,T50] ( 4, 1.57) ref -> x2 class-hnd exact "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
+; V50 tmp43 [V50,T49] ( 4, 1.57) ref -> x2 class-hnd exact "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;* V51 tmp44 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;* V52 tmp45 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol>
;* V53 tmp46 [V53 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]]>
;* V54 tmp47 [V54 ] ( 0, 0 ) short -> zero-ref "Inline stloc first use temp"
-;* V55 tmp48 [V55,T70] ( 0, 0 ) short -> zero-ref "Inline stloc first use temp"
+;* V55 tmp48 [V55,T69] ( 0, 0 ) short -> zero-ref "Inline stloc first use temp"
;* V56 tmp49 [V56 ] ( 0, 0 ) struct (16) zero-ref "Inline stloc first use temp" <Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]]>
; V57 tmp50 [V57,T36] ( 3, 0.89) byref -> x23 "Inlining Arg"
-; V58 tmp51 [V58,T63] ( 2, 0.30) ubyte -> x0 "Inline stloc first use temp"
+; V58 tmp51 [V58,T62] ( 2, 0.30) ubyte -> x0 "Inline stloc first use temp"
;* V59 tmp52 [V59 ] ( 0, 0 ) ref -> zero-ref
;* V60 tmp53 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;* V61 tmp54 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol>
-;* V62 tmp55 [V62,T67] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V62 tmp55 [V62,T66] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V63 tmp56 [V63 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V64 tmp57 [V64 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]>
;* V65 tmp58 [V65 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]>
;* V66 tmp59 [V66 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]>
;* V67 tmp60 [V67 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]]>
;* V68 tmp61 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol>
-;* V69 tmp62 [V69,T78] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V69 tmp62 [V69,T76] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V70 tmp63 [V70 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V71 tmp64 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol>
;* V72 tmp65 [V72 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]>
@@ -148,44 +148,44 @@
;* V135 tmp128 [V135 ] ( 0, 0 ) struct ( 8) zero-ref "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]>
;* V136 tmp129 [V136 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V137 tmp130 [V137 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]>
-; V138 tmp131 [V138,T65] ( 6, 0.23) ref -> x22 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol>
+; V138 tmp131 [V138,T64] ( 6, 0.23) ref -> x22 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol>
;* V139 tmp132 [V139 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]>
;* V140 tmp133 [V140 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V141 tmp134 [V141 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V142 tmp135 [V142,T91] ( 3, 0.01) ubyte -> x14 "Inline return value spill temp"
+; V142 tmp135 [V142,T89] ( 3, 0.01) ubyte -> x14 "Inline return value spill temp"
;* V143 tmp136 [V143 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V144 tmp137 [V144 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
-; V145 tmp138 [V145,T60] ( 5, 0.31) ref -> x0 class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxReference>
+; V145 tmp138 [V145,T59] ( 5, 0.31) ref -> x0 class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxReference>
;* V146 tmp139 [V146 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-; V147 tmp140 [V147,T79] ( 3, 0.05) long -> x2 "fgMakeTemp is creating a new local variable"
-; V148 tmp141 [V148,T64] ( 11, 0.28) ref -> x28 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax>
-; V149 tmp142 [V149,T72] ( 4, 0.13) ref -> x1 "guarded devirt return temp"
+; V147 tmp140 [V147,T77] ( 3, 0.05) long -> x2 "fgMakeTemp is creating a new local variable"
+; V148 tmp141 [V148,T63] ( 11, 0.28) ref -> x28 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax>
+; V149 tmp142 [V149,T71] ( 4, 0.13) ref -> x1 "guarded devirt return temp"
;* V150 tmp143 [V150 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.SimpleSyntaxReference>
;* V151 tmp144 [V151 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]>
;* V152 tmp145 [V152 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V153 tmp146 [V153,T73] ( 5, 0.13) byref -> x26 "Inlining Arg"
-; V154 tmp147 [V154,T75] ( 4, 0.08) ref -> x22 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V155 tmp148 [V155,T77] ( 5, 0.07) ref -> x0 class-hnd "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode>
-; V156 tmp149 [V156,T81] ( 6, 0.03) ref -> [fp+0x18] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
+; V153 tmp146 [V153,T72] ( 5, 0.13) byref -> x26 "Inlining Arg"
+; V154 tmp147 [V154,T74] ( 4, 0.08) ref -> x22 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V155 tmp148 [V155,T75] ( 5, 0.07) ref -> x0 class-hnd "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode>
+; V156 tmp149 [V156,T79] ( 6, 0.03) ref -> [fp+0x18] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
;* V157 tmp150 [V157 ] ( 0, 0 ) int -> zero-ref "spilling ret_expr"
-; V158 tmp151 [V158,T83] ( 3, 0.02) ref -> x2 "guarded devirt return temp"
+; V158 tmp151 [V158,T81] ( 3, 0.02) ref -> x2 "guarded devirt return temp"
;* V159 tmp152 [V159 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ClassDeclarationSyntax>
-; V160 tmp153 [V160,T93] ( 3, 0.01) ref -> x1 "guarded devirt return temp"
+; V160 tmp153 [V160,T91] ( 3, 0.01) ref -> x1 "guarded devirt return temp"
;* V161 tmp154 [V161 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeSyntax>
;* V162 tmp155 [V162 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V163 tmp156 [V163,T92] ( 4, 0.01) int -> x22 "Inline return value spill temp"
-;* V164 tmp157 [V164,T74] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V165 tmp158 [V165,T94] ( 3, 0.01) ref -> x0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V166 tmp159 [V166,T86] ( 2, 0.01) int -> x0 "Inline stloc first use temp"
-;* V167 tmp160 [V167,T85] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-;* V168 tmp161 [V168,T84] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V163 tmp156 [V163,T90] ( 4, 0.01) int -> x22 "Inline return value spill temp"
+;* V164 tmp157 [V164,T73] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V165 tmp158 [V165,T92] ( 3, 0.01) ref -> x0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V166 tmp159 [V166,T84] ( 2, 0.01) int -> x0 "Inline stloc first use temp"
+;* V167 tmp160 [V167,T83] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
+;* V168 tmp161 [V168,T82] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
;* V169 tmp162 [V169 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-;* V170 tmp163 [V170,T87] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
+;* V170 tmp163 [V170,T85] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
;* V171 tmp164 [V171 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ClassDeclarationSyntax>
-; V172 tmp165 [V172,T88] ( 5, 0.01) ref -> x1 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax>
+; V172 tmp165 [V172,T86] ( 5, 0.01) ref -> x1 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax>
;* V173 tmp166 [V173 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]]>
;* V174 tmp167 [V174 ] ( 0, 0 ) int -> zero-ref
-;* V175 tmp168 [V175,T71] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V175 tmp168 [V175,T70] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V176 tmp169 [V176 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V177 tmp170 [V177 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V178 tmp171 [V178,T38] ( 3, 0.86) byref -> x2 "Inlining Arg"
@@ -196,30 +196,30 @@
;* V183 tmp176 [V183 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[int,Microsoft.CodeAnalysis.TypedConstant]]>
;* V184 tmp177 [V184 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant]>
;* V185 tmp178 [V185 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V186 tmp179 [V186,T48] ( 4, 0.02) ref -> x0 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation>
+; V186 tmp179 [V186,T47] ( 4, 0.02) ref -> x0 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation>
;* V187 tmp180 [V187 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V188 tmp181 [V188 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.ModuleSymbol>
;* V189 tmp182 [V189 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceModuleSymbol>
-; V190 tmp183 [V190,T45] ( 4, 0.03) ref -> x0 class-hnd exact "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceModuleSymbol>
-; V191 tmp184 [V191,T97] ( 4, 0 ) ref -> x0 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
+; V190 tmp183 [V190,T44] ( 4, 0.03) ref -> x2 class-hnd exact "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceModuleSymbol>
+; V191 tmp184 [V191,T95] ( 4, 0 ) ref -> x0 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
;* V192 tmp185 [V192 ] ( 0, 0 ) ref -> zero-ref
;* V193 tmp186 [V193 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling ret_expr" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolSimple>
;* V194 tmp187 [V194 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
;* V195 tmp188 [V195 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolGeneric>
-; V196 tmp189 [V196,T46] ( 5, 0.03) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.ModuleSymbol>
-; V197 tmp190 [V197,T44] ( 6, 0.03) ref -> x0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
-; V198 tmp191 [V198,T49] ( 3, 0.02) ref -> x1 "guarded devirt return temp"
+; V196 tmp189 [V196,T45] ( 4, 0.03) ref -> x1 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.ModuleSymbol>
+; V197 tmp190 [V197,T43] ( 6, 0.03) ref -> x0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
+; V198 tmp191 [V198,T48] ( 3, 0.02) ref -> x1 "guarded devirt return temp"
;* V199 tmp192 [V199 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol>
;* V200 tmp193 [V200 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
-; V201 tmp194 [V201,T43] ( 3, 0.04) ref -> x23 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData>
-; V202 tmp195 [V202,T55] ( 3, 0.01) ref -> x25 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData]>
-; V203 tmp196 [V203,T56] ( 3, 0.01) ref -> x26 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V204 tmp197 [V204,T57] ( 2, 0.01) ref -> x1 class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData]>
-; V205 tmp198 [V205,T47] ( 7, 0.02) ref -> x28 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
-; V206 tmp199 [V206,T58] ( 5, 0.00) int -> x25 "Inline stloc first use temp"
+; V201 tmp194 [V201,T42] ( 3, 0.04) ref -> x23 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData>
+; V202 tmp195 [V202,T54] ( 3, 0.01) ref -> x25 class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData]>
+; V203 tmp196 [V203,T55] ( 3, 0.01) ref -> x26 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V204 tmp197 [V204,T56] ( 2, 0.01) ref -> x1 class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData]>
+; V205 tmp198 [V205,T46] ( 7, 0.02) ref -> x28 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
+; V206 tmp199 [V206,T57] ( 5, 0.00) int -> x25 "Inline stloc first use temp"
;* V207 tmp200 [V207 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V208 tmp201 [V208,T95] ( 3, 0.00) int -> x2 "Inline return value spill temp"
-; V209 tmp202 [V209,T89] ( 3, 0.00) int -> x2 "Inlining Arg"
+; V208 tmp201 [V208,T93] ( 3, 0.00) int -> x2 "Inline return value spill temp"
+; V209 tmp202 [V209,T87] ( 3, 0.00) int -> x2 "Inlining Arg"
; V210 tmp203 [V210,T24] ( 3, 2.33) ref -> x2 class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
;* V211 tmp204 [V211 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]>
; V212 tmp205 [V212,T26] ( 3, 1.94) ref -> x25 class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData]>
@@ -229,14 +229,14 @@
; V216 tmp209 [V216,T16] ( 8, 373.60) ref -> x22 class-hnd "Inline stloc first use temp" <<unknown class>>
;* V217 tmp210 [V217 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V218 tmp211 [V218,T28] ( 5, 189.90) int -> x27 "field V06._vToken (fldOffset=0x0)" P-INDEP
-; V219 tmp212 [V219,T99] ( 2, 0 ) int -> x27 "field V16._vToken (fldOffset=0x0)" P-INDEP
+; V219 tmp212 [V219,T97] ( 2, 0 ) int -> x27 "field V16._vToken (fldOffset=0x0)" P-INDEP
;* V220 tmp213 [V220 ] ( 0, 0 ) int -> zero-ref "field V27._rowId (fldOffset=0x0)" P-INDEP
; V221 tmp214 [V221,T11] ( 6, 474.76) int -> x26 "field V28._rowId (fldOffset=0x0)" P-INDEP
; V222 tmp215 [V222,T03] ( 4, 759.62) int -> x26 "field V36._rowId (fldOffset=0x0)" P-INDEP
; V223 tmp216 [V223,T29] ( 4, 189.90) int -> x27 "field V38._vToken (fldOffset=0x0)" P-INDEP
; V224 tmp217 [V224,T33] ( 3, 1.02) ref -> x22 "field V48.array (fldOffset=0x0)" P-INDEP
-; V225 tmp218 [V225,T61] ( 2, 0.30) ref -> x1 "field V53._one (fldOffset=0x0)" P-INDEP
-;* V226 tmp219 [V226,T68] ( 0, 0 ) ref -> zero-ref "field V53._many (fldOffset=0x8)" P-INDEP
+; V225 tmp218 [V225,T60] ( 2, 0.30) ref -> x1 "field V53._one (fldOffset=0x0)" P-INDEP
+;* V226 tmp219 [V226,T67] ( 0, 0 ) ref -> zero-ref "field V53._many (fldOffset=0x8)" P-INDEP
;* V227 tmp220 [V227 ] ( 0, 0 ) ref -> zero-ref "field V56._one (fldOffset=0x0)" P-INDEP
;* V228 tmp221 [V228 ] ( 0, 0 ) ref -> zero-ref "field V56._many (fldOffset=0x8)" P-INDEP
;* V229 tmp222 [V229 ] ( 0, 0 ) ref -> zero-ref "field V64._node (fldOffset=0x0)" P-INDEP
@@ -256,38 +256,36 @@
;* V243 tmp236 [V243 ] ( 0, 0 ) ref -> zero-ref "field V133._many (fldOffset=0x8)" P-INDEP
;* V244 tmp237 [V244 ] ( 0, 0 ) ref -> zero-ref "field V134.array (fldOffset=0x0)" P-INDEP
;* V245 tmp238 [V245 ] ( 0, 0 ) ref -> zero-ref "field V135._node (fldOffset=0x0)" P-INDEP
-; V246 tmp239 [V246,T66] ( 3, 0.20) ref -> x22 "field V137._node (fldOffset=0x0)" P-INDEP
+; V246 tmp239 [V246,T65] ( 3, 0.20) ref -> x22 "field V137._node (fldOffset=0x0)" P-INDEP
;* V247 tmp240 [V247 ] ( 0, 0 ) ref -> zero-ref "field V139._node (fldOffset=0x0)" P-INDEP
-;* V248 tmp241 [V248,T82] ( 0, 0 ) ref -> zero-ref "field V144._source (fldOffset=0x0)" P-INDEP
-; V249 tmp242 [V249,T80] ( 2, 0.05) ref -> x22 "field V151._node (fldOffset=0x0)" P-INDEP
-; V250 tmp243 [V250,T62] ( 2, 0.30) ref -> x1 "field V173._one (fldOffset=0x0)" P-INDEP
-;* V251 tmp244 [V251,T69] ( 0, 0 ) ref -> zero-ref "field V173._many (fldOffset=0x8)" P-INDEP
+;* V248 tmp241 [V248,T80] ( 0, 0 ) ref -> zero-ref "field V144._source (fldOffset=0x0)" P-INDEP
+; V249 tmp242 [V249,T78] ( 2, 0.05) ref -> x22 "field V151._node (fldOffset=0x0)" P-INDEP
+; V250 tmp243 [V250,T61] ( 2, 0.30) ref -> x1 "field V173._one (fldOffset=0x0)" P-INDEP
+;* V251 tmp244 [V251,T68] ( 0, 0 ) ref -> zero-ref "field V173._many (fldOffset=0x8)" P-INDEP
;* V252 tmp245 [V252 ] ( 0, 0 ) ref -> zero-ref "field V182.array (fldOffset=0x0)" P-INDEP
-;* V253 tmp246 [V253,T53] ( 0, 0 ) ref -> zero-ref "field V183.array (fldOffset=0x0)" P-INDEP
-;* V254 tmp247 [V254,T54] ( 0, 0 ) ref -> zero-ref "field V184.array (fldOffset=0x0)" P-INDEP
+;* V253 tmp246 [V253,T52] ( 0, 0 ) ref -> zero-ref "field V183.array (fldOffset=0x0)" P-INDEP
+;* V254 tmp247 [V254,T53] ( 0, 0 ) ref -> zero-ref "field V184.array (fldOffset=0x0)" P-INDEP
;* V255 tmp248 [V255 ] ( 0, 0 ) ref -> zero-ref "field V211.array (fldOffset=0x0)" P-INDEP
;* V256 tmp249 [V256 ] ( 0, 0 ) ref -> zero-ref "field V214.array (fldOffset=0x0)" P-INDEP
; V257 tmp250 [V257,T20] ( 9, 284.14) ref -> x1 "V20.[000..008)"
; V258 tmp251 [V258,T08] ( 6, 569.71) byref -> x28 "Spilling address for field-by-field copy"
-; V259 tmp252 [V259,T98] ( 3, 0 ) byref -> x0 "Spilling address for field-by-field copy"
+; V259 tmp252 [V259,T96] ( 3, 0 ) byref -> x0 "Spilling address for field-by-field copy"
; V260 tmp253 [V260,T12] ( 6, 441.60) ref -> x23 "arr expr"
; V261 tmp254 [V261,T13] ( 6, 441.60) int -> x2 "index expr"
;* V262 tmp255 [V262 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V263 tmp256 [V263 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V264 PSPSym [V264,T52] ( 1, 1 ) long -> [fp+0x58] do-not-enreg[V] "PSPSym"
+; V264 PSPSym [V264,T51] ( 1, 1 ) long -> [fp+0x58] do-not-enreg[V] "PSPSym"
;* V265 cse0 [V265 ] ( 0, 0 ) int -> zero-ref "CSE - moderate"
;* V266 cse1 [V266 ] ( 0, 0 ) long -> zero-ref "CSE - conservative"
-; V267 cse2 [V267,T59] ( 3, 0.44) int -> x1 "CSE - conservative"
-; V268 cse3 [V268,T90] ( 3, 0.01) long -> x3 "CSE - conservative"
-; V269 cse4 [V269,T96] ( 3, 0.00) ref -> x1 "CSE - conservative"
+; V267 cse2 [V267,T58] ( 3, 0.44) int -> x1 "CSE - conservative"
+; V268 cse3 [V268,T88] ( 3, 0.01) long -> x3 "CSE - conservative"
+; V269 cse4 [V269,T94] ( 3, 0.00) ref -> x1 "CSE - conservative"
; V270 cse5 [V270,T23] ( 3, 270.86) int -> x2 "CSE - moderate"
; V271 cse6 [V271,T21] ( 3, 282.01) long -> x25 "CSE - moderate"
; V272 rat0 [V272,T09] ( 3, 526.42) long -> x0 "spilling expr"
; V273 rat1 [V273,T14] ( 3, 421.13) long -> x11 "fgMakeTemp is creating a new local variable"
-; V274 rat2 [V274,T41] ( 3, 5.32) long -> x0 "spilling expr"
-; V275 rat3 [V275,T42] ( 3, 4.25) long -> x11 "fgMakeTemp is creating a new local variable"
-;* V276 rat4 [V276,T40] ( 0, 0 ) ref -> zero-ref class-hnd "replacement local" <<unknown class>>
-; V277 rat5 [V277,T76] ( 6, 0.07) ref -> x5 class-hnd "replacement local" <<unknown class>>
+; V274 rat2 [V274,T40] ( 3, 5.32) long -> x0 "spilling expr"
+; V275 rat3 [V275,T41] ( 3, 4.25) long -> x11 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 96
@@ -316,11 +314,11 @@ G_M30756_IG02: ; bbWeight=5.05, gcVars=00000000000000000000000002000000 {
; GC ptr vars +{V04 V25}
ldr x14, [fp, #0xD1FFAB1E] // [V04 loc0]
; gcrRegs +[x14]
- cbz x14, G_M30756_IG98
+ cbz x14, G_M30756_IG96
;; size=8 bbWeight=5.05 PerfScore 15.14
G_M30756_IG03: ; bbWeight=0.22, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x14]
- cbz x21, G_M30756_IG98
+ cbz x21, G_M30756_IG96
ldr x14, [fp, #0xD1FFAB1E] // [V04 loc0]
; gcrRegs +[x14]
ldr x14, [x14]
@@ -329,13 +327,13 @@ G_M30756_IG03: ; bbWeight=0.22, gcrefRegs=280000 {x19 x21}, byrefRegs=000
movk x15, #0xD1FFAB1E LSL #16
movk x15, #0xD1FFAB1E LSL #32
cmp x14, x15
- bne G_M30756_IG98
+ bne G_M30756_IG96
ldr x14, [x21, #0x18]
movz x15, #0xD1FFAB1E // code for Microsoft.Cci.MetadataWriter:<PopulateCustomAttributeTableRows>b__179_0(Microsoft.Cci.IMethodDefinition):System.Reflection.Metadata.EntityHandle:this
movk x15, #0xD1FFAB1E LSL #16
movk x15, #0xD1FFAB1E LSL #32
cmp x14, x15
- bne G_M30756_IG98
+ bne G_M30756_IG96
...
+0 (0.00%) : 349081.dasm - Xunit.Sdk.TestInvoker`1+<b47_0>d[System.Canon]:MoveNext():this (Tier1)
@@ -190,7 +190,7 @@
; V178 rat5 [V178,T69] ( 3, 0.14) long -> x1 "fgMakeTemp is creating a new local variable"
; V179 rat6 [V179,T84] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
; V180 rat7 [V180,T85] ( 3, 0 ) long -> x1 "fgMakeTemp is creating a new local variable"
-; V181 rat8 [V181,T23] ( 3, 4.27) ref -> x1 "Spilling to split statement for tree"
+; V181 rat8 [V181,T23] ( 3, 4.15) ref -> x1 "Spilling to split statement for tree"
; V182 rat9 [V182,T05] ( 6, 7.78) ref -> x15 class-hnd "replacement local" <<unknown class>>
;
; Lcl frame size = 144
@@ -237,7 +237,7 @@ G_M37218_IG04: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
; byrRegs +[x0]
ldapr w0, [x0]
; byrRegs -[x0]
- cbnz w0, G_M37218_IG86
+ cbnz w0, G_M37218_IG85
ldr x0, [x19, #0x38]
ldr x0, [x0]
ldr x1, [x0, #0x08]
@@ -278,7 +278,7 @@ G_M37218_IG06: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M37218_IG75
+ bne G_M37218_IG74
mov x22, xzr
; gcrRegs +[x22]
ldr x0, [x20, #0x38]
@@ -389,7 +389,7 @@ G_M37218_IG14: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
and w1, w1, w2
mov w2, #0xD1FFAB1E
cmp w1, w2
- bne G_M37218_IG69
+ bne G_M37218_IG68
;; size=32 bbWeight=0.97 PerfScore 8.28
G_M37218_IG15: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
@@ -436,7 +436,7 @@ G_M37218_IG16: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
; byrRegs -[x0]
mov w1, #0xD1FFAB1E
tst w0, w1
- beq G_M37218_IG68
+ beq G_M37218_IG67
;; size=52 bbWeight=0.97 PerfScore 21.44
G_M37218_IG17: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0x80] // [V139 tmp131]
@@ -449,7 +449,7 @@ G_M37218_IG17: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
and w1, w1, w2
mov w2, #0xD1FFAB1E
cmp w1, w2
- bne G_M37218_IG62
+ bne G_M37218_IG61
;; size=32 bbWeight=0.97 PerfScore 8.28
G_M37218_IG18: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
@@ -457,7 +457,7 @@ G_M37218_IG18: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
; byrRegs +[x3]
ldr x0, [x3, #0x10]
; gcrRegs +[x0]
- cbnz x0, G_M37218_IG63
+ cbnz x0, G_M37218_IG62
;; size=12 bbWeight=0.97 PerfScore 5.85
G_M37218_IG19: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
@@ -465,7 +465,7 @@ G_M37218_IG19: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
ldr x3, [fp, #0x20] // [V00 this]
; byrRegs +[x3]
str xzr, [x3, #0x10]
- b G_M37218_IG80
+ b G_M37218_IG79
;; size=12 bbWeight=0.97 PerfScore 3.90
G_M37218_IG20: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x3]
@@ -476,7 +476,7 @@ G_M37218_IG20: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
ldr x1, [x1, #0x08]
mov x15, x1
; gcrRegs +[x15]
- cbz x15, G_M37218_IG24
+ cbz x15, G_M37218_IG23
;; size=20 bbWeight=0.97 PerfScore 9.24
G_M37218_IG21: ; bbWeight=0.49, gcrefRegs=108002 {x1 x15 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x3]
@@ -485,26 +485,14 @@ G_M37218_IG21: ; bbWeight=0.49, gcrefRegs=108002 {x1 x15 x20}, byrefRegs=
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x0, x2
- beq G_M37218_IG23
+ bne G_M37218_IG37
;; size=24 bbWeight=0.49 PerfScore 2.92
-G_M37218_IG22: ; bbWeight=0.19, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x15]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[x1] +[x0]
- ; gcr arg pop 0
- mov x15, x0
- ; gcrRegs +[x15]
- b G_M37218_IG24
- ;; size=24 bbWeight=0.19 PerfScore 0.76
-G_M37218_IG23: ; bbWeight=0.30, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x15]
+G_M37218_IG22: ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1 x15]
mov x15, xzr
; gcrRegs +[x15]
- ;; size=4 bbWeight=0.30 PerfScore 0.15
-G_M37218_IG24: ; bbWeight=0.97, gcrefRegs=108000 {x15 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.36 PerfScore 0.18
+G_M37218_IG23: ; bbWeight=0.97, gcrefRegs=108000 {x15 x20}, byrefRegs=0000 {}, byref, isz
ldr x3, [fp, #0x20] // [V00 this]
; byrRegs +[x3]
add x14, x3, #16
@@ -514,9 +502,9 @@ G_M37218_IG24: ; bbWeight=0.97, gcrefRegs=108000 {x15 x20}, byrefRegs=000
; byrRegs -[x14]
ldr x0, [x3, #0x10]
; gcrRegs +[x0]
- cbnz x0, G_M37218_IG32
+ cbnz x0, G_M37218_IG44
;; size=20 bbWeight=0.97 PerfScore 7.30
-G_M37218_IG25: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M37218_IG24: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
; byrRegs -[x3]
ldr x0, [x20, #0x10]
@@ -546,9 +534,9 @@ G_M37218_IG25: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
mov w0, #0xD1FFAB1E
; gcrRegs -[x0]
tst w1, w0
- beq G_M37218_IG31
+ beq G_M37218_IG47
;; size=68 bbWeight=0.97 PerfScore 28.70
-G_M37218_IG26: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M37218_IG25: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0x80] // [V139 tmp131]
; gcrRegs +[x0]
add x1, x0, #52
@@ -559,9 +547,9 @@ G_M37218_IG26: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
and w1, w1, w2
mov w2, #0xD1FFAB1E
cmp w1, w2
- bne G_M37218_IG30
+ bne G_M37218_IG51
;; size=32 bbWeight=0.97 PerfScore 8.27
-G_M37218_IG27: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M37218_IG26: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x1, [x20, #0x10]
; gcrRegs +[x1]
@@ -590,7 +578,7 @@ G_M37218_IG27: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x1, x0
- bne G_M37218_IG56
+ bne G_M37218_IG57
ldr x0, [x20, #0x28]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -598,11 +586,11 @@ G_M37218_IG27: ; bbWeight=0.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- bne G_M37218_IG40
+ bne G_M37218_IG52
ldr x1, [x0, #0x10]
; gcrRegs +[x1]
;; size=104 bbWeight=0.97 PerfScore 42.81
-G_M37218_IG28: ; bbWeight=0.97, gcrefRegs=1100002 {x1 x20 x24}, byrefRegs=0000 {}, byref, isz
+G_M37218_IG27: ; bbWeight=0.97, gcrefRegs=1100002 {x1 x20 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
; byrRegs -[x3]
movz x0, #0xD1FFAB1E
@@ -616,45 +604,213 @@ G_M37218_IG28: ; bbWeight=0.97, gcrefRegs=1100002 {x1 x20 x24}, byrefRegs
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x11, x1
- bne G_M37218_IG41
+ bne G_M37218_IG39
;; size=40 bbWeight=0.97 PerfScore 8.27
-G_M37218_IG29: ; bbWeight=0.41, gcrefRegs=1100001 {x0 x20 x24}, byrefRegs=0000 {}, byref
+G_M37218_IG28: ; bbWeight=0.41, gcrefRegs=1100001 {x0 x20 x24}, byrefRegs=0000 {}, byref
ldr x23, [x0, #0x40]
; gcrRegs +[x23]
- b G_M37218_IG42
- ;; size=8 bbWeight=0.41 PerfScore 1.63
-G_M37218_IG30: ; bbWeight=0, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x23-x24]
- mov w1, wzr
+ ;; size=4 bbWeight=0.41 PerfScore 1.23
+G_M37218_IG29: ; bbWeight=0.97, gcrefRegs=1900000 {x20 x23 x24}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
+ cbnz x23, G_M37218_IG53
+ ldr x0, [x20, #0x28]
+ ; gcrRegs +[x0]
+ ldr x1, [x0]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x1, x2
+ bne G_M37218_IG54
+ ldr x1, [x0, #0x10]
+ ; gcrRegs +[x1]
+ ;; size=36 bbWeight=0.97 PerfScore 12.65
+G_M37218_IG30: ; bbWeight=0.97, gcrefRegs=1100002 {x1 x20 x24}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0 x23]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_CHKCASTINTERFACE
+ ; gcrRegs -[x1] +[x0]
+ ; gcr arg pop 0
+ mov x23, x0
+ ; gcrRegs +[x23]
+ ldr x0, [x23]
+ ; gcrRegs -[x0]
+ movz x11, #0xD1FFAB1E
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #0xD1FFAB1E LSL #32
+ cmp x0, x11
+ bne G_M37218_IG40
+ ;; size=44 bbWeight=0.97 PerfScore 8.76
+G_M37218_IG31: ; bbWeight=0.54, gcrefRegs=1900000 {x20 x23 x24}, byrefRegs=0000 {}, byref, isz
+ ldrb w0, [x23, #0x68]
+ cbz w0, G_M37218_IG55
+ ;; size=8 bbWeight=0.54 PerfScore 2.14
+G_M37218_IG32: ; bbWeight=0.54, gcrefRegs=1900000 {x20 x23 x24}, byrefRegs=0000 {}, byref
+ ldr w22, [x23, #0x78]
+ ;; size=4 bbWeight=0.54 PerfScore 1.61
+G_M37218_IG33: ; bbWeight=0.97, gcrefRegs=1100000 {x20 x24}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x23]
+ cmp w22, #0
+ bgt G_M37218_IG38
+ str xzr, [fp, #0x68]
+ stp x20, x24, [fp, #0x48] // [V77 tmp69], [V77 tmp69+0x08]
+ movn w1, #0
+ str w1, [fp, #0x60] // [V77 tmp69+0x18]
+ add x1, fp, #72 // [V77 tmp69]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- ; gcrRegs -[x0]
+ ; gcrRegs -[x24]
; gcr arg pop 0
- b G_M37218_IG27
- ;; size=28 bbWeight=0 PerfScore 0.00
...
+0 (0.00%) : 544390.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsNonStringTracker(System.Object):Xunit.Sdk.CollectionTracker (Tier1)
@@ -9,15 +9,15 @@
; 1 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 6, 5.18) ref -> x0 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 6, 5.12) 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,T03] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V03 tmp2 [V03,T04] ( 4, 1.99) ref -> x0 class-hnd "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
-; V04 tmp3 [V04,T02] ( 5, 3.99) ref -> x19 class-hnd single-def "Inlining Arg" <System.Object>
+; V04 tmp3 [V04,T02] ( 7, 3.99) ref -> x19 class-hnd single-def "Inlining Arg" <System.Object>
; V05 tmp4 [V05,T07] ( 3, 0.00) ref -> x0 class-hnd single-def "Inline stloc first use temp" <Xunit.Sdk.CollectionTracker>
; V06 tmp5 [V06,T05] ( 3, 0.00) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.CollectionTracker`1[System.Object]>
; V07 tmp6 [V07,T06] ( 2, 0.00) ref -> x2 single-def "argument with side effect"
-; V08 rat0 [V08,T01] ( 6, 7.98) ref -> x19 class-hnd "replacement local" <System.Collections.IEnumerable>
+; V08 rat0 [V08,T01] ( 7, 7.98) ref -> x19 class-hnd "replacement local" <System.Collections.IEnumerable>
;
; Lcl frame size = 0
@@ -49,7 +49,7 @@ G_M49919_IG05: ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs +[x0]
mov x19, x0
; gcrRegs +[x19]
- cbz x19, G_M49919_IG09
+ cbz x19, G_M49919_IG08
;; size=8 bbWeight=1.00 PerfScore 1.50
G_M49919_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x19]
@@ -57,10 +57,27 @@ G_M49919_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x1, x2
- beq G_M49919_IG08
+ bne G_M49919_IG11
;; size=24 bbWeight=0.50 PerfScore 2.99
-G_M49919_IG07: ; bbWeight=0.18, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M49919_IG07: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x19]
+ mov x19, xzr
+ ; gcrRegs +[x19]
+ ;; size=4 bbWeight=0.38 PerfScore 0.19
+G_M49919_IG08: ; bbWeight=0.88, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ cbnz x19, G_M49919_IG12
+ ;; size=4 bbWeight=0.88 PerfScore 0.88
+G_M49919_IG09: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
+ mov x0, xzr
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=1.00 PerfScore 0.50
+G_M49919_IG10: ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=1.00 PerfScore 2.99
+G_M49919_IG11: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
mov x1, x0
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -71,28 +88,10 @@ G_M49919_IG07: ; bbWeight=0.18, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
; gcrRegs -[x1] +[x0]
mov x19, x0
; gcrRegs +[x19]
- b G_M49919_IG09
- ;; size=28 bbWeight=0.18 PerfScore 0.81
-G_M49919_IG08: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x19]
- mov x19, xzr
- ; gcrRegs +[x19]
- ;; size=4 bbWeight=0.32 PerfScore 0.16
-G_M49919_IG09: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbnz x19, G_M49919_IG12
- ;; size=4 bbWeight=1.00 PerfScore 1.00
-G_M49919_IG10: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- mov x0, xzr
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=1.00 PerfScore 0.50
-G_M49919_IG11: ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=1.00 PerfScore 2.99
-G_M49919_IG12: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0] +[x19]
+ cbz x19, G_M49919_IG09
+ ;; size=28 bbWeight=0.12 PerfScore 0.54
+G_M49919_IG12: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -134,14 +133,14 @@ G_M49919_IG12: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=800
; gcrRegs -[x0-x2 x19]
mov x0, x20
; gcrRegs +[x0]
- b G_M49919_IG11
+ b G_M49919_IG10
;; size=120 bbWeight=0.00 PerfScore 0.01
G_M49919_IG13: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs -[x20]
- b G_M49919_IG11
+ b G_M49919_IG10
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 264, prolog size 12, PerfScore 22.95, instruction count 66, allocated bytes for code 264 (MethodHash=9b0d3d00) for method Xunit.Sdk.CollectionTrackerExtensions:AsNonStringTracker(System.Object):Xunit.Sdk.CollectionTracker (Tier1)
+; Total bytes of code 264, prolog size 12, PerfScore 22.59, instruction count 66, allocated bytes for code 264 (MethodHash=9b0d3d00) for method Xunit.Sdk.CollectionTrackerExtensions:AsNonStringTracker(System.Object):Xunit.Sdk.CollectionTracker (Tier1)
; ============================================================
Unwind Info:
+4 (+1.19%) : 150853.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
@@ -9,7 +9,7 @@
; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 8, 6.96) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V00 arg0 [V00,T00] ( 8, 6.91) 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,T06] ( 6, 2.04) ref -> x0 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpressionBase>
@@ -45,7 +45,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_IG17
+ beq G_M35670_IG16
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M35670_IG04: ; bbWeight=0.96, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
@@ -65,7 +65,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]
@@ -74,33 +74,22 @@ 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_IG19
;; 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, #0xD1FFAB1E 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_IG20
+ ;; 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_IG22
;; 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]
mov x1, x19
; gcrRegs +[x1]
- cbz x1, G_M35670_IG13
+ cbz x1, G_M35670_IG12
;; size=8 bbWeight=0.91 PerfScore 1.37
-G_M35670_IG12: ; bbWeight=0.46, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
+G_M35670_IG11: ; bbWeight=0.46, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x1]
movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
@@ -108,11 +97,11 @@ G_M35670_IG12: ; bbWeight=0.46, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
cmp x0, x2
beq G_M35670_IG24
;; size=24 bbWeight=0.46 PerfScore 2.74
-G_M35670_IG13: ; bbWeight=0.91, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35670_IG12: ; bbWeight=0.91, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
- cbz x19, G_M35670_IG18
+ cbz x19, G_M35670_IG17
;; size=4 bbWeight=0.91 PerfScore 0.91
-G_M35670_IG14: ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35670_IG13: ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -120,29 +109,47 @@ G_M35670_IG14: ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
cmp x0, x1
beq G_M35670_IG25
;; size=24 bbWeight=0.46 PerfScore 2.74
-G_M35670_IG15: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35670_IG14: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
- b G_M35670_IG18
+ b G_M35670_IG17
;; size=4 bbWeight=0.23 PerfScore 0.23
-G_M35670_IG16: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35670_IG15: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1
- b G_M35670_IG19
+ b G_M35670_IG18
;; size=8 bbWeight=0.04 PerfScore 0.05
-G_M35670_IG17: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M35670_IG16: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldrb w2, [x1, #0x49]
- cbnz w2, G_M35670_IG16
+ cbnz w2, G_M35670_IG15
;; size=8 bbWeight=0.04 PerfScore 0.14
-G_M35670_IG18: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35670_IG17: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
mov w0, wzr
;; size=4 bbWeight=0.96 PerfScore 0.48
-G_M35670_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M35670_IG18: ; 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_IG20: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35670_IG19: ; 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, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[x1] +[x0]
+ b G_M35670_IG09
+ ;; size=24 bbWeight=0.16 PerfScore 0.64
+G_M35670_IG20: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0 x19]
+ cbnz w20, G_M35670_IG15
+ ;; size=4 bbWeight=0.05 PerfScore 0.05
+G_M35670_IG21: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M35670_IG17
+ ;; size=4 bbWeight=0.02 PerfScore 0.02
+G_M35670_IG22: ; bbWeight=0.05, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldr x1, [x0]
movz x2, #0xD1FFAB1E
@@ -151,31 +158,25 @@ G_M35670_IG20: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=000
cmp x1, x2
bne G_M35670_IG26
ldrb w20, [x0, #0x39]
- ;; size=28 bbWeight=0.05 PerfScore 0.47
-G_M35670_IG21: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- cbnz w20, G_M35670_IG16
- ;; size=4 bbWeight=0.05 PerfScore 0.05
-G_M35670_IG22: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M35670_IG18
- ;; size=4 bbWeight=0.02 PerfScore 0.02
+ b G_M35670_IG20
+ ;; size=32 bbWeight=0.05 PerfScore 0.53
G_M35670_IG23: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x2]
+ ; gcrRegs -[x0] +[x2]
ldrb w0, [x2, #0x50]
- cbnz w0, G_M35670_IG16
- b G_M35670_IG18
+ cbnz w0, G_M35670_IG15
+ b G_M35670_IG17
;; size=12 bbWeight=0 PerfScore 0.00
G_M35670_IG24: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2] +[x1]
ldrb w0, [x1, #0x31]
- cbnz w0, G_M35670_IG16
- b G_M35670_IG18
+ cbnz w0, G_M35670_IG15
+ b G_M35670_IG17
;; size=12 bbWeight=0 PerfScore 0.00
G_M35670_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1] +[x19]
ldrb w0, [x19, #0x54]
- cbz w0, G_M35670_IG18
- b G_M35670_IG16
+ cbz w0, G_M35670_IG17
+ b G_M35670_IG15
;; size=12 bbWeight=0 PerfScore 0.00
G_M35670_IG26: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] +[x0]
@@ -185,10 +186,10 @@ G_M35670_IG26: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
blr x1
; gcrRegs -[x0]
sxtw w20, w0
- b G_M35670_IG21
+ b G_M35670_IG20
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 336, prolog size 12, PerfScore 30.30, instruction count 84, allocated bytes for code 336 (MethodHash=471574a9) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
+; Total bytes of code 340, prolog size 12, PerfScore 30.20, instruction count 85, allocated bytes for code 340 (MethodHash=471574a9) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -199,7 +200,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 84 (0x00054) Actual length = 336 (0x000150)
+ Function Length : 85 (0x00055) Actual length = 340 (0x000154)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+1.30%) : 404178.dasm - OLEDB.Test.ModuleCore.CTestModule+d__56:MoveNext():ubyte:this (Tier1)
@@ -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
...
+20 (+1.71%) : 553893.dasm - System.Text.Json.Serialization.Tests.PolymorphicTests+PolymorphicEqualityComparer`1[System.Canon]:Equals(System.Canon,System.__Canon):ubyte:this (Tier1)
@@ -10,27 +10,27 @@
; 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,T04] ( 9, 15.01) ref -> x19 class-hnd single-def <System.__Canon>
+; V01 arg1 [V01,T04] ( 9, 14.95) ref -> x19 class-hnd single-def <System.__Canon>
; V02 arg2 [V02,T06] ( 8, 12.10) ref -> x20 class-hnd single-def <System.__Canon>
; V03 loc0 [V03,T14] ( 3, 2.74) ref -> x21 class-hnd exact single-def <System.RuntimeType>
; V04 loc1 [V04,T22] ( 2, 1.26) ref -> x22 class-hnd exact single-def <<unknown class>>
; V05 loc2 [V05,T17] ( 4, 2.51) ref -> x23 class-hnd single-def <System.Collections.IEnumerable>
; V06 loc3 [V06,T25] ( 3, 0.77) ref -> x21 class-hnd single-def <System.Collections.IEnumerable>
; V07 loc4 [V07,T11] ( 4, 5.40) ref -> x21 class-hnd single-def <System.Reflection.PropertyInfo[]>
-; V08 loc5 [V08,T08] ( 5, 8.58) int -> x22
-; V09 loc6 [V09,T00] ( 8, 17.64) ref -> x23 class-hnd <System.Reflection.PropertyInfo>
+; V08 loc5 [V08,T08] ( 5, 8.58) int -> x23
+; V09 loc6 [V09,T00] ( 8, 17.64) ref -> x25 class-hnd <System.Reflection.PropertyInfo>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Object>
-; V12 tmp2 [V12,T23] ( 3, 1.03) ref -> x19 class-hnd "impAppendStmt" <<unknown class>>
-; V13 tmp3 [V13,T26] ( 3, 0.52) ref -> x19 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V14 tmp4 [V14,T15] ( 5, 2.56) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V12 tmp2 [V12,T23] ( 3, 1.03) ref -> x24 class-hnd "impAppendStmt" <<unknown class>>
+; V13 tmp3 [V13,T26] ( 3, 0.52) ref -> x24 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V14 tmp4 [V14,T15] ( 5, 2.56) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V15 tmp5 [V15,T28] ( 3, 0.51) ref -> x2 class-hnd "Inline return value spill temp" <<unknown class>>
; V16 tmp6 [V16,T27] ( 3, 0.52) ref -> x2 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V17 tmp7 [V17,T16] ( 5, 2.56) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V17 tmp7 [V17,T16] ( 5, 2.56) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V18 tmp8 [V18 ] ( 9, 2.61) struct (24) [fp+0x10] 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,T20] ( 4, 1.49) ref -> x21 class-hnd "Inline return value spill temp" <System.Reflection.PropertyInfo[]>
; V20 tmp10 [V20,T21] ( 3, 1.29) ref -> x21 class-hnd exact single-def "dup spill" <System.Reflection.PropertyInfo[]>
-; V21 tmp11 [V21,T05] ( 7, 15.68) ref -> x24 "guarded devirt return temp"
+; V21 tmp11 [V21,T05] ( 7, 15.68) ref -> x26 "guarded devirt return temp"
;* V22 tmp12 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimePropertyInfo>
;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Object>
;* V24 tmp14 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo>
@@ -50,7 +50,7 @@
;* V38 tmp28 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V39 tmp29 [V39,T12] ( 2, 3.92) ubyte -> x0 "Inline return value spill temp"
;* V40 tmp30 [V40 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inlining Arg" <System.Object>
-; V41 tmp31 [V41,T13] ( 3, 3.92) int -> x25 "guarded devirt return temp"
+; V41 tmp31 [V41,T13] ( 3, 3.92) int -> x27 "guarded devirt return temp"
;* V42 tmp32 [V42 ] ( 0, 0 ) ref -> zero-ref "guarded devirt arg temp"
;* V43 tmp33 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
; V44 tmp34 [V44,T24] ( 3, 1.03) int -> x0 "Single return block return value"
@@ -67,11 +67,12 @@
; Lcl frame size = 24
G_M57964_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]!
+ stp fp, lr, [sp, #-0x70]!
stp x19, x20, [sp, #0x28]
stp x21, x22, [sp, #0x38]
stp x23, x24, [sp, #0x48]
- str x25, [sp, #0x58]
+ stp x25, x26, [sp, #0x58]
+ str x27, [sp, #0x68]
mov fp, sp
stp xzr, xzr, [fp, #0x10] // [V18 tmp8], [V18 tmp8+0x08]
str xzr, [fp, #0x20] // [V18 tmp8+0x10]
@@ -79,10 +80,10 @@ G_M57964_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=40 bbWeight=1 PerfScore 8.50
+ ;; size=44 bbWeight=1 PerfScore 9.50
G_M57964_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M57964_IG31
- cbz x20, G_M57964_IG31
+ cbz x19, G_M57964_IG32
+ cbz x20, G_M57964_IG32
mov x0, x19
; gcrRegs +[x0]
bl <unknown method>
@@ -91,7 +92,7 @@ G_M57964_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
mov x0, x20
bl <unknown method>
cmp x0, x21
- bne G_M57964_IG39
+ bne G_M57964_IG40
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -99,7 +100,7 @@ G_M57964_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs +[x22]
mov x23, x19
; gcrRegs +[x23]
- cbz x23, G_M57964_IG06
+ cbz x23, G_M57964_IG05
;; size=60 bbWeight=1 PerfScore 13.00
G_M57964_IG03: ; bbWeight=0.50, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
@@ -108,30 +109,17 @@ G_M57964_IG03: ; bbWeight=0.50, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x1, x0
- beq G_M57964_IG05
+ bne G_M57964_IG30
;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M57964_IG04: ; bbWeight=0.21, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+G_M57964_IG04: ; bbWeight=0.35, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x23]
- 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 x23, x0
- ; gcrRegs +[x23]
- b G_M57964_IG06
- ;; size=28 bbWeight=0.21 PerfScore 0.94
-G_M57964_IG05: ; bbWeight=0.29, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x23]
mov x23, xzr
; gcrRegs +[x23]
- ;; size=4 bbWeight=0.29 PerfScore 0.15
-G_M57964_IG06: ; bbWeight=1, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, byrefRegs=0000 {}, byref, isz
- cbnz x23, G_M57964_IG22
+ ;; size=4 bbWeight=0.35 PerfScore 0.17
+G_M57964_IG05: ; bbWeight=1, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, byrefRegs=0000 {}, byref, isz
+ cbnz x23, G_M57964_IG21
;; size=4 bbWeight=1 PerfScore 1.00
-G_M57964_IG07: ; bbWeight=0.74, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M57964_IG06: ; bbWeight=0.74, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22-x23]
add x8, fp, #16 // [V18 tmp8]
mov x0, x21
@@ -147,38 +135,38 @@ G_M57964_IG07: ; bbWeight=0.74, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
blr x5
; gcrRegs -[x0 x21]
ldr w0, [fp, #0x20] // [V47 tmp37]
- cbnz w0, G_M57964_IG18
+ cbnz w0, G_M57964_IG17
;; size=52 bbWeight=0.74 PerfScore 8.54
-G_M57964_IG08: ; bbWeight=0.41, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M57964_IG07: ; bbWeight=0.41, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x21, #0xD1FFAB1E
movk x21, #0xD1FFAB1E LSL #16
movk x21, #0xD1FFAB1E LSL #32
;; size=12 bbWeight=0.41 PerfScore 0.62
-G_M57964_IG09: ; bbWeight=0.74, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M57964_IG08: ; bbWeight=0.74, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x21]
- mov w22, wzr
+ mov w23, wzr
ldr w0, [x21, #0x08]
cmp w0, #0
- ble G_M57964_IG16
+ ble G_M57964_IG15
;; size=16 bbWeight=0.74 PerfScore 3.71
-G_M57964_IG10: ; bbWeight=1.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M57964_IG09: ; bbWeight=1.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
add x0, x21, #16
; byrRegs +[x0]
- ldr x23, [x0, w22, UXTW #3]
- ; gcrRegs +[x23]
- ldr x0, [x23]
+ ldr x25, [x0, w23, UXTW #3]
+ ; gcrRegs +[x25]
+ ldr x0, [x25]
; byrRegs -[x0]
movz x1, #24
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M57964_IG20
- ldr x0, [x23, #0x18]
+ bne G_M57964_IG19
+ ldr x0, [x25, #0x18]
; gcrRegs +[x0]
- cbz x0, G_M57964_IG32
+ cbz x0, G_M57964_IG33
;; size=40 bbWeight=1.96 PerfScore 26.45
-G_M57964_IG11: ; bbWeight=7.84, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
- cbz x0, G_M57964_IG37
+G_M57964_IG10: ; bbWeight=7.84, gcrefRegs=2380001 {x0 x19 x20 x21 x25}, byrefRegs=0000 {}, byref, isz
+ cbz x0, G_M57964_IG38
mov x1, x19
; gcrRegs +[x1]
mov w2, #60
@@ -191,14 +179,14 @@ G_M57964_IG11: ; bbWeight=7.84, gcrefRegs=B80001 {x0 x19 x20 x21 x23}, by
ldr x6, [x6]
blr x6
; gcrRegs -[x1]
- mov x24, x0
- ; gcrRegs +[x24]
- ldr x0, [x23, #0x18]
- cbz x0, G_M57964_IG33
+ mov x26, x0
+ ; gcrRegs +[x26]
+ ldr x0, [x25, #0x18]
+ cbz x0, G_M57964_IG34
;; size=56 bbWeight=7.84 PerfScore 105.81
-G_M57964_IG12: ; bbWeight=7.84, gcrefRegs=1380001 {x0 x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x23]
- cbz x0, G_M57964_IG38
+G_M57964_IG11: ; bbWeight=7.84, gcrefRegs=4380001 {x0 x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x25]
+ cbz x0, G_M57964_IG39
mov x1, x20
; gcrRegs +[x1]
mov w2, #60
@@ -214,49 +202,50 @@ G_M57964_IG12: ; bbWeight=7.84, gcrefRegs=1380001 {x0 x19 x20 x21 x24}, b
mov x1, x0
; gcrRegs +[x1]
;; size=48 bbWeight=7.84 PerfScore 74.46
-G_M57964_IG13: ; bbWeight=1.96, gcrefRegs=1380002 {x1 x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+G_M57964_IG12: ; bbWeight=1.96, gcrefRegs=4380002 {x1 x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cbz x24, G_M57964_IG36
- cbz x1, G_M57964_IG39
- ldr x0, [x24]
+ cbz x26, G_M57964_IG37
+ cbz x1, G_M57964_IG40
+ ldr x0, [x26]
movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x0, x2
- bne G_M57964_IG35
- cmp x1, x24
- cset x25, eq
+ bne G_M57964_IG36
+ cmp x1, x26
+ cset x27, eq
;; size=40 bbWeight=1.96 PerfScore 17.64
-G_M57964_IG14: ; bbWeight=1.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x1 x24]
- uxtb w0, w25
- cbz w0, G_M57964_IG39
+G_M57964_IG13: ; bbWeight=1.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x1 x26]
+ uxtb w0, w27
+ cbz w0, G_M57964_IG40
;; size=8 bbWeight=1.96 PerfScore 2.94
-G_M57964_IG15: ; bbWeight=1.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- add w22, w22, #1
+G_M57964_IG14: ; bbWeight=1.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ add w23, w23, #1
ldr w0, [x21, #0x08]
- cmp w0, w22
- bgt G_M57964_IG10
+ cmp w0, w23
+ bgt G_M57964_IG09
;; size=16 bbWeight=1.96 PerfScore 9.80
-G_M57964_IG16: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57964_IG15: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x21]
...
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 |
0 |
0 |
0 |
0 |
-0 |
+0 |
| benchmarks.run_tiered.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| coreclr_tests.run.windows.arm64.checked.mch |
2 |
2 |
0 |
0 |
-88 |
+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 |
15 |
1 |
10 |
4 |
-48 |
+68 |
| 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 |
|
17 |
3 |
10 |
4 |
-136 |
+68 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.windows.arm64.checked.mch |
24,218 |
4 |
24,214 |
0 (0.00%) |
229 (0.94%) |
| benchmarks.run_pgo.windows.arm64.checked.mch |
96,879 |
48,066 |
48,813 |
0 (0.00%) |
104 (0.11%) |
| benchmarks.run_tiered.windows.arm64.checked.mch |
48,412 |
36,693 |
11,719 |
0 (0.00%) |
61 (0.13%) |
| coreclr_tests.run.windows.arm64.checked.mch |
595,265 |
362,539 |
232,726 |
0 (0.00%) |
438 (0.07%) |
| libraries.crossgen2.windows.arm64.checked.mch |
243,831 |
15 |
243,816 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.windows.arm64.checked.mch |
302,817 |
6 |
302,811 |
0 (0.00%) |
2,054 (0.67%) |
| libraries_tests.run.windows.arm64.Release.mch |
625,154 |
460,799 |
164,355 |
0 (0.00%) |
900 (0.14%) |
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
314,858 |
21,559 |
293,299 |
0 (0.00%) |
2,179 (0.69%) |
| realworld.run.windows.arm64.checked.mch |
32,878 |
3 |
32,875 |
0 (0.00%) |
366 (1.10%) |
| smoke_tests.nativeaot.windows.arm64.checked.mch |
24,152 |
8 |
24,144 |
0 (0.00%) |
3 (0.01%) |
|
2,308,464 |
929,692 |
1,378,772 |
0 (0.00%) |
6,334 (0.27%) |
jit-analyze output
coreclr_tests.run.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 494677796 (overridden on cmd)
Total bytes of diff: 494677708 (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 : 387516.dasm (-2.65 % of base)
-40 : 391628.dasm (-2.26 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-48 (-2.65 % of base) : 387516.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-40 (-2.26 % of base) : 391628.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
Top method improvements (percentages):
-48 (-2.65 % of base) : 387516.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-40 (-2.26 % of base) : 391628.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
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 308948488 (overridden on cmd)
Total bytes of diff: 308948508 (overridden on cmd)
Total bytes of delta: 20 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
20 : 553893.dasm (1.71 % of base)
12 : 404178.dasm (1.30 % of base)
8 : 464835.dasm (0.31 % of base)
4 : 150853.dasm (1.19 % of base)
4 : 281657.dasm (0.43 % of base)
4 : 294479.dasm (0.30 % of base)
4 : 545041.dasm (0.51 % of base)
4 : 571068.dasm (0.60 % of base)
4 : 299835.dasm (0.70 % of base)
4 : 80654.dasm (0.65 % of base)
Top file improvements (bytes):
-48 : 582125.dasm (-1.56 % of base)
11 total files with Code Size differences (1 improved, 10 regressed), 4 unchanged.
Top method regressions (bytes):
20 (1.71 % of base) : 553893.dasm - System.Text.Json.Serialization.Tests.PolymorphicTests+PolymorphicEqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this (Tier1)
12 (1.30 % of base) : 404178.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
8 (0.31 % of base) : 464835.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
4 (0.60 % of base) : 571068.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuard:Visit(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
4 (1.19 % of base) : 150853.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
4 (0.65 % of base) : 80654.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.70 % of base) : 299835.dasm - System.Linq.Enumerable:Skip[int](System.Collections.Generic.IEnumerable`1[int],int):System.Collections.Generic.IEnumerable`1[int] (Tier1)
4 (0.51 % of base) : 545041.dasm - System.Text.Json.ReadStack:<JsonPath>g__AppendStackFrame|22_0(System.Text.StringBuilder,byref) (Tier1)
4 (0.30 % of base) : 294479.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
4 (0.43 % of base) : 281657.dasm - Xunit.Sdk.TestInvoker`1[System.__Canon]:GetTaskFromResult(System.Object):System.Threading.Tasks.Task (Tier1)
Top method improvements (bytes):
-48 (-1.56 % of base) : 582125.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)
Top method regressions (percentages):
20 (1.71 % of base) : 553893.dasm - System.Text.Json.Serialization.Tests.PolymorphicTests+PolymorphicEqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this (Tier1)
12 (1.30 % of base) : 404178.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
4 (1.19 % of base) : 150853.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:IsTargetTypedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
4 (0.70 % of base) : 299835.dasm - System.Linq.Enumerable:Skip[int](System.Collections.Generic.IEnumerable`1[int],int):System.Collections.Generic.IEnumerable`1[int] (Tier1)
4 (0.65 % of base) : 80654.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.60 % of base) : 571068.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuard:Visit(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
4 (0.51 % of base) : 545041.dasm - System.Text.Json.ReadStack:<JsonPath>g__AppendStackFrame|22_0(System.Text.StringBuilder,byref) (Tier1)
4 (0.43 % of base) : 281657.dasm - Xunit.Sdk.TestInvoker`1[System.__Canon]:GetTaskFromResult(System.Object):System.Threading.Tasks.Task (Tier1)
8 (0.31 % of base) : 464835.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
4 (0.30 % of base) : 294479.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
Top method improvements (percentages):
-48 (-1.56 % of base) : 582125.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)
11 total methods with Code Size differences (1 improved, 10 regressed).
windows x64
Diffs are based on 2,366,596 contexts (928,756 MinOpts, 1,437,840 FullOpts).
MISSED contexts: base: 0 (0.00%), diff: 6,605 (0.28%)
Overall (+199 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| coreclr_tests.run.windows.x64.checked.mch |
393,237,185 |
-64 |
| libraries_tests.run.windows.x64.Release.mch |
278,261,290 |
+263 |
FullOpts (+199 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| coreclr_tests.run.windows.x64.checked.mch |
119,732,117 |
-64 |
| libraries_tests.run.windows.x64.Release.mch |
103,256,694 |
+263 |
Example diffs
coreclr_tests.run.windows.x64.checked.mch
-33 (-2.58%) : 565779.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
@@ -15,43 +15,43 @@
; V03 loc1 [V03,T06] ( 5, 3.87) 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.63) ref -> rcx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V08 tmp4 [V08,T29] ( 3, 1.27) 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.63) ref -> rcx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V08 tmp4 [V08,T28] ( 3, 1.27) 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.80) ref -> r14 class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
-; V11 tmp7 [V11,T20] ( 3, 2 ) ref -> rdi "guarded devirt return temp"
+; V11 tmp7 [V11,T19] ( 3, 2 ) 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,T08] ( 8, 2.83) 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,T16] ( 4, 2.05) ref -> r12 "guarded devirt return temp"
+; V15 tmp11 [V15,T15] ( 4, 2.05) ref -> r12 "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,T28] ( 8, 1.34) ref -> r13 "guarded devirt return temp"
+; V17 tmp13 [V17,T27] ( 8, 1.34) 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 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp17 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 tmp18 [V22,T23] ( 2, 0.80) int -> rcx
-; V23 tmp19 [V23,T22] ( 3, 1.69) ref -> rsi class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V22 tmp18 [V22,T22] ( 2, 0.80) int -> rcx
+; V23 tmp19 [V23,T21] ( 3, 1.69) ref -> rsi 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,T34] ( 3, 0.80) ref -> r12 "guarded devirt return temp"
+; V25 tmp21 [V25,T33] ( 3, 0.80) ref -> r12 "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.74) ref -> rsi "guarded devirt return temp"
-; V28 tmp24 [V28,T15] ( 5, 2.08) ref -> rcx single-def "guarded devirt arg temp"
+; V27 tmp23 [V27,T35] ( 3, 0.74) ref -> rsi "guarded devirt return temp"
+; V28 tmp24 [V28,T14] ( 5, 2.08) ref -> rcx 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,T37] ( 3, 0.72) ref -> r12 "guarded devirt return temp"
-; V31 tmp27 [V31,T13] ( 5, 2.15) ref -> rcx single-def "guarded devirt arg temp"
+; V30 tmp26 [V30,T36] ( 3, 0.72) ref -> r12 "guarded devirt return temp"
+; V31 tmp27 [V31,T12] ( 5, 2.15) ref -> rcx 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.42) ref -> rcx class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V38 tmp34 [V38,T33] ( 3, 0.81) ref -> r12 "guarded devirt return temp"
+; V37 tmp33 [V37,T11] ( 5, 2.42) ref -> rcx class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+; V38 tmp34 [V38,T32] ( 3, 0.81) ref -> r12 "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,T18] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V42 tmp38 [V42,T19] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V41 tmp37 [V41,T17] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
+;* V42 tmp38 [V42,T18] ( 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.26) ref -> r12 class-hnd exact single-def "impAppendStmt" <<unknown class>>
;* V45 tmp41 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -59,46 +59,45 @@
;* V47 tmp43 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V48 tmp44 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V49 tmp45 [V49,T10] ( 2, 2.73) int -> r13 "impAppendStmt"
-; V50 tmp46 [V50,T25] ( 4, 1.37) ref -> rcx "guarded devirt return temp"
+; V50 tmp46 [V50,T24] ( 4, 1.37) ref -> rcx "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 -> rbx single-def "impAppendStmt"
-; V53 tmp49 [V53,T47] ( 3, 0.00) int -> rax "guarded devirt return temp"
-; V54 tmp50 [V54,T45] ( 5, 0.00) ref -> rcx single-def "guarded devirt arg temp"
+; V52 tmp48 [V52,T45] ( 2, 0.00) byref -> rbx single-def "impAppendStmt"
+; V53 tmp49 [V53,T46] ( 3, 0.00) int -> rax "guarded devirt return temp"
+; V54 tmp50 [V54,T44] ( 5, 0.00) ref -> rcx 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,T26] ( 3, 1.37) ref -> rax class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V57 tmp53 [V57,T25] ( 3, 1.37) 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, 1.29) 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>
-;* V60 tmp56 [V60,T30] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V61 tmp57 [V61,T21] ( 4, 1.97) ref -> rax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V62 tmp58 [V62,T38] ( 2, 0.37) int -> rcx
-; V63 tmp59 [V63,T35] ( 3, 0.78) ref -> r12 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V60 tmp56 [V60,T29] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V61 tmp57 [V61,T20] ( 3, 1.90) ref -> rax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V62 tmp58 [V62,T37] ( 2, 0.37) int -> rcx
+; V63 tmp59 [V63,T34] ( 3, 0.78) ref -> r12 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.37) ref -> rax "guarded devirt return temp"
+; V65 tmp61 [V65,T40] ( 3, 0.37) 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.34) ref -> r12 "guarded devirt return temp"
-; V68 tmp64 [V68,T32] ( 5, 0.96) ref -> rcx single-def "guarded devirt arg temp"
+; V67 tmp63 [V67,T41] ( 3, 0.34) ref -> r12 "guarded devirt return temp"
+; V68 tmp64 [V68,T31] ( 5, 0.96) ref -> rcx 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.33) ref -> rax "guarded devirt return temp"
-; V71 tmp67 [V71,T31] ( 5, 0.99) ref -> rcx single-def "guarded devirt arg temp"
+; V70 tmp66 [V70,T42] ( 3, 0.33) ref -> rax "guarded devirt return temp"
+; V71 tmp67 [V71,T30] ( 5, 0.99) ref -> rcx 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,T14] ( 6, 2.13) ref -> rdi single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V77 tmp73 [V77,T13] ( 6, 2.13) ref -> rdi single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
; V78 tmp74 [V78,T09] ( 8, 2.82) ref -> rbp single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
-; V79 tmp75 [V79,T24] ( 3, 1.45) int -> r13 single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
+; V79 tmp75 [V79,T23] ( 3, 1.45) int -> r13 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.11) struct (24) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
-;* V84 tmp80 [V84,T27] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V85 tmp81 [V85,T44] ( 2, 0.32) ref -> rcx single-def "argument with side effect"
-; V86 cse0 [V86,T17] ( 3, 2.05) ref -> rcx "CSE - moderate"
+;* V84 tmp80 [V84,T26] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V85 tmp81 [V85,T43] ( 2, 0.32) ref -> rcx single-def "argument with side effect"
+; V86 cse0 [V86,T16] ( 3, 2.05) ref -> rcx "CSE - moderate"
; V87 cse1 [V87,T00] ( 18, 10.10) ref -> rdx multi-def "CSE - aggressive"
; V88 cse2 [V88,T07] ( 10, 4.05) long -> r15 multi-def "CSE - aggressive"
-; V89 rat0 [V89,T11] ( 6, 2.53) ref -> r8 class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
;
; Lcl frame size = 72
@@ -149,7 +148,7 @@ G_M10698_IG06: ; bbWeight=0.68, 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_IG52
+ jne G_M10698_IG49
jmp SHORT G_M10698_IG08
;; size=28 bbWeight=0.68 PerfScore 5.13
G_M10698_IG07: ; bbWeight=0.22, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
@@ -188,7 +187,7 @@ G_M10698_IG12: ; bbWeight=0.35, gcrefRegs=60A8 {rbx rbp rdi r13 r14}, byr
; gcrRegs +[rcx]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rcx], rax
- jne G_M10698_IG53
+ jne G_M10698_IG50
mov rsi, gword ptr [rcx+0x08]
; gcrRegs +[rsi]
;; size=27 bbWeight=0.35 PerfScore 2.85
@@ -203,7 +202,7 @@ G_M10698_IG14: ; bbWeight=0.36, gcrefRegs=60E8 {rbx rbp rsi rdi r13 r14},
; gcrRegs +[rcx]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rcx], rax
- jne G_M10698_IG54
+ jne G_M10698_IG51
mov r12, gword ptr [rcx+0x08]
; gcrRegs +[r12]
;; size=27 bbWeight=0.36 PerfScore 2.95
@@ -273,7 +272,7 @@ G_M10698_IG21: ; bbWeight=0.40, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0
mov rcx, gword ptr [rcx+0x58]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rcx], rax
- jne G_M10698_IG55
+ jne G_M10698_IG52
mov r12, gword ptr [rcx+0x08]
; gcrRegs +[r12]
;; size=31 bbWeight=0.40 PerfScore 4.13
@@ -321,17 +320,17 @@ G_M10698_IG24: ; bbWeight=0.68, gcrefRegs=10A0 {rbp rdi r12}, byrefRegs=0
G_M10698_IG25: ; bbWeight=0.68, gcrefRegs=10A0 {rbp rdi r12}, byrefRegs=0000 {}, byref
mov r12, gword ptr [r12+0x50]
cmp dword ptr [rbp+0x68], 0
- je G_M10698_IG49
+ je G_M10698_IG44
;; size=15 bbWeight=0.68 PerfScore 4.10
G_M10698_IG26: ; bbWeight=0.68, gcrefRegs=10A0 {rbp rdi r12}, byrefRegs=0000 {}, byref
mov r13d, dword ptr [rbp+0x68]
mov rcx, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaMethod
cmp r15, rcx
- jne G_M10698_IG58
+ jne G_M10698_IG54
mov rcx, gword ptr [rdi+0x20]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M10698_IG56
+ je G_M10698_IG43
;; size=36 bbWeight=0.68 PerfScore 4.61
G_M10698_IG27: ; bbWeight=0.68, gcrefRegs=10A2 {rcx rbp rdi r12}, byrefRegs=0000 {}, byref
call [Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int]
@@ -350,7 +349,7 @@ G_M10698_IG27: ; bbWeight=0.68, gcrefRegs=10A2 {rcx rbp rdi r12}, byrefRe
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- je G_M10698_IG47
+ je G_M10698_IG46
;; size=55 bbWeight=0.68 PerfScore 10.08
G_M10698_IG28: ; bbWeight=0.60, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp rdi r12]
@@ -377,7 +376,7 @@ G_M10698_IG30: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=00C
mov r15, qword ptr [rdi]
mov rcx, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaMethod
cmp r15, rcx
- jne G_M10698_IG62
+ jne G_M10698_IG58
mov r13, gword ptr [rdi+0x10]
; gcrRegs +[r13]
;; size=45 bbWeight=0.32 PerfScore 3.09
@@ -389,14 +388,14 @@ G_M10698_IG31: ; bbWeight=0.32, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0
G_M10698_IG32: ; bbWeight=0.18, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
cmp qword ptr [rsi], rcx
- jne G_M10698_IG48
+ jne G_M10698_IG47
;; size=19 bbWeight=0.18 PerfScore 0.78
G_M10698_IG33: ; bbWeight=0.16, gcrefRegs=20C0 {rsi rdi r13}, 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_IG63
+ jne G_M10698_IG59
mov r12, gword ptr [rcx+0x08]
; gcrRegs +[r12]
;; size=27 bbWeight=0.16 PerfScore 1.32
@@ -404,14 +403,14 @@ G_M10698_IG34: ; bbWeight=0.18, gcrefRegs=30C0 {rsi rdi r12 r13}, byrefRe
; gcrRegs -[rcx]
mov rcx, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
cmp qword ptr [r13], rcx
- jne G_M10698_IG51
+ jne G_M10698_IG48
;; size=20 bbWeight=0.18 PerfScore 0.78
G_M10698_IG35: ; bbWeight=0.17, gcrefRegs=30C0 {rsi rdi r12 r13}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [r13+0x58]
; gcrRegs +[rcx]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rcx], rax
- jne G_M10698_IG64
+ jne G_M10698_IG60
mov rax, gword ptr [rcx+0x08]
; gcrRegs +[rax]
;; size=27 bbWeight=0.17 PerfScore 1.37
@@ -460,7 +459,7 @@ G_M10698_IG40: ; bbWeight=0.32, epilog, nogc, extend
pop r15
ret
;; size=17 bbWeight=0.32 PerfScore 1.66
-G_M10698_IG41: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10698_IG41: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rdi] +[rbx rsi]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -470,90 +469,53 @@ G_M10698_IG41: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=004
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
cmp byte ptr [rax], al
...
-31 (-2.43%) : 569790.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
@@ -15,43 +15,43 @@
; V03 loc1 [V03,T06] ( 5, 3.84) 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,T38] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V07 tmp3 [V07,T37] ( 2, 0.66) ref -> rcx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V08 tmp4 [V08,T29] ( 3, 1.33) 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,T37] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T36] ( 2, 0.66) ref -> rcx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V08 tmp4 [V08,T28] ( 3, 1.33) 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.72) ref -> r14 class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
-; V11 tmp7 [V11,T19] ( 3, 2 ) ref -> rdi "guarded devirt return temp"
+; V11 tmp7 [V11,T17] ( 3, 2 ) 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.85) 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,T15] ( 4, 2.00) ref -> r12 "guarded devirt return temp"
+; V15 tmp11 [V15,T13] ( 4, 2.00) ref -> r12 "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,T24] ( 8, 1.44) ref -> r13 "guarded devirt return temp"
+; V17 tmp13 [V17,T23] ( 8, 1.44) 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 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp17 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 tmp18 [V22,T23] ( 2, 0.78) int -> rcx
-; V23 tmp19 [V23,T22] ( 3, 1.57) ref -> rsi class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V22 tmp18 [V22,T22] ( 2, 0.78) int -> rcx
+; V23 tmp19 [V23,T21] ( 3, 1.57) ref -> rsi 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,T34] ( 3, 0.78) ref -> r12 "guarded devirt return temp"
+; V25 tmp21 [V25,T33] ( 3, 0.78) ref -> r12 "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.64) ref -> rsi "guarded devirt return temp"
-; V28 tmp24 [V28,T20] ( 5, 1.91) ref -> rcx single-def "guarded devirt arg temp"
+; V27 tmp23 [V27,T38] ( 3, 0.64) ref -> rsi "guarded devirt return temp"
+; V28 tmp24 [V28,T19] ( 5, 1.91) ref -> rcx 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.56) ref -> r12 "guarded devirt return temp"
-; V31 tmp27 [V31,T21] ( 5, 1.67) ref -> rcx single-def "guarded devirt arg temp"
+; V30 tmp26 [V30,T39] ( 3, 0.56) ref -> r12 "guarded devirt return temp"
+; V31 tmp27 [V31,T20] ( 5, 1.67) ref -> rcx 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, 3.13) ref -> rcx class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V38 tmp34 [V38,T31] ( 3, 1.04) ref -> r12 "guarded devirt return temp"
+; V38 tmp34 [V38,T30] ( 3, 1.04) ref -> r12 "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,T17] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V42 tmp38 [V42,T18] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V41 tmp37 [V41,T15] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
+;* V42 tmp38 [V42,T16] ( 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.18) ref -> r12 class-hnd exact single-def "impAppendStmt" <<unknown class>>
;* V45 tmp41 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -59,46 +59,45 @@
;* V47 tmp43 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V48 tmp44 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V49 tmp45 [V49,T11] ( 2, 2.67) int -> r13 "impAppendStmt"
-; V50 tmp46 [V50,T26] ( 4, 1.34) ref -> rcx "guarded devirt return temp"
+; V50 tmp46 [V50,T25] ( 4, 1.34) ref -> rcx "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 -> rbx single-def "impAppendStmt"
-; V53 tmp49 [V53,T47] ( 3, 0.00) int -> rax "guarded devirt return temp"
-; V54 tmp50 [V54,T45] ( 5, 0.00) ref -> rcx single-def "guarded devirt arg temp"
+; V52 tmp48 [V52,T45] ( 2, 0.00) byref -> rbx single-def "impAppendStmt"
+; V53 tmp49 [V53,T46] ( 3, 0.00) int -> rax "guarded devirt return temp"
+; V54 tmp50 [V54,T44] ( 5, 0.00) ref -> rcx 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,T27] ( 3, 1.34) ref -> rax class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V57 tmp53 [V57,T26] ( 3, 1.34) 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, 1.25) 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>
-;* V60 tmp56 [V60,T30] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V61 tmp57 [V61,T13] ( 4, 2.13) ref -> rax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V62 tmp58 [V62,T36] ( 2, 0.39) int -> rcx
-; V63 tmp59 [V63,T35] ( 3, 0.78) ref -> r12 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V60 tmp56 [V60,T29] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V61 tmp57 [V61,T18] ( 3, 1.99) ref -> rax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V62 tmp58 [V62,T35] ( 2, 0.39) int -> rcx
+; V63 tmp59 [V63,T34] ( 3, 0.78) ref -> r12 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.39) ref -> rax "guarded devirt return temp"
+; V65 tmp61 [V65,T40] ( 3, 0.39) 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,T43] ( 3, 0.32) ref -> r12 "guarded devirt return temp"
-; V68 tmp64 [V68,T32] ( 5, 0.95) ref -> rcx single-def "guarded devirt arg temp"
+; V67 tmp63 [V67,T42] ( 3, 0.32) ref -> r12 "guarded devirt return temp"
+; V68 tmp64 [V68,T31] ( 5, 0.95) ref -> rcx 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.28) ref -> rax "guarded devirt return temp"
-; V71 tmp67 [V71,T33] ( 5, 0.83) ref -> rcx single-def "guarded devirt arg temp"
+; V70 tmp66 [V70,T43] ( 3, 0.28) ref -> rax "guarded devirt return temp"
+; V71 tmp67 [V71,T32] ( 5, 0.83) ref -> rcx 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,T14] ( 6, 2.09) ref -> rdi single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V77 tmp73 [V77,T12] ( 6, 2.09) ref -> rdi single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
; V78 tmp74 [V78,T10] ( 8, 2.76) ref -> rbp single-def "field V43._instantiatedType (fldOffset=0x8)" P-INDEP
-; V79 tmp75 [V79,T25] ( 3, 1.42) int -> r13 single-def "field V43._hashcode (fldOffset=0x10)" P-INDEP
+; V79 tmp75 [V79,T24] ( 3, 1.42) int -> r13 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.02) struct (24) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
-;* V84 tmp80 [V84,T28] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V85 tmp81 [V85,T42] ( 2, 0.34) ref -> rcx single-def "argument with side effect"
-; V86 cse0 [V86,T16] ( 3, 2.00) ref -> rcx "CSE - moderate"
+;* V84 tmp80 [V84,T27] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V85 tmp81 [V85,T41] ( 2, 0.34) ref -> rcx single-def "argument with side effect"
+; V86 cse0 [V86,T14] ( 3, 2.00) ref -> rcx "CSE - moderate"
; V87 cse1 [V87,T00] ( 18, 10.01) ref -> rdx multi-def "CSE - aggressive"
; V88 cse2 [V88,T07] ( 10, 4.00) long -> r15 multi-def "CSE - aggressive"
-; V89 rat0 [V89,T12] ( 6, 2.66) ref -> r8 class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
;
; Lcl frame size = 72
@@ -149,7 +148,7 @@ G_M10698_IG06: ; bbWeight=0.67, 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_IG56
+ jne G_M10698_IG59
jmp SHORT G_M10698_IG08
;; size=28 bbWeight=0.67 PerfScore 5.01
G_M10698_IG07: ; bbWeight=0.41, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
@@ -188,7 +187,7 @@ G_M10698_IG12: ; bbWeight=0.32, gcrefRegs=60A8 {rbx rbp rdi r13 r14}, byr
; gcrRegs +[rcx]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rcx], rax
- jne G_M10698_IG57
+ jne G_M10698_IG60
mov rsi, gword ptr [rcx+0x08]
; gcrRegs +[rsi]
;; size=27 bbWeight=0.32 PerfScore 2.62
@@ -203,7 +202,7 @@ G_M10698_IG14: ; bbWeight=0.28, gcrefRegs=60E8 {rbx rbp rsi rdi r13 r14},
; gcrRegs +[rcx]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rcx], rax
- jne G_M10698_IG58
+ jne G_M10698_IG61
mov r12, gword ptr [rcx+0x08]
; gcrRegs +[r12]
jmp SHORT G_M10698_IG16
@@ -278,7 +277,7 @@ G_M10698_IG22: ; bbWeight=0.52, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=0
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_IG62
mov r12, gword ptr [rcx+0x08]
; gcrRegs +[r12]
;; size=31 bbWeight=0.52 PerfScore 5.34
@@ -332,11 +331,11 @@ G_M10698_IG27: ; bbWeight=0.67, gcrefRegs=10A0 {rbp rdi r12}, byrefRegs=0
mov r13d, dword ptr [rbp+0x68]
mov rcx, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaMethod
cmp r15, rcx
- jne G_M10698_IG61
+ jne G_M10698_IG52
mov rcx, gword ptr [rdi+0x20]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M10698_IG60
+ je G_M10698_IG44
;; size=36 bbWeight=0.67 PerfScore 4.51
G_M10698_IG28: ; bbWeight=0.67, gcrefRegs=10A2 {rcx rbp rdi r12}, byrefRegs=0000 {}, byref
call [Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int]
@@ -355,7 +354,7 @@ G_M10698_IG28: ; bbWeight=0.67, gcrefRegs=10A2 {rcx rbp rdi r12}, byrefRe
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- je G_M10698_IG52
+ je G_M10698_IG48
;; size=55 bbWeight=0.67 PerfScore 9.85
G_M10698_IG29: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp rdi r12]
@@ -382,7 +381,7 @@ G_M10698_IG31: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=00C
mov r15, qword ptr [rdi]
mov rcx, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaMethod
cmp r15, rcx
- jne G_M10698_IG65
+ jne G_M10698_IG56
mov r13, gword ptr [rdi+0x10]
; gcrRegs +[r13]
;; size=45 bbWeight=0.33 PerfScore 3.24
@@ -394,14 +393,14 @@ G_M10698_IG32: ; bbWeight=0.33, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0
G_M10698_IG33: ; bbWeight=0.20, gcrefRegs=20C0 {rsi rdi r13}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
cmp qword ptr [rsi], rcx
- jne G_M10698_IG54
+ jne G_M10698_IG50
;; size=19 bbWeight=0.20 PerfScore 0.83
G_M10698_IG34: ; bbWeight=0.16, gcrefRegs=20C0 {rsi rdi r13}, 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_IG66
+ jne G_M10698_IG57
mov r12, gword ptr [rcx+0x08]
; gcrRegs +[r12]
;; size=27 bbWeight=0.16 PerfScore 1.30
@@ -409,14 +408,14 @@ G_M10698_IG35: ; bbWeight=0.20, gcrefRegs=30C0 {rsi rdi r12 r13}, byrefRe
; gcrRegs -[rcx]
mov rcx, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaType
cmp qword ptr [r13], rcx
- jne G_M10698_IG53
+ jne G_M10698_IG49
;; size=20 bbWeight=0.20 PerfScore 0.83
G_M10698_IG36: ; bbWeight=0.14, gcrefRegs=30C0 {rsi rdi r12 r13}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [r13+0x58]
; gcrRegs +[rcx]
mov rax, 0xD1FFAB1E ; Internal.TypeSystem.Ecma.EcmaAssembly
cmp qword ptr [rcx], rax
- jne G_M10698_IG55
+ jne G_M10698_IG58
mov rax, gword ptr [rcx+0x08]
; gcrRegs +[rax]
;; size=27 bbWeight=0.14 PerfScore 1.14
@@ -465,7 +464,7 @@ G_M10698_IG41: ; bbWeight=0.33, epilog, nogc, extend
pop r15
ret
;; size=17 bbWeight=0.33 PerfScore 1.74
-G_M10698_IG42: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10698_IG42: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rdi] +[rbx rsi]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -475,30 +474,41 @@ G_M10698_IG42: ; bbWeight=0.33, 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_IG49
- ;; size=23 bbWeight=0.33 PerfScore 3.90
-G_M10698_IG43: ; bbWeight=0.17, gcrefRegs=0149 {rax rbx rsi r8}, byrefRegs=0000 {}, byref, isz
- mov rdx, 0xD1FFAB1E ; Internal.TypeSystem.MethodForInstantiatedType
- cmp qword ptr [r8], rdx
...
libraries_tests.run.windows.x64.Release.mch
-11 (-1.19%) : 498150.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 -> rsi 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 -> rdi class-hnd <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]>
; V03 loc1 [V03,T09] ( 3, 3 ) ref -> rdi 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 -> rdx "CSE - aggressive"
; V36 cse1 [V36,T12] ( 3, 3 ) long -> rdx "CSE - aggressive"
-; V37 rat0 [V37,T00] ( 5, 7.42) ref -> rdi class-hnd "replacement local" <System.Linq.Expressions.LambdaExpression>
+; V37 rat0 [V37,T00] ( 5, 7.36) ref -> rdi class-hnd "replacement local" <System.Linq.Expressions.LambdaExpression>
;
; Lcl frame size = 88
@@ -70,28 +70,16 @@ G_M14872_IG02: ; bbWeight=1, gcVars=0000000004000000 {V08}, gcrefRegs=004
mov rdi, rbx
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M14872_IG05
+ je SHORT G_M14872_IG04
;; size=8 bbWeight=1 PerfScore 1.50
-G_M14872_IG03: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M14872_IG03: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; System.Linq.Expressions.Expression0`1[System.Action]
cmp qword ptr [rdi], rdx
- je SHORT G_M14872_IG05
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M14872_IG04: ; bbWeight=0.21, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; System.Linq.Expressions.LambdaExpression
- call CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[rdx] +[rax]
- ; gcr arg pop 0
- mov rdi, rax
- ; gcrRegs +[rdi]
- ;; size=21 bbWeight=0.21 PerfScore 0.37
-G_M14872_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+ jne G_M14872_IG07
+ ;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M14872_IG04: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
test rdi, rdi
- je G_M14872_IG28
+ je G_M14872_IG10
mov rcx, 0xD1FFAB1E ; <unknown class>
mov edx, 1
call CORINFO_HELP_NEWARR_1_OBJ
@@ -120,7 +108,7 @@ G_M14872_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; gcrRegs -[rax rdx rbx]
; byrRegs -[rcx]
;; size=75 bbWeight=1 PerfScore 9.75
-G_M14872_IG06: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+G_M14872_IG05: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rsi+0x10]
; gcrRegs +[rcx]
mov r11d, dword ptr [rcx+0x10]
@@ -129,7 +117,7 @@ G_M14872_IG06: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {},
; gcrRegs +[rax]
mov edx, dword ptr [rax+0x08]
cmp edx, r11d
- jbe G_M14872_IG29
+ jbe G_M14872_IG30
mov ecx, r11d
; gcrRegs -[rcx]
mov rcx, gword ptr [rax+8*rcx+0x10]
@@ -137,7 +125,7 @@ G_M14872_IG06: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {},
mov gword ptr [rbp-0x28], rcx
; GC ptr vars +{V04}
;; size=39 bbWeight=1 PerfScore 12.75
-G_M14872_IG07: ; bbWeight=1, gcVars=0000000004020000 {V04 V08}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M14872_IG06: ; bbWeight=1, gcVars=0000000004020000 {V04 V08}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax rcx rsi]
; GC ptr vars -{V26}
mov rcx, gword ptr [rdi+0x08]
@@ -147,7 +135,7 @@ G_M14872_IG07: ; bbWeight=1, gcVars=0000000004020000 {V04 V08}, gcrefRegs
; gcrRegs -[rcx]
; gcr arg pop 0
cmp eax, 1
- jne G_M14872_IG24
+ jne SHORT G_M14872_IG08
mov rcx, gword ptr [rdi+0x08]
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; code for <unknown method>
@@ -158,7 +146,7 @@ G_M14872_IG07: ; bbWeight=1, gcVars=0000000004020000 {V04 V08}, gcrefRegs
mov rdx, qword ptr [rax]
mov rcx, 0xD1FFAB1E ; System.Linq.Expressions.FieldExpression
cmp rdx, rcx
- je G_M14872_IG24
+ je SHORT G_M14872_IG08
mov rcx, rax
; gcrRegs +[rcx]
mov rax, qword ptr [rdx+0x48]
@@ -167,14 +155,117 @@ G_M14872_IG07: ; bbWeight=1, gcVars=0000000004020000 {V04 V08}, gcrefRegs
; gcrRegs -[rcx]
; 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=0080 {rdi}, 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=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rdi] +[rbx rsi]
+ ; GC ptr vars -{V04}
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; System.Linq.Expressions.LambdaExpression
+ call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ jmp G_M14872_IG04
+ ;; size=26 bbWeight=0.18 PerfScore 0.68
+G_M14872_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rbx rsi]
+ ; GC ptr vars -{V08}
+ mov rax, rdi
+ ; gcrRegs +[rax]
+ ;; size=3 bbWeight=1 PerfScore 0.25
+G_M14872_IG09: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 88
+ pop rbx
+ pop rsi
+ pop rdi
+ pop rbp
+ ret
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M14872_IG10: ; bbWeight=0, gcVars=0000000004000000 {V08}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rdi] +[rbx rsi]
+ ; GC ptr vars +{V08 V26}
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; System.Linq.Expressions.BlockExpression
+ call CORINFO_HELP_CHKCASTCLASS
+ ; gcrRegs -[rdx rbx] +[rax]
+ ; gcr arg pop 0
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ mov rax, qword ptr [rax]
+ ; gcrRegs -[rax]
+ mov rax, qword ptr [rax+0x50]
+ call [rax+0x30]<unknown method>
+ ; gcrRegs -[rcx] +[rax]
+ ; gcr arg pop 0
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ jmp G_M14872_IG05
+ ;; size=39 bbWeight=0 PerfScore 0.00
+G_M14872_IG11: ; bbWeight=0, gcVars=0000000004020000 {V04 V08}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rsi]
+ ; GC ptr vars -{V26} +{V04 V17}
+ mov rcx, gword ptr [rdi+0x08]
+ ; gcrRegs +[rcx]
+ mov r11, 0xD1FFAB1E ; code for <unknown method>
+ xor edx, edx
+ call [r11]<unknown method>
+ ; gcrRegs -[rcx] +[rax]
+ ; gcr arg pop 0
+ mov rdx, rax
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; System.Linq.Expressions.BlockExpression
+ call CORINFO_HELP_CHKCASTCLASS
+ ; gcrRegs -[rdx]
+ ; gcr arg pop 0
+ mov gword ptr [rbp-0x30], rax
+ ; GC ptr vars +{V05}
+ mov rcx, gword ptr [rbp-0x30]
+ ; gcrRegs +[rcx]
+ 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 -[rcx] +[rax]
+ ; gcr arg pop 0
+ mov rcx, gword ptr [rax+0x08]
+ ; gcrRegs +[rcx]
+ mov r11, 0xD1FFAB1E ; code for <unknown method>
+ call [r11]<unknown method>
+ ; gcrRegs -[rax rcx]
+ ; gcr arg pop 0
+ test eax, eax
+ jle G_M14872_IG27
+ mov rcx, gword ptr [rbp-0x30]
+ ; gcrRegs +[rcx]
+ 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 -[rcx] +[rax]
+ ; gcr arg pop 0
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ cmp dword ptr [rcx], ecx
+ call [System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.__Canon]:this]
+ ; gcrRegs -[rcx]
+ ; 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=0080 {rdi}, 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=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M14872_IG13: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbp-0x38]
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; code for <unknown method>
@@ -193,9 +284,9 @@ G_M14872_IG09: ; bbWeight=0, gcrefRegs=0080 {rdi}, 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=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M14872_IG14: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
mov rcx, gword ptr [rbp-0x38]
; gcrRegs +[rcx]
@@ -204,34 +295,34 @@ G_M14872_IG10: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
; gcrRegs -[rcx]
; 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=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M14872_IG15: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov gword ptr [rbp-0x40], rdi
- jmp SHORT G_M14872_IG14
+ jmp SHORT G_M14872_IG18
;; size=6 bbWeight=0 PerfScore 0.00
...
-6 (-0.33%) : 462719.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
@@ -9,7 +9,7 @@
; 10 inlinees with PGO data; 13 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 21, 10.66) ref -> [rbp+0x10] class-hnd EH-live single-def <System.Object>
+; V00 arg0 [V00,T00] ( 21, 10.63) ref -> [rbp+0x10] class-hnd EH-live single-def <System.Object>
; V01 arg1 [V01,T05] ( 5, 2.06) int -> rbx single-def
; V02 loc0 [V02,T22] ( 3, 2.01) ref -> rsi class-hnd single-def <System.Type>
; V03 loc1 [V03,T24] ( 2, 1.03) ref -> rax class-hnd exact <System.String>
@@ -75,7 +75,7 @@
;* V63 tmp49 [V63 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
;* V64 tmp50 [V64 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V65 tmp51 [V65 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
-; V66 tmp52 [V66,T02] ( 3, 6.01) ref -> rbx class-hnd exact single-def "dup spill" <System.Object[]>
+; V66 tmp52 [V66,T02] ( 3, 6.01) ref -> rdi class-hnd exact single-def "dup spill" <System.Object[]>
; V67 tmp53 [V67,T12] ( 2, 4.00) ref -> r14 class-hnd single-def "impAppendStmt" <<unknown class>>
; V68 tmp54 [V68,T30] ( 4, 0.88) ref -> rsi class-hnd "Inline return value spill temp" <System.Reflection.TypeInfo>
;* V69 tmp55 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
@@ -120,7 +120,7 @@ G_M58093_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
G_M58093_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rcx]
test rcx, rcx
- je G_M58093_IG45
+ je G_M58093_IG46
;; size=9 bbWeight=1 PerfScore 1.25
G_M58093_IG03: ; bbWeight=1.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov rsi, rcx
@@ -140,7 +140,7 @@ G_M58093_IG05: ; bbWeight=0.41, gcrefRegs=0002 {rcx}, byrefRegs=0000 {},
;; size=2 bbWeight=0.41 PerfScore 0.10
G_M58093_IG06: ; bbWeight=1.00, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
test rsi, rsi
- jne G_M58093_IG47
+ jne G_M58093_IG48
jmp SHORT G_M58093_IG10
;; size=11 bbWeight=1.00 PerfScore 3.26
G_M58093_IG07: ; bbWeight=0.09, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
@@ -190,7 +190,7 @@ G_M58093_IG10: ; bbWeight=1.00, gcVars=0000000000000001 {V00}, gcrefRegs=
mov rsi, qword ptr [r14+0x18]
mov ecx, esi
and ecx, 2
- jne G_M58093_IG23
+ jne G_M58093_IG27
test ecx, ecx
sete cl
movzx rcx, cl
@@ -275,37 +275,50 @@ G_M58093_IG17: ; bbWeight=1.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {},
; GC ptr vars +{V09}
jmp G_M58093_IG08
;; size=15 bbWeight=1.00 PerfScore 6.01
-G_M58093_IG18: ; bbWeight=1.00, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref
+G_M58093_IG18: ; bbWeight=1.00, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] +[rcx rdi]
; GC ptr vars -{V09}
mov rax, 0xD1FFAB1E ; System.Double
cmp r14, rax
- je G_M58093_IG24
- ;; size=19 bbWeight=1.00 PerfScore 1.50
+ je SHORT G_M58093_IG26
+ ;; size=15 bbWeight=1.00 PerfScore 1.50
G_M58093_IG19: ; bbWeight=0.51, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref
mov rax, 0xD1FFAB1E ; <unknown class>
cmp r14, rax
- je G_M58093_IG39
+ je G_M58093_IG37
mov rax, 0xD1FFAB1E ; <unknown class>
cmp r14, rax
- je G_M58093_IG39
+ je G_M58093_IG37
mov rax, 0xD1FFAB1E ; System.String
cmp r14, rax
- je G_M58093_IG25
+ je G_M58093_IG28
;; size=57 bbWeight=0.51 PerfScore 2.31
-G_M58093_IG20: ; bbWeight=0.50, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref
+G_M58093_IG20: ; bbWeight=0.50, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref, isz
mov rax, rcx
; gcrRegs +[rax]
test rax, rax
- je G_M58093_IG27
- ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M58093_IG21: ; bbWeight=0.25, gcrefRegs=0083 {rax rcx rdi}, byrefRegs=0000 {}, byref
+ je SHORT G_M58093_IG23
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M58093_IG21: ; bbWeight=0.25, gcrefRegs=0083 {rax rcx rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; System.Numerics.BigInteger
cmp qword ptr [rax], rdx
- je G_M58093_IG26
- ;; size=19 bbWeight=0.25 PerfScore 1.07
-G_M58093_IG22: ; bbWeight=0.10, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M58093_IG25
+ ;; size=15 bbWeight=0.25 PerfScore 1.07
+G_M58093_IG22: ; bbWeight=0.18, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=2 bbWeight=0.18 PerfScore 0.04
+G_M58093_IG23: ; bbWeight=0.50, gcrefRegs=0083 {rax rcx rdi}, byrefRegs=0000 {}, byref
+ test rax, rax
+ je G_M58093_IG34
+ ;; size=9 bbWeight=0.50 PerfScore 0.63
+G_M58093_IG24: ; bbWeight=0.06, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdi]
+ jmp G_M58093_IG30
+ ;; size=5 bbWeight=0.06 PerfScore 0.12
+G_M58093_IG25: ; bbWeight=0.08, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax] +[rdi]
mov rdx, rcx
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; System.Collections.IEnumerable
@@ -315,21 +328,10 @@ G_M58093_IG22: ; bbWeight=0.10, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000
; gcr arg pop 0
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
- jmp SHORT G_M58093_IG27
- ;; size=24 bbWeight=0.10 PerfScore 0.44
-G_M58093_IG23: ; bbWeight=0, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rcx] +[r14]
- mov rcx, r14
- ; gcrRegs +[rcx]
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- call [System.RuntimeType:IsSubclassOf(System.Type):ubyte:this]
- ; gcrRegs -[rcx rdx r14]
- ; gcr arg pop 0
- jmp G_M58093_IG12
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M58093_IG24: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
+ jmp SHORT G_M58093_IG23
+ ;; size=24 bbWeight=0.08 PerfScore 0.34
+G_M58093_IG26: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rcx rdi]
call [<unknown method>]
; gcrRegs +[rax]
; gcr arg pop 0
@@ -339,9 +341,9 @@ G_M58093_IG24: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov edx, 1
call CORINFO_HELP_NEWARR_1_OBJ
; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
- lea rcx, bword ptr [rbx+0x10]
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ lea rcx, bword ptr [rdi+0x10]
; byrRegs +[rcx]
mov rdx, gword ptr [rbp+0x10]
; gcrRegs +[rdx]
@@ -350,20 +352,31 @@ G_M58093_IG24: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; byrRegs -[rcx]
mov rcx, r14
; gcrRegs +[rcx]
- mov r8, rbx
+ mov r8, rdi
; gcrRegs +[r8]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rcx rdx rbx r8 r14] +[rax]
+ ; gcrRegs -[rcx rdx rdi r8 r14] +[rax]
; gcr arg pop 0
mov gword ptr [rbp-0x30], rax
; GC ptr vars +{V09}
jmp G_M58093_IG08
;; size=76 bbWeight=1.00 PerfScore 14.26
-G_M58093_IG25: ; bbWeight=0.51, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax] +[rcx]
+G_M58093_IG27: ; bbWeight=0, gcrefRegs=4080 {rdi r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax] +[rdi r14]
; GC ptr vars -{V09}
+ mov rcx, r14
+ ; gcrRegs +[rcx]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ call [System.RuntimeType:IsSubclassOf(System.Type):ubyte:this]
+ ; gcrRegs -[rcx rdx r14]
+ ; gcr arg pop 0
+ jmp G_M58093_IG12
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M58093_IG28: ; bbWeight=0.51, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdi] +[rcx]
mov rax, rcx
; gcrRegs +[rax]
mov rcx, rax
@@ -374,35 +387,9 @@ G_M58093_IG25: ; bbWeight=0.51, gcrefRegs=0002 {rcx}, byrefRegs=0000 {},
; GC ptr vars +{V09}
jmp G_M58093_IG08
;; size=21 bbWeight=0.51 PerfScore 3.34
-G_M58093_IG26: ; bbWeight=0.15, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax] +[rcx rdi]
- ; GC ptr vars -{V09}
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=2 bbWeight=0.15 PerfScore 0.04
-G_M58093_IG27: ; bbWeight=0.50, gcrefRegs=0083 {rax rcx rdi}, byrefRegs=0000 {}, byref, isz
- test rax, rax
- jne SHORT G_M58093_IG30
- ;; size=5 bbWeight=0.50 PerfScore 0.63
-G_M58093_IG28: ; bbWeight=0.44, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rsi, rdi
- ; gcrRegs +[rsi]
- mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- cmp gword ptr [rax], 0
- je G_M58093_IG33
- mov rax, 0xD1FFAB1E ; System.RuntimeType
- cmp qword ptr [rdi], rax
- jne G_M58093_IG38
- mov rcx, rdi
- call [System.RuntimeType:GetInterfaces():System.Type[]:this]
- ; gcrRegs -[rcx] +[rax]
- ; gcr arg pop 0
- mov r14, rax
- ; gcrRegs +[r14]
- ;; size=54 bbWeight=0.44 PerfScore 5.40
G_M58093_IG29: ; bbWeight=0.44, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
+ ; gcrRegs -[rax] +[rsi rdi r14]
+ ; GC ptr vars -{V09}
mov rdx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov r15, gword ptr [rdx]
; gcrRegs +[r15]
@@ -450,11 +437,11 @@ G_M58093_IG31: ; bbWeight=0.44, gcrefRegs=80C1 {rax rsi rdi r15}, byrefRe
; gcrRegs -[rax rcx rdx r15]
; gcr arg pop 0
;; size=19 bbWeight=0.44 PerfScore 1.65
-G_M58093_IG32: ; bbWeight=0.44, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+G_M58093_IG32: ; bbWeight=0.44, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
test eax, eax
- jne G_M58093_IG37
- ;; size=8 bbWeight=0.44 PerfScore 0.55
-G_M58093_IG33: ; bbWeight=0.44, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M58093_IG36
+ ;; size=4 bbWeight=0.44 PerfScore 0.55
+G_M58093_IG33: ; bbWeight=0.44, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, rdi
; gcrRegs +[rcx]
mov rax, qword ptr [rdi]
@@ -463,7 +450,7 @@ G_M58093_IG33: ; bbWeight=0.44, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- je SHORT G_M58093_IG34
+ je G_M58093_IG38
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
mov rdx, rsi
@@ -474,8 +461,62 @@ G_M58093_IG33: ; bbWeight=0.44, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000
mov gword ptr [rbp-0x30], rax
; GC ptr vars +{V09}
...
-1 (-0.18%) : 372398.dasm - System.Threading.Tasks.Task:ContinueWithCore(System.Threading.Tasks.Task,System.Threading.Tasks.TaskScheduler,System.Threading.CancellationToken,int):this (Tier1)
@@ -9,7 +9,7 @@
; 2 inlinees with PGO data; 18 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 12, 7.11) ref -> rbx this class-hnd single-def <System.Threading.Tasks.Task>
+; V00 this [V00,T00] ( 12, 7.07) ref -> rbx this class-hnd single-def <System.Threading.Tasks.Task>
; V01 arg1 [V01,T01] ( 9, 6 ) ref -> rsi class-hnd single-def <System.Threading.Tasks.Task>
; V02 arg2 [V02,T04] ( 4, 4 ) ref -> rdi class-hnd single-def <System.Threading.Tasks.TaskScheduler>
; V03 arg3 [V03 ] ( 7, 4 ) struct ( 8) [rsp+0x78] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
@@ -110,64 +110,54 @@ G_M53372_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; gcrRegs -[rax rcx rdx rdi r9]
; gcr arg pop 0
cmp gword ptr [rsp+0x78], 0
- jne G_M53372_IG17
+ jne G_M53372_IG16
;; size=53 bbWeight=1 PerfScore 9.25
G_M53372_IG06: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
test dword ptr [rsi+0x34], 0xD1FFAB1E
- jne G_M53372_IG15
+ jne G_M53372_IG13
test word ptr [rbx+0x34], 0x400
- je SHORT G_M53372_IG12
+ je SHORT G_M53372_IG11
;; size=21 bbWeight=1 PerfScore 8.00
G_M53372_IG07: ; bbWeight=0.97, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rax, rbx
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M53372_IG11
+ je SHORT G_M53372_IG10
;; size=8 bbWeight=0.97 PerfScore 1.46
G_M53372_IG08: ; bbWeight=0.49, gcrefRegs=0069 {rax rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Net.WebResponse,System.Net.HttpWebRequest+<SendRequest>d__196]
cmp qword ptr [rax], rdx
- je SHORT G_M53372_IG10
+ jne SHORT G_M53372_IG14
;; size=15 bbWeight=0.49 PerfScore 2.06
-G_M53372_IG09: ; bbWeight=0.17, gcrefRegs=0068 {rbx rbp 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_M53372_IG11
- ;; size=20 bbWeight=0.17 PerfScore 0.61
-G_M53372_IG10: ; bbWeight=0.31, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+G_M53372_IG09: ; bbWeight=0.35, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
xor rax, rax
; gcrRegs +[rax]
- ;; size=2 bbWeight=0.31 PerfScore 0.08
-G_M53372_IG11: ; bbWeight=0.97, gcrefRegs=0069 {rax rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.35 PerfScore 0.09
+G_M53372_IG10: ; bbWeight=0.97, gcrefRegs=0069 {rax rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
test rax, rax
- jne SHORT G_M53372_IG12
+ jne SHORT G_M53372_IG11
mov rcx, 0xD1FFAB1E ; const ptr
mov rdi, gword ptr [rcx]
; gcrRegs +[rdi]
cmp byte ptr [rdi+0x9D], 0
- jne G_M53372_IG20
+ jne G_M53372_IG19
;; size=31 bbWeight=0.97 PerfScore 7.28
-G_M53372_IG12: ; bbWeight=1, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+G_M53372_IG11: ; bbWeight=1, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rsi rdi]
mov ecx, 1
call [<unknown method>]
; gcr arg pop 0
test dword ptr [rbx+0x34], 0xD1FFAB1E
- jne SHORT G_M53372_IG14
+ jne SHORT G_M53372_IG15
;; size=20 bbWeight=1 PerfScore 7.25
-G_M53372_IG13: ; bbWeight=0.96, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+G_M53372_IG12: ; bbWeight=0.96, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
cmp gword ptr [rbx+0x20], 0
- jne G_M53372_IG22
+ jne G_M53372_IG21
lea rcx, bword ptr [rbx+0x20]
; byrRegs +[rcx]
test rcx, rcx
- je G_M53372_IG21
+ je G_M53372_IG20
mov rdx, rbp
; gcrRegs +[rdx]
xor r8, r8
@@ -177,24 +167,10 @@ G_M53372_IG13: ; bbWeight=0.96, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000
; byrRegs -[rcx]
; gcr arg pop 0
test rax, rax
- jne G_M53372_IG22
- jmp SHORT G_M53372_IG15
- ;; size=46 bbWeight=0.96 PerfScore 10.05
-G_M53372_IG14: ; bbWeight=0.05, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rcx, rbp
- ; gcrRegs +[rcx]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- mov r8d, 1
- call [<unknown method>]
- ; gcrRegs -[rcx rdx rbx rbp]
- ; gcr arg pop 0
- ;; size=18 bbWeight=0.05 PerfScore 0.18
-G_M53372_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- nop
- ;; size=1 bbWeight=1 PerfScore 0.25
-G_M53372_IG16: ; bbWeight=1, epilog, nogc, extend
+ jne G_M53372_IG21
+ ;; size=44 bbWeight=0.96 PerfScore 8.14
+G_M53372_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rax rbx rbp]
add rsp, 48
pop rbx
pop rbp
@@ -203,17 +179,39 @@ G_M53372_IG16: ; bbWeight=1, epilog, nogc, extend
pop r14
ret
;; size=11 bbWeight=1 PerfScore 3.75
-G_M53372_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M53372_IG14: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rbx rbp rsi]
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
+ jmp SHORT G_M53372_IG10
+ ;; size=20 bbWeight=0.13 PerfScore 0.46
+G_M53372_IG15: ; bbWeight=0.05, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax rsi]
+ mov rcx, rbp
+ ; gcrRegs +[rcx]
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ mov r8d, 1
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx rbx rbp]
+ ; gcr arg pop 0
+ jmp SHORT G_M53372_IG13
+ ;; size=20 bbWeight=0.05 PerfScore 0.28
+G_M53372_IG16: ; bbWeight=0, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rbp rsi]
test dword ptr [rbx+0x34], 0xD1FFAB1E
- jne SHORT G_M53372_IG18
+ jne SHORT G_M53372_IG17
lea rcx, [rsp+0x78]
call [System.Threading.CancellationToken:get_IsCancellationRequested():ubyte:this]
; gcr arg pop 0
test eax, eax
- je SHORT G_M53372_IG19
+ je SHORT G_M53372_IG18
;; size=24 bbWeight=0 PerfScore 0.00
-G_M53372_IG18: ; bbWeight=0, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+G_M53372_IG17: ; bbWeight=0, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
mov rcx, rsi
; gcrRegs +[rcx]
mov rdx, gword ptr [rsp+0x78]
@@ -227,7 +225,7 @@ G_M53372_IG18: ; bbWeight=0, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000
; gcr arg pop 0
jmp G_M53372_IG06
;; size=25 bbWeight=0 PerfScore 0.00
-G_M53372_IG19: ; bbWeight=0, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+G_M53372_IG18: ; bbWeight=0, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
mov rcx, rsi
; gcrRegs +[rcx]
mov rdx, gword ptr [rsp+0x78]
@@ -241,7 +239,7 @@ G_M53372_IG19: ; bbWeight=0, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000
; gcr arg pop 0
jmp G_M53372_IG06
;; size=25 bbWeight=0 PerfScore 0.00
-G_M53372_IG20: ; bbWeight=0, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
+G_M53372_IG19: ; bbWeight=0, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi]
call [System.Threading.Tasks.TaskScheduler:get_InternalCurrent():System.Threading.Tasks.TaskScheduler]
; gcrRegs +[rax]
@@ -273,15 +271,15 @@ G_M53372_IG20: ; bbWeight=0, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=
call [<unknown method>]
; gcrRegs -[rcx rdi]
; gcr arg pop 0
- jmp G_M53372_IG12
+ jmp G_M53372_IG11
;; size=82 bbWeight=0 PerfScore 0.00
-G_M53372_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53372_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rbp]
call [System.ThrowHelper:ThrowNullReferenceException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M53372_IG22: ; bbWeight=0, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
+G_M53372_IG21: ; bbWeight=0, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx rbp]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -292,11 +290,11 @@ G_M53372_IG22: ; bbWeight=0, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {},
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- jne G_M53372_IG15
- jmp G_M53372_IG14
+ jne G_M53372_IG13
+ jmp G_M53372_IG15
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 558, prolog size 10, PerfScore 74.23, instruction count 128, allocated bytes for code 558 (MethodHash=b7622f83) for method System.Threading.Tasks.Task:ContinueWithCore(System.Threading.Tasks.Task,System.Threading.Tasks.TaskScheduler,System.Threading.CancellationToken,int):this (Tier1)
+; Total bytes of code 557, prolog size 10, PerfScore 72.02, instruction count 127, allocated bytes for code 557 (MethodHash=b7622f83) for method System.Threading.Tasks.Task:ContinueWithCore(System.Threading.Tasks.Task,System.Threading.Tasks.TaskScheduler,System.Threading.CancellationToken,int):this (Tier1)
; ============================================================
Unwind Info:
+29 (+3.91%) : 589153.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; 27 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 7, 4.02) ref -> rbx class-hnd single-def <Xunit.Sdk.CollectionTracker>
-; V01 arg1 [V01,T02] ( 7, 4.02) ref -> rsi class-hnd single-def <Xunit.Sdk.CollectionTracker>
-; V02 arg2 [V02,T04] ( 4, 2.02) ref -> rdi class-hnd single-def <System.Collections.IEqualityComparer>
-; V03 arg3 [V03,T05] ( 3, 2.02) ubyte -> rbp single-def
-; V04 arg4 [V04,T09] ( 2, 1.02) byref -> r14 single-def
-; V05 loc0 [V05,T06] ( 11, 2.06) ref -> r15 class-hnd single-def <System.Array>
-; V06 loc1 [V06,T08] ( 9, 1.11) ref -> r13 class-hnd single-def <System.Array>
-; V07 loc2 [V07,T19] ( 3, 0 ) ref -> rbx class-hnd single-def <<unknown class>>
-; V08 loc3 [V08,T20] ( 3, 0 ) ref -> rsi class-hnd single-def <<unknown class>>
+; V00 arg0 [V00,T02] ( 7, 4.02) ref -> rbx class-hnd single-def <Xunit.Sdk.CollectionTracker>
+; V01 arg1 [V01,T03] ( 7, 4.02) ref -> rsi class-hnd single-def <Xunit.Sdk.CollectionTracker>
+; V02 arg2 [V02,T06] ( 4, 2.02) ref -> rdi class-hnd single-def <System.Collections.IEqualityComparer>
+; V03 arg3 [V03,T07] ( 3, 2.02) ubyte -> rbp single-def
+; V04 arg4 [V04,T11] ( 2, 1.02) byref -> r14 single-def
+; V05 loc0 [V05,T08] ( 11, 2.06) ref -> r15 class-hnd single-def <System.Array>
+; V06 loc1 [V06,T10] ( 9, 1.11) ref -> r13 class-hnd single-def <System.Array>
+; V07 loc2 [V07,T21] ( 3, 0 ) ref -> rbx class-hnd single-def <<unknown class>>
+; V08 loc3 [V08,T22] ( 3, 0 ) ref -> rsi 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,T18] ( 8, 0 ) int -> rbp
-; V11 loc6 [V11,T24] ( 3, 0 ) ubyte -> rbp
-; V12 loc7 [V12,T25] ( 3, 0 ) ubyte -> rax
+; V10 loc5 [V10,T20] ( 8, 0 ) int -> rbp
+; V11 loc6 [V11,T26] ( 3, 0 ) ubyte -> rbp
+; V12 loc7 [V12,T27] ( 3, 0 ) ubyte -> rax
; V13 OutArgs [V13 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T32] ( 2, 0 ) int -> rbp "impAppendStmt"
+; V14 tmp1 [V14,T34] ( 2, 0 ) int -> rbp "impAppendStmt"
;* V15 tmp2 [V15 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V16 tmp3 [V16 ] ( 3, 0 ) struct ( 8) [rsp+0x50] do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V17 tmp4 [V17 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
@@ -32,44 +32,46 @@
; V20 tmp7 [V20 ] ( 3, 0 ) struct ( 8) [rsp+0x40] do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
; V21 tmp8 [V21 ] ( 3, 0 ) struct ( 8) [rsp+0x38] do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
; V22 tmp9 [V22 ] ( 3, 0.11) struct ( 8) [rsp+0x30] do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-; V23 tmp10 [V23,T12] ( 2, 0.04) int -> rcx "Inline return value spill temp"
+; V23 tmp10 [V23,T14] ( 2, 0.04) int -> rcx "Inline return value spill temp"
;* V24 tmp11 [V24 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V25 tmp12 [V25,T13] ( 3, 0.06) int -> rcx single-def "Inline stloc first use temp"
-; V26 tmp13 [V26,T10] ( 3, 0.11) byref -> r12 single-def "Inlining Arg"
-; V27 tmp14 [V27,T14] ( 2, 0.04) int -> rcx "Inline return value spill temp"
+; V25 tmp12 [V25,T15] ( 3, 0.06) int -> rcx single-def "Inline stloc first use temp"
+; V26 tmp13 [V26,T12] ( 3, 0.11) byref -> r12 single-def "Inlining Arg"
+; V27 tmp14 [V27,T16] ( 2, 0.04) int -> rcx "Inline return value spill temp"
;* V28 tmp15 [V28 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V29 tmp16 [V29,T15] ( 3, 0.06) int -> rcx single-def "Inline stloc first use temp"
-; V30 tmp17 [V30,T11] ( 3, 0.11) byref -> r12 single-def "Inlining Arg"
+; V29 tmp16 [V29,T17] ( 3, 0.06) int -> rcx single-def "Inline stloc first use temp"
+; V30 tmp17 [V30,T13] ( 3, 0.11) byref -> r12 single-def "Inlining Arg"
;* V31 tmp18 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V32 tmp19 [V32 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V33 tmp20 [V33,T26] ( 3, 0 ) int -> rbp single-def "Inline stloc first use temp"
-; V34 tmp21 [V34,T21] ( 3, 0 ) byref -> rbp single-def "Inlining Arg"
-; V35 tmp22 [V35,T33] ( 2, 0 ) int -> rcx "Inline return value spill temp"
+; V33 tmp20 [V33,T28] ( 3, 0 ) int -> rbp single-def "Inline stloc first use temp"
+; V34 tmp21 [V34,T23] ( 3, 0 ) byref -> rbp single-def "Inlining Arg"
+; V35 tmp22 [V35,T35] ( 2, 0 ) int -> rcx "Inline return value spill temp"
;* V36 tmp23 [V36 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V37 tmp24 [V37,T27] ( 3, 0 ) int -> rcx single-def "Inline stloc first use temp"
-; V38 tmp25 [V38,T22] ( 3, 0 ) byref -> r14 single-def "Inlining Arg"
-; V39 tmp26 [V39,T28] ( 3, 0 ) int -> rdx "Inline return value spill temp"
+; V37 tmp24 [V37,T29] ( 3, 0 ) int -> rcx single-def "Inline stloc first use temp"
+; V38 tmp25 [V38,T24] ( 3, 0 ) byref -> r14 single-def "Inlining Arg"
+; V39 tmp26 [V39,T30] ( 3, 0 ) int -> rdx "Inline return value spill temp"
;* V40 tmp27 [V40 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V41 tmp28 [V41,T29] ( 3, 0 ) int -> rcx "Inline stloc first use temp"
-; V42 tmp29 [V42,T23] ( 3, 0 ) byref -> r14 "Inlining Arg"
+; V41 tmp28 [V41,T31] ( 3, 0 ) int -> rcx "Inline stloc first use temp"
+; V42 tmp29 [V42,T25] ( 3, 0 ) byref -> r14 "Inlining Arg"
;* V43 tmp30 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V44 tmp31 [V44,T07] ( 7, 2.04) struct ( 8) rax "Single return block return value" <System.Nullable`1[ubyte]>
+; V44 tmp31 [V44,T09] ( 7, 2.04) struct ( 8) rax "Single return block return value" <System.Nullable`1[ubyte]>
;* V45 tmp32 [V45 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[] "field V09.hasValue (fldOffset=0x0)" P-DEP
;* V46 tmp33 [V46 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[] "field V09.value (fldOffset=0x1)" P-DEP
-; V47 tmp34 [V47,T34] ( 2, 0 ) ubyte -> [rsp+0x50] do-not-enreg[] "field V16.hasValue (fldOffset=0x0)" P-DEP
-; V48 tmp35 [V48,T35] ( 2, 0 ) ubyte -> [rsp+0x51] do-not-enreg[] "field V16.value (fldOffset=0x1)" P-DEP
-; V49 tmp36 [V49,T36] ( 2, 0 ) ubyte -> [rsp+0x48] do-not-enreg[] "field V18.hasValue (fldOffset=0x0)" P-DEP
-; V50 tmp37 [V50,T37] ( 2, 0 ) ubyte -> [rsp+0x49] do-not-enreg[] "field V18.value (fldOffset=0x1)" P-DEP
-; V51 tmp38 [V51,T38] ( 2, 0 ) ubyte -> [rsp+0x40] do-not-enreg[] "field V20.hasValue (fldOffset=0x0)" P-DEP
-; V52 tmp39 [V52,T39] ( 2, 0 ) ubyte -> [rsp+0x41] do-not-enreg[] "field V20.value (fldOffset=0x1)" P-DEP
-; V53 tmp40 [V53,T40] ( 2, 0 ) ubyte -> [rsp+0x38] do-not-enreg[] "field V21.hasValue (fldOffset=0x0)" P-DEP
-; V54 tmp41 [V54,T41] ( 2, 0 ) ubyte -> [rsp+0x39] do-not-enreg[] "field V21.value (fldOffset=0x1)" P-DEP
-; V55 tmp42 [V55,T16] ( 2, 0.06) ubyte -> [rsp+0x30] do-not-enreg[] "field V22.hasValue (fldOffset=0x0)" P-DEP
-; V56 tmp43 [V56,T17] ( 2, 0.06) ubyte -> [rsp+0x31] do-not-enreg[] "field V22.value (fldOffset=0x1)" P-DEP
-; V57 tmp44 [V57,T30] ( 2, 0 ) ref -> r8 "argument with side effect"
-; V58 tmp45 [V58,T31] ( 2, 0 ) ref -> rbp "argument with side effect"
-; V59 rat0 [V59,T03] ( 3, 4.48) ref -> rdx "Spilling to split statement for tree"
+; V47 tmp34 [V47,T36] ( 2, 0 ) ubyte -> [rsp+0x50] do-not-enreg[] "field V16.hasValue (fldOffset=0x0)" P-DEP
+; V48 tmp35 [V48,T37] ( 2, 0 ) ubyte -> [rsp+0x51] do-not-enreg[] "field V16.value (fldOffset=0x1)" P-DEP
+; V49 tmp36 [V49,T38] ( 2, 0 ) ubyte -> [rsp+0x48] do-not-enreg[] "field V18.hasValue (fldOffset=0x0)" P-DEP
+; V50 tmp37 [V50,T39] ( 2, 0 ) ubyte -> [rsp+0x49] do-not-enreg[] "field V18.value (fldOffset=0x1)" P-DEP
+; V51 tmp38 [V51,T40] ( 2, 0 ) ubyte -> [rsp+0x40] do-not-enreg[] "field V20.hasValue (fldOffset=0x0)" P-DEP
+; V52 tmp39 [V52,T41] ( 2, 0 ) ubyte -> [rsp+0x41] do-not-enreg[] "field V20.value (fldOffset=0x1)" P-DEP
+; V53 tmp40 [V53,T42] ( 2, 0 ) ubyte -> [rsp+0x38] do-not-enreg[] "field V21.hasValue (fldOffset=0x0)" P-DEP
+; V54 tmp41 [V54,T43] ( 2, 0 ) ubyte -> [rsp+0x39] do-not-enreg[] "field V21.value (fldOffset=0x1)" P-DEP
+; V55 tmp42 [V55,T18] ( 2, 0.06) ubyte -> [rsp+0x30] do-not-enreg[] "field V22.hasValue (fldOffset=0x0)" P-DEP
+; V56 tmp43 [V56,T19] ( 2, 0.06) ubyte -> [rsp+0x31] do-not-enreg[] "field V22.value (fldOffset=0x1)" P-DEP
+; V57 tmp44 [V57,T32] ( 2, 0 ) ref -> r8 "argument with side effect"
+; V58 tmp45 [V58,T33] ( 2, 0 ) ref -> rbp "argument with side effect"
+; V59 rat0 [V59,T05] ( 3, 4.36) ref -> rdx "Spilling to split statement for tree"
; V60 rat1 [V60,T00] ( 6, 8 ) ref -> r15 class-hnd "replacement local" <System.Array>
+; V61 rat2 [V61,T04] ( 3, 4.45) ref -> rdx "Spilling to split statement for tree"
+; V62 rat3 [V62,T01] ( 6, 8 ) ref -> r13 class-hnd "replacement local" <System.Array>
;
; Lcl frame size = 88
@@ -97,9 +99,9 @@ G_M53565_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=4000
xor edx, edx
mov qword ptr [r14], rdx
test rbx, rbx
- je G_M53565_IG12
+ je G_M53565_IG16
test rsi, rsi
- je G_M53565_IG12
+ je G_M53565_IG16
mov rdx, gword ptr [rbx+0x08]
; gcrRegs +[rdx]
mov r15, rdx
@@ -112,7 +114,7 @@ G_M53565_IG03: ; bbWeight=0.50, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byr
cmp qword ptr [r15], rcx
je SHORT G_M53565_IG05
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M53565_IG04: ; bbWeight=0.24, gcrefRegs=00CC {rdx rbx rsi rdi}, byrefRegs=4000 {r14}, byref, isz
+G_M53565_IG04: ; bbWeight=0.18, gcrefRegs=00CC {rdx rbx rsi rdi}, byrefRegs=4000 {r14}, byref, isz
; gcrRegs -[r15]
mov rcx, 0xD1FFAB1E ; System.Array
call CORINFO_HELP_ISINSTANCEOFCLASS
@@ -121,30 +123,49 @@ G_M53565_IG04: ; bbWeight=0.24, gcrefRegs=00CC {rdx rbx rsi rdi}, byrefRe
mov r15, rax
; gcrRegs +[r15]
jmp SHORT G_M53565_IG06
- ;; size=20 bbWeight=0.24 PerfScore 0.84
-G_M53565_IG05: ; bbWeight=0.26, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=4000 {r14}, byref
+ ;; size=20 bbWeight=0.18 PerfScore 0.63
+G_M53565_IG05: ; bbWeight=0.32, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=4000 {r14}, byref
; gcrRegs -[rax r15]
xor r15, r15
; gcrRegs +[r15]
- ;; size=3 bbWeight=0.26 PerfScore 0.07
-G_M53565_IG06: ; bbWeight=1, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref
+ ;; size=3 bbWeight=0.32 PerfScore 0.08
+G_M53565_IG06: ; bbWeight=1, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
mov rdx, gword ptr [rsi+0x08]
; gcrRegs +[rdx]
+ mov r13, rdx
+ ; gcrRegs +[r13]
+ test r13, r13
+ je SHORT G_M53565_IG10
+ ;; size=12 bbWeight=1 PerfScore 3.50
+G_M53565_IG07: ; bbWeight=0.50, gcrefRegs=A0CC {rdx rbx rsi rdi r13 r15}, byrefRegs=4000 {r14}, byref, isz
+ mov rcx, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Text.Json.Serialization.Tests.PolymorphicTests+PolymorphicClass]
+ cmp qword ptr [r13], rcx
+ je SHORT G_M53565_IG09
+ ;; size=16 bbWeight=0.50 PerfScore 2.12
+G_M53565_IG08: ; bbWeight=0.23, gcrefRegs=80CC {rdx rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
+ ; gcrRegs -[r13]
mov rcx, 0xD1FFAB1E ; System.Array
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
mov r13, rax
; gcrRegs +[r13]
+ jmp SHORT G_M53565_IG10
+ ;; size=20 bbWeight=0.23 PerfScore 0.79
+G_M53565_IG09: ; bbWeight=0.27, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref
+ ; gcrRegs -[rax r13]
+ xor r13, r13
+ ; gcrRegs +[r13]
+ ;; size=3 bbWeight=0.27 PerfScore 0.07
+G_M53565_IG10: ; bbWeight=1, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byrefRegs=4000 {r14}, byref
test r15, r15
- je G_M53565_IG12
- ;; size=31 bbWeight=1 PerfScore 4.75
-G_M53565_IG07: ; bbWeight=0.06, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byrefRegs=4000 {r14}, byref
- ; gcrRegs -[rax]
+ je G_M53565_IG16
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M53565_IG11: ; bbWeight=0.06, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byrefRegs=4000 {r14}, byref
test r13, r13
- je G_M53565_IG12
+ je G_M53565_IG16
;; size=9 bbWeight=0.06 PerfScore 0.07
-G_M53565_IG08: ; bbWeight=0.02, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byrefRegs=4000 {r14}, byref, isz
+G_M53565_IG12: ; bbWeight=0.02, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byrefRegs=4000 {r14}, byref, isz
mov r12, qword ptr [r15]
xor ecx, ecx
test dword ptr [r12], 0xD1FFAB1E
@@ -155,11 +176,11 @@ G_M53565_IG08: ; bbWeight=0.02, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byr
mov ecx, dword ptr [r12+0x04]
add ecx, -24
shr ecx, 3
- je SHORT G_M53565_IG09
+ je SHORT G_M53565_IG13
cmp ecx, 1
- jne G_M53565_IG13
+ jne G_M53565_IG17
;; size=44 bbWeight=0.02 PerfScore 0.27
-G_M53565_IG09: ; bbWeight=0.02, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byrefRegs=4000 {r14}, byref, isz
+G_M53565_IG13: ; bbWeight=0.02, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byrefRegs=4000 {r14}, byref, isz
; byrRegs -[r12]
mov rcx, r15
; gcrRegs +[rcx]
@@ -168,7 +189,7 @@ G_M53565_IG09: ; bbWeight=0.02, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byr
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M53565_IG13
+ jne SHORT G_M53565_IG17
mov r12, qword ptr [r13]
xor ecx, ecx
test dword ptr [r12], 0xD1FFAB1E
@@ -179,11 +200,11 @@ G_M53565_IG09: ; bbWeight=0.02, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byr
mov ecx, dword ptr [r12+0x04]
add ecx, -24
shr ecx, 3
- je SHORT G_M53565_IG10
+ je SHORT G_M53565_IG14
cmp ecx, 1
- jne SHORT G_M53565_IG13
+ jne SHORT G_M53565_IG17
;; size=56 bbWeight=0.02 PerfScore 0.36
-G_M53565_IG10: ; bbWeight=0.02, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byrefRegs=4000 {r14}, byref, isz
+G_M53565_IG14: ; bbWeight=0.02, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byrefRegs=4000 {r14}, byref, isz
; byrRegs -[r12]
mov rcx, r13
; gcrRegs +[rcx]
@@ -192,7 +213,7 @@ G_M53565_IG10: ; bbWeight=0.02, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byr
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M53565_IG13
+ jne SHORT G_M53565_IG17
mov bword ptr [rsp+0x20], r14
; byr arg write
movzx r9, bpl
@@ -210,7 +231,7 @@ G_M53565_IG10: ; bbWeight=0.02, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byr
mov byte ptr [rsp+0x30], 1
movzx rax, word ptr [rsp+0x30]
;; size=53 bbWeight=0.02 PerfScore 0.24
-G_M53565_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M53565_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
add rsp, 88
pop rbx
pop rbp
@@ -222,11 +243,11 @@ G_M53565_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop r15
...
+20 (+5.68%) : 162312.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuard:Visit(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
@@ -10,11 +10,11 @@
; Final local variable assignments
;
; V00 this [V00,T01] ( 17, 5.50) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuard>
-; V01 arg1 [V01,T03] ( 9, 4.52) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundNode>
+; V01 arg1 [V01,T03] ( 9, 4.43) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundNode>
; V02 loc0 [V02,T04] ( 7, 2.92) 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>
-; V05 tmp2 [V05,T00] ( 7, 7.64) byref -> rsi single-def "Inlining Arg"
+; V05 tmp2 [V05,T00] ( 7, 7.64) byref -> rbp single-def "Inlining Arg"
; V06 tmp3 [V06,T06] ( 3, 1.19) ref -> rax class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
; V07 tmp4 [V07,T08] ( 2, 0.69) int -> rax "guarded devirt return temp"
;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker>
@@ -29,59 +29,48 @@
;* V17 tmp14 [V17,T12] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BoundNode>
;* V18 tmp15 [V18 ] ( 0, 0 ) ref -> zero-ref "guarded devirt return temp"
;* V19 tmp16 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.BoundThisReference>
-; V20 rat0 [V20,T02] ( 5, 7.45) ref -> rdi class-hnd "replacement local" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V20 rat0 [V20,T02] ( 5, 7.27) ref -> rdi class-hnd "replacement local" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M26227_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]
mov rsi, rdx
; gcrRegs +[rsi]
- ;; size=13 bbWeight=1 PerfScore 3.75
+ ;; size=14 bbWeight=1 PerfScore 4.75
G_M26227_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, rsi
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M26227_IG05
+ je SHORT G_M26227_IG04
;; size=8 bbWeight=1 PerfScore 1.50
G_M26227_IG03: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundLocal
cmp qword ptr [rdi], rdx
- je SHORT G_M26227_IG05
+ jne SHORT G_M26227_IG08
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M26227_IG04: ; bbWeight=0.23, 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.23 PerfScore 0.39
-G_M26227_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+G_M26227_IG04: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
test rdi, rdi
- je G_M26227_IG20
- ;; size=9 bbWeight=1 PerfScore 1.25
-G_M26227_IG06: ; bbWeight=0.60, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M26227_IG12
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M26227_IG05: ; bbWeight=0.60, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
- lea rsi, bword ptr [rbx+0x08]
- ; byrRegs +[rsi]
- inc dword ptr [rsi]
- cmp dword ptr [rsi], 1
- jg SHORT G_M26227_IG08
- ;; size=11 bbWeight=0.60 PerfScore 4.46
-G_M26227_IG07: ; bbWeight=0.35, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref, isz
+ lea rbp, bword ptr [rbx+0x08]
+ ; byrRegs +[rbp]
+ inc dword ptr [rbp]
+ cmp dword ptr [rbp], 1
+ jg G_M26227_IG16
+ ;; size=17 bbWeight=0.60 PerfScore 4.46
+G_M26227_IG06: ; bbWeight=0.35, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.NullableWalker
cmp qword ptr [rbx], rcx
- je G_M26227_IG17
+ je SHORT G_M26227_IG09
mov rcx, rbx
; gcrRegs +[rcx]
mov rax, qword ptr [rbx]
@@ -90,27 +79,94 @@ G_M26227_IG07: ; bbWeight=0.35, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M26227_IG17
- ;; size=36 bbWeight=0.35 PerfScore 4.41
-G_M26227_IG08: ; bbWeight=0.25, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref, isz
- mov edx, dword ptr [rsi]
+ jne SHORT G_M26227_IG09
+ ;; size=32 bbWeight=0.35 PerfScore 4.41
+G_M26227_IG07: ; bbWeight=0.25, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
+ jmp SHORT G_M26227_IG16
+ ;; size=2 bbWeight=0.25 PerfScore 0.50
+G_M26227_IG08: ; bbWeight=0.14, 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_M26227_IG04
+ ;; size=23 bbWeight=0.14 PerfScore 0.51
+G_M26227_IG09: ; bbWeight=0.35, 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.35 PerfScore 1.21
+G_M26227_IG10: ; bbWeight=0.60, gcrefRegs=0001 {rax}, byrefRegs=0020 {rbp}, byref
+ dec dword ptr [rbp]
+ ;; size=3 bbWeight=0.60 PerfScore 1.79
+G_M26227_IG11: ; bbWeight=0.60, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ ret
+ ;; size=9 bbWeight=0.60 PerfScore 1.93
+G_M26227_IG12: ; bbWeight=0.40, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax] +[rbx rsi]
+ ; byrRegs -[rbp]
+ test rsi, rsi
+ je G_M26227_IG28
+ ;; size=9 bbWeight=0.40 PerfScore 0.51
+G_M26227_IG13: ; bbWeight=0.37, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundThisReference
+ cmp qword ptr [rsi], rcx
+ jne G_M26227_IG24
+ ;; size=19 bbWeight=0.37 PerfScore 1.57
+G_M26227_IG14: ; bbWeight=0.21, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ mov rdx, rsi
+ ; gcrRegs +[rdx]
+ mov rax, qword ptr [rbx]
+ mov rax, qword ptr [rax+0xB8]
+ ;; size=16 bbWeight=0.21 PerfScore 0.96
+G_M26227_IG15: ; bbWeight=0.21, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ tail.jmp [rax+0x38]<unknown method>
+ ;; size=12 bbWeight=0.21 PerfScore 0.91
+G_M26227_IG16: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, gcvars, byref
+ ; gcrRegs -[rcx rdx rsi] +[rdi]
+ ; byrRegs +[rbp]
+ mov edx, dword ptr [rbp]
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.NullableWalker
cmp qword ptr [rbx], rcx
- jne SHORT G_M26227_IG16
- ;; size=17 bbWeight=0.25 PerfScore 1.56
-G_M26227_IG09: ; bbWeight=0.17, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref
+ jne G_M26227_IG27
+ ;; size=22 bbWeight=0.25 PerfScore 1.56
+G_M26227_IG17: ; bbWeight=0.17, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref
mov rcx, rbx
; gcrRegs +[rcx]
call [Microsoft.CodeAnalysis.CSharp.NullableWalker:EnsureSufficientExecutionStack(int):this]
; gcrRegs -[rcx]
; gcr arg pop 0
;; size=9 bbWeight=0.17 PerfScore 0.54
-G_M26227_IG10: ; bbWeight=0.25, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref
+G_M26227_IG18: ; bbWeight=0.25, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref, isz
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundThisReference
cmp qword ptr [rdi], rcx
- jne G_M26227_IG26
- ;; size=19 bbWeight=0.25 PerfScore 1.06
-G_M26227_IG11: ; bbWeight=0.13, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref
+ jne SHORT G_M26227_IG26
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
+G_M26227_IG19: ; bbWeight=0.13, gcrefRegs=0088 {rbx rdi}, byrefRegs=0020 {rbp}, byref
mov rcx, rbx
; gcrRegs +[rcx]
mov rdx, rdi
@@ -123,85 +179,30 @@ G_M26227_IG11: ; bbWeight=0.13, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040
mov rdx, rax
; gcrRegs +[rdx]
;; size=22 bbWeight=0.13 PerfScore 1.02
-G_M26227_IG12: ; bbWeight=0.25, gcrefRegs=0004 {rdx}, byrefRegs=0040 {rsi}, byref, isz
+G_M26227_IG20: ; bbWeight=0.25, gcrefRegs=0004 {rdx}, byrefRegs=0020 {rbp}, byref, isz
; gcrRegs -[rax]
mov rax, rdx
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M26227_IG15
+ je SHORT G_M26227_IG23
;; size=8 bbWeight=0.25 PerfScore 0.37
-G_M26227_IG13: ; bbWeight=0.12, gcrefRegs=0005 {rax rdx}, byrefRegs=0040 {rsi}, byref, isz
+G_M26227_IG21: ; bbWeight=0.12, gcrefRegs=0005 {rax rdx}, byrefRegs=0020 {rbp}, byref, isz
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundExpression
cmp qword ptr [rax], rcx
- je SHORT G_M26227_IG15
+ je SHORT G_M26227_IG23
;; size=15 bbWeight=0.12 PerfScore 0.53
-G_M26227_IG14: ; bbWeight=0.06, gcrefRegs=0004 {rdx}, byrefRegs=0040 {rsi}, byref
+G_M26227_IG22: ; bbWeight=0.06, gcrefRegs=0004 {rdx}, byrefRegs=0020 {rbp}, byref
; gcrRegs -[rax]
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
;; size=5 bbWeight=0.06 PerfScore 0.06
-G_M26227_IG15: ; bbWeight=0.25, gcrefRegs=0001 {rax}, byrefRegs=0040 {rsi}, byref, isz
- jmp SHORT G_M26227_IG18
- ;; size=2 bbWeight=0.25 PerfScore 0.50
-G_M26227_IG16: ; bbWeight=0.08, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref, isz
- ; gcrRegs -[rax] +[rbx rdi]
- mov rcx, rbx
- ; gcrRegs +[rcx]
- mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x48]
- call [rax+0x30]<unknown method>
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- jmp SHORT G_M26227_IG10
- ;; size=15 bbWeight=0.08 PerfScore 0.76
-G_M26227_IG17: ; bbWeight=0.35, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref
- 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.35 PerfScore 1.21
-G_M26227_IG18: ; bbWeight=0.60, gcrefRegs=0001 {rax}, byrefRegs=0040 {rsi}, byref
...
+13 (+6.02%) : 596563.dasm - Xunit.Internal.ArgumentFormatter:SafeToMultiEnumerate(System.Collections.IEnumerable):ubyte (Tier1)
@@ -8,12 +8,12 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1031
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 10, 6.19) ref -> rbx class-hnd single-def <System.Collections.IEnumerable>
+; V00 arg0 [V00,T00] ( 10, 6.04) ref -> rbx class-hnd single-def <System.Collections.IEnumerable>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T04] ( 3, 3.91) ref -> rdx class-hnd "spilling QMark2" <<unknown class>>
-; V03 rat0 [V03,T01] ( 5, 7.39) ref -> rax class-hnd "replacement local" <<unknown class>>
+; V03 rat0 [V03,T01] ( 5, 7.27) ref -> rax class-hnd "replacement local" <<unknown class>>
; V04 rat1 [V04,T02] ( 6, 6.25) ref -> rax class-hnd "replacement local" <<unknown class>>
-; V05 rat2 [V05,T03] ( 6, 5.67) ref -> rax class-hnd "replacement local" <<unknown class>>
+; V05 rat2 [V05,T03] ( 6, 5.67) ref -> r8 class-hnd "replacement local" <<unknown class>>
;
; Lcl frame size = 32
@@ -27,92 +27,108 @@ G_M49662_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov rax, rbx
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M49662_IG05
+ je SHORT G_M49662_IG04
;; size=8 bbWeight=1 PerfScore 1.50
G_M49662_IG03: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; ubyte[]
cmp qword ptr [rax], rdx
- je SHORT G_M49662_IG05
+ jne SHORT G_M49662_IG18
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M49662_IG04: ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rdx, rbx
- ; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[rdx] +[rax]
- ; gcr arg pop 0
- ;; size=18 bbWeight=0.19 PerfScore 0.29
-G_M49662_IG05: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+G_M49662_IG04: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
test rax, rax
jne G_M49662_IG19
;; size=9 bbWeight=1 PerfScore 1.25
-G_M49662_IG06: ; bbWeight=0.78, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M49662_IG05: ; bbWeight=0.78, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rdx, rbx
; gcrRegs +[rdx]
test rdx, rdx
- je SHORT G_M49662_IG08
+ je SHORT G_M49662_IG07
;; size=8 bbWeight=0.78 PerfScore 1.17
-G_M49662_IG07: ; bbWeight=0.39, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
+G_M49662_IG06: ; bbWeight=0.39, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class>
cmp qword ptr [rdx], rcx
je SHORT G_M49662_IG19
;; size=15 bbWeight=0.39 PerfScore 1.66
-G_M49662_IG08: ; bbWeight=0.78, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M49662_IG07: ; bbWeight=0.78, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
mov rax, rbx
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M49662_IG12
+ je SHORT G_M49662_IG10
;; size=8 bbWeight=0.78 PerfScore 1.17
-G_M49662_IG09: ; bbWeight=0.39, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+G_M49662_IG08: ; bbWeight=0.39, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; System.Linq.Enumerable+RangeIterator
cmp qword ptr [rax], rdx
- je SHORT G_M49662_IG11
+ jne SHORT G_M49662_IG14
;; size=15 bbWeight=0.39 PerfScore 1.66
-G_M49662_IG10: ; bbWeight=0.16, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M49662_IG09: ; bbWeight=0.29, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=2 bbWeight=0.29 PerfScore 0.07
+G_M49662_IG10: ; bbWeight=0.78, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
+ test rax, rax
+ jne SHORT G_M49662_IG19
+ ;; size=5 bbWeight=0.78 PerfScore 0.98
+G_M49662_IG11: ; bbWeight=0.71, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ mov r8, rbx
+ ; gcrRegs +[r8]
+ test r8, r8
+ je SHORT G_M49662_IG16
+ ;; size=8 bbWeight=0.71 PerfScore 1.06
+G_M49662_IG12: ; bbWeight=0.35, gcrefRegs=0108 {rbx r8}, byrefRegs=0000 {}, byref, isz
+ mov rax, 0xD1FFAB1E ; System.Linq.Enumerable+RangeIterator
+ cmp qword ptr [r8], rax
+ je SHORT G_M49662_IG15
+ ;; size=15 bbWeight=0.35 PerfScore 1.51
+G_M49662_IG13: ; bbWeight=0.09, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r8]
+ jmp SHORT G_M49662_IG23
+ ;; size=2 bbWeight=0.09 PerfScore 0.17
+G_M49662_IG14: ; bbWeight=0.11, 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
- jmp SHORT G_M49662_IG12
- ;; size=20 bbWeight=0.16 PerfScore 0.57
-G_M49662_IG11: ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M49662_IG10
+ ;; size=20 bbWeight=0.11 PerfScore 0.37
+G_M49662_IG15: ; bbWeight=0.27, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=2 bbWeight=0.23 PerfScore 0.06
-G_M49662_IG12: ; bbWeight=0.78, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
- test rax, rax
- jne SHORT G_M49662_IG19
- ;; size=5 bbWeight=0.78 PerfScore 0.98
-G_M49662_IG13: ; bbWeight=0.71, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov rax, rbx
- ; gcrRegs +[rax]
- test rax, rax
- je SHORT G_M49662_IG16
- ;; size=8 bbWeight=0.71 PerfScore 1.06
-G_M49662_IG14: ; bbWeight=0.35, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
- mov rdx, 0xD1FFAB1E ; System.Linq.Enumerable+RangeIterator
- cmp qword ptr [rax], rdx
- jne SHORT G_M49662_IG21
- ;; size=15 bbWeight=0.35 PerfScore 1.51
-G_M49662_IG15: ; bbWeight=0.24, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=2 bbWeight=0.24 PerfScore 0.06
-G_M49662_IG16: ; bbWeight=0.71, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref, isz
- test rax, rax
+ xor r8, r8
+ ; gcrRegs +[r8]
+ ;; size=3 bbWeight=0.27 PerfScore 0.07
+G_M49662_IG16: ; bbWeight=0.71, gcrefRegs=0108 {rbx r8}, byrefRegs=0000 {}, byref, isz
+ test r8, r8
jne SHORT G_M49662_IG19
;; size=5 bbWeight=0.71 PerfScore 0.89
-G_M49662_IG17: ; bbWeight=0.44, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+G_M49662_IG17: ; bbWeight=0.44, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r8]
+ jmp SHORT G_M49662_IG21
+ ;; size=2 bbWeight=0.44 PerfScore 0.87
+G_M49662_IG18: ; bbWeight=0.14, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[rdx] +[rax]
+ ; gcr arg pop 0
+ jmp G_M49662_IG04
+ ;; size=23 bbWeight=0.14 PerfScore 0.47
+G_M49662_IG19: ; bbWeight=0.56, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rbx]
+ mov eax, 1
+ ;; size=5 bbWeight=0.56 PerfScore 0.14
+G_M49662_IG20: ; bbWeight=0.56, epilog, nogc, extend
+ add rsp, 32
+ pop rbx
+ ret
+ ;; size=6 bbWeight=0.56 PerfScore 0.98
+G_M49662_IG21: ; bbWeight=0.44, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx]
mov rcx, rbx
; gcrRegs +[rcx]
call [Xunit.Internal.ArgumentFormatter:GetSetElementType(System.Object):System.Type]
@@ -123,20 +139,12 @@ G_M49662_IG17: ; bbWeight=0.44, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs -[rax]
movzx rax, al
;; size=18 bbWeight=0.44 PerfScore 2.08
-G_M49662_IG18: ; bbWeight=0.44, epilog, nogc, extend
+G_M49662_IG22: ; bbWeight=0.44, epilog, nogc, extend
add rsp, 32
pop rbx
ret
;; size=6 bbWeight=0.44 PerfScore 0.77
-G_M49662_IG19: ; bbWeight=0.56, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov eax, 1
- ;; size=5 bbWeight=0.56 PerfScore 0.14
-G_M49662_IG20: ; bbWeight=0.56, epilog, nogc, extend
- add rsp, 32
- pop rbx
- ret
- ;; size=6 bbWeight=0.56 PerfScore 0.98
-G_M49662_IG21: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M49662_IG23: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx]
mov rdx, rbx
; gcrRegs +[rdx]
@@ -144,10 +152,12 @@ G_M49662_IG21: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=000
call CORINFO_HELP_ISINSTANCEOFINTERFACE
; gcrRegs -[rdx] +[rax]
; gcr arg pop 0
+ mov r8, rax
+ ; gcrRegs +[r8]
jmp SHORT G_M49662_IG16
- ;; size=20 bbWeight=0.12 PerfScore 0.41
+ ;; size=23 bbWeight=0.09 PerfScore 0.32
-; Total bytes of code 216, prolog size 5, PerfScore 21.84, instruction count 58, allocated bytes for code 216 (MethodHash=8c233e01) for method Xunit.Internal.ArgumentFormatter:SafeToMultiEnumerate(System.Collections.IEnumerable):ubyte (Tier1)
+; Total bytes of code 229, prolog size 5, PerfScore 22.79, instruction count 62, allocated bytes for code 229 (MethodHash=8c233e01) for method Xunit.Internal.ArgumentFormatter:SafeToMultiEnumerate(System.Collections.IEnumerable):ubyte (Tier1)
; ============================================================
Unwind Info:
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| benchmarks.run_pgo.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| benchmarks.run_tiered.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| coreclr_tests.run.windows.x64.checked.mch |
2 |
2 |
0 |
0 |
-64 |
+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 |
31 |
3 |
24 |
4 |
-18 |
+281 |
| 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 |
|
33 |
5 |
24 |
4 |
-82 |
+281 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.windows.x64.checked.mch |
27,858 |
4 |
27,854 |
0 (0.00%) |
228 (0.81%) |
| benchmarks.run_pgo.windows.x64.checked.mch |
101,594 |
49,794 |
51,800 |
0 (0.00%) |
124 (0.12%) |
| benchmarks.run_tiered.windows.x64.checked.mch |
54,314 |
36,847 |
17,467 |
0 (0.00%) |
71 (0.13%) |
| coreclr_tests.run.windows.x64.checked.mch |
573,553 |
340,983 |
232,570 |
0 (0.00%) |
436 (0.08%) |
| libraries.crossgen2.windows.x64.checked.mch |
243,425 |
15 |
243,410 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.windows.x64.checked.mch |
306,443 |
6 |
306,437 |
0 (0.00%) |
2,055 (0.67%) |
| libraries_tests.run.windows.x64.Release.mch |
672,173 |
479,208 |
192,965 |
0 (0.00%) |
1,114 (0.17%) |
| librariestestsnotieredcompilation.run.windows.x64.Release.mch |
318,333 |
21,885 |
296,448 |
0 (0.00%) |
2,178 (0.68%) |
| realworld.run.windows.x64.checked.mch |
36,494 |
3 |
36,491 |
0 (0.00%) |
396 (1.07%) |
| smoke_tests.nativeaot.windows.x64.checked.mch |
32,409 |
11 |
32,398 |
0 (0.00%) |
3 (0.01%) |
|
2,366,596 |
928,756 |
1,437,840 |
0 (0.00%) |
6,605 (0.28%) |
jit-analyze output
coreclr_tests.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 393237185 (overridden on cmd)
Total bytes of diff: 393237121 (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):
-33 : 565779.dasm (-2.58 % of base)
-31 : 569790.dasm (-2.43 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-33 (-2.58 % of base) : 565779.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-31 (-2.43 % of base) : 569790.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
Top method improvements (percentages):
-33 (-2.58 % of base) : 565779.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-31 (-2.43 % of base) : 569790.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
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 278261290 (overridden on cmd)
Total bytes of diff: 278261553 (overridden on cmd)
Total bytes of delta: 263 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
29 : 589153.dasm (3.91 % of base)
28 : 209757.dasm (2.54 % of base)
20 : 162312.dasm (5.68 % of base)
20 : 200369.dasm (2.59 % of base)
19 : 584653.dasm (1.05 % of base)
18 : 209951.dasm (0.61 % of base)
18 : 612912.dasm (2.25 % of base)
16 : 377952.dasm (0.73 % of base)
14 : 209989.dasm (0.54 % of base)
13 : 596563.dasm (6.02 % of base)
12 : 431875.dasm (1.57 % of base)
11 : 313253.dasm (0.79 % of base)
9 : 42832.dasm (1.83 % of base)
9 : 83499.dasm (1.84 % of base)
7 : 290187.dasm (0.24 % of base)
7 : 57546.dasm (0.37 % of base)
7 : 355336.dasm (0.36 % of base)
6 : 53745.dasm (3.28 % of base)
5 : 174998.dasm (0.32 % of base)
3 : 175764.dasm (0.64 % of base)
Top file improvements (bytes):
-11 : 498150.dasm (-1.19 % of base)
-6 : 462719.dasm (-0.33 % of base)
-1 : 372398.dasm (-0.18 % of base)
27 total files with Code Size differences (3 improved, 24 regressed), 4 unchanged.
Top method regressions (bytes):
29 (3.91 % of base) : 589153.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
28 (2.54 % of base) : 209757.dasm - Xunit.Sdk.CollectionTracker:CheckIfDictionariesAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer):System.Nullable`1[ubyte] (Tier1)
20 (5.68 % of base) : 162312.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuard:Visit(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
20 (2.59 % of base) : 200369.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
19 (1.05 % of base) : 584653.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
18 (2.25 % of base) : 612912.dasm - Microsoft.CodeAnalysis.CSharp.NullabilityRewriter:GetUpdatedSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.BoundNode,System.__Canon):System.__Canon:this (Tier1)
18 (0.61 % of base) : 209951.dasm - System.Collections.Tests.IEnumerable_NonGeneric_Tests:IEnumerable_NonGeneric_Enumerator_Current_ReturnsSameObjectsOnDifferentEnumerators(int):this (Tier1)
16 (0.73 % of base) : 377952.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
14 (0.54 % of base) : 209989.dasm - System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo:InitSerialize(System.Object,System.Runtime.Serialization.ISurrogateSelector,System.Runtime.Serialization.StreamingContext,System.Runtime.Serialization.Formatters.Binary.SerObjectInfoInit,System.Runtime.Serialization.IFormatterConverter,System.Runtime.Serialization.Formatters.Binary.ObjectWriter,System.Runtime.Serialization.SerializationBinder):this (Tier1)
13 (6.02 % of base) : 596563.dasm - Xunit.Internal.ArgumentFormatter:SafeToMultiEnumerate(System.Collections.IEnumerable):ubyte (Tier1)
12 (1.57 % of base) : 431875.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
11 (0.79 % of base) : 313253.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
9 (1.83 % of base) : 42832.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
9 (1.84 % of base) : 83499.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
7 (0.37 % of base) : 57546.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:LineBreaksAfter(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):int:this (Tier1)
7 (0.36 % of base) : 355336.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
7 (0.24 % of base) : 290187.dasm - Xunit.Sdk.TestInvoker`1+<<RunAsync>b__47_0>d[System.__Canon]:MoveNext():this (Tier1)
6 (3.28 % of base) : 53745.dasm - Microsoft.CodeAnalysis.CSharp.BoundNode:get_HasAnyErrors():ubyte:this (Tier1)
5 (0.32 % of base) : 174998.dasm - Xunit.Sdk.AssertEqualityComparer`1[System.__Canon]:Equals(System.__Canon,Xunit.Sdk.CollectionTracker,System.__Canon,Xunit.Sdk.CollectionTracker,byref):ubyte:this (Tier1)
3 (0.28 % of base) : 607908.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsInScopeOfAssociatedSyntaxTree(Microsoft.CodeAnalysis.CSharp.Symbol):ubyte:this (Tier1)
Top method improvements (bytes):
-11 (-1.19 % of base) : 498150.dasm - System.Linq.Expressions.Compiler.VariableBinder:MergeScopes(System.Linq.Expressions.Expression):System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]:this (Tier1)
-6 (-0.33 % of base) : 462719.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
-1 (-0.18 % of base) : 372398.dasm - System.Threading.Tasks.Task:ContinueWithCore(System.Threading.Tasks.Task,System.Threading.Tasks.TaskScheduler,System.Threading.CancellationToken,int):this (Tier1)
Top method regressions (percentages):
13 (6.02 % of base) : 596563.dasm - Xunit.Internal.ArgumentFormatter:SafeToMultiEnumerate(System.Collections.IEnumerable):ubyte (Tier1)
20 (5.68 % of base) : 162312.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuard:Visit(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
29 (3.91 % of base) : 589153.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
6 (3.28 % of base) : 53745.dasm - Microsoft.CodeAnalysis.CSharp.BoundNode:get_HasAnyErrors():ubyte:this (Tier1)
20 (2.59 % of base) : 200369.dasm - Xunit.Sdk.CollectionTracker:CheckIfArraysAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer,ubyte,byref):System.Nullable`1[ubyte] (Tier1)
28 (2.54 % of base) : 209757.dasm - Xunit.Sdk.CollectionTracker:CheckIfDictionariesAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer):System.Nullable`1[ubyte] (Tier1)
18 (2.25 % of base) : 612912.dasm - Microsoft.CodeAnalysis.CSharp.NullabilityRewriter:GetUpdatedSymbol[System.__Canon](Microsoft.CodeAnalysis.CSharp.BoundNode,System.__Canon):System.__Canon:this (Tier1)
9 (1.84 % of base) : 83499.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
9 (1.83 % of base) : 42832.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
3 (1.68 % of base) : 257394.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsNonStringTracker(System.Object):Xunit.Sdk.CollectionTracker (Tier1)
12 (1.57 % of base) : 431875.dasm - OLEDB.Test.ModuleCore.CTestModule+<TestCases>d__56:MoveNext():ubyte:this (Tier1)
2 (1.15 % of base) : 229660.dasm - System.Configuration.ConfigurationValues:CreateConfigValue(System.Object,int,System.Configuration.PropertySourceInfo):System.Configuration.ConfigurationValue:this (Tier1)
19 (1.05 % of base) : 584653.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
11 (0.79 % of base) : 313253.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
16 (0.73 % of base) : 377952.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
3 (0.64 % of base) : 175764.dasm - System.Convert:ToString(System.Object,System.IFormatProvider):System.String (Tier1)
18 (0.61 % of base) : 209951.dasm - System.Collections.Tests.IEnumerable_NonGeneric_Tests:IEnumerable_NonGeneric_Enumerator_Current_ReturnsSameObjectsOnDifferentEnumerators(int):this (Tier1)
14 (0.54 % of base) : 209989.dasm - System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo:InitSerialize(System.Object,System.Runtime.Serialization.ISurrogateSelector,System.Runtime.Serialization.StreamingContext,System.Runtime.Serialization.Formatters.Binary.SerObjectInfoInit,System.Runtime.Serialization.IFormatterConverter,System.Runtime.Serialization.Formatters.Binary.ObjectWriter,System.Runtime.Serialization.SerializationBinder):this (Tier1)
7 (0.37 % of base) : 57546.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:LineBreaksAfter(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):int:this (Tier1)
7 (0.36 % of base) : 355336.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
Top method improvements (percentages):
-11 (-1.19 % of base) : 498150.dasm - System.Linq.Expressions.Compiler.VariableBinder:MergeScopes(System.Linq.Expressions.Expression):System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]:this (Tier1)
-6 (-0.33 % of base) : 462719.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
-1 (-0.18 % of base) : 372398.dasm - System.Threading.Tasks.Task:ContinueWithCore(System.Threading.Tasks.Task,System.Threading.Tasks.TaskScheduler,System.Threading.CancellationToken,int):this (Tier1)
27 total methods with Code Size differences (3 improved, 24 regressed).