Diffs are based on 2,231,354 contexts (827,812 MinOpts, 1,403,542 FullOpts).
MISSED contexts: base: 74,588 (3.23%), diff: 80,924 (3.50%)
Overall (-6 bytes)
Collection
Base size (bytes)
Diff size (bytes)
coreclr_tests.run.linux.arm.checked.mch
321,168,304
-66
libraries_tests.run.linux.arm.Release.mch
241,530,954
+60
FullOpts (-6 bytes)
Collection
Base size (bytes)
Diff size (bytes)
coreclr_tests.run.linux.arm.checked.mch
108,438,170
-66
libraries_tests.run.linux.arm.Release.mch
119,528,010
+60
Example diffs
coreclr_tests.run.linux.arm.checked.mch
-38 (-3.19%) : 312368.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
@@ -15,83 +15,82 @@
; V03 loc1 [V03,T04] ( 7, 4.90) ref -> r7 class-hnd exact <Internal.TypeSystem.InstantiatedType>
; V04 OutArgs [V04 ] ( 1, 1 ) struct ( 4) [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,T38] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-; V07 tmp3 [V07,T37] ( 2, 0.85) ref -> r0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V08 tmp4 [V08,T19] ( 3, 1.70) int -> r2 "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T51] ( 2, 0 ) ref -> r4 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2 [V06,T37] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T36] ( 2, 0.85) ref -> r0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V08 tmp4 [V08,T18] ( 3, 1.70) int -> r2 "fgMakeTemp is creating a new local variable"
+; V09 tmp5 [V09,T50] ( 2, 0 ) ref -> r4 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
; V10 tmp6 [V10,T02] ( 7, 5.77) ref -> r8 class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
; V11 tmp7 [V11,T03] ( 14, 5.15) ref -> r6 "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.86) ref -> r9 "guarded devirt return temp"
+; V13 tmp9 [V13,T09] ( 8, 2.86) ref -> r9 "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,T17] ( 4, 1.72) ref -> r5 "guarded devirt return temp"
+; V15 tmp11 [V15,T16] ( 4, 1.72) ref -> r5 "guarded devirt return temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V17 tmp13 [V17,T15] ( 8, 2.14) ref -> r7 "guarded devirt return temp"
+; V17 tmp13 [V17,T14] ( 8, 2.14) ref -> r7 "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 -> r0
-; V21 tmp17 [V21,T16] ( 3, 1.85) ref -> r10 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V20 tmp16 [V20,T28] ( 3, 1.15) int -> r0
+; V21 tmp17 [V21,T15] ( 3, 1.85) ref -> r10 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V22 tmp18 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.InstantiatedType>
-; V23 tmp19 [V23,T35] ( 3, 0.92) ref -> r3 "guarded devirt return temp"
+; V23 tmp19 [V23,T34] ( 3, 0.92) ref -> r3 "guarded devirt return temp"
;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.InstantiatedType>
-; V25 tmp21 [V25,T40] ( 3, 0.44) ref -> r10 "guarded devirt return temp"
-; V26 tmp22 [V26,T23] ( 5, 1.33) ref -> r0 single-def "guarded devirt arg temp"
+; V25 tmp21 [V25,T39] ( 3, 0.44) ref -> r10 "guarded devirt return temp"
+; V26 tmp22 [V26,T22] ( 5, 1.33) ref -> r0 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.EcmaType>
-; V28 tmp24 [V28,T41] ( 3, 0.44) ref -> r10 "guarded devirt return temp"
-; V29 tmp25 [V29,T24] ( 5, 1.33) ref -> r0 single-def "guarded devirt arg temp"
+; V28 tmp24 [V28,T40] ( 3, 0.44) ref -> r10 "guarded devirt return temp"
+; V29 tmp25 [V29,T23] ( 5, 1.33) ref -> r0 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,T42] ( 3, 0.44) ref -> r3 "guarded devirt return temp"
-; V32 tmp28 [V32,T25] ( 5, 1.33) ref -> r0 single-def "guarded devirt arg temp"
+; V31 tmp27 [V31,T41] ( 3, 0.44) ref -> r3 "guarded devirt return temp"
+; V32 tmp28 [V32,T24] ( 5, 1.33) ref -> r0 single-def "guarded devirt arg temp"
;* V33 tmp29 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V34 tmp30 [V34,T43] ( 3, 0.44) ref -> r3 "guarded devirt return temp"
-; V35 tmp31 [V35,T26] ( 5, 1.33) ref -> r0 single-def "guarded devirt arg temp"
+; V34 tmp30 [V34,T42] ( 3, 0.44) ref -> r3 "guarded devirt return temp"
+; V35 tmp31 [V35,T25] ( 5, 1.33) ref -> r0 single-def "guarded devirt arg temp"
;* V36 tmp32 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V37 tmp33 [V37,T09] ( 5, 2.90) ref -> r0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V38 tmp34 [V38,T34] ( 3, 0.97) ref -> r5 "guarded devirt return temp"
+; V37 tmp33 [V37,T08] ( 5, 2.90) ref -> r0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+; V38 tmp34 [V38,T33] ( 3, 0.97) ref -> r5 "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,T06] ( 4, 3.74) ref -> r0 class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
; V42 tmp38 [V42,T07] ( 4, 3.74) ref -> r0 class-hnd "spilling QMark2" <<unknown class>>
;* V43 tmp39 [V43 ] ( 0, 0 ) struct (12) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V44 tmp40 [V44,T05] ( 4, 4.47) ref -> r5 class-hnd exact single-def "impAppendStmt" <<unknown class>>
-; V45 tmp41 [V45,T14] ( 2, 2.30) int -> r8 "impAppendStmt"
-; V46 tmp42 [V46,T27] ( 4, 1.15) ref -> r0 "guarded devirt return temp"
+; V45 tmp41 [V45,T13] ( 2, 2.30) int -> r8 "impAppendStmt"
+; V46 tmp42 [V46,T26] ( 4, 1.15) ref -> r0 "guarded devirt return temp"
;* V47 tmp43 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V48 tmp44 [V48,T49] ( 2, 0.06) byref -> r8 single-def "impAppendStmt"
-; V49 tmp45 [V49,T50] ( 3, 0.03) int -> r0 "guarded devirt return temp"
-; V50 tmp46 [V50,T48] ( 5, 0.09) ref -> r0 single-def "guarded devirt arg temp"
+; V48 tmp44 [V48,T48] ( 2, 0.06) byref -> r8 single-def "impAppendStmt"
+; V49 tmp45 [V49,T49] ( 3, 0.03) int -> r0 "guarded devirt return temp"
+; V50 tmp46 [V50,T47] ( 5, 0.09) ref -> r0 single-def "guarded devirt arg temp"
;* V51 tmp47 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
;* V52 tmp48 [V52 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V53 tmp49 [V53,T28] ( 3, 1.15) ref -> r0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V53 tmp49 [V53,T27] ( 3, 1.15) ref -> r0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
;* V54 tmp50 [V54 ] ( 0, 0 ) struct (12) zero-ref "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V55 tmp51 [V55 ] ( 2, 0.64) ref -> [sp+0x0C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V56 tmp52 [V56,T20] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V57 tmp53 [V57,T13] ( 4, 2.76) ref -> r0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V58 tmp54 [V58,T36] ( 3, 0.85) int -> r0
-; V59 tmp55 [V59,T22] ( 3, 1.37) ref -> r8 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V56 tmp52 [V56,T19] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V57 tmp53 [V57,T12] ( 3, 2.55) ref -> r0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V58 tmp54 [V58,T35] ( 3, 0.85) int -> r0
+; V59 tmp55 [V59,T21] ( 3, 1.37) ref -> r8 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V60 tmp56 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.InstantiatedType>
-; V61 tmp57 [V61,T39] ( 3, 0.68) ref -> r3 "guarded devirt return temp"
+; V61 tmp57 [V61,T38] ( 3, 0.68) ref -> r0 "guarded devirt return temp"
;* V62 tmp58 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.InstantiatedType>
-; V63 tmp59 [V63,T44] ( 3, 0.33) ref -> r8 "guarded devirt return temp"
-; V64 tmp60 [V64,T30] ( 5, 0.98) ref -> r0 single-def "guarded devirt arg temp"
+; V63 tmp59 [V63,T43] ( 3, 0.33) ref -> r8 "guarded devirt return temp"
+; V64 tmp60 [V64,T29] ( 5, 0.98) ref -> r0 single-def "guarded devirt arg temp"
;* V65 tmp61 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V66 tmp62 [V66,T45] ( 3, 0.33) ref -> r8 "guarded devirt return temp"
-; V67 tmp63 [V67,T31] ( 5, 0.98) ref -> r0 single-def "guarded devirt arg temp"
+; V66 tmp62 [V66,T44] ( 3, 0.33) ref -> r8 "guarded devirt return temp"
+; V67 tmp63 [V67,T30] ( 5, 0.98) ref -> r0 single-def "guarded devirt arg temp"
;* V68 tmp64 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V69 tmp65 [V69,T46] ( 3, 0.33) ref -> r3 "guarded devirt return temp"
-; V70 tmp66 [V70,T32] ( 5, 0.98) ref -> r0 single-def "guarded devirt arg temp"
+; V69 tmp65 [V69,T45] ( 3, 0.33) ref -> r0 "guarded devirt return temp"
+; V70 tmp66 [V70,T31] ( 5, 0.98) ref -> r0 single-def "guarded devirt arg temp"
;* V71 tmp67 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V72 tmp68 [V72,T47] ( 3, 0.33) ref -> r3 "guarded devirt return temp"
-; V73 tmp69 [V73,T33] ( 5, 0.98) ref -> r0 single-def "guarded devirt arg temp"
+; V72 tmp68 [V72,T46] ( 3, 0.33) ref -> r0 "guarded devirt return temp"
+; V73 tmp69 [V73,T32] ( 5, 0.98) ref -> r0 single-def "guarded devirt arg temp"
;* V74 tmp70 [V74 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V75 tmp71 [V75,T12] ( 8, 2.81) ref -> r6 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
-; V76 tmp72 [V76,T11] ( 8, 2.86) ref -> r7 single-def "field V43._instantiatedType (fldOffset=0x4)" P-INDEP
-; V77 tmp73 [V77,T21] ( 3, 1.66) int -> r4 single-def "field V43._hashcode (fldOffset=0x8)" P-INDEP
+; V75 tmp71 [V75,T11] ( 8, 2.81) ref -> r6 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V76 tmp72 [V76,T10] ( 8, 2.86) ref -> r7 single-def "field V43._instantiatedType (fldOffset=0x4)" P-INDEP
+; V77 tmp73 [V77,T20] ( 3, 1.66) int -> r4 single-def "field V43._hashcode (fldOffset=0x8)" P-INDEP
;* V78 tmp74 [V78 ] ( 0, 0 ) ref -> zero-ref single-def "field V54._typicalMethodDef (fldOffset=0x0)" P-INDEP
;* V79 tmp75 [V79 ] ( 0, 0 ) ref -> zero-ref single-def "field V54._instantiatedType (fldOffset=0x4)" P-INDEP
;* V80 tmp76 [V80 ] ( 0, 0 ) int -> zero-ref single-def "field V54._hashcode (fldOffset=0x8)" P-INDEP
-; V81 cse0 [V81,T18] ( 3, 1.72) ref -> r0 "CSE - moderate"
-; V82 rat0 [V82,T08] ( 6, 3.40) ref -> r3 class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
+; V81 cse0 [V81,T17] ( 3, 1.72) ref -> r0 "CSE - moderate"
;
; Lcl frame size = 20
@@ -165,7 +164,7 @@ G_M10698_IG09: ; bbWeight=0.57, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- bne G_M10698_IG74
+ bne G_M10698_IG81
ldr r9, [r6+0x08]
; gcrRegs +[r9]
;; size=24 bbWeight=0.57 PerfScore 4.02
@@ -191,13 +190,13 @@ G_M10698_IG13: ; bbWeight=0.22, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefReg
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r3, r2
- bne G_M10698_IG76
+ bne G_M10698_IG83
ldr r0, [r0+0x38]
ldr r3, [r0]
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r3, r2
- bne G_M10698_IG75
+ bne G_M10698_IG82
ldr r10, [r0+0x04]
; gcrRegs +[r10]
;; size=42 bbWeight=0.22 PerfScore 2.88
@@ -231,13 +230,13 @@ G_M10698_IG17: ; bbWeight=0.22, gcrefRegs=07D0 {r4 r6 r7 r8 r9 r10}, byre
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r3, r2
- bne G_M10698_IG78
+ bne G_M10698_IG85
ldr r0, [r0+0x38]
ldr r3, [r0]
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r3, r2
- bne G_M10698_IG77
+ bne G_M10698_IG84
ldr r3, [r0+0x04]
; gcrRegs +[r3]
;; size=40 bbWeight=0.22 PerfScore 2.88
@@ -300,7 +299,7 @@ G_M10698_IG25: ; bbWeight=0.48, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r3, r2
- bne G_M10698_IG79
+ bne G_M10698_IG86
ldr r5, [r0+0x04]
; gcrRegs +[r5]
b SHORT G_M10698_IG27
@@ -319,7 +318,7 @@ G_M10698_IG27: ; bbWeight=0.57, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r3, r2
- bne G_M10698_IG53
+ bne G_M10698_IG58
;; size=22 bbWeight=0.57 PerfScore 4.02
G_M10698_IG28: ; bbWeight=0.57, gcrefRegs=00E1 {r0 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
cmp r0, 0
@@ -342,7 +341,7 @@ G_M10698_IG30: ; bbWeight=0.57, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r3, r2
- bne G_M10698_IG47
+ bne G_M10698_IG49
;; size=30 bbWeight=0.57 PerfScore 5.75
G_M10698_IG31: ; bbWeight=0.57, gcrefRegs=00E1 {r0 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
cmp r0, 0
@@ -362,7 +361,7 @@ G_M10698_IG33: ; bbWeight=0.57, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
ldr r5, [r5+0x28]
ldr r0, [r7+0x40]
cmp r0, 0
- beq SHORT G_M10698_IG45
+ beq SHORT G_M10698_IG47
;; size=20 bbWeight=0.57 PerfScore 4.60
G_M10698_IG34: ; bbWeight=0.57, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
ldr r8, [r7+0x40]
@@ -370,12 +369,12 @@ G_M10698_IG34: ; bbWeight=0.57, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- bne G_M10698_IG82
+ bne G_M10698_IG72
ldr r0, [r6+0x10]
; gcrRegs +[r0]
cmp r0, 0
- beq G_M10698_IG80
- ;; size=28 bbWeight=0.57 PerfScore 5.17
+ beq SHORT G_M10698_IG46
+ ;; size=26 bbWeight=0.57 PerfScore 5.17
G_M10698_IG35: ; bbWeight=0.57, gcrefRegs=00E1 {r0 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -430,17 +429,17 @@ G_M10698_IG38: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=007
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- bne G_M10698_IG86
+ bne G_M10698_IG76
ldr r7, [r6+0x08]
; gcrRegs +[r7]
;; size=32 bbWeight=0.43 PerfScore 4.68
G_M10698_IG39: ; bbWeight=0.43, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4]
cmp r7, 0
- beq SHORT G_M10698_IG54
+ beq SHORT G_M10698_IG50
;; size=4 bbWeight=0.43 PerfScore 0.85
G_M10698_IG40: ; bbWeight=0.34, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M10698_IG59
+ b SHORT G_M10698_IG55
;; size=2 bbWeight=0.34 PerfScore 0.34
G_M10698_IG41: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r5-r7]
@@ -457,20 +456,6 @@ G_M10698_IG42: ; bbWeight=0.43, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
ldr r3, [r3+0x0C]
blx r3 // <unknown method>
ldrsb r1, [r0]
- mov r3, r0
- ; gcrRegs +[r3]
- cmp r3, 0
- beq SHORT G_M10698_IG49
- ;; size=20 bbWeight=0.43 PerfScore 3.83
...
-28 (-2.61%) : 309676.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
@@ -15,71 +15,70 @@
; V03 loc1 [V03,T04] ( 7, 4.90) ref -> r7 class-hnd exact <Internal.TypeSystem.InstantiatedType>
; V04 OutArgs [V04 ] ( 1, 1 ) struct ( 4) [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,T33] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-; V07 tmp3 [V07,T32] ( 2, 0.85) ref -> r0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V08 tmp4 [V08,T21] ( 3, 1.69) int -> r2 "fgMakeTemp is creating a new local variable"
-; V09 tmp5 [V09,T43] ( 2, 0 ) ref -> r4 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V06 tmp2 [V06,T32] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T31] ( 2, 0.85) ref -> r0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V08 tmp4 [V08,T20] ( 3, 1.69) int -> r2 "fgMakeTemp is creating a new local variable"
+; V09 tmp5 [V09,T42] ( 2, 0 ) ref -> r4 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
; V10 tmp6 [V10,T02] ( 7, 5.54) ref -> r8 class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
; V11 tmp7 [V11,T03] ( 14, 5.15) ref -> r6 "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.72) ref -> r9 "guarded devirt return temp"
+; V13 tmp9 [V13,T10] ( 8, 2.72) ref -> r9 "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.73) ref -> r5 "guarded devirt return temp"
+; V15 tmp11 [V15,T18] ( 4, 1.73) ref -> r5 "guarded devirt return temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V17 tmp13 [V17,T15] ( 8, 2.02) ref -> r7 "guarded devirt return temp"
+; V17 tmp13 [V17,T14] ( 8, 2.02) ref -> r7 "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 -> r0
-; V21 tmp17 [V21,T17] ( 3, 1.78) ref -> r10 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V20 tmp16 [V20,T28] ( 3, 1.15) int -> r0
+; V21 tmp17 [V21,T16] ( 3, 1.78) ref -> r10 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,T30] ( 3, 0.89) ref -> r3 "guarded devirt return temp"
+; V23 tmp19 [V23,T29] ( 3, 0.89) ref -> r3 "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.59) ref -> r10 "guarded devirt return temp"
-; V26 tmp22 [V26,T18] ( 5, 1.76) ref -> r0 single-def "guarded devirt arg temp"
+; V25 tmp21 [V25,T36] ( 3, 0.59) ref -> r10 "guarded devirt return temp"
+; V26 tmp22 [V26,T17] ( 5, 1.76) ref -> r0 single-def "guarded devirt arg temp"
;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V28 tmp24 [V28,T36] ( 3, 0.64) ref -> r3 "guarded devirt return temp"
-; V29 tmp25 [V29,T16] ( 5, 1.92) ref -> r0 single-def "guarded devirt arg temp"
+; V28 tmp24 [V28,T35] ( 3, 0.64) ref -> r3 "guarded devirt return temp"
+; V29 tmp25 [V29,T15] ( 5, 1.92) ref -> r0 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,T13] ( 5, 2.45) ref -> r0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V32 tmp28 [V32,T34] ( 3, 0.82) ref -> r5 "guarded devirt return temp"
+; V31 tmp27 [V31,T12] ( 5, 2.45) ref -> r0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+; V32 tmp28 [V32,T33] ( 3, 0.82) ref -> r5 "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, 3.75) ref -> r0 class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
; V36 tmp32 [V36,T07] ( 4, 3.75) ref -> r0 class-hnd "spilling QMark2" <<unknown class>>
;* V37 tmp33 [V37 ] ( 0, 0 ) struct (12) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V38 tmp34 [V38,T05] ( 4, 4.49) ref -> r5 class-hnd exact single-def "impAppendStmt" <<unknown class>>
-; V39 tmp35 [V39,T14] ( 2, 2.31) int -> r8 "impAppendStmt"
-; V40 tmp36 [V40,T27] ( 4, 1.15) ref -> r0 "guarded devirt return temp"
+; V39 tmp35 [V39,T13] ( 2, 2.31) int -> r8 "impAppendStmt"
+; V40 tmp36 [V40,T26] ( 4, 1.15) ref -> r0 "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.06) byref -> r8 single-def "impAppendStmt"
-; V43 tmp39 [V43,T42] ( 3, 0.03) int -> r0 "guarded devirt return temp"
-; V44 tmp40 [V44,T40] ( 5, 0.08) ref -> r0 single-def "guarded devirt arg temp"
+; V42 tmp38 [V42,T40] ( 2, 0.06) byref -> r8 single-def "impAppendStmt"
+; V43 tmp39 [V43,T41] ( 3, 0.03) int -> r0 "guarded devirt return temp"
+; V44 tmp40 [V44,T39] ( 5, 0.08) ref -> r0 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 -> r0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V47 tmp43 [V47,T27] ( 3, 1.15) ref -> r0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
;* V48 tmp44 [V48 ] ( 0, 0 ) struct (12) zero-ref "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V49 tmp45 [V49 ] ( 2, 0.64) ref -> [sp+0x0C] 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,T26] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V51 tmp47 [V51,T11] ( 4, 2.74) ref -> r1 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V52 tmp48 [V52,T31] ( 3, 0.85) int -> r0
-; V53 tmp49 [V53,T24] ( 3, 1.31) ref -> r8 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V50 tmp46 [V50,T25] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V51 tmp47 [V51,T11] ( 3, 2.54) ref -> r0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V52 tmp48 [V52,T30] ( 3, 0.85) int -> r0
+; V53 tmp49 [V53,T23] ( 3, 1.31) ref -> r8 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,T35] ( 3, 0.65) ref -> r3 "guarded devirt return temp"
+; V55 tmp51 [V55,T34] ( 3, 0.65) ref -> r3 "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,T39] ( 3, 0.43) ref -> r8 "guarded devirt return temp"
-; V58 tmp54 [V58,T25] ( 5, 1.30) ref -> r0 single-def "guarded devirt arg temp"
+; V57 tmp53 [V57,T38] ( 3, 0.43) ref -> r8 "guarded devirt return temp"
+; V58 tmp54 [V58,T24] ( 5, 1.30) ref -> r0 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,T38] ( 3, 0.47) ref -> r3 "guarded devirt return temp"
-; V61 tmp57 [V61,T23] ( 5, 1.41) ref -> r0 single-def "guarded devirt arg temp"
+; V60 tmp56 [V60,T37] ( 3, 0.47) ref -> r3 "guarded devirt return temp"
+; V61 tmp57 [V61,T22] ( 5, 1.41) ref -> r0 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,T10] ( 8, 2.82) ref -> r6 single-def "field V37._typicalMethodDef (fldOffset=0x0)" P-INDEP
-; V64 tmp60 [V64,T09] ( 8, 2.86) ref -> r7 single-def "field V37._instantiatedType (fldOffset=0x4)" P-INDEP
-; V65 tmp61 [V65,T22] ( 3, 1.67) int -> r4 single-def "field V37._hashcode (fldOffset=0x8)" P-INDEP
+; V63 tmp59 [V63,T09] ( 8, 2.82) ref -> r6 single-def "field V37._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V64 tmp60 [V64,T08] ( 8, 2.86) ref -> r7 single-def "field V37._instantiatedType (fldOffset=0x4)" P-INDEP
+; V65 tmp61 [V65,T21] ( 3, 1.67) int -> r4 single-def "field V37._hashcode (fldOffset=0x8)" 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=0x4)" P-INDEP
;* V68 tmp64 [V68 ] ( 0, 0 ) int -> zero-ref single-def "field V48._hashcode (fldOffset=0x8)" P-INDEP
-; V69 cse0 [V69,T20] ( 3, 1.73) ref -> r0 "CSE - moderate"
-; V70 rat0 [V70,T08] ( 6, 3.39) ref -> r3 class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
+; V69 cse0 [V69,T19] ( 3, 1.73) ref -> r0 "CSE - moderate"
;
; Lcl frame size = 20
@@ -140,7 +139,7 @@ G_M10698_IG08: ; bbWeight=0.58, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- bne G_M10698_IG47
+ bne G_M10698_IG74
ldr r9, [r6+0x08]
; gcrRegs +[r9]
;; size=24 bbWeight=0.58 PerfScore 4.03
@@ -157,7 +156,7 @@ G_M10698_IG11: ; bbWeight=0.45, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefReg
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- bne G_M10698_IG51
+ bne G_M10698_IG56
;; size=18 bbWeight=0.45 PerfScore 2.23
G_M10698_IG12: ; bbWeight=0.29, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r0, [r8+0x38]
@@ -166,10 +165,10 @@ G_M10698_IG12: ; bbWeight=0.29, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefReg
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r3, r2
- bne G_M10698_IG48
+ bne G_M10698_IG75
ldr r10, [r0+0x04]
; gcrRegs +[r10]
- b SHORT G_M10698_IG49
+ b SHORT G_M10698_IG60
;; size=26 bbWeight=0.29 PerfScore 2.35
G_M10698_IG13: ; bbWeight=0.47, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r6-r10] +[r5]
@@ -210,7 +209,7 @@ G_M10698_IG17: ; bbWeight=0.58, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- bne G_M10698_IG53
+ bne G_M10698_IG61
;; size=28 bbWeight=0.58 PerfScore 5.19
G_M10698_IG18: ; bbWeight=0.41, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x08]
@@ -220,7 +219,7 @@ G_M10698_IG18: ; bbWeight=0.41, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r3, r2
- bne G_M10698_IG81
+ bne G_M10698_IG77
ldr r5, [r0+0x04]
; gcrRegs +[r5]
;; size=22 bbWeight=0.41 PerfScore 3.27
@@ -233,7 +232,7 @@ G_M10698_IG19: ; bbWeight=0.58, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r3, r2
- bne G_M10698_IG41
+ bne G_M10698_IG43
;; size=22 bbWeight=0.58 PerfScore 4.03
G_M10698_IG20: ; bbWeight=0.58, gcrefRegs=00E1 {r0 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
cmp r0, 0
@@ -284,11 +283,11 @@ G_M10698_IG26: ; bbWeight=0.58, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- bne G_M10698_IG73
+ bne G_M10698_IG67
ldr r0, [r6+0x10]
; gcrRegs +[r0]
cmp r0, 0
- beq G_M10698_IG72
+ beq G_M10698_IG66
;; size=28 bbWeight=0.58 PerfScore 5.19
G_M10698_IG27: ; bbWeight=0.58, gcrefRegs=00E1 {r0 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
movw r3, 0xd1ff
@@ -368,7 +367,7 @@ G_M10698_IG34: ; bbWeight=0.42, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
;; size=14 bbWeight=0.42 PerfScore 2.12
G_M10698_IG35: ; bbWeight=0.21, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4]
- b SHORT G_M10698_IG54
+ b SHORT G_M10698_IG44
;; size=2 bbWeight=0.21 PerfScore 0.21
G_M10698_IG36: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r5-r6]
@@ -386,13 +385,13 @@ G_M10698_IG37: ; bbWeight=0.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r3, r2
- bne G_M10698_IG82
+ bne G_M10698_IG78
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // Internal.TypeSystem.Ecma.EcmaType:GetHashCode():int:this
; gcrRegs -[r0]
- b SHORT G_M10698_IG71
+ b SHORT G_M10698_IG65
;; size=36 bbWeight=0.01 PerfScore 0.17
G_M10698_IG38: ; bbWeight=0.14, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r8]
@@ -407,39 +406,26 @@ G_M10698_IG39: ; bbWeight=0.42, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
ldr r3, [r3+0x34]
ldr r3, [r3+0x0C]
blx r3 // <unknown method>
+ ldrsb r1, [r0]
mov r1, r0
; gcrRegs +[r1]
- ldrsb r0, [r1]
+ movw r0, 0xd1ff
; gcrRegs -[r0]
- mov r3, r1
- ; gcrRegs +[r3]
- cmp r3, 0
- beq SHORT G_M10698_IG43
- ;; size=22 bbWeight=0.42 PerfScore 4.24
-G_M10698_IG40: ; bbWeight=0.21, gcrefRegs=003A {r1 r3 r4 r5}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M10698_IG66
- ;; size=2 bbWeight=0.21 PerfScore 0.21
-G_M10698_IG41: ; bbWeight=0.14, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r1 r3-r4] +[r6-r7]
+ movt r0, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[r1] +[r0]
+ cmp r0, 0
+ bne SHORT G_M10698_IG40
movs r0, 0
- b SHORT G_M10698_IG20
- ;; size=4 bbWeight=0.14 PerfScore 0.29
-G_M10698_IG42: ; bbWeight=0.11, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r6-r7] +[r4]
- movs r3, 0
- ;; size=2 bbWeight=0.11 PerfScore 0.11
-G_M10698_IG43: ; bbWeight=0.42, gcrefRegs=0038 {r3 r4 r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r3]
- cmp r3, 0
- bne SHORT G_M10698_IG44
- movs r0, 0
- b SHORT G_M10698_IG45
- ;; size=8 bbWeight=0.42 PerfScore 1.69
-G_M10698_IG44: ; bbWeight=0.42, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
+ ; gcrRegs -[r0]
+ b SHORT G_M10698_IG41
+ ;; size=42 bbWeight=0.42 PerfScore 6.78
...
libraries_tests.run.linux.arm.Release.mch
-6 (-0.39%) : 52734.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:LineBreaksAfter(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):int:this (Tier1)
@@ -25,12 +25,12 @@
; V13 tmp7 [V13,T44] ( 2, 0.21) ref -> r3 single-def "CASTCLASS eval op1"
; V14 tmp8 [V14,T41] ( 3, 0.26) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode>
-; V16 tmp10 [V16,T61] ( 2, 0.01) ref -> r1 single-def "CASTCLASS eval op1"
-; V17 tmp11 [V17,T59] ( 3, 0.01) ref -> r1 class-hnd "spilling QMark2" <<unknown class>>
+; V16 tmp10 [V16,T61] ( 2, 0.01) ref -> r3 single-def "CASTCLASS eval op1"
+; V17 tmp11 [V17,T59] ( 3, 0.01) ref -> r3 class-hnd "spilling QMark2" <<unknown class>>
; V18 tmp12 [V18,T52] ( 2, 0.06) ref -> lr single-def "CASTCLASS eval op1"
; V19 tmp13 [V19,T51] ( 3, 0.07) ref -> lr class-hnd "spilling QMark2" <<unknown class>>
-; V20 tmp14 [V20,T58] ( 2, 0.02) ref -> lr single-def "CASTCLASS eval op1"
-; V21 tmp15 [V21,T54] ( 3, 0.02) ref -> lr class-hnd "spilling QMark2" <<unknown class>>
+; V20 tmp14 [V20,T58] ( 2, 0.02) ref -> r0 single-def "CASTCLASS eval op1"
+; V21 tmp15 [V21,T54] ( 3, 0.02) ref -> r0 class-hnd "spilling QMark2" <<unknown class>>
; V22 tmp16 [V22,T47] ( 3, 0.11) ref -> r0 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode>
;* V23 tmp17 [V23 ] ( 0, 0 ) ref -> zero-ref single-def
; V24 tmp18 [V24,T53] ( 3, 0.04) ref -> r0
@@ -130,7 +130,7 @@
; V118 tmp112 [V118,T34] ( 18, 1.07) ref -> r6 single-def "V02.[000..004)"
; V119 cse0 [V119,T00] ( 18, 10.37) ref -> r7 "CSE - aggressive"
; V120 cse1 [V120,T05] ( 9, 3.91) ref -> r5 "CSE - moderate"
-; V121 rat0 [V121,T43] ( 3, 0.23) ref -> r1 "Spilling to split statement for tree"
+; V121 rat0 [V121,T43] ( 3, 0.22) ref -> r1 "Spilling to split statement for tree"
; V122 rat1 [V122,T36] ( 6, 0.42) ref -> r3 class-hnd "replacement local" <<unknown class>>
; V123 rat2 [V123,T60] ( 3, 0.01) ref -> r1 "Spilling to split statement for tree"
; V124 rat3 [V124,T56] ( 6, 0.02) ref -> r3 class-hnd "replacement local" <<unknown class>>
@@ -167,7 +167,7 @@ G_M34265_IG04: ; bbWeight=1.00, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0
; gcrRegs -[r0]
movw r1, 0xd1ff
cmp r0, r1
- beq G_M34265_IG77
+ beq G_M34265_IG71
;; size=12 bbWeight=1.00 PerfScore 4.00
G_M34265_IG05: ; bbWeight=1.00, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
mov r0, r5
@@ -255,11 +255,11 @@ G_M34265_IG13: ; bbWeight=0.25, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
DD G_M34265_IG53
DD G_M34265_IG56
DD G_M34265_IG16
- DD G_M34265_IG67
+ DD G_M34265_IG65
DD G_M34265_IG16
DD G_M34265_IG16
- DD G_M34265_IG83
- DD G_M34265_IG66
+ DD G_M34265_IG81
+ DD G_M34265_IG64
ldr pc, [r0+4*r4]
;; size=24 bbWeight=0.25 PerfScore 2.02
G_M34265_IG14: ; bbWeight=0.84, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -387,16 +387,16 @@ G_M34265_IG25: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
movt r0, HIGH ADDRESS J_M34265_DS32
J_M34265_DS32 LABEL DWORD
- DD G_M34265_IG82
+ DD G_M34265_IG76
DD G_M34265_IG90
- DD G_M34265_IG79
+ DD G_M34265_IG73
ldr pc, [r0+4*r8]
;; size=28 bbWeight=0.50 PerfScore 3.97
G_M34265_IG26: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r5-r7]
movw r1, 0xd1ff
cmp r0, r1
- beq G_M34265_IG77
+ beq G_M34265_IG71
b SHORT G_M34265_IG14
;; size=12 bbWeight=0.48 PerfScore 1.91
G_M34265_IG27: ; bbWeight=0.40, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
@@ -406,7 +406,7 @@ G_M34265_IG27: ; bbWeight=0.40, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
beq G_M34265_IG99
movw r3, 0xd1ff
cmp r0, r3
- beq G_M34265_IG77
+ beq G_M34265_IG71
;; size=20 bbWeight=0.40 PerfScore 2.39
G_M34265_IG28: ; bbWeight=0.40, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
b SHORT G_M34265_IG16
@@ -462,7 +462,7 @@ G_M34265_IG36: ; bbWeight=0.31, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[r5-r7]
movw r1, 0xd1ff
cmp r0, r1
- beq G_M34265_IG77
+ beq G_M34265_IG71
movw r1, 0xd1ff
cmp r0, r1
beq G_M34265_IG92
@@ -489,7 +489,7 @@ G_M34265_IG39: ; bbWeight=0.03, gcrefRegs=00C1 {r0 r6 r7}, byrefRegs=0000
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- beq G_M34265_IG73
+ beq G_M34265_IG69
;; size=16 bbWeight=0.03 PerfScore 0.14
G_M34265_IG40: ; bbWeight=0.04, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref, isz
cmp r7, 0
@@ -500,7 +500,7 @@ G_M34265_IG41: ; bbWeight=0.02, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- beq G_M34265_IG73
+ beq G_M34265_IG69
;; size=16 bbWeight=0.02 PerfScore 0.10
G_M34265_IG42: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r6-r7]
@@ -516,7 +516,7 @@ G_M34265_IG43: ; bbWeight=0.03, gcrefRegs=0088 {r3 r7}, byrefRegs=0000 {}
movw r1, 0xd1ff
movt r1, 0xd1ff
cmp r0, r1
- beq G_M34265_IG76
+ beq G_M34265_IG83
;; size=16 bbWeight=0.03 PerfScore 0.14
G_M34265_IG44: ; bbWeight=0.05, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r3]
@@ -532,7 +532,7 @@ G_M34265_IG45: ; bbWeight=0.03, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b
movw r1, 0xd1ff
movt r1, 0xd1ff
cmp r0, r1
- beq G_M34265_IG76
+ beq G_M34265_IG83
;; size=16 bbWeight=0.03 PerfScore 0.14
G_M34265_IG46: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 0
@@ -569,7 +569,7 @@ G_M34265_IG52: ; bbWeight=0.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
blx r3 // Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:IsSingleLineInitializerContext(Microsoft.CodeAnalysis.SyntaxNode):ubyte
; gcrRegs -[r0]
cmp r0, 0
- beq G_M34265_IG77
+ beq G_M34265_IG71
b SHORT G_M34265_IG08
;; size=22 bbWeight=0.00 PerfScore 0.01
G_M34265_IG53: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
@@ -634,7 +634,7 @@ G_M34265_IG57: ; bbWeight=0.05, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
; gcrRegs -[r0]
movw r3, 0xd1ff
cmp r0, r3
- beq SHORT G_M34265_IG61
+ beq SHORT G_M34265_IG70
;; size=16 bbWeight=0.05 PerfScore 0.36
G_M34265_IG58: ; bbWeight=0.05, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
ldr r1, [sp+0x34]
@@ -642,7 +642,7 @@ G_M34265_IG58: ; bbWeight=0.05, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
mov r3, r1
; gcrRegs +[r3]
cmp r3, 0
- beq SHORT G_M34265_IG63
+ beq SHORT G_M34265_IG61
;; size=8 bbWeight=0.05 PerfScore 0.21
G_M34265_IG59: ; bbWeight=0.03, gcrefRegs=00EA {r1 r3 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
ldr r0, [r3]
@@ -650,41 +650,18 @@ G_M34265_IG59: ; bbWeight=0.03, gcrefRegs=00EA {r1 r3 r5 r6 r7}, byrefReg
; gcrRegs -[r3]
movt r3, 0xd1ff
cmp r0, r3
- beq SHORT G_M34265_IG62
+ bne SHORT G_M34265_IG68
;; size=14 bbWeight=0.03 PerfScore 0.13
-G_M34265_IG60: ; bbWeight=0.01, gcrefRegs=00E2 {r1 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[r1] +[r0]
- mov r3, r0
- ; gcrRegs +[r3]
- b SHORT G_M34265_IG63
- ;; size=22 bbWeight=0.01 PerfScore 0.07
-G_M34265_IG61: ; bbWeight=0.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0 r3]
- mov r0, r6
- ; gcrRegs +[r0]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:IsInitializerInSingleLineContext(Microsoft.CodeAnalysis.SyntaxNode):ubyte
- ; gcrRegs -[r0]
- cmp r0, 0
- bne G_M34265_IG14
- b SHORT G_M34265_IG58
- ;; size=22 bbWeight=0.01 PerfScore 0.04
-G_M34265_IG62: ; bbWeight=0.02, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref
+G_M34265_IG60: ; bbWeight=0.02, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1]
movs r3, 0
;; size=2 bbWeight=0.02 PerfScore 0.02
-G_M34265_IG63: ; bbWeight=0.05, gcrefRegs=00E8 {r3 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M34265_IG61: ; bbWeight=0.05, gcrefRegs=00E8 {r3 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r3]
cmp r3, 0
- bne SHORT G_M34265_IG69
+ bne SHORT G_M34265_IG67
;; size=4 bbWeight=0.05 PerfScore 0.10
-G_M34265_IG64: ; bbWeight=0.05, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M34265_IG62: ; bbWeight=0.05, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r3 r6]
mov r0, r5
; gcrRegs +[r0]
@@ -699,9 +676,9 @@ G_M34265_IG64: ; bbWeight=0.05, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}
; gcrRegs -[r0-r1]
movw r1, 0xd1ff
cmp r0, r1
- beq SHORT G_M34265_IG77
+ beq SHORT G_M34265_IG71
;; size=30 bbWeight=0.05 PerfScore 0.55
-G_M34265_IG65: ; bbWeight=0.05, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M34265_IG63: ; bbWeight=0.05, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
mov r0, r5
; gcrRegs +[r0]
mov r1, r7
@@ -715,10 +692,10 @@ G_M34265_IG65: ; bbWeight=0.05, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}
; gcrRegs -[r0-r1 r5 r7]
movw r3, 0xd1ff
cmp r0, r3
- beq SHORT G_M34265_IG77
+ beq SHORT G_M34265_IG71
b SHORT G_M34265_IG14
;; size=32 bbWeight=0.05 PerfScore 0.55
-G_M34265_IG66: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M34265_IG64: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr r0, [sp+0x44]
; gcrRegs +[r0]
str r0, [sp]
@@ -742,47 +719,38 @@ G_M34265_IG66: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[r0-r1]
b SHORT G_M34265_IG37
;; size=40 bbWeight=0.05 PerfScore 0.85
-G_M34265_IG67: ; bbWeight=0.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M34265_IG65: ; bbWeight=0.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r5-r7]
ldr lr, [sp+0x34]
; gcrRegs +[lr]
cmp lr, 0
beq G_M34265_IG16
;; size=12 bbWeight=0.01 PerfScore 0.04
-G_M34265_IG68: ; bbWeight=0.01, gcrefRegs=40E0 {r5 r6 r7 lr}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M34265_IG70
+G_M34265_IG66: ; bbWeight=0.01, gcrefRegs=40E0 {r5 r6 r7 lr}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M34265_IG77
;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M34265_IG69: ; bbWeight=0.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M34265_IG67: ; bbWeight=0.00, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[lr]
ldr r0, [sp+0x34]
; gcrRegs +[r0]
cmp r6, r0
- bne SHORT G_M34265_IG77
- b SHORT G_M34265_IG64
+ bne SHORT G_M34265_IG71
...
+0 (0.00%) : 124962.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsNonStringEnumerable(System.Object):System.Collections.IEnumerable (Tier1)
@@ -8,14 +8,14 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 6372
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 6, 5.16) ref -> r0 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 6, 5.14) ref -> r0 class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02,T02] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V03 rat0 [V03,T01] ( 6, 7.83) ref -> r3 class-hnd "replacement local" <System.Collections.IEnumerable>
;
; Lcl frame size = 0
-G_M8290_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M8290_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r11,lr}
mov r11, sp
;; size=6 bbWeight=1 PerfScore 2.00
@@ -33,7 +33,7 @@ G_M8290_IG03: ; bbWeight=0.98, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, by
mov r3, r0
; gcrRegs +[r3]
cmp r3, 0
- beq SHORT G_M8290_IG07
+ beq SHORT G_M8290_IG06
;; size=6 bbWeight=0.98 PerfScore 2.94
G_M8290_IG04: ; bbWeight=0.49, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz
ldr r1, [r3]
@@ -41,9 +41,22 @@ G_M8290_IG04: ; bbWeight=0.49, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {},
; gcrRegs -[r3]
movt r3, 0xd1ff
cmp r1, r3
- beq SHORT G_M8290_IG06
+ bne SHORT G_M8290_IG08
;; size=14 bbWeight=0.49 PerfScore 2.45
-G_M8290_IG05: ; bbWeight=0.18, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M8290_IG05: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0]
+ movs r3, 0
+ ;; size=2 bbWeight=0.33 PerfScore 0.33
+G_M8290_IG06: ; bbWeight=0.98, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r3]
+ mov r0, r3
+ ; gcrRegs +[r0]
+ ;; size=2 bbWeight=0.98 PerfScore 0.98
+G_M8290_IG07: ; bbWeight=0.98, epilog, nogc, extend
+ pop {r11,pc}
+ ;; size=4 bbWeight=0.98 PerfScore 0.98
+G_M8290_IG08: ; bbWeight=0.16, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r3]
mov r1, r0
; gcrRegs +[r1]
movw r0, 0xd1ff
@@ -55,21 +68,9 @@ G_M8290_IG05: ; bbWeight=0.18, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, by
; gcrRegs -[r1] +[r0]
mov r3, r0
; gcrRegs +[r3]
- b SHORT G_M8290_IG07
- ;; size=24 bbWeight=0.18 PerfScore 1.41
-G_M8290_IG06: ; bbWeight=0.31, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0 r3]
- movs r3, 0
- ;; size=2 bbWeight=0.31 PerfScore 0.31
-G_M8290_IG07: ; bbWeight=0.98, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r3]
- mov r0, r3
- ; gcrRegs +[r0]
- ;; size=2 bbWeight=0.98 PerfScore 0.98
-G_M8290_IG08: ; bbWeight=0.98, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=0.98 PerfScore 0.98
-G_M8290_IG09: ; bbWeight=0.02, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ b SHORT G_M8290_IG06
+ ;; size=24 bbWeight=0.16 PerfScore 1.29
+G_M8290_IG09: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0 r3]
movs r0, 0
;; size=2 bbWeight=0.02 PerfScore 0.02
@@ -77,7 +78,7 @@ G_M8290_IG10: ; bbWeight=0.02, epilog, nogc, extend
pop {r11,pc}
;; size=4 bbWeight=0.02 PerfScore 0.02
-; Total bytes of code 82, prolog size 6, PerfScore 18.11, instruction count 30, allocated bytes for code 82 (MethodHash=a242df9d) for method Xunit.Sdk.CollectionTrackerExtensions:AsNonStringEnumerable(System.Object):System.Collections.IEnumerable (Tier1)
+; Total bytes of code 82, prolog size 6, PerfScore 18.01, instruction count 30, allocated bytes for code 82 (MethodHash=a242df9d) for method Xunit.Sdk.CollectionTrackerExtensions:AsNonStringEnumerable(System.Object):System.Collections.IEnumerable (Tier1)
; ============================================================
Unwind Info:
+0 (0.00%) : 659706.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:IsRequired(Microsoft.CodeAnalysis.CSharp.Symbol):ubyte (Tier1)
@@ -8,14 +8,14 @@
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 205
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 6, 4.21) ref -> r4 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V00 arg0 [V00,T02] ( 6, 4.16) ref -> r4 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbol>
; V01 loc0 [V01,T03] ( 6, 2.35) ref -> r0 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
; V02 loc1 [V02,T05] ( 6, 1.81) ref -> r0 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol>
; V03 loc2 [V03,T04] ( 3, 2 ) ubyte -> r0
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T06] ( 3, 0.32) int -> r0 "guarded devirt return temp"
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol>
-; V07 tmp3 [V07,T07] ( 4, 0.14) int -> r0 "guarded devirt return temp"
+; V07 tmp3 [V07,T07] ( 3, 0.14) int -> r0 "guarded devirt return temp"
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol>
; V09 rat0 [V09,T00] ( 6, 8 ) ref -> r0 class-hnd "replacement local" <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
; V10 rat1 [V10,T01] ( 6, 6.71) ref -> r0 class-hnd "replacement local" <Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol>
@@ -42,7 +42,7 @@ G_M20550_IG03: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}
cmp r1, r0
beq SHORT G_M20550_IG05
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M20550_IG04: ; bbWeight=0.21, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M20550_IG04: ; bbWeight=0.17, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r1, r4
; gcrRegs +[r1]
movw r0, 0xd1ff
@@ -52,32 +52,92 @@ G_M20550_IG04: ; bbWeight=0.21, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[r1] +[r0]
b SHORT G_M20550_IG06
- ;; size=22 bbWeight=0.21 PerfScore 1.47
-G_M20550_IG05: ; bbWeight=0.29, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ;; size=22 bbWeight=0.17 PerfScore 1.16
+G_M20550_IG05: ; bbWeight=0.34, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
movs r0, 0
- ;; size=2 bbWeight=0.29 PerfScore 0.29
+ ;; size=2 bbWeight=0.34 PerfScore 0.34
G_M20550_IG06: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
cmp r0, 0
- bne SHORT G_M20550_IG14
+ bne SHORT G_M20550_IG10
;; size=4 bbWeight=1 PerfScore 2.00
G_M20550_IG07: ; bbWeight=0.84, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
mov r0, r4
; gcrRegs +[r0]
cmp r0, 0
- beq SHORT G_M20550_IG11
+ beq SHORT G_M20550_IG17
;; size=6 bbWeight=0.84 PerfScore 2.52
G_M20550_IG08: ; bbWeight=0.42, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r0]
- movw r0, 0xd1ff
+ ldr r0, [r0]
; gcrRegs -[r0]
- movt r0, 0xd1ff
- cmp r1, r0
- beq SHORT G_M20550_IG10
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ beq SHORT G_M20550_IG16
;; size=14 bbWeight=0.42 PerfScore 2.10
-G_M20550_IG09: ; bbWeight=0.16, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M20550_IG09: ; bbWeight=0.24, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M20550_IG19
+ ;; size=2 bbWeight=0.24 PerfScore 0.24
+G_M20550_IG10: ; bbWeight=0.16, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r4] +[r0]
+ ldr r3, [r0]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
+ bne SHORT G_M20550_IG13
+ ;; size=14 bbWeight=0.16 PerfScore 0.80
+G_M20550_IG11: ; bbWeight=0.13, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol:get_IsRequired():ubyte:this
+ ; gcrRegs -[r0]
+ ;; size=12 bbWeight=0.13 PerfScore 0.52
+G_M20550_IG12: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp r0, 0
+ bne SHORT G_M20550_IG21
+ b SHORT G_M20550_IG14
+ ;; size=6 bbWeight=0.16 PerfScore 0.48
+G_M20550_IG13: ; bbWeight=0.03, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r0]
+ ldr r3, [r0]
+ ldr r3, [r3+0x70]
+ ldr r3, [r3+0x08]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ b SHORT G_M20550_IG12
+ ;; size=10 bbWeight=0.03 PerfScore 0.15
+G_M20550_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movs r0, 0
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M20550_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r3,r4,r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M20550_IG16: ; bbWeight=0.27, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movs r0, 0
+ ;; size=2 bbWeight=0.27 PerfScore 0.27
+G_M20550_IG17: ; bbWeight=0.84, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r0]
+ cmp r0, 0
+ beq SHORT G_M20550_IG14
+ ;; size=4 bbWeight=0.84 PerfScore 1.68
+G_M20550_IG18: ; bbWeight=0.07, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ldr r3, [r0]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
+ bne SHORT G_M20550_IG22
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:get_IsRequired():ubyte:this
+ ; gcrRegs -[r0]
+ b SHORT G_M20550_IG20
+ ;; size=28 bbWeight=0.07 PerfScore 0.68
+G_M20550_IG19: ; bbWeight=0.15, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r4]
mov r1, r4
; gcrRegs +[r1]
movw r0, 0xd1ff
@@ -86,85 +146,28 @@ G_M20550_IG09: ; bbWeight=0.16, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[r1 r4] +[r0]
- b SHORT G_M20550_IG11
- ;; size=22 bbWeight=0.16 PerfScore 1.15
-G_M20550_IG10: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- movs r0, 0
- ;; size=2 bbWeight=0.26 PerfScore 0.26
-G_M20550_IG11: ; bbWeight=0.84, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r0]
- cmp r0, 0
- bne SHORT G_M20550_IG17
- ;; size=4 bbWeight=0.84 PerfScore 1.68
-G_M20550_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- movs r0, 0
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M20550_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r3,r4,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M20550_IG14: ; bbWeight=0.16, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r0]
- ldr r3, [r0]
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- cmp r3, r2
- bne SHORT G_M20550_IG18
- ;; size=14 bbWeight=0.16 PerfScore 0.80
-G_M20550_IG15: ; bbWeight=0.13, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol:get_IsRequired():ubyte:this
- ; gcrRegs -[r0]
- ;; size=12 bbWeight=0.13 PerfScore 0.52
-G_M20550_IG16: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r0, 0
- bne SHORT G_M20550_IG20
- b SHORT G_M20550_IG12
- ;; size=6 bbWeight=0.16 PerfScore 0.48
-G_M20550_IG17: ; bbWeight=0.07, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r0]
- ldr r3, [r0]
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- cmp r3, r2
- bne SHORT G_M20550_IG19
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:get_IsRequired():ubyte:this
+ b SHORT G_M20550_IG17
+ ;; size=22 bbWeight=0.15 PerfScore 1.06
+G_M20550_IG20: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
cmp r0, 0
- bne SHORT G_M20550_IG20
- b SHORT G_M20550_IG12
- ;; size=32 bbWeight=0.07 PerfScore 0.82
-G_M20550_IG18: ; bbWeight=0.03, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r0]
- ldr r3, [r0]
- ldr r3, [r3+0x70]
- ldr r3, [r3+0x08]
- blx r3 // <unknown method>
- ; gcrRegs -[r0]
- b SHORT G_M20550_IG16
- ;; size=10 bbWeight=0.03 PerfScore 0.15
-G_M20550_IG19: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ beq SHORT G_M20550_IG14
+ ;; size=4 bbWeight=0.07 PerfScore 0.14
+G_M20550_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movs r0, 1
+ b SHORT G_M20550_IG15
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M20550_IG22: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
ldr r3, [r0]
ldr r3, [r3+0x64]
ldr r3, [r3+0x1C]
blx r3 // <unknown method>
; gcrRegs -[r0]
- cmp r0, 0
- beq SHORT G_M20550_IG12
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M20550_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movs r0, 1
- b SHORT G_M20550_IG13
- ;; size=4 bbWeight=0 PerfScore 0.00
+ b SHORT G_M20550_IG20
+ ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 202, prolog size 8, PerfScore 24.74, instruction count 78, allocated bytes for code 202 (MethodHash=e43aafb9) for method Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:IsRequired(Microsoft.CodeAnalysis.CSharp.Symbol):ubyte (Tier1)
+; Total bytes of code 202, prolog size 8, PerfScore 24.63, instruction count 78, allocated bytes for code 202 (MethodHash=e43aafb9) for method Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:IsRequired(Microsoft.CodeAnalysis.CSharp.Symbol):ubyte (Tier1)
; ============================================================
Unwind Info:
+6 (+1.38%) : 75223.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 this [V00,T04] ( 5, 4.31) ref -> r5 this class-hnd single-def <System.Threading.ThreadPoolWorkQueue>
-; V01 arg1 [V01,T02] ( 10, 5.39) ref -> r4 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T02] ( 10, 5.33) ref -> r4 class-hnd single-def <System.Object>
; V02 arg2 [V02,T07] ( 3, 3 ) ubyte -> r6 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
; V04 loc1 [V04,T11] ( 3, 0.61) ref -> r6 class-hnd single-def <<unknown class>>
@@ -24,7 +24,7 @@
; V12 tmp7 [V12,T10] ( 2, 3.11) int -> r5 "impAppendStmt"
; V13 rat0 [V13,T00] ( 6, 8 ) ref -> r3 class-hnd "replacement local" <<unknown class>>
; V14 rat1 [V14,T09] ( 2, 4 ) int -> r7 "Spilling to split statement for tree"
-; V15 rat2 [V15,T03] ( 5, 7.39) ref -> r3 class-hnd "replacement local" <System.Threading.Tasks.Task>
+; V15 rat2 [V15,T03] ( 5, 7.33) ref -> r3 class-hnd "replacement local" <System.Threading.Tasks.Task>
;
; Lcl frame size = 0
@@ -41,82 +41,54 @@ G_M3523_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, by
mov r3, r4
; gcrRegs +[r3]
cmp r3, 0
- beq SHORT G_M3523_IG06
+ beq SHORT G_M3523_IG05
;; size=6 bbWeight=1 PerfScore 3.00
G_M3523_IG03: ; bbWeight=0.50, gcrefRegs=0038 {r3 r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r1, [r3]
movw r0, 0xd1ff
movt r0, 0xd1ff
cmp r1, r0
- beq SHORT G_M3523_IG05
- ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M3523_IG04: ; bbWeight=0.19, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ bne G_M3523_IG20
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M3523_IG04: ; bbWeight=0.34, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
; gcrRegs -[r3]
- mov r1, r4
- ; gcrRegs +[r1]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[r1] +[r0]
- mov r3, r0
- ; gcrRegs +[r3]
- b SHORT G_M3523_IG06
- ;; size=24 bbWeight=0.19 PerfScore 1.56
-G_M3523_IG05: ; bbWeight=0.30, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0 r3]
movs r3, 0
- ;; size=2 bbWeight=0.30 PerfScore 0.30
-G_M3523_IG06: ; bbWeight=1, gcrefRegs=0038 {r3 r4 r5}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.34 PerfScore 0.34
+G_M3523_IG05: ; bbWeight=1, gcrefRegs=0038 {r3 r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r3]
cmp r3, 0
- bne SHORT G_M3523_IG07
+ bne SHORT G_M3523_IG06
movs r7, 0
- b SHORT G_M3523_IG08
+ b SHORT G_M3523_IG07
;; size=8 bbWeight=1 PerfScore 4.00
-G_M3523_IG07: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+G_M3523_IG06: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
; gcrRegs -[r3]
movs r7, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M3523_IG08: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M3523_IG07: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
mov r3, r4
; gcrRegs +[r3]
cmp r3, 0
- beq SHORT G_M3523_IG11
+ beq SHORT G_M3523_IG09
;; size=6 bbWeight=1 PerfScore 3.00
-G_M3523_IG09: ; bbWeight=0.50, gcrefRegs=0038 {r3 r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M3523_IG08: ; bbWeight=0.50, gcrefRegs=0038 {r3 r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r1, [r3]
movw r0, 0xd1ff
movt r0, 0xd1ff
cmp r1, r0
- beq SHORT G_M3523_IG11
+ bne SHORT G_M3523_IG19
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M3523_IG10: ; bbWeight=0.19, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
- mov r1, r4
- ; gcrRegs +[r1]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[r1] +[r0]
- mov r3, r0
- ; gcrRegs +[r3]
- ;; size=22 bbWeight=0.19 PerfScore 1.36
-G_M3523_IG11: ; bbWeight=1, gcrefRegs=0038 {r3 r4 r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0]
+G_M3523_IG09: ; bbWeight=1, gcrefRegs=0038 {r3 r4 r5}, byrefRegs=0000 {}, byref, isz
cmp r3, 0
- bne SHORT G_M3523_IG12
+ bne SHORT G_M3523_IG10
movs r0, 0
- b SHORT G_M3523_IG13
+ b SHORT G_M3523_IG11
;; size=8 bbWeight=1 PerfScore 4.00
-G_M3523_IG12: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+G_M3523_IG10: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
; gcrRegs -[r3]
movs r0, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M3523_IG13: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M3523_IG11: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
eors r0, r7
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -124,12 +96,12 @@ G_M3523_IG13: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, by
blx r3 // <unknown method>
ldrb r0, [r5+0x1C]
cmp r0, 0
- bne SHORT G_M3523_IG24
- ;; size=20 bbWeight=1 PerfScore 8.00
-G_M3523_IG14: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ bne G_M3523_IG24
+ ;; size=22 bbWeight=1 PerfScore 8.00
+G_M3523_IG12: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
uxtb r0, r6
cmp r0, 0
- bne SHORT G_M3523_IG19
+ bne SHORT G_M3523_IG17
movw r0, 0xd1ff
movt r0, 0xd1ff
mov r1, 836
@@ -141,9 +113,9 @@ G_M3523_IG14: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, by
; gcrRegs +[r0]
; byrRegs -[r0]
cmp r0, 0
- beq SHORT G_M3523_IG19
+ beq SHORT G_M3523_IG17
;; size=34 bbWeight=1 PerfScore 12.00
-G_M3523_IG15: ; bbWeight=0.69, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref
+G_M3523_IG13: ; bbWeight=0.69, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000 {}, byref
ldr r0, [r0+0x0C]
mov r1, r4
; gcrRegs +[r1]
@@ -154,7 +126,7 @@ G_M3523_IG15: ; bbWeight=0.69, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0000
blx r3 // <unknown method>
; gcrRegs -[r0-r1 r4]
;; size=18 bbWeight=0.69 PerfScore 4.86
-G_M3523_IG16: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M3523_IG14: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
add r0, r5, 92
; byrRegs +[r0]
cmp r0, 0
@@ -167,9 +139,9 @@ G_M3523_IG16: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
; gcrRegs -[r5]
; byrRegs -[r0]
cmp r0, 0
- bne SHORT G_M3523_IG18
+ bne SHORT G_M3523_IG16
;; size=26 bbWeight=1 PerfScore 10.00
-G_M3523_IG17: ; bbWeight=0.78, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M3523_IG15: ; bbWeight=0.78, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
movt r0, 0xd1ff
ldr r4, [r0]
@@ -205,11 +177,11 @@ G_M3523_IG17: ; bbWeight=0.78, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
cmp r5, 6
bne SHORT G_M3523_IG21
;; size=84 bbWeight=0.78 PerfScore 22.54
-G_M3523_IG18: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M3523_IG16: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r4]
pop {r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=1.00 PerfScore 1.00
-G_M3523_IG19: ; bbWeight=0.31, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M3523_IG17: ; bbWeight=0.31, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4-r5]
ldr r6, [r5+0x04]
; gcrRegs +[r6]
@@ -225,9 +197,9 @@ G_M3523_IG19: ; bbWeight=0.31, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}
blx r3 // System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this
; gcrRegs -[r0-r1]
cmp r0, 0
- bne SHORT G_M3523_IG16
+ bne SHORT G_M3523_IG14
;; size=28 bbWeight=0.31 PerfScore 3.36
-G_M3523_IG20: ; bbWeight=0.00, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M3523_IG18: ; bbWeight=0.00, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
mov r0, r6
; gcrRegs +[r0]
mov r1, r4
@@ -237,10 +209,38 @@ G_M3523_IG20: ; bbWeight=0.00, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
ldr r3, [r3]
blx r3 // <unknown method>
; gcrRegs -[r0-r1 r4 r6]
- b SHORT G_M3523_IG16
+ b SHORT G_M3523_IG14
;; size=18 bbWeight=0.00 PerfScore 0.02
+G_M3523_IG19: ; bbWeight=0.17, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r4]
+ mov r1, r4
+ ; gcrRegs +[r1]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[r1] +[r0]
+ mov r3, r0
+ ; gcrRegs +[r3]
+ b SHORT G_M3523_IG09
+ ;; size=24 bbWeight=0.17 PerfScore 1.32
+G_M3523_IG20: ; bbWeight=0.17, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0 r3]
+ mov r1, r4
+ ; gcrRegs +[r1]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[r1] +[r0]
+ mov r3, r0
+ ; gcrRegs +[r3]
+ b SHORT G_M3523_IG05
+ ;; size=24 bbWeight=0.17 PerfScore 1.32
G_M3523_IG21: ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r5] +[r4]
+ ; gcrRegs -[r0 r3 r5]
mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -268,7 +268,7 @@ G_M3523_IG24: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, by
ldrb r0, [r0+0x5D]
; gcrRegs -[r0]
cmp r0, 0
- beq G_M3523_IG14
+ beq G_M3523_IG12
movw r0, 0xd1ff
movt r0, 0xd1ff
ldr r0, [r0]
@@ -281,10 +281,10 @@ G_M3523_IG24: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, by
ldr r2, [r0]
blx r3 // <unknown method>
; gcrRegs -[r0-r1]
- b SHORT G_M3523_IG14
...
+4 (+1.74%) : 179696.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 this [V00,T01] ( 15, 7.76) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]>
-; V01 arg1 [V01,T03] ( 7, 3.20) ref -> r5 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundNode>
+; V01 arg1 [V01,T03] ( 7, 3.19) ref -> r5 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundNode>
; V02 loc0 [V02,T04] ( 5, 3.16) ref -> r6 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+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>
@@ -23,7 +23,7 @@
; V11 tmp8 [V11,T08] ( 3, 1.02) ref -> r0 "guarded devirt return temp"
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker>
;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BoundNode>
-; V14 rat0 [V14,T02] ( 5, 7.40) ref -> r6 class-hnd "replacement local" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V14 rat0 [V14,T02] ( 5, 7.37) ref -> r6 class-hnd "replacement local" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;
; Lcl frame size = 4
@@ -39,17 +39,51 @@ G_M16580_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
mov r6, r5
; gcrRegs +[r6]
cmp r6, 0
- beq SHORT G_M16580_IG05
+ beq SHORT G_M16580_IG04
;; size=6 bbWeight=1 PerfScore 3.00
G_M16580_IG03: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
ldr r1, [r6]
movw r0, 0xd1ff
movt r0, 0xd1ff
cmp r1, r0
- beq SHORT G_M16580_IG05
+ bne SHORT G_M16580_IG07
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M16580_IG04: ; bbWeight=0.20, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r6]
+G_M16580_IG04: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+ cmp r6, 0
+ beq SHORT G_M16580_IG16
+ add r5, r4, 52
+ ; gcrRegs -[r5]
+ ; byrRegs +[r5]
+ ldr r0, [r5]
+ adds r0, r0, 1
+ str r0, [r5]
+ ldr r0, [r5]
+ cmp r0, 1
+ bgt SHORT G_M16580_IG11
+ ;; size=20 bbWeight=1 PerfScore 9.00
+G_M16580_IG05: ; bbWeight=0.57, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
+ ldr r0, [r4]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ beq SHORT G_M16580_IG08
+ mov r0, r4
+ ; gcrRegs +[r0]
+ ldr r3, [r4]
+ ldr r3, [r3+0x2C]
+ ldr r3, [r3+0x1C]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ ; gcr arg pop 0
+ cmp r0, 0
+ bne SHORT G_M16580_IG08
+ ;; size=28 bbWeight=0.57 PerfScore 6.82
+G_M16580_IG06: ; bbWeight=0.43, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
+ b SHORT G_M16580_IG11
+ ;; size=2 bbWeight=0.43 PerfScore 0.43
+G_M16580_IG07: ; bbWeight=0.18, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r6] +[r5]
+ ; byrRegs -[r5]
mov r1, r5
; gcrRegs +[r1]
movw r0, 0xd1ff
@@ -61,47 +95,40 @@ G_M16580_IG04: ; bbWeight=0.20, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
; gcr arg pop 0
mov r6, r0
; gcrRegs +[r6]
- ;; size=22 bbWeight=0.20 PerfScore 1.40
-G_M16580_IG05: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0]
- cmp r6, 0
- beq SHORT G_M16580_IG15
- add r5, r4, 52
- ; gcrRegs -[r5]
+ b SHORT G_M16580_IG04
+ ;; size=24 bbWeight=0.18 PerfScore 1.48
+G_M16580_IG08: ; bbWeight=0.57, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref
+ ; gcrRegs -[r0 r5]
; byrRegs +[r5]
- ldr r0, [r5]
- adds r0, r0, 1
- str r0, [r5]
- ldr r0, [r5]
- cmp r0, 1
- bgt SHORT G_M16580_IG07
- ;; size=20 bbWeight=1 PerfScore 9.00
-G_M16580_IG06: ; bbWeight=0.57, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
- ldr r0, [r4]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r0, r3
- beq SHORT G_M16580_IG12
mov r0, r4
; gcrRegs +[r0]
- ldr r3, [r4]
- ldr r3, [r3+0x2C]
- ldr r3, [r3+0x1C]
+ mov r1, r6
+ ; gcrRegs +[r1]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
blx r3 // <unknown method>
- ; gcrRegs -[r0]
+ ; gcrRegs -[r1 r4 r6]
; gcr arg pop 0
- cmp r0, 0
- bne SHORT G_M16580_IG12
- ;; size=28 bbWeight=0.57 PerfScore 6.82
-G_M16580_IG07: ; bbWeight=0.43, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
+ ;; size=16 bbWeight=0.57 PerfScore 3.41
+G_M16580_IG09: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0020 {r5}, byref
+ ldr r1, [r5]
+ subs r1, r1, 1
+ str r1, [r5]
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M16580_IG10: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M16580_IG11: ; bbWeight=0.43, gcVars=00000000 {}, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, gcvars, byref, isz
+ ; gcrRegs -[r0] +[r4 r6]
ldr r1, [r5]
ldr r0, [r4]
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- bne SHORT G_M16580_IG09
+ bne SHORT G_M16580_IG13
;; size=16 bbWeight=0.43 PerfScore 2.59
-G_M16580_IG08: ; bbWeight=0.17, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
+G_M16580_IG12: ; bbWeight=0.17, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -110,9 +137,9 @@ G_M16580_IG08: ; bbWeight=0.17, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r
blx r3 // Microsoft.CodeAnalysis.CSharp.NullableWalker:EnsureSufficientExecutionStack(int):this
; gcrRegs -[r0]
; gcr arg pop 0
- b SHORT G_M16580_IG11
+ b SHORT G_M16580_IG15
;; size=16 bbWeight=0.17 PerfScore 1.04
-G_M16580_IG09: ; bbWeight=0.43, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref
+G_M16580_IG13: ; bbWeight=0.43, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r4]
@@ -132,10 +159,10 @@ G_M16580_IG09: ; bbWeight=0.43, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r
; gcrRegs -[r1 r4 r6]
; gcr arg pop 0
;; size=22 bbWeight=0.43 PerfScore 4.75
-G_M16580_IG10: ; bbWeight=0.43, gcrefRegs=0001 {r0}, byrefRegs=0020 {r5}, byref, isz
- b SHORT G_M16580_IG13
+G_M16580_IG14: ; bbWeight=0.43, gcrefRegs=0001 {r0}, byrefRegs=0020 {r5}, byref, isz
+ b SHORT G_M16580_IG09
;; size=2 bbWeight=0.43 PerfScore 0.43
-G_M16580_IG11: ; bbWeight=0.16, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
+G_M16580_IG15: ; bbWeight=0.16, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
; gcrRegs -[r0] +[r4 r6]
mov r0, r4
; gcrRegs +[r0]
@@ -147,34 +174,13 @@ G_M16580_IG11: ; bbWeight=0.16, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r
blx r3 // Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitExpressionWithoutStackGuard(Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
; gcrRegs -[r1 r4 r6]
; gcr arg pop 0
- b SHORT G_M16580_IG10
+ b SHORT G_M16580_IG14
;; size=18 bbWeight=0.16 PerfScore 1.09
-G_M16580_IG12: ; bbWeight=0.57, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref
- ; gcrRegs -[r0] +[r4 r6]
- mov r0, r4
- ; gcrRegs +[r0]
- mov r1, r6
- ; gcrRegs +[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ; gcrRegs -[r1 r4 r6]
- ; gcr arg pop 0
- ;; size=16 bbWeight=0.57 PerfScore 3.41
-G_M16580_IG13: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0020 {r5}, byref
- ldr r1, [r5]
- subs r1, r1, 1
- str r1, [r5]
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M16580_IG14: ; bbWeight=1, epilog, nogc, extend
- pop {r3,r4,r5,r6,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M16580_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M16580_IG16: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] +[r4-r5]
; byrRegs -[r5]
cmp r5, 0
- beq SHORT G_M16580_IG17
+ beq SHORT G_M16580_IG18
mov r0, r5
; gcrRegs +[r0]
mov r1, r4
@@ -183,21 +189,21 @@ G_M16580_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5},
ldr r3, [r3+0x2C]
ldr r3, [r3+0x14]
;; size=14 bbWeight=0 PerfScore 0.00
-G_M16580_IG16: ; bbWeight=0, epilog, nogc, extend
+G_M16580_IG17: ; bbWeight=0, epilog, nogc, extend
add sp, 4
pop {r4,r5,r6,r11,lr}
bx r3 // <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=0 PerfScore 0.00
-G_M16580_IG17: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M16580_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0-r1 r4-r5]
movs r0, 0
;; size=2 bbWeight=0 PerfScore 0.00
-G_M16580_IG18: ; bbWeight=0, epilog, nogc, extend
+G_M16580_IG19: ; bbWeight=0, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 230, prolog size 12, PerfScore 44.02, instruction count 93, allocated bytes for code 230 (MethodHash=f609bf3b) for method Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
+; Total bytes of code 234, prolog size 12, PerfScore 44.54, instruction count 95, allocated bytes for code 234 (MethodHash=f609bf3b) for method Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
; ============================================================
Unwind Info:
@@ -209,7 +215,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 115 (0x00073) Actual length = 230 (0x0000e6)
+ Function Length : 117 (0x00075) Actual length = 234 (0x0000ea)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+1.89%) : 726577.dasm - System.Linq.Expressions.Compiler.CompilerScope:GetVariables(System.Object):System.Collections.Generic.IReadOnlyList`1System.Linq.Expressions.ParameterExpression
@@ -9,8 +9,8 @@
; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 7, 3.23) ref -> r4 class-hnd single-def <System.Object>
-; V01 loc0 [V01,T03] ( 3, 3 ) ref -> r5 class-hnd single-def <<unknown class>>
+; V00 arg0 [V00,T02] ( 7, 3.13) ref -> r4 class-hnd single-def <System.Object>
+; V01 loc0 [V01,T03] ( 5, 3 ) ref -> r5 class-hnd single-def <<unknown class>>
; V02 loc1 [V02,T04] ( 4, 0 ) ref -> r0 class-hnd single-def <System.Linq.Expressions.BlockExpression>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T06] ( 3, 0 ) ref -> r5 class-hnd exact single-def "dup spill" <<unknown class>>
@@ -18,7 +18,7 @@
; V06 tmp3 [V06,T05] ( 4, 0 ) ref -> r3 class-hnd single-def "spilling QMark2" <System.Linq.Expressions.CatchBlock>
; V07 tmp4 [V07,T08] ( 2, 0 ) ref -> r1 class-hnd single-def "Strict ordering of exceptions for Array store" <System.Linq.Expressions.ParameterExpression>
; V08 tmp5 [V08,T01] ( 3, 6 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.Compiler.ParameterList>
-; V09 rat0 [V09,T00] ( 5, 7.45) ref -> r5 class-hnd "replacement local" <<unknown class>>
+; V09 rat0 [V09,T00] ( 6, 7.27) ref -> r5 class-hnd "replacement local" <<unknown class>>
;
; Lcl frame size = 0
@@ -32,39 +32,20 @@ G_M13340_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
mov r5, r4
; gcrRegs +[r5]
cmp r5, 0
- beq SHORT G_M13340_IG05
+ bne SHORT G_M13340_IG06
;; size=6 bbWeight=1 PerfScore 3.00
-G_M13340_IG03: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r5]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- cmp r1, r0
- beq SHORT G_M13340_IG05
- ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M13340_IG04: ; bbWeight=0.23, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r5]
- mov r1, r4
- ; gcrRegs +[r1]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[r1] +[r0]
- ; gcr arg pop 0
- mov r5, r0
- ; gcrRegs +[r5]
- ;; size=22 bbWeight=0.23 PerfScore 1.58
-G_M13340_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0]
+G_M13340_IG03: ; bbWeight=0.87, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
cmp r5, 0
- beq SHORT G_M13340_IG07
+ beq SHORT G_M13340_IG08
+ ;; size=4 bbWeight=0.87 PerfScore 1.73
+G_M13340_IG04: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r4]
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_NEWSFAST
- ; gcrRegs -[r4] +[r0]
+ ; gcrRegs +[r0]
; gcr arg pop 0
mov r2, r0
; gcrRegs +[r2]
@@ -80,12 +61,36 @@ G_M13340_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
; byrRegs -[r0]
mov r0, r2
; gcrRegs +[r0]
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M13340_IG06: ; bbWeight=1, epilog, nogc, extend
+ ;; size=36 bbWeight=1 PerfScore 12.00
+G_M13340_IG05: ; bbWeight=1, epilog, nogc, extend
pop {r4,r5,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M13340_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0 r2] +[r4]
+G_M13340_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r0 r2] +[r4-r5]
+ ldr r1, [r5]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r1, r0
+ beq SHORT G_M13340_IG03
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M13340_IG07: ; bbWeight=0.14, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
+ mov r1, r4
+ ; gcrRegs +[r1]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[r1] +[r0]
+ ; gcr arg pop 0
+ mov r5, r0
+ ; gcrRegs +[r5]
+ cmp r5, 0
+ bne SHORT G_M13340_IG04
+ ;; size=26 bbWeight=0.14 PerfScore 1.22
+G_M13340_IG08: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0 r5]
mov r1, r4
; gcrRegs +[r1]
movw r0, 0xd1ff
@@ -96,17 +101,17 @@ G_M13340_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
cmp r0, 0
- beq SHORT G_M13340_IG09
+ beq SHORT G_M13340_IG10
ldr r3, [r0]
ldr r3, [r3+0x30]
ldr r3, [r3+0x1C]
;; size=30 bbWeight=0 PerfScore 0.00
-G_M13340_IG08: ; bbWeight=0, epilog, nogc, extend
+G_M13340_IG09: ; bbWeight=0, epilog, nogc, extend
pop {r4,r5,r11,lr}
bx r3 // <unknown method>
; gcr arg pop 0
;; size=6 bbWeight=0 PerfScore 0.00
-G_M13340_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M13340_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0]
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -121,13 +126,13 @@ G_M13340_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr
mov r3, r4
; gcrRegs +[r3]
cmp r3, 0
- beq SHORT G_M13340_IG10
+ beq SHORT G_M13340_IG11
ldr r0, [r3]
; gcrRegs -[r0]
movw r1, 0xd1ff
movt r1, 0xd1ff
cmp r0, r1
- beq SHORT G_M13340_IG10
+ beq SHORT G_M13340_IG11
mov r0, r1
mov r1, r4
; gcrRegs +[r1]
@@ -139,7 +144,7 @@ G_M13340_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr
; gcr arg pop 0
bkpt
;; size=58 bbWeight=0 PerfScore 0.00
-G_M13340_IG10: ; bbWeight=0, gcrefRegs=0028 {r3 r5}, byrefRegs=0000 {}, byref
+G_M13340_IG11: ; bbWeight=0, gcrefRegs=0028 {r3 r5}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] +[r3 r5]
ldr r1, [r3+0x04]
; gcrRegs +[r1]
@@ -153,11 +158,11 @@ G_M13340_IG10: ; bbWeight=0, gcrefRegs=0028 {r3 r5}, byrefRegs=0000 {}, b
mov r0, r5
; gcrRegs +[r0]
;; size=18 bbWeight=0 PerfScore 0.00
-G_M13340_IG11: ; bbWeight=0, epilog, nogc, extend
+G_M13340_IG12: ; bbWeight=0, epilog, nogc, extend
pop {r4,r5,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 212, prolog size 10, PerfScore 25.07, instruction count 74, allocated bytes for code 212 (MethodHash=78bdcbe3) for method System.Linq.Expressions.Compiler.CompilerScope:GetVariables(System.Object):System.Collections.Generic.IReadOnlyList`1[System.Linq.Expressions.ParameterExpression] (Tier1)
+; Total bytes of code 216, prolog size 10, PerfScore 24.45, instruction count 76, allocated bytes for code 216 (MethodHash=78bdcbe3) for method System.Linq.Expressions.Compiler.CompilerScope:GetVariables(System.Object):System.Collections.Generic.IReadOnlyList`1[System.Linq.Expressions.ParameterExpression] (Tier1)
; ============================================================
Unwind Info:
@@ -169,7 +174,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 106 (0x0006a) Actual length = 212 (0x0000d4)
+ Function Length : 108 (0x0006c) Actual length = 216 (0x0000d8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
To reproduce these diffs on Windows x86:
To reproduce these diffs on Windows x86:
Details
Improvements/regressions per collection
Collection
Contexts with diffs
Improvements
Regressions
Same size
Improvements (bytes)
Regressions (bytes)
benchmarks.run.linux.arm.checked.mch
0
0
0
0
-0
+0
benchmarks.run_pgo.linux.arm.checked.mch
0
0
0
0
-0
+0
benchmarks.run_tiered.linux.arm.checked.mch
0
0
0
0
-0
+0
coreclr_tests.run.linux.arm.checked.mch
2
2
0
0
-66
+0
libraries.crossgen2.linux.arm.checked.mch
0
0
0
0
-0
+0
libraries.pmi.linux.arm.checked.mch
0
0
0
0
-0
+0
libraries_tests.run.linux.arm.Release.mch
22
1
16
5
-6
+66
librariestestsnotieredcompilation.run.linux.arm.Release.mch
0
0
0
0
-0
+0
realworld.run.linux.arm.checked.mch
0
0
0
0
-0
+0
24
3
16
5
-72
+66
Context information
Collection
Diffed contexts
MinOpts
FullOpts
Missed, base
Missed, diff
benchmarks.run.linux.arm.checked.mch
46,064
5,344
40,720
1,208 (2.54%)
1,428 (3.01%)
benchmarks.run_pgo.linux.arm.checked.mch
155,004
54,949
100,055
3,309 (2.09%)
3,615 (2.28%)
benchmarks.run_tiered.linux.arm.checked.mch
81,649
45,099
36,550
1,122 (1.35%)
1,299 (1.57%)
coreclr_tests.run.linux.arm.checked.mch
471,343
258,996
212,347
7,543 (1.57%)
7,977 (1.66%)
libraries.crossgen2.linux.arm.checked.mch
193,690
14
193,676
0 (0.00%)
0 (0.00%)
libraries.pmi.linux.arm.checked.mch
269,106
6
269,100
7,827 (2.81%)
9,519 (3.42%)
libraries_tests.run.linux.arm.Release.mch
706,403
441,682
264,721
18,888 (2.60%)
20,243 (2.79%)
librariestestsnotieredcompilation.run.linux.arm.Release.mch
272,024
21,565
250,459
33,279 (10.84%)
35,104 (11.43%)
realworld.run.linux.arm.checked.mch
36,071
157
35,914
1,412 (3.73%)
1,739 (4.60%)
2,231,354
827,812
1,403,542
74,588 (3.23%)
80,924 (3.50%)
jit-analyze output
coreclr_tests.run.linux.arm.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 321168304 (overridden on cmd)
Total bytes of diff: 321168238 (overridden on cmd)
Total bytes of delta: -66 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-38 : 312368.dasm (-3.19 % of base)
-28 : 309676.dasm (-2.61 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-38 (-3.19 % of base) : 312368.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-28 (-2.61 % of base) : 309676.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
Top method improvements (percentages):
-38 (-3.19 % of base) : 312368.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-28 (-2.61 % of base) : 309676.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.arm.Release.mch
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 241530954 (overridden on cmd)
Total bytes of diff: 241531014 (overridden on cmd)
Total bytes of delta: 60 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
14 : 533166.dasm (1.11 % of base)
6 : 75708.dasm (0.39 % of base)
6 : 75223.dasm (1.38 % of base)
4 : 179696.dasm (1.74 % of base)
4 : 331642.dasm (0.73 % of base)
4 : 200407.dasm (0.71 % of base)
4 : 659581.dasm (0.85 % of base)
4 : 59769.dasm (0.16 % of base)
4 : 195416.dasm (0.33 % of base)
4 : 726577.dasm (1.89 % of base)
2 : 626940.dasm (0.12 % of base)
2 : 74730.dasm (0.45 % of base)
2 : 12511.dasm (0.45 % of base)
2 : 661316.dasm (0.73 % of base)
2 : 195339.dasm (0.18 % of base)
2 : 601956.dasm (0.30 % of base)
Top file improvements (bytes):
-6 : 52734.dasm (-0.39 % of base)
17 total files with Code Size differences (1 improved, 16 regressed), 5 unchanged.
Top method regressions (bytes):
14 (1.11 % of base) : 533166.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[System.__Canon](System.__Canon,System.String):this (Tier1)
6 (0.39 % of base) : 75708.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
6 (1.38 % of base) : 75223.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
4 (1.74 % of base) : 179696.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
4 (0.85 % of base) : 659581.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuard:Visit(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
4 (0.16 % of base) : 59769.dasm - Microsoft.CodeAnalysis.Options.SolutionOptionSet:GetInternalOptionValue(Microsoft.CodeAnalysis.Options.OptionKey):System.Object:this (Tier1)
4 (0.33 % of base) : 195416.dasm - Microsoft.VisualBasic.CompilerServices.StringType:FromObject(System.Object):System.String (Tier1)
4 (0.71 % of base) : 200407.dasm - ReflectionAbstractionExtensions:DisposeTestClass(Xunit.Abstractions.ITest,System.Object,Xunit.Sdk.IMessageBus,Xunit.Sdk.ExecutionTimer,System.Threading.CancellationTokenSource) (Tier1)
4 (1.89 % of base) : 726577.dasm - System.Linq.Expressions.Compiler.CompilerScope:GetVariables(System.Object):System.Collections.Generic.IReadOnlyList`1[System.Linq.Expressions.ParameterExpression] (Tier1)
4 (0.73 % of base) : 331642.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
2 (0.73 % of base) : 661316.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetTupleCardinality(Microsoft.CodeAnalysis.CSharp.BoundExpression):int (Tier1)
2 (0.18 % of base) : 195339.dasm - Microsoft.VisualBasic.CompilerServices.ShortType:FromObject(System.Object):short (Tier1)
2 (0.45 % of base) : 74730.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
2 (0.45 % of base) : 12511.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
2 (0.30 % of base) : 601956.dasm - System.Text.Json.ReadStack:<JsonPath>g__AppendStackFrame|22_0(System.Text.StringBuilder,byref) (Tier1)
2 (0.12 % of base) : 626940.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
Top method improvements (bytes):
-6 (-0.39 % of base) : 52734.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:LineBreaksAfter(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):int:this (Tier1)
Top method regressions (percentages):
4 (1.89 % of base) : 726577.dasm - System.Linq.Expressions.Compiler.CompilerScope:GetVariables(System.Object):System.Collections.Generic.IReadOnlyList`1[System.Linq.Expressions.ParameterExpression] (Tier1)
4 (1.74 % of base) : 179696.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
6 (1.38 % of base) : 75223.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
14 (1.11 % of base) : 533166.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[System.__Canon](System.__Canon,System.String):this (Tier1)
4 (0.85 % of base) : 659581.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuard:Visit(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
2 (0.73 % of base) : 661316.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetTupleCardinality(Microsoft.CodeAnalysis.CSharp.BoundExpression):int (Tier1)
4 (0.73 % of base) : 331642.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
4 (0.71 % of base) : 200407.dasm - ReflectionAbstractionExtensions:DisposeTestClass(Xunit.Abstractions.ITest,System.Object,Xunit.Sdk.IMessageBus,Xunit.Sdk.ExecutionTimer,System.Threading.CancellationTokenSource) (Tier1)
2 (0.45 % of base) : 74730.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
2 (0.45 % of base) : 12511.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
6 (0.39 % of base) : 75708.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
4 (0.33 % of base) : 195416.dasm - Microsoft.VisualBasic.CompilerServices.StringType:FromObject(System.Object):System.String (Tier1)
2 (0.30 % of base) : 601956.dasm - System.Text.Json.ReadStack:<JsonPath>g__AppendStackFrame|22_0(System.Text.StringBuilder,byref) (Tier1)
2 (0.18 % of base) : 195339.dasm - Microsoft.VisualBasic.CompilerServices.ShortType:FromObject(System.Object):short (Tier1)
4 (0.16 % of base) : 59769.dasm - Microsoft.CodeAnalysis.Options.SolutionOptionSet:GetInternalOptionValue(Microsoft.CodeAnalysis.Options.OptionKey):System.Object:this (Tier1)
2 (0.12 % of base) : 626940.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
Top method improvements (percentages):
-6 (-0.39 % of base) : 52734.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:LineBreaksAfter(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):int:this (Tier1)
17 total methods with Code Size differences (1 improved, 16 regressed).
Diffs are based on 2,289,781 contexts (841,817 MinOpts, 1,447,964 FullOpts).
MISSED contexts: base: 5,093 (0.22%), diff: 11,589 (0.50%)
Overall (+144 bytes)
Collection
Base size (bytes)
Diff size (bytes)
coreclr_tests.run.windows.x86.checked.mch
308,593,818
-53
libraries_tests.run.windows.x86.Release.mch
184,833,802
+197
FullOpts (+144 bytes)
Collection
Base size (bytes)
Diff size (bytes)
coreclr_tests.run.windows.x86.checked.mch
106,922,049
-53
libraries_tests.run.windows.x86.Release.mch
86,502,295
+197
Example diffs
coreclr_tests.run.windows.x86.checked.mch
-27 (-2.59%) : 373234.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
@@ -14,72 +14,71 @@
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Internal.TypeSystem.MethodDesc>
; V03 loc1 [V03,T04] ( 8, 5.68) ref -> [ebp-0x1C] class-hnd exact <Internal.TypeSystem.InstantiatedType>
;* V04 tmp0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.InstantiatedType>
-;* V05 tmp1 [V05,T32] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-; V06 tmp2 [V06,T31] ( 2, 0.82) ref -> ecx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V07 tmp3 [V07,T20] ( 3, 1.64) int -> eax "fgMakeTemp is creating a new local variable"
-; V08 tmp4 [V08,T44] ( 2, 0 ) ref -> esi class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V05 tmp1 [V05,T31] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V06 tmp2 [V06,T30] ( 2, 0.82) ref -> ecx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V07 tmp3 [V07,T19] ( 3, 1.64) int -> eax "fgMakeTemp is creating a new local variable"
+; V08 tmp4 [V08,T43] ( 2, 0 ) ref -> esi class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
; V09 tmp5 [V09,T06] ( 7, 5.06) ref -> edi class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
; V10 tmp6 [V10,T05] ( 14, 5.18) ref -> ebx "guarded devirt return temp"
;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.MethodForInstantiatedType>
-; V12 tmp8 [V12,T10] ( 8, 2.56) ref -> [ebp-0x20] "guarded devirt return temp"
+; V12 tmp8 [V12,T08] ( 8, 2.56) ref -> [ebp-0x20] "guarded devirt return temp"
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V14 tmp10 [V14,T18] ( 4, 1.77) ref -> edi "guarded devirt return temp"
+; V14 tmp10 [V14,T17] ( 4, 1.77) ref -> edi "guarded devirt return temp"
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V16 tmp12 [V16,T17] ( 8, 1.78) ref -> esi "guarded devirt return temp"
+; V16 tmp12 [V16,T16] ( 8, 1.78) ref -> esi "guarded devirt return temp"
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref
-; V19 tmp15 [V19,T28] ( 3, 1.18) int -> ecx
-; V20 tmp16 [V20,T22] ( 3, 1.52) ref -> [ebp-0x24] class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V19 tmp15 [V19,T27] ( 3, 1.18) int -> ecx
+; V20 tmp16 [V20,T21] ( 3, 1.52) ref -> [ebp-0x24] class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V21 tmp17 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V22 tmp18 [V22,T33] ( 3, 0.73) ref -> [ebp-0x28] "guarded devirt return temp"
+; V22 tmp18 [V22,T32] ( 3, 0.73) ref -> [ebp-0x28] "guarded devirt return temp"
;* V23 tmp19 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V24 tmp20 [V24,T34] ( 3, 0.71) ref -> ecx "guarded devirt return temp"
-; V25 tmp21 [V25,T15] ( 5, 2.04) ref -> ecx single-def "guarded devirt arg temp"
+; V24 tmp20 [V24,T33] ( 3, 0.71) ref -> ecx "guarded devirt return temp"
+; V25 tmp21 [V25,T14] ( 5, 2.04) ref -> ecx single-def "guarded devirt arg temp"
;* V26 tmp22 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V27 tmp23 [V27,T36] ( 3, 0.60) ref -> ecx "guarded devirt return temp"
-; V28 tmp24 [V28,T16] ( 5, 1.80) ref -> ecx single-def "guarded devirt arg temp"
+; V27 tmp23 [V27,T35] ( 3, 0.60) ref -> ecx "guarded devirt return temp"
+; V28 tmp24 [V28,T15] ( 5, 1.80) ref -> ecx 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,T14] ( 5, 2.09) ref -> ecx class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V31 tmp27 [V31,T35] ( 3, 0.70) ref -> eax "guarded devirt return temp"
+; V30 tmp26 [V30,T13] ( 5, 2.09) ref -> ecx class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+; V31 tmp27 [V31,T34] ( 3, 0.70) ref -> eax "guarded devirt return 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 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaType>
; V34 tmp30 [V34,T02] ( 5, 5.91) ref -> ecx class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
; V35 tmp31 [V35,T03] ( 5, 5.91) ref -> ecx class-hnd "spilling QMark2" <<unknown class>>
;* V36 tmp32 [V36 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V37 tmp33 [V37,T07] ( 4, 3.72) ref -> edi class-hnd exact single-def "impAppendStmt" <<unknown class>>
-; V38 tmp34 [V38,T13] ( 2, 2.36) int -> [ebp-0x10] spill-single-def "impAppendStmt"
-; V39 tmp35 [V39,T26] ( 4, 1.18) ref -> ecx "guarded devirt return temp"
+; V38 tmp34 [V38,T12] ( 2, 2.36) int -> [ebp-0x10] spill-single-def "impAppendStmt"
+; V39 tmp35 [V39,T25] ( 4, 1.18) ref -> ecx "guarded devirt return temp"
;* V40 tmp36 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V41 tmp37 [V41,T41] ( 2, 0.00) byref -> [ebp-0x2C] spill-single-def "impAppendStmt"
-; V42 tmp38 [V42,T43] ( 3, 0.00) int -> eax "guarded devirt return temp"
-; V43 tmp39 [V43,T40] ( 5, 0.00) ref -> ecx single-def "guarded devirt arg temp"
+; V41 tmp37 [V41,T40] ( 2, 0.00) byref -> [ebp-0x2C] spill-single-def "impAppendStmt"
+; V42 tmp38 [V42,T42] ( 3, 0.00) int -> eax "guarded devirt return temp"
+; V43 tmp39 [V43,T39] ( 5, 0.00) ref -> ecx single-def "guarded devirt arg temp"
;* V44 tmp40 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
;* V45 tmp41 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V46 tmp42 [V46,T27] ( 3, 1.18) ref -> eax class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V46 tmp42 [V46,T26] ( 3, 1.18) ref -> eax class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
;* V47 tmp43 [V47 ] ( 0, 0 ) struct (12) zero-ref "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V48 tmp44 [V48 ] ( 3, 1.69) ref -> [ebp-0x14] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V49 tmp45 [V49,T21] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V50 tmp46 [V50,T09] ( 4, 2.59) ref -> eax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V51 tmp47 [V51,T30] ( 3, 0.82) int -> ecx
-; V52 tmp48 [V52,T29] ( 3, 1.05) ref -> [ebp-0x30] class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V49 tmp45 [V49,T20] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V50 tmp46 [V50,T09] ( 3, 2.45) ref -> eax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V51 tmp47 [V51,T29] ( 3, 0.82) int -> ecx
+; V52 tmp48 [V52,T28] ( 3, 1.05) ref -> [ebp-0x30] class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V53 tmp49 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V54 tmp50 [V54,T37] ( 3, 0.51) ref -> eax "guarded devirt return temp"
+; V54 tmp50 [V54,T36] ( 3, 0.51) ref -> eax "guarded devirt return temp"
;* V55 tmp51 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V56 tmp52 [V56,T38] ( 3, 0.49) ref -> registers "guarded devirt return temp"
-; V57 tmp53 [V57,T23] ( 5, 1.42) ref -> ecx single-def "guarded devirt arg temp"
+; V56 tmp52 [V56,T37] ( 3, 0.49) ref -> registers "guarded devirt return temp"
+; V57 tmp53 [V57,T22] ( 5, 1.42) ref -> ecx 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.EcmaAssembly>
-; V59 tmp55 [V59,T39] ( 3, 0.42) ref -> eax "guarded devirt return temp"
-; V60 tmp56 [V60,T25] ( 5, 1.25) ref -> ecx single-def "guarded devirt arg temp"
+; V59 tmp55 [V59,T38] ( 3, 0.42) ref -> eax "guarded devirt return temp"
+; V60 tmp56 [V60,T24] ( 5, 1.25) ref -> ecx single-def "guarded devirt arg temp"
;* V61 tmp57 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V62 tmp58 [V62,T12] ( 8, 2.45) ref -> ebx single-def "field V36._typicalMethodDef (fldOffset=0x0)" P-INDEP
-; V63 tmp59 [V63,T11] ( 8, 2.45) ref -> esi single-def "field V36._instantiatedType (fldOffset=0x4)" P-INDEP
-; V64 tmp60 [V64,T24] ( 3, 1.27) int -> [ebp-0x18] spill-single-def "field V36._hashcode (fldOffset=0x8)" P-INDEP
+; V62 tmp58 [V62,T11] ( 8, 2.45) ref -> ebx single-def "field V36._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V63 tmp59 [V63,T10] ( 8, 2.45) ref -> esi single-def "field V36._instantiatedType (fldOffset=0x4)" P-INDEP
+; V64 tmp60 [V64,T23] ( 3, 1.27) int -> [ebp-0x18] spill-single-def "field V36._hashcode (fldOffset=0x8)" P-INDEP
;* V65 tmp61 [V65 ] ( 0, 0 ) ref -> zero-ref single-def "field V47._typicalMethodDef (fldOffset=0x0)" P-INDEP
;* V66 tmp62 [V66 ] ( 0, 0 ) ref -> zero-ref single-def "field V47._instantiatedType (fldOffset=0x4)" P-INDEP
;* V67 tmp63 [V67 ] ( 0, 0 ) int -> zero-ref single-def "field V47._hashcode (fldOffset=0x8)" P-INDEP
-; V68 tmp64 [V68,T42] ( 2, 0.00) ref -> edx single-def "argument with side effect"
-; V69 cse0 [V69,T19] ( 3, 1.77) ref -> ecx "CSE - conservative"
-; V70 rat0 [V70,T08] ( 6, 3.27) ref -> ecx class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
+; V68 tmp64 [V68,T41] ( 2, 0.00) ref -> edx single-def "argument with side effect"
+; V69 cse0 [V69,T18] ( 3, 1.77) ref -> ecx "CSE - conservative"
; TEMP_02 ref -> [ebp-0x34]
; TEMP_01 int -> [ebp-0x38]
;
@@ -139,7 +138,7 @@ G_M10698_IG07: ; bbWeight=0.59, gcVars=0000000000000000 {}, gcrefRegs=000
mov edi, gword ptr [eax+0x34]
; gcrRegs +[edi]
cmp dword ptr [ebx], 0xD1FFAB1E
- jne G_M10698_IG56
+ jne G_M10698_IG40
mov edx, gword ptr [ebx+0x08]
; gcrRegs +[edx]
;; size=21 bbWeight=0.59 PerfScore 5.32
@@ -154,15 +153,15 @@ G_M10698_IG09: ; bbWeight=0.58, gcrefRegs=000000CC {edx ebx esi edi}, byr
;; size=4 bbWeight=0.58 PerfScore 0.73
G_M10698_IG10: ; bbWeight=0.37, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref
cmp dword ptr [edi], 0xD1FFAB1E
- jne G_M10698_IG49
+ jne G_M10698_IG50
;; size=12 bbWeight=0.37 PerfScore 1.47
G_M10698_IG11: ; bbWeight=0.34, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [edi+0x38]
; gcrRegs +[ecx]
cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M10698_IG57
+ jne G_M10698_IG41
mov ecx, gword ptr [ecx+0x04]
- jmp G_M10698_IG46
+ jmp G_M10698_IG42
;; size=23 bbWeight=0.34 PerfScore 3.41
G_M10698_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[edx]
@@ -191,7 +190,7 @@ G_M10698_IG14: ; bbWeight=0.22, gcVars=0000000000000010 {V03}, gcrefRegs=
mov gword ptr [ebp-0x20], edx
; GC ptr vars +{V12}
;; size=8 bbWeight=0.22 PerfScore 0.28
-G_M10698_IG15: ; bbWeight=0.59, gcVars=0000000000000410 {V03 V12}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M10698_IG15: ; bbWeight=0.59, gcVars=0000000000000110 {V03 V12}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[edx]
call [<unknown method>]
xor ecx, ecx
@@ -201,14 +200,14 @@ G_M10698_IG15: ; bbWeight=0.59, gcVars=0000000000000410 {V03 V12}, gcrefR
call [<unknown method>]
; gcrRegs -[edi]
cmp dword ptr [esi], 0xD1FFAB1E
- jne G_M10698_IG51
+ jne G_M10698_IG47
;; size=32 bbWeight=0.59 PerfScore 7.83
G_M10698_IG16: ; bbWeight=0.35, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x08]
; gcrRegs +[ecx]
mov ecx, gword ptr [ecx+0x38]
cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M10698_IG59
+ jne G_M10698_IG55
mov eax, gword ptr [ecx+0x04]
; gcrRegs +[eax]
;; size=21 bbWeight=0.35 PerfScore 3.49
@@ -259,11 +258,11 @@ G_M10698_IG19: ; bbWeight=0.59, gcVars=0000000000000000 {}, gcrefRegs=000
mov eax, dword ptr [esi+0x40]
mov dword ptr [ebp-0x10], eax
cmp dword ptr [ebx], 0xD1FFAB1E
- jne G_M10698_IG61
+ jne G_M10698_IG57
mov ecx, gword ptr [ebx+0x10]
; gcrRegs +[ecx]
test ecx, ecx
- je G_M10698_IG60
+ je G_M10698_IG56
;; size=29 bbWeight=0.59 PerfScore 6.06
G_M10698_IG20: ; bbWeight=0.59, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
call [Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int]
@@ -281,7 +280,7 @@ G_M10698_IG20: ; bbWeight=0.59, gcrefRegs=000000CA {ecx ebx esi edi}, byr
call [<unknown method>]
; gcrRegs -[ecx]
test eax, eax
- je G_M10698_IG53
+ je G_M10698_IG49
;; size=38 bbWeight=0.59 PerfScore 10.19
G_M10698_IG21: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ebx esi edi]
@@ -312,7 +311,7 @@ G_M10698_IG24: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=000
cmp dword ptr [ecx], 0xD1FFAB1E
je SHORT G_M10698_IG26
;; size=17 bbWeight=0.00 PerfScore 0.00
-G_M10698_IG25: ; bbWeight=0, gcVars=0000020000000000 {V41}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M10698_IG25: ; bbWeight=0, gcVars=0000010000000000 {V41}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[eax]
mov edx, dword ptr [ecx]
mov edx, dword ptr [edx+0x2C]
@@ -343,22 +342,22 @@ G_M10698_IG28: ; bbWeight=0.41, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
cmp dword ptr [edi], 0xD1FFAB1E
je G_M10698_IG38
cmp dword ptr [ebx], 0xD1FFAB1E
- jne G_M10698_IG65
+ jne G_M10698_IG61
mov esi, gword ptr [ebx+0x08]
;; size=27 bbWeight=0.41 PerfScore 4.09
G_M10698_IG29: ; bbWeight=0.41, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
test esi, esi
- je G_M10698_IG52
+ je G_M10698_IG48
;; size=8 bbWeight=0.41 PerfScore 0.51
G_M10698_IG30: ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
cmp dword ptr [edi], 0xD1FFAB1E
- jne G_M10698_IG54
+ jne G_M10698_IG52
;; size=12 bbWeight=0.25 PerfScore 1.01
G_M10698_IG31: ; bbWeight=0.24, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [edi+0x38]
; gcrRegs +[ecx]
cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M10698_IG66
+ jne G_M10698_IG62
mov eax, gword ptr [ecx+0x04]
; gcrRegs +[eax]
;; size=18 bbWeight=0.24 PerfScore 1.89
@@ -374,7 +373,7 @@ G_M10698_IG33: ; bbWeight=0.21, gcrefRegs=000000CC {edx ebx esi edi}, byr
mov ecx, gword ptr [esi+0x38]
; gcrRegs +[ecx]
cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M10698_IG67
+ jne G_M10698_IG63
mov eax, gword ptr [ecx+0x04]
; gcrRegs +[eax]
;; size=18 bbWeight=0.21 PerfScore 1.66
@@ -407,9 +406,9 @@ G_M10698_IG37: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs -[eax] +[edx esi edi]
mov gword ptr [ebp-0x30], edx
; GC ptr vars +{V52}
- jmp G_M10698_IG55
+ jmp G_M10698_IG53
;; size=8 bbWeight=0.13 PerfScore 0.38
-G_M10698_IG38: ; bbWeight=0.41, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M10698_IG38: ; bbWeight=0.41, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx ebx]
; GC ptr vars -{V52}
mov ecx, esi
@@ -419,74 +418,83 @@ G_M10698_IG38: ; bbWeight=0.41, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
call [eax+0x0C]<unknown method>
; gcrRegs -[ecx] +[eax]
cmp byte ptr [eax], al
- mov ecx, eax
- ; gcrRegs +[ecx]
- test ecx, ecx
...
-26 (-2.50%) : 370295.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
@@ -14,72 +14,71 @@
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Internal.TypeSystem.MethodDesc>
; V03 loc1 [V03,T02] ( 8, 5.61) ref -> [ebp-0x1C] class-hnd exact <Internal.TypeSystem.InstantiatedType>
;* V04 tmp0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.InstantiatedType>
-;* V05 tmp1 [V05,T32] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-; V06 tmp2 [V06,T31] ( 2, 0.89) ref -> ecx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V07 tmp3 [V07,T17] ( 3, 1.77) int -> eax "fgMakeTemp is creating a new local variable"
-; V08 tmp4 [V08,T44] ( 2, 0 ) ref -> esi class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
+;* V05 tmp1 [V05,T31] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V06 tmp2 [V06,T30] ( 2, 0.89) ref -> ecx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V07 tmp3 [V07,T16] ( 3, 1.77) int -> eax "fgMakeTemp is creating a new local variable"
+; V08 tmp4 [V08,T43] ( 2, 0 ) ref -> esi class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayMethod>
; V09 tmp5 [V09,T06] ( 7, 4.73) ref -> edi class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
; V10 tmp6 [V10,T05] ( 14, 5.11) ref -> ebx "guarded devirt return temp"
;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V12 tmp8 [V12,T11] ( 8, 2.43) ref -> [ebp-0x20] "guarded devirt return temp"
+; V12 tmp8 [V12,T10] ( 8, 2.43) ref -> [ebp-0x20] "guarded devirt return temp"
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V14 tmp10 [V14,T19] ( 4, 1.67) ref -> edi "guarded devirt return temp"
+; V14 tmp10 [V14,T18] ( 4, 1.67) ref -> edi "guarded devirt return temp"
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V16 tmp12 [V16,T16] ( 8, 1.94) ref -> esi "guarded devirt return temp"
+; V16 tmp12 [V16,T15] ( 8, 1.94) ref -> esi "guarded devirt return temp"
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref
-; V19 tmp15 [V19,T28] ( 3, 1.11) int -> ecx
-; V20 tmp16 [V20,T23] ( 3, 1.36) ref -> [ebp-0x24] class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V19 tmp15 [V19,T27] ( 3, 1.11) int -> ecx
+; V20 tmp16 [V20,T22] ( 3, 1.36) ref -> [ebp-0x24] class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V21 tmp17 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V22 tmp18 [V22,T34] ( 3, 0.68) ref -> [ebp-0x28] "guarded devirt return temp"
+; V22 tmp18 [V22,T33] ( 3, 0.68) ref -> [ebp-0x28] "guarded devirt return temp"
;* V23 tmp19 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V24 tmp20 [V24,T35] ( 3, 0.65) ref -> ecx "guarded devirt return temp"
-; V25 tmp21 [V25,T15] ( 5, 1.96) ref -> ecx single-def "guarded devirt arg temp"
+; V24 tmp20 [V24,T34] ( 3, 0.65) ref -> ecx "guarded devirt return temp"
+; V25 tmp21 [V25,T14] ( 5, 1.96) ref -> ecx single-def "guarded devirt arg temp"
;* V26 tmp22 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V27 tmp23 [V27,T38] ( 3, 0.50) ref -> ecx "guarded devirt return temp"
-; V28 tmp24 [V28,T22] ( 5, 1.49) ref -> ecx single-def "guarded devirt arg temp"
+; V27 tmp23 [V27,T37] ( 3, 0.50) ref -> ecx "guarded devirt return temp"
+; V28 tmp24 [V28,T21] ( 5, 1.49) ref -> ecx 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,T10] ( 5, 2.61) ref -> ecx class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V31 tmp27 [V31,T33] ( 3, 0.87) ref -> eax "guarded devirt return temp"
+; V30 tmp26 [V30,T09] ( 5, 2.61) ref -> ecx class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+; V31 tmp27 [V31,T32] ( 3, 0.87) ref -> eax "guarded devirt return 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 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Internal.TypeSystem.Ecma.EcmaType>
; V34 tmp30 [V34,T03] ( 5, 5.57) ref -> ecx class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
; V35 tmp31 [V35,T04] ( 5, 5.57) ref -> ecx class-hnd "spilling QMark2" <<unknown class>>
;* V36 tmp32 [V36 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
-; V37 tmp33 [V37,T08] ( 4, 3.51) ref -> edi class-hnd exact single-def "impAppendStmt" <<unknown class>>
-; V38 tmp34 [V38,T14] ( 2, 2.23) int -> [ebp-0x10] spill-single-def "impAppendStmt"
-; V39 tmp35 [V39,T26] ( 4, 1.11) ref -> ecx "guarded devirt return temp"
+; V37 tmp33 [V37,T07] ( 4, 3.51) ref -> edi class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V38 tmp34 [V38,T13] ( 2, 2.23) int -> [ebp-0x10] spill-single-def "impAppendStmt"
+; V39 tmp35 [V39,T25] ( 4, 1.11) ref -> ecx "guarded devirt return temp"
;* V40 tmp36 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaMethod>
-; V41 tmp37 [V41,T41] ( 2, 0.00) byref -> [ebp-0x2C] spill-single-def "impAppendStmt"
-; V42 tmp38 [V42,T43] ( 3, 0.00) int -> eax "guarded devirt return temp"
-; V43 tmp39 [V43,T40] ( 5, 0.00) ref -> ecx single-def "guarded devirt arg temp"
+; V41 tmp37 [V41,T40] ( 2, 0.00) byref -> [ebp-0x2C] spill-single-def "impAppendStmt"
+; V42 tmp38 [V42,T42] ( 3, 0.00) int -> eax "guarded devirt return temp"
+; V43 tmp39 [V43,T39] ( 5, 0.00) ref -> ecx single-def "guarded devirt arg temp"
;* V44 tmp40 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
;* V45 tmp41 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V46 tmp42 [V46,T27] ( 3, 1.11) ref -> eax class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V46 tmp42 [V46,T26] ( 3, 1.11) ref -> eax class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
;* V47 tmp43 [V47 ] ( 0, 0 ) struct (12) zero-ref "Inlining Arg" <Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey>
; V48 tmp44 [V48 ] ( 3, 1.59) ref -> [ebp-0x14] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Internal.TypeSystem.MethodForInstantiatedType>
-;* V49 tmp45 [V49,T18] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V50 tmp46 [V50,T09] ( 4, 2.86) ref -> eax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V51 tmp47 [V51,T30] ( 3, 0.89) int -> ecx
-; V52 tmp48 [V52,T29] ( 3, 1.08) ref -> [ebp-0x30] class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V49 tmp45 [V49,T17] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V50 tmp46 [V50,T08] ( 3, 2.66) ref -> eax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V51 tmp47 [V51,T29] ( 3, 0.89) int -> ecx
+; V52 tmp48 [V52,T28] ( 3, 1.08) ref -> [ebp-0x30] class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
;* V53 tmp49 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V54 tmp50 [V54,T36] ( 3, 0.54) ref -> eax "guarded devirt return temp"
+; V54 tmp50 [V54,T35] ( 3, 0.54) ref -> eax "guarded devirt return temp"
;* V55 tmp51 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
-; V56 tmp52 [V56,T37] ( 3, 0.52) ref -> registers "guarded devirt return temp"
-; V57 tmp53 [V57,T21] ( 5, 1.56) ref -> ecx single-def "guarded devirt arg temp"
+; V56 tmp52 [V56,T36] ( 3, 0.52) ref -> registers "guarded devirt return temp"
+; V57 tmp53 [V57,T20] ( 5, 1.56) ref -> ecx 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.EcmaAssembly>
-; V59 tmp55 [V59,T39] ( 3, 0.39) ref -> eax "guarded devirt return temp"
-; V60 tmp56 [V60,T25] ( 5, 1.18) ref -> ecx single-def "guarded devirt arg temp"
+; V59 tmp55 [V59,T38] ( 3, 0.39) ref -> eax "guarded devirt return temp"
+; V60 tmp56 [V60,T24] ( 5, 1.18) ref -> ecx single-def "guarded devirt arg temp"
;* V61 tmp57 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaAssembly>
-; V62 tmp58 [V62,T13] ( 8, 2.31) ref -> ebx single-def "field V36._typicalMethodDef (fldOffset=0x0)" P-INDEP
-; V63 tmp59 [V63,T12] ( 8, 2.32) ref -> esi single-def "field V36._instantiatedType (fldOffset=0x4)" P-INDEP
-; V64 tmp60 [V64,T24] ( 3, 1.20) int -> [ebp-0x18] spill-single-def "field V36._hashcode (fldOffset=0x8)" P-INDEP
+; V62 tmp58 [V62,T12] ( 8, 2.31) ref -> ebx single-def "field V36._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V63 tmp59 [V63,T11] ( 8, 2.32) ref -> esi single-def "field V36._instantiatedType (fldOffset=0x4)" P-INDEP
+; V64 tmp60 [V64,T23] ( 3, 1.20) int -> [ebp-0x18] spill-single-def "field V36._hashcode (fldOffset=0x8)" P-INDEP
;* V65 tmp61 [V65 ] ( 0, 0 ) ref -> zero-ref single-def "field V47._typicalMethodDef (fldOffset=0x0)" P-INDEP
;* V66 tmp62 [V66 ] ( 0, 0 ) ref -> zero-ref single-def "field V47._instantiatedType (fldOffset=0x4)" P-INDEP
;* V67 tmp63 [V67 ] ( 0, 0 ) int -> zero-ref single-def "field V47._hashcode (fldOffset=0x8)" P-INDEP
-; V68 tmp64 [V68,T42] ( 2, 0.00) ref -> edx single-def "argument with side effect"
-; V69 cse0 [V69,T20] ( 3, 1.67) ref -> ecx "CSE - conservative"
-; V70 rat0 [V70,T07] ( 6, 3.54) ref -> ecx class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
+; V68 tmp64 [V68,T41] ( 2, 0.00) ref -> edx single-def "argument with side effect"
+; V69 cse0 [V69,T19] ( 3, 1.67) ref -> ecx "CSE - conservative"
; TEMP_02 ref -> [ebp-0x34]
; TEMP_01 int -> [ebp-0x38]
;
@@ -139,7 +138,7 @@ G_M10698_IG07: ; bbWeight=0.56, gcVars=0000000000000000 {}, gcrefRegs=000
mov edi, gword ptr [eax+0x34]
; gcrRegs +[edi]
cmp dword ptr [ebx], 0xD1FFAB1E
- jne G_M10698_IG57
+ jne G_M10698_IG41
mov edx, gword ptr [ebx+0x08]
; gcrRegs +[edx]
;; size=21 bbWeight=0.56 PerfScore 5.02
@@ -154,18 +153,18 @@ G_M10698_IG09: ; bbWeight=0.54, gcrefRegs=000000CC {edx ebx esi edi}, byr
test edx, edx
je SHORT G_M10698_IG12
;; size=7 bbWeight=0.54 PerfScore 1.22
-G_M10698_IG10: ; bbWeight=0.34, gcVars=0000000000000804 {V03 V12}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M10698_IG10: ; bbWeight=0.34, gcVars=0000000000000404 {V03 V12}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[edx]
cmp dword ptr [edi], 0xD1FFAB1E
- jne G_M10698_IG44
+ jne G_M10698_IG45
;; size=12 bbWeight=0.34 PerfScore 1.36
G_M10698_IG11: ; bbWeight=0.33, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [edi+0x38]
; gcrRegs +[ecx]
cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M10698_IG58
+ jne G_M10698_IG42
mov ecx, gword ptr [ecx+0x04]
- jmp G_M10698_IG42
+ jmp G_M10698_IG43
;; size=23 bbWeight=0.33 PerfScore 3.26
G_M10698_IG12: ; bbWeight=0.27, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
@@ -200,7 +199,7 @@ G_M10698_IG15: ; bbWeight=0.22, gcVars=0000000000000004 {V03}, gcrefRegs=
mov gword ptr [ebp-0x20], edx
; GC ptr vars +{V12}
;; size=8 bbWeight=0.22 PerfScore 0.27
-G_M10698_IG16: ; bbWeight=0.56, gcVars=0000000000000804 {V03 V12}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M10698_IG16: ; bbWeight=0.56, gcVars=0000000000000404 {V03 V12}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[edx]
call [<unknown method>]
xor ecx, ecx
@@ -210,14 +209,14 @@ G_M10698_IG16: ; bbWeight=0.56, gcVars=0000000000000804 {V03 V12}, gcrefR
call [<unknown method>]
; gcrRegs -[edi]
cmp dword ptr [esi], 0xD1FFAB1E
- jne G_M10698_IG51
+ jne G_M10698_IG49
;; size=32 bbWeight=0.56 PerfScore 7.38
G_M10698_IG17: ; bbWeight=0.43, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x08]
; gcrRegs +[ecx]
mov ecx, gword ptr [ecx+0x38]
cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M10698_IG60
+ jne G_M10698_IG56
mov eax, gword ptr [ecx+0x04]
; gcrRegs +[eax]
;; size=21 bbWeight=0.43 PerfScore 4.35
@@ -268,11 +267,11 @@ G_M10698_IG20: ; bbWeight=0.56, gcVars=0000000000000000 {}, gcrefRegs=000
mov eax, dword ptr [esi+0x40]
mov dword ptr [ebp-0x10], eax
cmp dword ptr [ebx], 0xD1FFAB1E
- jne G_M10698_IG62
+ jne G_M10698_IG58
mov ecx, gword ptr [ebx+0x10]
; gcrRegs +[ecx]
test ecx, ecx
- je G_M10698_IG61
+ je G_M10698_IG57
;; size=29 bbWeight=0.56 PerfScore 5.71
G_M10698_IG21: ; bbWeight=0.56, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
call [Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int]
@@ -290,7 +289,7 @@ G_M10698_IG21: ; bbWeight=0.56, gcrefRegs=000000CA {ecx ebx esi edi}, byr
call [<unknown method>]
; gcrRegs -[ecx]
test eax, eax
- je G_M10698_IG53
+ je G_M10698_IG51
;; size=38 bbWeight=0.56 PerfScore 9.61
G_M10698_IG22: ; bbWeight=0.47, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ebx esi edi]
@@ -321,7 +320,7 @@ G_M10698_IG25: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=000
cmp dword ptr [ecx], 0xD1FFAB1E
je SHORT G_M10698_IG27
;; size=17 bbWeight=0.00 PerfScore 0.00
-G_M10698_IG26: ; bbWeight=0, gcVars=0000020000000000 {V41}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M10698_IG26: ; bbWeight=0, gcVars=0000010000000000 {V41}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[eax]
mov edx, dword ptr [ecx]
mov edx, dword ptr [edx+0x2C]
@@ -352,22 +351,22 @@ G_M10698_IG29: ; bbWeight=0.44, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
cmp dword ptr [edi], 0xD1FFAB1E
je SHORT G_M10698_IG39
cmp dword ptr [ebx], 0xD1FFAB1E
- jne G_M10698_IG66
+ jne G_M10698_IG62
mov esi, gword ptr [ebx+0x08]
;; size=23 bbWeight=0.44 PerfScore 4.43
G_M10698_IG30: ; bbWeight=0.44, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
test esi, esi
- je G_M10698_IG52
+ je G_M10698_IG48
;; size=8 bbWeight=0.44 PerfScore 0.55
G_M10698_IG31: ; bbWeight=0.27, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
cmp dword ptr [edi], 0xD1FFAB1E
- jne G_M10698_IG55
+ jne G_M10698_IG53
;; size=12 bbWeight=0.27 PerfScore 1.08
G_M10698_IG32: ; bbWeight=0.26, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [edi+0x38]
; gcrRegs +[ecx]
cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M10698_IG67
+ jne G_M10698_IG63
mov eax, gword ptr [ecx+0x04]
; gcrRegs +[eax]
;; size=18 bbWeight=0.26 PerfScore 2.07
@@ -379,13 +378,13 @@ G_M10698_IG33: ; bbWeight=0.26, gcrefRegs=000000C9 {eax ebx esi edi}, byr
G_M10698_IG34: ; bbWeight=0.27, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
cmp dword ptr [esi], 0xD1FFAB1E
- jne G_M10698_IG54
+ jne G_M10698_IG52
;; size=12 bbWeight=0.27 PerfScore 1.08
G_M10698_IG35: ; bbWeight=0.20, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x38]
; gcrRegs +[ecx]
cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M10698_IG56
+ jne G_M10698_IG54
mov eax, gword ptr [ecx+0x04]
; gcrRegs +[eax]
;; size=18 bbWeight=0.20 PerfScore 1.58
@@ -414,7 +413,7 @@ G_M10698_IG38: ; bbWeight=0.44, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0.44 PerfScore 1.55
-G_M10698_IG39: ; bbWeight=0.44, gcVars=0000000000000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M10698_IG39: ; bbWeight=0.44, gcVars=0000000000000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax ebx] +[esi edi]
...
+0 (0.00%) : 373261.dasm - Internal.JitInterface.JitObjectComparer:GetHashCode(System.Object):int:this (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Internal.JitInterface.JitObjectComparer>
-; V01 arg1 [V01,T00] ( 9, 6.20) ref -> esi class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 9, 6.15) ref -> esi class-hnd single-def <System.Object>
; V02 loc0 [V02,T03] ( 3, 2 ) ref -> ecx class-hnd single-def <<unknown class>>
; V03 tmp0 [V03,T02] ( 4, 2.54) int -> eax "guarded devirt return temp"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaType>
@@ -30,14 +30,31 @@ G_M9793_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov ecx, esi
; gcrRegs +[ecx]
test ecx, ecx
- je SHORT G_M9793_IG06
+ je SHORT G_M9793_IG05
;; size=6 bbWeight=1 PerfScore 1.50
G_M9793_IG03: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [ecx], 0xD1FFAB1E
- je SHORT G_M9793_IG05
+ jne SHORT G_M9793_IG07
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M9793_IG04: ; bbWeight=0.19, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M9793_IG04: ; bbWeight=0.35, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
+ xor ecx, ecx
+ ; gcrRegs +[ecx]
+ ;; size=2 bbWeight=0.35 PerfScore 0.09
+G_M9793_IG05: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ test ecx, ecx
+ jne SHORT G_M9793_IG11
+ cmp dword ptr [esi], 0xD1FFAB1E
+ jne SHORT G_M9793_IG09
+ ;; size=12 bbWeight=1 PerfScore 5.25
+G_M9793_IG06: ; bbWeight=0.54, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ecx]
+ mov eax, dword ptr [esi+0x50]
+ test eax, eax
+ je SHORT G_M9793_IG08
+ jmp SHORT G_M9793_IG10
+ ;; size=9 bbWeight=0.54 PerfScore 2.83
+G_M9793_IG07: ; bbWeight=0.15, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edx, esi
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; <unknown class>
@@ -45,27 +62,10 @@ G_M9793_IG04: ; bbWeight=0.19, gcrefRegs=00000040 {esi}, byrefRegs=000000
; gcrRegs -[edx] +[eax]
mov ecx, eax
; gcrRegs +[ecx]
- jmp SHORT G_M9793_IG06
- ;; size=16 bbWeight=0.19 PerfScore 0.73
-G_M9793_IG05: ; bbWeight=0.30, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax ecx]
- xor ecx, ecx
- ; gcrRegs +[ecx]
- ;; size=2 bbWeight=0.30 PerfScore 0.08
-G_M9793_IG06: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
- test ecx, ecx
- jne SHORT G_M9793_IG11
- cmp dword ptr [esi], 0xD1FFAB1E
- jne SHORT G_M9793_IG09
- ;; size=12 bbWeight=1 PerfScore 5.25
-G_M9793_IG07: ; bbWeight=0.54, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx]
- mov eax, dword ptr [esi+0x50]
- test eax, eax
- je SHORT G_M9793_IG08
- jmp SHORT G_M9793_IG10
- ;; size=9 bbWeight=0.54 PerfScore 2.83
+ jmp SHORT G_M9793_IG05
+ ;; size=16 bbWeight=0.15 PerfScore 0.56
G_M9793_IG08: ; bbWeight=0.54, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax ecx]
mov ecx, esi
; gcrRegs +[ecx]
call [Internal.TypeSystem.Ecma.EcmaType:InitializeHashCode():int:this]
@@ -97,6 +97,6 @@ G_M9793_IG12: ; bbWeight=0, epilog, nogc, extend
ret
;; size=3 bbWeight=0 PerfScore 0.00
-; Total bytes of code 91, prolog size 4, PerfScore 23.06, instruction count 37, allocated bytes for code 91 (MethodHash=f3bed9be) for method Internal.JitInterface.JitObjectComparer:GetHashCode(System.Object):int:this (Tier1)
+; Total bytes of code 91, prolog size 4, PerfScore 22.91, instruction count 37, allocated bytes for code 91 (MethodHash=f3bed9be) for method Internal.JitInterface.JitObjectComparer:GetHashCode(System.Object):int:this (Tier1)
; ============================================================
libraries_tests.run.windows.x86.Release.mch
-12 (-0.99%) : 385379.dasm - System.Xml.Serialization.XmlSerializationWriter:WritePotentiallyReferencingElement(System.String,System.String,System.Object,System.Type,ubyte,ubyte):this (Tier1)
@@ -12,7 +12,7 @@
; V00 this [V00,T00] ( 20, 4.60) ref -> esi this class-hnd single-def <System.Xml.Serialization.XmlSerializationWriter>
; V01 arg1 [V01,T02] ( 9, 3.21) ref -> edi class-hnd single-def <System.String>
; V02 arg2 [V02,T14] ( 5, 1.00) ref -> [ebp+0x18] class-hnd single-def <System.String>
-; V03 arg3 [V03,T05] ( 11, 4.59) ref -> ebx class-hnd single-def <System.Object>
+; V03 arg3 [V03,T05] ( 11, 4.54) ref -> ebx class-hnd single-def <System.Object>
; V04 arg4 [V04,T19] ( 2, 0.75) ref -> [ebp+0x10] class-hnd single-def <System.Type>
; V05 arg5 [V05,T20] ( 1, 0.75) ubyte -> [ebp+0x0C] single-def
; V06 arg6 [V06,T27] ( 3, 0.25) ubyte -> [ebp+0x08] single-def
@@ -86,7 +86,7 @@ G_M43184_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=27 bbWeight=1 PerfScore 9.25
G_M43184_IG02: ; bbWeight=1, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref
test ebx, ebx
- je G_M43184_IG62
+ je G_M43184_IG59
;; size=8 bbWeight=1 PerfScore 1.25
G_M43184_IG03: ; bbWeight=0.96, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov gword ptr [ebp+0x18], eax
@@ -136,35 +136,86 @@ G_M43184_IG06: ; bbWeight=0.96, gcrefRegs=000000C9 {eax ebx esi edi}, byr
call [<unknown method>]
; gcrRegs -[ecx]
;; size=8 bbWeight=0.96 PerfScore 3.11
-G_M43184_IG07: ; bbWeight=0.96, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M43184_IG07: ; bbWeight=0.96, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref
mov eax, dword ptr [eax+0x48]
; gcrRegs -[eax]
test eax, eax
- je SHORT G_M43184_IG12
- ;; size=7 bbWeight=0.96 PerfScore 3.11
+ je G_M43184_IG20
+ ;; size=11 bbWeight=0.96 PerfScore 3.11
G_M43184_IG08: ; bbWeight=0.96, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
cmp eax, 1
- jne G_M43184_IG44
+ jne G_M43184_IG41
;; size=9 bbWeight=0.96 PerfScore 1.20
-G_M43184_IG09: ; bbWeight=0.75, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M43184_IG09: ; bbWeight=0.75, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, ebx
; gcrRegs +[edx]
cmp dword ptr [edx], 0xD1FFAB1E
- je G_M43184_IG44
+ je G_M43184_IG41
cmp gword ptr [ebp-0x18], 0xD1FFAB1E
- je G_M43184_IG44
+ je G_M43184_IG41
mov ecx, ebx
; gcrRegs +[ecx]
test ecx, ecx
- je G_M43184_IG36
- ;; size=37 bbWeight=0.75 PerfScore 6.56
-G_M43184_IG10: ; bbWeight=0.38, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M43184_IG12
+ ;; size=33 bbWeight=0.75 PerfScore 6.56
+G_M43184_IG10: ; bbWeight=0.38, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx]
cmp dword ptr [ecx], 0xD1FFAB1E
- je G_M43184_IG35
- ;; size=12 bbWeight=0.38 PerfScore 1.50
-G_M43184_IG11: ; bbWeight=0.18, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+ jne SHORT G_M43184_IG18
+ ;; size=8 bbWeight=0.38 PerfScore 1.50
+G_M43184_IG11: ; bbWeight=0.26, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
+ xor ecx, ecx
+ ; gcrRegs +[ecx]
+ ;; size=2 bbWeight=0.26 PerfScore 0.06
+G_M43184_IG12: ; bbWeight=0.75, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ test ecx, ecx
+ jne G_M43184_IG41
+ mov eax, gword ptr [ebp-0x18]
+ ; gcrRegs +[eax]
+ cmp eax, 0xD1FFAB1E
+ je SHORT G_M43184_IG16
+ cmp byte ptr [ebp+0x0C], 0
+ je SHORT G_M43184_IG17
+ ;; size=24 bbWeight=0.75 PerfScore 4.88
+G_M43184_IG13: ; bbWeight=0.54, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ecx]
+ cmp gword ptr [esi+0x10], 0
+ jne G_M43184_IG79
+ ;; size=10 bbWeight=0.54 PerfScore 2.17
+G_M43184_IG14: ; bbWeight=0.54, gcVars=0000000000000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax]
+ ; GC ptr vars -{V07}
+ push gword ptr [ebp+0x18]
+ push ebx
+ push gword ptr [ebp+0x10]
+ mov ecx, esi
+ ; gcrRegs +[ecx]
+ mov edx, edi
+ ; gcrRegs +[edx]
+ call [<unknown method>]
+ ; gcrRegs -[ecx edx ebx esi edi]
+ ;; size=17 bbWeight=0.54 PerfScore 3.52
+G_M43184_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ lea esp, [ebp-0x0C]
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret 20
+ ;; size=10 bbWeight=1 PerfScore 4.50
+G_M43184_IG16: ; bbWeight=0.38, gcVars=0000000000000008 {V07}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs +[eax ebx esi edi]
+ ; GC ptr vars +{V03 V07}
+ jmp G_M43184_IG41
+ ;; size=5 bbWeight=0.38 PerfScore 0.75
+G_M43184_IG17: ; bbWeight=0.21, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ cmp byte ptr [esi+0x34], 0
+ je SHORT G_M43184_IG19
+ jmp SHORT G_M43184_IG13
+ ;; size=8 bbWeight=0.21 PerfScore 1.25
+G_M43184_IG18: ; bbWeight=0.12, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
mov edx, ebx
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; <unknown class>
@@ -172,10 +223,28 @@ G_M43184_IG11: ; bbWeight=0.18, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
; gcrRegs -[edx] +[eax]
mov ecx, eax
; gcrRegs +[ecx]
- jmp G_M43184_IG36
- ;; size=19 bbWeight=0.18 PerfScore 0.66
-G_M43184_IG12: ; bbWeight=0.08, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax ecx]
+ jmp SHORT G_M43184_IG12
+ ;; size=16 bbWeight=0.12 PerfScore 0.45
+G_M43184_IG19: ; bbWeight=0.21, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ecx]
+ test edi, edi
+ je G_M43184_IG73
+ push gword ptr [ebp+0x18]
+ push ebx
+ movzx ecx, byte ptr [ebp+0x08]
+ push ecx
+ mov ecx, esi
+ ; gcrRegs +[ecx]
+ mov edx, edi
+ ; gcrRegs +[edx]
+ ; GC ptr vars -{V03 V07}
+ call [System.Xml.Serialization.XmlSerializationWriter:WriteReferencingElement(System.String,System.String,System.Object,ubyte):this]
+ ; gcrRegs -[eax ecx edx ebx esi edi]
+ jmp SHORT G_M43184_IG15
+ ;; size=29 bbWeight=0.21 PerfScore 2.24
+G_M43184_IG20: ; bbWeight=0.08, gcVars=0000000000000008 {V07}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs +[ebx esi edi]
+ ; GC ptr vars +{V03 V07}
mov edx, gword ptr [ebp-0x18]
; gcrRegs +[edx]
mov eax, edx
@@ -184,94 +253,95 @@ G_M43184_IG12: ; bbWeight=0.08, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
; GC ptr vars +{V26}
mov ecx, eax
; gcrRegs +[ecx]
+ ; GC ptr vars -{V03}
call [System.RuntimeType:get_IsActualEnum():ubyte:this]
; gcrRegs -[eax ecx edx]
test eax, eax
- jne G_M43184_IG64
+ jne G_M43184_IG61
;; size=24 bbWeight=0.08 PerfScore 0.53
-G_M43184_IG13: ; bbWeight=0.08, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M43184_IG21: ; bbWeight=0.08, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx]
cmp ecx, 0xD1FFAB1E
- je G_M43184_IG72
+ je G_M43184_IG71
;; size=15 bbWeight=0.08 PerfScore 0.18
-G_M43184_IG14: ; bbWeight=0.08, gcVars=0000000000000008 {V07}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M43184_IG22: ; bbWeight=0.08, gcVars=0000000000000008 {V07}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V26}
cmp ecx, 0xD1FFAB1E
- je G_M43184_IG66
+ je G_M43184_IG63
;; size=12 bbWeight=0.08 PerfScore 0.10
-G_M43184_IG15: ; bbWeight=0.07, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
- cmp ecx, 0xD1FFAB1E
- je G_M43184_IG71
- ;; size=12 bbWeight=0.07 PerfScore 0.09
-G_M43184_IG16: ; bbWeight=0.07, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M43184_IG23: ; bbWeight=0.07, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
cmp ecx, 0xD1FFAB1E
je G_M43184_IG70
;; size=12 bbWeight=0.07 PerfScore 0.09
-G_M43184_IG17: ; bbWeight=0.07, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
- cmp ecx, 0xD1FFAB1E
- je G_M43184_IG63
- ;; size=12 bbWeight=0.07 PerfScore 0.08
-G_M43184_IG18: ; bbWeight=0.05, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
- cmp ecx, 0xD1FFAB1E
- je G_M43184_IG67
- ;; size=12 bbWeight=0.05 PerfScore 0.07
-G_M43184_IG19: ; bbWeight=0.05, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M43184_IG24: ; bbWeight=0.07, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
cmp ecx, 0xD1FFAB1E
je G_M43184_IG69
- ;; size=12 bbWeight=0.05 PerfScore 0.06
-G_M43184_IG20: ; bbWeight=0.04, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+ ;; size=12 bbWeight=0.07 PerfScore 0.09
+G_M43184_IG25: ; bbWeight=0.07, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
cmp ecx, 0xD1FFAB1E
- je G_M43184_IG59
+ je G_M43184_IG60
+ ;; size=12 bbWeight=0.07 PerfScore 0.08
+G_M43184_IG26: ; bbWeight=0.05, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+ cmp ecx, 0xD1FFAB1E
+ je G_M43184_IG64
+ ;; size=12 bbWeight=0.05 PerfScore 0.07
+G_M43184_IG27: ; bbWeight=0.05, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+ cmp ecx, 0xD1FFAB1E
+ je G_M43184_IG68
+ ;; size=12 bbWeight=0.05 PerfScore 0.06
+G_M43184_IG28: ; bbWeight=0.04, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+ cmp ecx, 0xD1FFAB1E
+ je G_M43184_IG67
;; size=12 bbWeight=0.04 PerfScore 0.06
-G_M43184_IG21: ; bbWeight=0.04, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M43184_IG29: ; bbWeight=0.04, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+ cmp ecx, 0xD1FFAB1E
+ je G_M43184_IG66
+ ;; size=12 bbWeight=0.04 PerfScore 0.05
+G_M43184_IG30: ; bbWeight=0.04, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
cmp ecx, 0xD1FFAB1E
je G_M43184_IG56
;; size=12 bbWeight=0.04 PerfScore 0.05
-G_M43184_IG22: ; bbWeight=0.04, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M43184_IG31: ; bbWeight=0.04, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
cmp ecx, 0xD1FFAB1E
- je G_M43184_IG54
+ je G_M43184_IG53
;; size=12 bbWeight=0.04 PerfScore 0.05
-G_M43184_IG23: ; bbWeight=0.04, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M43184_IG32: ; bbWeight=0.04, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
cmp ecx, 0xD1FFAB1E
- je G_M43184_IG50
+ je G_M43184_IG51
;; size=12 bbWeight=0.04 PerfScore 0.05
-G_M43184_IG24: ; bbWeight=0.04, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M43184_IG33: ; bbWeight=0.03, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
cmp ecx, 0xD1FFAB1E
- je G_M43184_IG46
- ;; size=12 bbWeight=0.04 PerfScore 0.05
-G_M43184_IG25: ; bbWeight=0.03, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
- cmp ecx, 0xD1FFAB1E
- je G_M43184_IG43
+ je G_M43184_IG47
;; size=12 bbWeight=0.03 PerfScore 0.04
-G_M43184_IG26: ; bbWeight=0.03, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
...
+0 (0.00%) : 610704.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:ShouldSkipSyntaxNodeAnalysis(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol):ubyte:this (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel>
-; V01 arg1 [V01,T00] ( 7, 4.04) ref -> esi class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
+; V01 arg1 [V01,T00] ( 7, 4.00) ref -> esi class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
; V02 arg2 [V02,T06] ( 3, 2 ) ref -> ecx class-hnd single-def <Microsoft.CodeAnalysis.ISymbol>
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref single-def
; V04 tmp0 [V04,T02] ( 3, 3.14) ref -> eax class-hnd "spilling QMark2" <<unknown class>>
@@ -37,7 +37,7 @@ G_M39093_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=10 bbWeight=1 PerfScore 4.50
G_M39093_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [ecx], 0xD1FFAB1E
- jne SHORT G_M39093_IG13
+ jne SHORT G_M39093_IG18
;; size=8 bbWeight=1 PerfScore 4.00
G_M39093_IG03: ; bbWeight=0.57, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [ecx+0x04]
@@ -78,61 +78,61 @@ G_M39093_IG10: ; bbWeight=0.63, gcVars=00000000 {}, gcrefRegs=00000040 {e
mov eax, esi
; gcrRegs +[eax]
test eax, eax
- je SHORT G_M39093_IG15
+ je SHORT G_M39093_IG13
;; size=6 bbWeight=0.63 PerfScore 0.94
G_M39093_IG11: ; bbWeight=0.31, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [eax], 0xD1FFAB1E
- je SHORT G_M39093_IG14
+ jne SHORT G_M39093_IG19
;; size=8 bbWeight=0.31 PerfScore 1.26
-G_M39093_IG12: ; bbWeight=0.13, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M39093_IG12: ; bbWeight=0.22, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
- mov edx, esi
- ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[edx] +[eax]
- jmp SHORT G_M39093_IG15
- ;; size=14 bbWeight=0.13 PerfScore 0.46
-G_M39093_IG13: ; bbWeight=0.43, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax] +[ecx]
- call [<unknown method>]
- ; gcrRegs -[ecx]
- mov edi, eax
- jmp SHORT G_M39093_IG06
- ;; size=10 bbWeight=0.43 PerfScore 2.26
-G_M39093_IG14: ; bbWeight=0.18, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
xor eax, eax
; gcrRegs +[eax]
- ;; size=2 bbWeight=0.18 PerfScore 0.05
-G_M39093_IG15: ; bbWeight=0.63, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=0.22 PerfScore 0.05
+G_M39093_IG13: ; bbWeight=0.63, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
test eax, eax
jne SHORT G_M39093_IG22
mov eax, esi
test eax, eax
- je SHORT G_M39093_IG17
+ je SHORT G_M39093_IG15
;; size=10 bbWeight=0.63 PerfScore 1.73
-G_M39093_IG16: ; bbWeight=0.31, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
+G_M39093_IG14: ; bbWeight=0.31, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M39093_IG22
;; size=8 bbWeight=0.31 PerfScore 1.26
-G_M39093_IG17: ; bbWeight=0.63, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M39093_IG15: ; bbWeight=0.63, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
mov eax, esi
; gcrRegs +[eax]
test eax, eax
je SHORT G_M39093_IG08
;; size=6 bbWeight=0.63 PerfScore 0.94
-G_M39093_IG18: ; bbWeight=0.31, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+G_M39093_IG16: ; bbWeight=0.31, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[esi]
cmp dword ptr [eax], 0xD1FFAB1E
je SHORT G_M39093_IG22
;; size=8 bbWeight=0.31 PerfScore 1.26
-G_M39093_IG19: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M39093_IG17: ; bbWeight=0.16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
jmp SHORT G_M39093_IG08
;; size=2 bbWeight=0.16 PerfScore 0.31
+G_M39093_IG18: ; bbWeight=0.43, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs +[ecx esi]
+ call [<unknown method>]
+ ; gcrRegs -[ecx]
+ mov edi, eax
+ jmp SHORT G_M39093_IG06
+ ;; size=10 bbWeight=0.43 PerfScore 2.26
+G_M39093_IG19: ; bbWeight=0.09, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, esi
+ ; gcrRegs +[edx]
+ mov ecx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[edx] +[eax]
+ jmp SHORT G_M39093_IG13
+ ;; size=14 bbWeight=0.09 PerfScore 0.33
G_M39093_IG20: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[esi]
+ ; gcrRegs -[eax]
test esi, esi
je SHORT G_M39093_IG08
;; size=4 bbWeight=0.02 PerfScore 0.03
@@ -151,6 +151,6 @@ G_M39093_IG23: ; bbWeight=0, epilog, nogc, extend
ret 4
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 159, prolog size 5, PerfScore 29.57, instruction count 59, allocated bytes for code 159 (MethodHash=3d39674a) for method Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:ShouldSkipSyntaxNodeAnalysis(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol):ubyte:this (Tier1)
+; Total bytes of code 159, prolog size 5, PerfScore 29.44, instruction count 59, allocated bytes for code 159 (MethodHash=3d39674a) for method Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:ShouldSkipSyntaxNodeAnalysis(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol):ubyte:this (Tier1)
; ============================================================
+3 (+0.26%) : 359055.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 14, 3.49) ref -> edi this class-hnd single-def <System.Threading.Tasks.Task>
-; V01 arg1 [V01,T01] ( 11, 5.16) ref -> esi class-hnd single-def <System.Object>
+; V01 arg1 [V01,T01] ( 11, 5.12) ref -> esi class-hnd single-def <System.Object>
; V02 loc0 [V02,T07] ( 6, 2 ) ref -> ebx class-hnd exact single-def <System.Threading.Tasks.TplEventSource>
; V03 loc1 [V03,T08] ( 5, 2 ) ubyte -> [ebp-0x24] spill-single-def
; V04 loc2 [V04,T06] ( 11, 2 ) ubyte -> [ebp-0x28] spill-single-def
@@ -105,13 +105,13 @@ G_M51094_IG05: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
;; size=15 bbWeight=1 PerfScore 3.75
G_M51094_IG06: ; bbWeight=0.50, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [ecx], 0xD1FFAB1E
- jne SHORT G_M51094_IG20
+ jne SHORT G_M51094_IG21
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M51094_IG07: ; bbWeight=0.36, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M51094_IG07: ; bbWeight=0.41, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
xor ecx, ecx
; gcrRegs +[ecx]
- ;; size=2 bbWeight=0.36 PerfScore 0.09
+ ;; size=2 bbWeight=0.41 PerfScore 0.10
G_M51094_IG08: ; bbWeight=1, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
test ecx, ecx
jne SHORT G_M51094_IG17
@@ -145,7 +145,7 @@ G_M51094_IG13: ; bbWeight=0.49, gcrefRegs=000000CA {ecx ebx esi edi}, byr
G_M51094_IG14: ; bbWeight=0.49, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ebx esi]
cmp dword ptr [ecx], 0xD1FFAB1E
- jne SHORT G_M51094_IG21
+ jne SHORT G_M51094_IG20
;; size=8 bbWeight=0.49 PerfScore 1.96
G_M51094_IG15: ; bbWeight=0.38, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, byref, isz
push eax
@@ -185,7 +185,18 @@ G_M51094_IG19: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=1 PerfScore 3.50
-G_M51094_IG20: ; bbWeight=0.14, gcVars=0000000000000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M51094_IG20: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs +[ecx edi]
+ push eax
+ mov edx, edi
+ ; gcrRegs +[edx]
+ mov eax, dword ptr [ecx]
+ mov eax, dword ptr [eax+0x2C]
+ call [eax+0x10]<unknown method>
+ ; gcrRegs -[ecx edx edi]
+ jmp SHORT G_M51094_IG18
+ ;; size=13 bbWeight=0.11 PerfScore 1.10
+G_M51094_IG21: ; bbWeight=0.09, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[ebx esi edi]
mov edx, esi
; gcrRegs +[edx]
@@ -196,21 +207,10 @@ G_M51094_IG20: ; bbWeight=0.14, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs +[ecx]
mov eax, dword ptr [ebp-0x28]
; gcrRegs -[eax]
- jmp SHORT G_M51094_IG08
- ;; size=19 bbWeight=0.14 PerfScore 0.64
-G_M51094_IG21: ; bbWeight=0.11, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx esi]
- push eax
- mov edx, edi
- ; gcrRegs +[edx]
- mov eax, dword ptr [ecx]
- mov eax, dword ptr [eax+0x2C]
- call [eax+0x10]<unknown method>
- ; gcrRegs -[ecx edx edi]
- jmp SHORT G_M51094_IG18
- ;; size=13 bbWeight=0.11 PerfScore 1.10
+ jmp G_M51094_IG08
+ ;; size=22 bbWeight=0.09 PerfScore 0.43
G_M51094_IG22: ; bbWeight=0.03, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs +[ebx esi edi]
+ ; gcrRegs -[ecx]
xor edx, edx
mov eax, edx
jmp G_M51094_IG05
@@ -719,7 +719,7 @@ G_M51094_IG58: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=000000
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1175, prolog size 27, PerfScore 50.65, instruction count 374, allocated bytes for code 1175 (MethodHash=8bc43869) for method System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
+; Total bytes of code 1178, prolog size 27, PerfScore 50.44, instruction count 374, allocated bytes for code 1178 (MethodHash=8bc43869) for method System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
; ============================================================
*************** EH table for System.Threading.Tasks.Task:RunContinuations(System.Object):this
+8 (+5.67%) : 557328.dasm - Xunit.Internal.ArgumentFormatter:SafeToMultiEnumerate(System.Collections.IEnumerable):ubyte (Tier1)
@@ -8,11 +8,11 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 63
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 10, 6.13) ref -> esi class-hnd single-def <System.Collections.IEnumerable>
+; V00 arg0 [V00,T00] ( 10, 6.01) ref -> esi class-hnd single-def <System.Collections.IEnumerable>
; V01 tmp0 [V01,T04] ( 3, 4.05) ref -> edx class-hnd "spilling QMark2" <<unknown class>>
-; V02 rat0 [V02,T01] ( 5, 7.42) ref -> eax class-hnd "replacement local" <<unknown class>>
+; V02 rat0 [V02,T01] ( 5, 7.33) ref -> eax class-hnd "replacement local" <<unknown class>>
; V03 rat1 [V03,T02] ( 6, 6.48) ref -> eax class-hnd "replacement local" <<unknown class>>
-; V04 rat2 [V04,T03] ( 5, 5.98) ref -> eax class-hnd "replacement local" <<unknown class>>
+; V04 rat2 [V04,T03] ( 5, 5.91) ref -> ecx class-hnd "replacement local" <<unknown class>>
;
; Lcl frame size = 0
@@ -27,93 +27,105 @@ G_M49662_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov eax, esi
; gcrRegs +[eax]
test eax, eax
- je SHORT G_M49662_IG05
+ je SHORT G_M49662_IG04
;; size=6 bbWeight=1 PerfScore 1.50
G_M49662_IG03: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [eax], 0xD1FFAB1E
- je SHORT G_M49662_IG05
+ jne SHORT G_M49662_IG17
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M49662_IG04: ; bbWeight=0.21, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M49662_IG04: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
+ test eax, eax
+ jne SHORT G_M49662_IG18
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M49662_IG05: ; bbWeight=0.81, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
+ mov edx, esi
+ ; gcrRegs +[edx]
+ test edx, edx
+ je SHORT G_M49662_IG07
+ ;; size=6 bbWeight=0.81 PerfScore 1.21
+G_M49662_IG06: ; bbWeight=0.40, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+ cmp dword ptr [edx], 0xD1FFAB1E
+ je SHORT G_M49662_IG18
+ ;; size=8 bbWeight=0.40 PerfScore 1.62
+G_M49662_IG07: ; bbWeight=0.81, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[edx]
+ mov eax, esi
+ ; gcrRegs +[eax]
+ test eax, eax
+ je SHORT G_M49662_IG10
+ ;; size=6 bbWeight=0.81 PerfScore 1.21
+G_M49662_IG08: ; bbWeight=0.40, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
+ cmp dword ptr [eax], 0xD1FFAB1E
+ jne SHORT G_M49662_IG13
+ ;; size=8 bbWeight=0.40 PerfScore 1.62
+G_M49662_IG09: ; bbWeight=0.30, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
+ xor eax, eax
+ ; gcrRegs +[eax]
+ ;; size=2 bbWeight=0.30 PerfScore 0.07
+G_M49662_IG10: ; bbWeight=0.81, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
+ test eax, eax
+ jne SHORT G_M49662_IG18
+ mov ecx, esi
+ ; gcrRegs +[ecx]
+ test ecx, ecx
+ je SHORT G_M49662_IG15
+ ;; size=10 bbWeight=0.81 PerfScore 2.23
+G_M49662_IG11: ; bbWeight=0.40, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
+ cmp dword ptr [ecx], 0xD1FFAB1E
+ je SHORT G_M49662_IG15
+ ;; size=8 bbWeight=0.40 PerfScore 1.62
+G_M49662_IG12: ; bbWeight=0.12, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ecx]
+ jmp SHORT G_M49662_IG14
+ ;; size=2 bbWeight=0.12 PerfScore 0.24
+G_M49662_IG13: ; bbWeight=0.11, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, esi
+ ; gcrRegs +[edx]
+ mov ecx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[edx] +[eax]
+ jmp SHORT G_M49662_IG10
+ ;; size=14 bbWeight=0.11 PerfScore 0.38
+G_M49662_IG14: ; bbWeight=0.12, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
+ mov edx, esi
+ ; gcrRegs +[edx]
+ mov ecx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[edx] +[eax]
+ mov ecx, eax
+ ; gcrRegs +[ecx]
+ ;; size=14 bbWeight=0.12 PerfScore 0.21
+G_M49662_IG15: ; bbWeight=0.81, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
+ test ecx, ecx
+ jne SHORT G_M49662_IG18
+ ;; size=4 bbWeight=0.81 PerfScore 1.01
+G_M49662_IG16: ; bbWeight=0.19, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ecx]
+ jmp SHORT G_M49662_IG20
+ ;; size=2 bbWeight=0.19 PerfScore 0.38
+G_M49662_IG17: ; bbWeight=0.16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edx, esi
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[edx] +[eax]
- ;; size=12 bbWeight=0.21 PerfScore 0.32
-G_M49662_IG05: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
- test eax, eax
- jne SHORT G_M49662_IG16
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M49662_IG06: ; bbWeight=0.81, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]
- mov edx, esi
- ; gcrRegs +[edx]
- test edx, edx
- je SHORT G_M49662_IG08
- ;; size=6 bbWeight=0.81 PerfScore 1.21
-G_M49662_IG07: ; bbWeight=0.40, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [edx], 0xD1FFAB1E
- je SHORT G_M49662_IG16
- ;; size=8 bbWeight=0.40 PerfScore 1.62
-G_M49662_IG08: ; bbWeight=0.81, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edx]
- mov eax, esi
- ; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M49662_IG12
- ;; size=6 bbWeight=0.81 PerfScore 1.21
-G_M49662_IG09: ; bbWeight=0.40, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [eax], 0xD1FFAB1E
- je SHORT G_M49662_IG11
- ;; size=8 bbWeight=0.40 PerfScore 1.62
-G_M49662_IG10: ; bbWeight=0.15, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]
- mov edx, esi
- ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[edx] +[eax]
- jmp SHORT G_M49662_IG12
- ;; size=14 bbWeight=0.15 PerfScore 0.51
-G_M49662_IG11: ; bbWeight=0.26, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- xor eax, eax
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=0.26 PerfScore 0.06
-G_M49662_IG12: ; bbWeight=0.81, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
- test eax, eax
- jne SHORT G_M49662_IG16
- mov eax, esi
- test eax, eax
- je SHORT G_M49662_IG15
- ;; size=10 bbWeight=0.81 PerfScore 2.23
-G_M49662_IG13: ; bbWeight=0.40, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [eax], 0xD1FFAB1E
- je SHORT G_M49662_IG15
- ;; size=8 bbWeight=0.40 PerfScore 1.62
-G_M49662_IG14: ; bbWeight=0.16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov edx, esi
- ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[edx] +[eax]
- ;; size=12 bbWeight=0.16 PerfScore 0.24
-G_M49662_IG15: ; bbWeight=0.81, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
- test eax, eax
- je SHORT G_M49662_IG18
- ;; size=4 bbWeight=0.81 PerfScore 1.01
-G_M49662_IG16: ; bbWeight=0.81, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M49662_IG04
+ ;; size=14 bbWeight=0.16 PerfScore 0.58
+G_M49662_IG18: ; bbWeight=0.81, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax esi]
mov eax, 1
;; size=5 bbWeight=0.81 PerfScore 0.20
-G_M49662_IG17: ; bbWeight=0.81, epilog, nogc, extend
+G_M49662_IG19: ; bbWeight=0.81, epilog, nogc, extend
pop esi
pop ebp
ret
;; size=3 bbWeight=0.81 PerfScore 1.62
-G_M49662_IG18: ; bbWeight=0.19, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M49662_IG20: ; bbWeight=0.19, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi]
mov ecx, esi
; gcrRegs +[ecx]
@@ -124,12 +136,12 @@ G_M49662_IG18: ; bbWeight=0.19, gcVars=00000000 {}, gcrefRegs=00000040 {e
; gcrRegs -[eax]
movzx eax, al
;; size=16 bbWeight=0.19 PerfScore 0.90
-G_M49662_IG19: ; bbWeight=0.19, epilog, nogc, extend
+G_M49662_IG21: ; bbWeight=0.19, epilog, nogc, extend
pop esi
pop ebp
ret
;; size=3 bbWeight=0.19 PerfScore 0.38
-; Total bytes of code 141, prolog size 4, PerfScore 22.01, instruction count 53, allocated bytes for code 141 (MethodHash=8c233e01) for method Xunit.Internal.ArgumentFormatter:SafeToMultiEnumerate(System.Collections.IEnumerable):ubyte (Tier1)
+; Total bytes of code 149, prolog size 4, PerfScore 22.75, instruction count 57, allocated bytes for code 149 (MethodHash=8c233e01) for method Xunit.Internal.ArgumentFormatter:SafeToMultiEnumerate(System.Collections.IEnumerable):ubyte (Tier1)
; ============================================================
+27 (+7.42%) : 59650.dasm - System.Collections.Immutable.ImmutableArray:CreateRangeSystem.__Canon:System.Collections.Immutable.ImmutableArray`1System.__Canon
@@ -9,7 +9,7 @@
; 1 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 8, 5.32) ref -> esi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V00 arg0 [V00,T01] ( 8, 5.22) ref -> esi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V01 TypeCtx [V01,T02] ( 11, 5.09) int -> edi single-def
; V02 loc0 [V02,T05] ( 5, 2.92) ref -> ecx class-hnd single-def <System.Collections.Immutable.IImmutableArray>
; V03 loc1 [V03 ] ( 2, 0.85) int -> [ebp-0x10] do-not-enreg[X] addr-exposed ld-addr-op
@@ -50,7 +50,7 @@
; V38 rat8 [V38,T19] ( 3, 0.92) int -> edx "runtime lookup"
; V39 rat9 [V39,T15] ( 3, 1.29) int -> ecx "spilling expr"
; V40 rat10 [V40,T18] ( 3, 1.03) int -> edx "fgMakeTemp is creating a new local variable"
-; V41 rat11 [V41,T00] ( 5, 7.49) ref -> ecx class-hnd "replacement local" <System.Collections.Immutable.IImmutableArray>
+; V41 rat11 [V41,T00] ( 5, 7.28) ref -> ecx class-hnd "replacement local" <System.Collections.Immutable.IImmutableArray>
;
; Lcl frame size = 8
@@ -71,80 +71,69 @@ G_M43512_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov ecx, esi
; gcrRegs +[ecx]
test ecx, ecx
- je SHORT G_M43512_IG05
+ je SHORT G_M43512_IG04
;; size=14 bbWeight=1 PerfScore 2.75
-G_M43512_IG03: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG03: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
cmp dword ptr [ecx], 0xD1FFAB1E
- je SHORT G_M43512_IG05
- ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M43512_IG04: ; bbWeight=0.24, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ecx]
- mov edx, esi
- ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Collections.Immutable.IImmutableArray
- call CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[edx] +[eax]
- mov ecx, eax
- ; gcrRegs +[ecx]
- ;; size=14 bbWeight=0.24 PerfScore 0.43
-G_M43512_IG05: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]
+ jne G_M43512_IG29
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M43512_IG04: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
test ecx, ecx
- je SHORT G_M43512_IG13
+ je SHORT G_M43512_IG12
;; size=4 bbWeight=1 PerfScore 1.25
-G_M43512_IG06: ; bbWeight=0.46, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+G_M43512_IG05: ; bbWeight=0.46, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi]
cmp dword ptr [ecx], 0xD1FFAB1E
jne G_M43512_IG31
;; size=12 bbWeight=0.46 PerfScore 1.85
-G_M43512_IG07: ; bbWeight=0.38, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+G_M43512_IG06: ; bbWeight=0.38, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
mov esi, gword ptr [ecx+0x04]
; gcrRegs +[esi]
;; size=3 bbWeight=0.38 PerfScore 0.77
-G_M43512_IG08: ; bbWeight=0.46, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M43512_IG07: ; bbWeight=0.46, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
test esi, esi
je G_M43512_IG33
mov ecx, dword ptr [edi+0x20]
cmp dword ptr [ecx+0x04], 28
- jle G_M43512_IG28
+ jle G_M43512_IG27
;; size=21 bbWeight=0.46 PerfScore 3.35
-G_M43512_IG09: ; bbWeight=0.37, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M43512_IG08: ; bbWeight=0.37, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov eax, dword ptr [ecx+0x1C]
test eax, eax
- je G_M43512_IG28
+ je G_M43512_IG27
;; size=11 bbWeight=0.37 PerfScore 1.20
-G_M43512_IG10: ; bbWeight=0.46, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG09: ; bbWeight=0.46, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, eax
mov edx, esi
; gcrRegs +[edx]
cmp dword ptr [edx], eax
- jne SHORT G_M43512_IG23
+ jne SHORT G_M43512_IG22
;; size=8 bbWeight=0.46 PerfScore 2.08
-G_M43512_IG11: ; bbWeight=0.46, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+G_M43512_IG10: ; bbWeight=0.46, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi]
mov eax, edx
; gcrRegs +[eax]
;; size=2 bbWeight=0.46 PerfScore 0.12
-G_M43512_IG12: ; bbWeight=0.46, epilog, nogc, extend
+G_M43512_IG11: ; bbWeight=0.46, epilog, nogc, extend
lea esp, [ebp-0x08]
pop esi
pop edi
pop ebp
ret
;; size=7 bbWeight=0.46 PerfScore 1.38
-G_M43512_IG13: ; bbWeight=0.54, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M43512_IG12: ; bbWeight=0.54, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax edx] +[esi]
mov ecx, dword ptr [edi+0x20]
cmp dword ptr [ecx+0x04], 12
- jle SHORT G_M43512_IG27
- ;; size=9 bbWeight=0.54 PerfScore 3.23
-G_M43512_IG14: ; bbWeight=0.43, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jle G_M43512_IG26
+ ;; size=13 bbWeight=0.54 PerfScore 3.23
+G_M43512_IG13: ; bbWeight=0.43, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ecx+0x0C]
test eax, eax
- je SHORT G_M43512_IG27
+ je SHORT G_M43512_IG26
;; size=7 bbWeight=0.43 PerfScore 1.40
-G_M43512_IG15: ; bbWeight=0.54, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG14: ; bbWeight=0.54, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
push eax
lea edx, [ebp-0x10]
mov ecx, esi
@@ -152,19 +141,19 @@ G_M43512_IG15: ; bbWeight=0.54, gcrefRegs=00000040 {esi}, byrefRegs=00000
call [System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte]
; gcrRegs -[ecx]
test eax, eax
- je SHORT G_M43512_IG20
+ je SHORT G_M43512_IG19
;; size=16 bbWeight=0.54 PerfScore 3.23
-G_M43512_IG16: ; bbWeight=0.31, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG15: ; bbWeight=0.31, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [edi+0x20]
cmp dword ptr [ecx+0x04], 24
- jle SHORT G_M43512_IG30
- ;; size=9 bbWeight=0.31 PerfScore 1.85
-G_M43512_IG17: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jle G_M43512_IG30
+ ;; size=13 bbWeight=0.31 PerfScore 1.85
+G_M43512_IG16: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov eax, dword ptr [ecx+0x18]
test eax, eax
- je SHORT G_M43512_IG30
- ;; size=7 bbWeight=0.25 PerfScore 0.80
-G_M43512_IG18: ; bbWeight=0.31, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ je G_M43512_IG30
+ ;; size=11 bbWeight=0.25 PerfScore 0.80
+G_M43512_IG17: ; bbWeight=0.31, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
push eax
mov ecx, esi
; gcrRegs +[ecx]
@@ -172,85 +161,96 @@ G_M43512_IG18: ; bbWeight=0.31, gcrefRegs=00000040 {esi}, byrefRegs=00000
call [<unknown method>]
; gcrRegs -[ecx esi] +[eax]
;; size=12 bbWeight=0.31 PerfScore 1.62
-G_M43512_IG19: ; bbWeight=0.31, epilog, nogc, extend
+G_M43512_IG18: ; bbWeight=0.31, epilog, nogc, extend
lea esp, [ebp-0x08]
pop esi
pop edi
pop ebp
ret
;; size=7 bbWeight=0.31 PerfScore 0.92
-G_M43512_IG20: ; bbWeight=0.23, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M43512_IG19: ; bbWeight=0.23, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[esi]
mov ecx, dword ptr [edi+0x20]
cmp dword ptr [ecx+0x04], 16
- jle SHORT G_M43512_IG24
+ jle SHORT G_M43512_IG23
;; size=9 bbWeight=0.23 PerfScore 1.38
-G_M43512_IG21: ; bbWeight=0.18, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG20: ; bbWeight=0.18, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [ecx+0x10]
test edx, edx
- je SHORT G_M43512_IG24
+ je SHORT G_M43512_IG23
;; size=7 bbWeight=0.18 PerfScore 0.60
-G_M43512_IG22: ; bbWeight=0.15, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M43512_IG29
+G_M43512_IG21: ; bbWeight=0.15, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M43512_IG28
;; size=2 bbWeight=0.15 PerfScore 0.30
-G_M43512_IG23: ; bbWeight=0.12, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG22: ; bbWeight=0.12, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edx, esi
; gcrRegs +[edx]
call CORINFO_HELP_CHKCASTARRAY
; gcrRegs -[edx esi] +[eax]
mov edx, eax
; gcrRegs +[edx]
- jmp SHORT G_M43512_IG11
+ jmp SHORT G_M43512_IG10
;; size=11 bbWeight=0.12 PerfScore 0.40
-G_M43512_IG24: ; bbWeight=0.08, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M43512_IG23: ; bbWeight=0.08, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax edx] +[esi]
mov ecx, edi
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov edx, eax
;; size=14 bbWeight=0.08 PerfScore 0.15
-G_M43512_IG25: ; bbWeight=0.23, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M43512_IG24: ; bbWeight=0.23, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, esi
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx esi] +[eax]
;; size=8 bbWeight=0.23 PerfScore 0.75
-G_M43512_IG26: ; bbWeight=0.23, epilog, nogc, extend
+G_M43512_IG25: ; bbWeight=0.23, epilog, nogc, extend
lea esp, [ebp-0x08]
pop esi
pop edi
pop ebp
ret
;; size=7 bbWeight=0.23 PerfScore 0.69
-G_M43512_IG27: ; bbWeight=0.19, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M43512_IG26: ; bbWeight=0.19, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax] +[esi]
mov ecx, edi
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- jmp SHORT G_M43512_IG15
- ;; size=14 bbWeight=0.19 PerfScore 0.68
-G_M43512_IG28: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ jmp G_M43512_IG14
+ ;; size=17 bbWeight=0.19 PerfScore 0.68
+G_M43512_IG27: ; bbWeight=0.17, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, edi
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- jmp G_M43512_IG10
+ jmp G_M43512_IG09
;; size=17 bbWeight=0.17 PerfScore 0.58
-G_M43512_IG29: ; bbWeight=0.15, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M43512_IG25
+G_M43512_IG28: ; bbWeight=0.15, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M43512_IG24
;; size=2 bbWeight=0.15 PerfScore 0.30
-G_M43512_IG30: ; bbWeight=0.11, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG29: ; bbWeight=0.14, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov edx, esi
+ ; gcrRegs +[edx]
+ mov ecx, 0xD1FFAB1E ; System.Collections.Immutable.IImmutableArray
+ call CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[edx] +[eax]
+ mov ecx, eax
+ ; gcrRegs +[ecx]
+ jmp G_M43512_IG04
+ ;; size=19 bbWeight=0.14 PerfScore 0.53
+G_M43512_IG30: ; bbWeight=0.11, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
...
+33 (+9.40%) : 29709.dasm - System.Collections.Immutable.ImmutableArray:CreateRangeSystem.__Canon:System.Collections.Immutable.ImmutableArray`1System.__Canon
@@ -9,7 +9,7 @@
; 1 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 8, 5.81) ref -> esi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V00 arg0 [V00,T01] ( 8, 5.77) ref -> esi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V01 TypeCtx [V01,T02] ( 11, 5.45) int -> edi single-def
; V02 loc0 [V02,T06] ( 5, 2.40) ref -> ecx class-hnd single-def <System.Collections.Immutable.IImmutableArray>
; V03 loc1 [V03 ] ( 2, 1.21) int -> [ebp-0x10] do-not-enreg[X] addr-exposed ld-addr-op
@@ -71,44 +71,33 @@ G_M43512_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov ecx, esi
; gcrRegs +[ecx]
test ecx, ecx
- je SHORT G_M43512_IG06
- ;; size=14 bbWeight=1 PerfScore 2.75
-G_M43512_IG03: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [ecx], 0xD1FFAB1E
je SHORT G_M43512_IG05
- ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M43512_IG04: ; bbWeight=0.21, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=14 bbWeight=1 PerfScore 2.75
+G_M43512_IG03: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+ cmp dword ptr [ecx], 0xD1FFAB1E
+ jne G_M43512_IG25
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M43512_IG04: ; bbWeight=0.34, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
- mov edx, esi
- ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; System.Collections.Immutable.IImmutableArray
- call CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[edx] +[eax]
- mov ecx, eax
- ; gcrRegs +[ecx]
- jmp SHORT G_M43512_IG06
- ;; size=16 bbWeight=0.21 PerfScore 0.79
-G_M43512_IG05: ; bbWeight=0.29, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax ecx]
xor ecx, ecx
; gcrRegs +[ecx]
- ;; size=2 bbWeight=0.29 PerfScore 0.07
-G_M43512_IG06: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=0.34 PerfScore 0.08
+G_M43512_IG05: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
test ecx, ecx
- jne SHORT G_M43512_IG19
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M43512_IG07: ; bbWeight=0.80, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jne G_M43512_IG18
+ ;; size=8 bbWeight=1 PerfScore 1.25
+G_M43512_IG06: ; bbWeight=0.80, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
mov ecx, dword ptr [edi+0x20]
cmp dword ptr [ecx+0x04], 12
- jle SHORT G_M43512_IG18
+ jle SHORT G_M43512_IG17
;; size=9 bbWeight=0.80 PerfScore 4.80
-G_M43512_IG08: ; bbWeight=0.64, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG07: ; bbWeight=0.64, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ecx+0x0C]
test eax, eax
- je SHORT G_M43512_IG18
+ je SHORT G_M43512_IG17
;; size=7 bbWeight=0.64 PerfScore 2.08
-G_M43512_IG09: ; bbWeight=0.80, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG08: ; bbWeight=0.80, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
push eax
lea edx, [ebp-0x10]
mov ecx, esi
@@ -116,19 +105,19 @@ G_M43512_IG09: ; bbWeight=0.80, gcrefRegs=00000040 {esi}, byrefRegs=00000
call [System.Collections.Immutable.ImmutableExtensions:TryGetCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte]
; gcrRegs -[ecx]
test eax, eax
- je SHORT G_M43512_IG14
+ je SHORT G_M43512_IG13
;; size=16 bbWeight=0.80 PerfScore 4.80
-G_M43512_IG10: ; bbWeight=0.41, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG09: ; bbWeight=0.41, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [edi+0x20]
cmp dword ptr [ecx+0x04], 24
- jle SHORT G_M43512_IG26
- ;; size=9 bbWeight=0.41 PerfScore 2.48
-G_M43512_IG11: ; bbWeight=0.33, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jle G_M43512_IG26
+ ;; size=13 bbWeight=0.41 PerfScore 2.48
+G_M43512_IG10: ; bbWeight=0.33, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov eax, dword ptr [ecx+0x18]
test eax, eax
- je SHORT G_M43512_IG26
- ;; size=7 bbWeight=0.33 PerfScore 1.08
-G_M43512_IG12: ; bbWeight=0.41, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ je G_M43512_IG26
+ ;; size=11 bbWeight=0.33 PerfScore 1.08
+G_M43512_IG11: ; bbWeight=0.41, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
push eax
mov ecx, esi
; gcrRegs +[ecx]
@@ -136,54 +125,54 @@ G_M43512_IG12: ; bbWeight=0.41, gcrefRegs=00000040 {esi}, byrefRegs=00000
call [<unknown method>]
; gcrRegs -[ecx esi] +[eax]
;; size=12 bbWeight=0.41 PerfScore 2.17
-G_M43512_IG13: ; bbWeight=0.41, epilog, nogc, extend
+G_M43512_IG12: ; bbWeight=0.41, epilog, nogc, extend
lea esp, [ebp-0x08]
pop esi
pop edi
pop ebp
ret
;; size=7 bbWeight=0.41 PerfScore 1.24
-G_M43512_IG14: ; bbWeight=0.39, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M43512_IG13: ; bbWeight=0.39, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax] +[esi]
mov ecx, dword ptr [edi+0x20]
cmp dword ptr [ecx+0x04], 16
- jle SHORT G_M43512_IG27
- ;; size=9 bbWeight=0.39 PerfScore 2.32
-G_M43512_IG15: ; bbWeight=0.31, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jle G_M43512_IG27
+ ;; size=13 bbWeight=0.39 PerfScore 2.32
+G_M43512_IG14: ; bbWeight=0.31, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [ecx+0x10]
test edx, edx
je SHORT G_M43512_IG27
;; size=7 bbWeight=0.31 PerfScore 1.01
-G_M43512_IG16: ; bbWeight=0.39, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M43512_IG15: ; bbWeight=0.39, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, esi
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx esi] +[eax]
;; size=8 bbWeight=0.39 PerfScore 1.26
-G_M43512_IG17: ; bbWeight=0.39, epilog, nogc, extend
+G_M43512_IG16: ; bbWeight=0.39, epilog, nogc, extend
lea esp, [ebp-0x08]
pop esi
pop edi
pop ebp
ret
;; size=7 bbWeight=0.39 PerfScore 1.16
-G_M43512_IG18: ; bbWeight=0.29, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M43512_IG17: ; bbWeight=0.29, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[esi]
mov ecx, edi
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- jmp SHORT G_M43512_IG09
+ jmp SHORT G_M43512_IG08
;; size=14 bbWeight=0.29 PerfScore 1.01
-G_M43512_IG19: ; bbWeight=0.20, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG18: ; bbWeight=0.20, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi] +[ecx]
cmp dword ptr [ecx], 0xD1FFAB1E
- jne SHORT G_M43512_IG30
- ;; size=8 bbWeight=0.20 PerfScore 0.80
-G_M43512_IG20: ; bbWeight=0.17, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+ jne G_M43512_IG30
+ ;; size=12 bbWeight=0.20 PerfScore 0.80
+G_M43512_IG19: ; bbWeight=0.17, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
mov esi, gword ptr [ecx+0x04]
; gcrRegs +[esi]
;; size=3 bbWeight=0.17 PerfScore 0.34
-G_M43512_IG21: ; bbWeight=0.20, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG20: ; bbWeight=0.20, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
test esi, esi
je G_M43512_IG32
@@ -191,49 +180,60 @@ G_M43512_IG21: ; bbWeight=0.20, gcrefRegs=00000040 {esi}, byrefRegs=00000
cmp dword ptr [ecx+0x04], 28
jle SHORT G_M43512_IG28
;; size=17 bbWeight=0.20 PerfScore 1.45
-G_M43512_IG22: ; bbWeight=0.16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG21: ; bbWeight=0.16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ecx+0x1C]
test eax, eax
je SHORT G_M43512_IG28
;; size=7 bbWeight=0.16 PerfScore 0.52
-G_M43512_IG23: ; bbWeight=0.20, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG22: ; bbWeight=0.20, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, eax
mov edx, esi
; gcrRegs +[edx]
cmp dword ptr [edx], eax
jne SHORT G_M43512_IG29
;; size=8 bbWeight=0.20 PerfScore 0.90
-G_M43512_IG24: ; bbWeight=0.20, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+G_M43512_IG23: ; bbWeight=0.20, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi]
mov eax, edx
; gcrRegs +[eax]
;; size=2 bbWeight=0.20 PerfScore 0.05
-G_M43512_IG25: ; bbWeight=0.20, epilog, nogc, extend
+G_M43512_IG24: ; bbWeight=0.20, epilog, nogc, extend
lea esp, [ebp-0x08]
pop esi
pop edi
pop ebp
ret
;; size=7 bbWeight=0.20 PerfScore 0.60
-G_M43512_IG26: ; bbWeight=0.15, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M43512_IG25: ; bbWeight=0.16, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax edx] +[esi]
+ mov edx, esi
+ ; gcrRegs +[edx]
+ mov ecx, 0xD1FFAB1E ; System.Collections.Immutable.IImmutableArray
+ call CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[edx] +[eax]
+ mov ecx, eax
+ ; gcrRegs +[ecx]
+ jmp G_M43512_IG05
+ ;; size=19 bbWeight=0.16 PerfScore 0.62
+G_M43512_IG26: ; bbWeight=0.15, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax ecx]
mov ecx, edi
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- jmp G_M43512_IG12
+ jmp G_M43512_IG11
;; size=17 bbWeight=0.15 PerfScore 0.52
-G_M43512_IG27: ; bbWeight=0.14, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG27: ; bbWeight=0.14, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, edi
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov edx, eax
- jmp SHORT G_M43512_IG16
- ;; size=16 bbWeight=0.14 PerfScore 0.52
+ jmp G_M43512_IG15
+ ;; size=19 bbWeight=0.14 PerfScore 0.52
G_M43512_IG28: ; bbWeight=0.07, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, edi
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- jmp SHORT G_M43512_IG23
+ jmp SHORT G_M43512_IG22
;; size=14 bbWeight=0.07 PerfScore 0.25
G_M43512_IG29: ; bbWeight=0.05, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edx, esi
@@ -242,16 +242,16 @@ G_M43512_IG29: ; bbWeight=0.05, gcrefRegs=00000040 {esi}, byrefRegs=00000
; gcrRegs -[edx esi] +[eax]
mov edx, eax
; gcrRegs +[edx]
- jmp SHORT G_M43512_IG24
+ jmp SHORT G_M43512_IG23
;; size=11 bbWeight=0.05 PerfScore 0.17
-G_M43512_IG30: ; bbWeight=0.03, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG30: ; bbWeight=0.03, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax edx] +[ecx]
call [<unknown method>]
; gcrRegs -[ecx] +[eax]
mov esi, eax
...
To reproduce these diffs on Windows x86:
To reproduce these diffs on Windows x86:
Details
Improvements/regressions per collection
Collection
Contexts with diffs
Improvements
Regressions
Same size
Improvements (bytes)
Regressions (bytes)
benchmarks.run.windows.x86.checked.mch
0
0
0
0
-0
+0
benchmarks.run_pgo.windows.x86.checked.mch
0
0
0
0
-0
+0
benchmarks.run_tiered.windows.x86.checked.mch
0
0
0
0
-0
+0
coreclr_tests.run.windows.x86.checked.mch
3
2
0
1
-53
+0
libraries.crossgen2.windows.x86.checked.mch
0
0
0
0
-0
+0
libraries.pmi.windows.x86.checked.mch
0
0
0
0
-0
+0
libraries_tests.run.windows.x86.Release.mch
18
1
16
1
-12
+209
librariestestsnotieredcompilation.run.windows.x86.Release.mch
0
0
0
0
-0
+0
realworld.run.windows.x86.checked.mch
0
0
0
0
-0
+0
21
3
16
2
-65
+209
Context information
Collection
Diffed contexts
MinOpts
FullOpts
Missed, base
Missed, diff
benchmarks.run.windows.x86.checked.mch
24,258
4
24,254
13 (0.05%)
230 (0.94%)
benchmarks.run_pgo.windows.x86.checked.mch
119,290
42,004
77,286
348 (0.29%)
573 (0.48%)
benchmarks.run_tiered.windows.x86.checked.mch
47,748
28,726
19,022
11 (0.02%)
159 (0.33%)
coreclr_tests.run.windows.x86.checked.mch
574,354
320,010
254,344
569 (0.10%)
1,053 (0.18%)
libraries.crossgen2.windows.x86.checked.mch
241,911
15
241,896
16 (0.01%)
16 (0.01%)
libraries.pmi.windows.x86.checked.mch
301,605
6
301,599
707 (0.23%)
2,627 (0.86%)
libraries_tests.run.windows.x86.Release.mch
631,790
429,177
202,613
2,910 (0.46%)
4,019 (0.63%)
librariestestsnotieredcompilation.run.windows.x86.Release.mch
313,242
21,872
291,370
508 (0.16%)
2,513 (0.80%)
realworld.run.windows.x86.checked.mch
35,583
3
35,580
11 (0.03%)
399 (1.11%)
2,289,781
841,817
1,447,964
5,093 (0.22%)
11,589 (0.50%)
jit-analyze output
coreclr_tests.run.windows.x86.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 308593818 (overridden on cmd)
Total bytes of diff: 308593765 (overridden on cmd)
Total bytes of delta: -53 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-27 : 373234.dasm (-2.59 % of base)
-26 : 370295.dasm (-2.50 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 1 unchanged.
Top method improvements (bytes):
-27 (-2.59 % of base) : 373234.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-26 (-2.50 % of base) : 370295.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
Top method improvements (percentages):
-27 (-2.59 % of base) : 373234.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-26 (-2.50 % of base) : 370295.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.x86.Release.mch
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 184833802 (overridden on cmd)
Total bytes of diff: 184833999 (overridden on cmd)
Total bytes of delta: 197 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
33 : 29709.dasm (9.40 % of base)
27 : 59650.dasm (7.42 % of base)
17 : 67250.dasm (0.69 % of base)
16 : 584215.dasm (5.54 % of base)
15 : 74559.dasm (0.84 % of base)
14 : 364851.dasm (0.55 % of base)
14 : 116486.dasm (2.93 % of base)
13 : 155416.dasm (2.99 % of base)
13 : 545722.dasm (0.94 % of base)
12 : 554234.dasm (1.04 % of base)
8 : 557328.dasm (5.67 % of base)
8 : 75668.dasm (0.54 % of base)
7 : 281788.dasm (0.61 % of base)
7 : 300865.dasm (0.61 % of base)
3 : 359055.dasm (0.26 % of base)
2 : 554101.dasm (0.57 % of base)
Top file improvements (bytes):
-12 : 385379.dasm (-0.99 % of base)
17 total files with Code Size differences (1 improved, 16 regressed), 1 unchanged.
Top method regressions (bytes):
33 (9.40 % of base) : 29709.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
27 (7.42 % of base) : 59650.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
17 (0.69 % of base) : 67250.dasm - Xunit.Sdk.TestInvoker`1+<<RunAsync>b__47_0>d[System.__Canon]:MoveNext():this (Tier1)
16 (5.54 % of base) : 584215.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
15 (0.84 % of base) : 74559.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel:GetDeclaredSymbolCore(Microsoft.CodeAnalysis.SyntaxNode,System.Threading.CancellationToken):Microsoft.CodeAnalysis.ISymbol:this (Tier1)
14 (2.93 % of base) : 116486.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
14 (0.55 % of base) : 364851.dasm - Xunit.Sdk.TestInvoker`1+<<RunAsync>b__47_0>d[System.__Canon]:MoveNext():this (Tier1)
13 (2.99 % of base) : 155416.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
13 (0.94 % of base) : 545722.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
12 (1.04 % of base) : 554234.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
8 (0.54 % of base) : 75668.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:LineBreaksAfter(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):int:this (Tier1)
8 (5.67 % of base) : 557328.dasm - Xunit.Internal.ArgumentFormatter:SafeToMultiEnumerate(System.Collections.IEnumerable):ubyte (Tier1)
7 (0.61 % of base) : 281788.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
7 (0.61 % of base) : 300865.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
3 (0.26 % of base) : 359055.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
2 (0.57 % of base) : 554101.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1[System.__Canon]:SetGetter(System.Delegate):this (Tier1)
Top method improvements (bytes):
-12 (-0.99 % of base) : 385379.dasm - System.Xml.Serialization.XmlSerializationWriter:WritePotentiallyReferencingElement(System.String,System.String,System.Object,System.Type,ubyte,ubyte):this (Tier1)
Top method regressions (percentages):
33 (9.40 % of base) : 29709.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
27 (7.42 % of base) : 59650.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
8 (5.67 % of base) : 557328.dasm - Xunit.Internal.ArgumentFormatter:SafeToMultiEnumerate(System.Collections.IEnumerable):ubyte (Tier1)
16 (5.54 % of base) : 584215.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
13 (2.99 % of base) : 155416.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
14 (2.93 % of base) : 116486.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
12 (1.04 % of base) : 554234.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
13 (0.94 % of base) : 545722.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
15 (0.84 % of base) : 74559.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel:GetDeclaredSymbolCore(Microsoft.CodeAnalysis.SyntaxNode,System.Threading.CancellationToken):Microsoft.CodeAnalysis.ISymbol:this (Tier1)
17 (0.69 % of base) : 67250.dasm - Xunit.Sdk.TestInvoker`1+<<RunAsync>b__47_0>d[System.__Canon]:MoveNext():this (Tier1)
7 (0.61 % of base) : 281788.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
7 (0.61 % of base) : 300865.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
2 (0.57 % of base) : 554101.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1[System.__Canon]:SetGetter(System.Delegate):this (Tier1)
14 (0.55 % of base) : 364851.dasm - Xunit.Sdk.TestInvoker`1+<<RunAsync>b__47_0>d[System.__Canon]:MoveNext():this (Tier1)
8 (0.54 % of base) : 75668.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:LineBreaksAfter(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken):int:this (Tier1)
3 (0.26 % of base) : 359055.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
Top method improvements (percentages):
-12 (-0.99 % of base) : 385379.dasm - System.Xml.Serialization.XmlSerializationWriter:WritePotentiallyReferencingElement(System.String,System.String,System.Object,System.Type,ubyte,ubyte):this (Tier1)
17 total methods with Code Size differences (1 improved, 16 regressed).