Assembly Diffs
linux arm
Diffs are based on 2,230,531 contexts (825,130 MinOpts, 1,405,401 FullOpts).
MISSED contexts: base: 70,976 (3.08%), diff: 77,526 (3.36%)
Overall (-22 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| coreclr_tests.run.linux.arm.checked.mch |
321,408,598 |
-62 |
| libraries_tests.run.linux.arm.Release.mch |
244,971,184 |
+40 |
FullOpts (-22 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| coreclr_tests.run.linux.arm.checked.mch |
108,689,136 |
-62 |
| libraries_tests.run.linux.arm.Release.mch |
122,627,856 |
+40 |
Example diffs
coreclr_tests.run.linux.arm.checked.mch
-34 (-2.83%) : 475721.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,T23] ( 3, 1.69) 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,T22] ( 3, 1.69) 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.48) 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.73) ref -> r9 "guarded devirt return temp"
+; V13 tmp9 [V13,T11] ( 8, 2.73) 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,T21] ( 4, 1.73) ref -> r5 "guarded devirt return temp"
+; V15 tmp11 [V15,T20] ( 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,T19] ( 8, 2.02) ref -> r7 "guarded devirt return temp"
+; V17 tmp13 [V17,T18] ( 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,T33] ( 3, 1.15) int -> r0
-; V21 tmp17 [V21,T20] ( 3, 1.85) ref -> r10 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V20 tmp16 [V20,T32] ( 3, 1.15) int -> r0
+; V21 tmp17 [V21,T19] ( 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,T39] ( 3, 0.75) ref -> r10 "guarded devirt return temp"
-; V26 tmp22 [V26,T15] ( 5, 2.25) ref -> r0 single-def "guarded devirt arg temp"
+; V25 tmp21 [V25,T38] ( 3, 0.75) ref -> r10 "guarded devirt return temp"
+; V26 tmp22 [V26,T14] ( 5, 2.25) 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,T40] ( 3, 0.75) ref -> r10 "guarded devirt return temp"
-; V29 tmp25 [V29,T16] ( 5, 2.25) ref -> r0 single-def "guarded devirt arg temp"
+; V28 tmp24 [V28,T39] ( 3, 0.75) ref -> r10 "guarded devirt return temp"
+; V29 tmp25 [V29,T15] ( 5, 2.25) 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,T41] ( 3, 0.73) ref -> r3 "guarded devirt return temp"
-; V32 tmp28 [V32,T17] ( 5, 2.19) ref -> r0 single-def "guarded devirt arg temp"
+; V31 tmp27 [V31,T40] ( 3, 0.73) ref -> r3 "guarded devirt return temp"
+; V32 tmp28 [V32,T16] ( 5, 2.19) 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,T42] ( 3, 0.73) ref -> r3 "guarded devirt return temp"
-; V35 tmp31 [V35,T18] ( 5, 2.19) ref -> r0 single-def "guarded devirt arg temp"
+; V34 tmp30 [V34,T41] ( 3, 0.73) ref -> r3 "guarded devirt return temp"
+; V35 tmp31 [V35,T17] ( 5, 2.19) 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,T11] ( 5, 2.80) ref -> r0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V38 tmp34 [V38,T34] ( 3, 0.93) ref -> r5 "guarded devirt return temp"
+; V37 tmp33 [V37,T10] ( 5, 2.80) ref -> r0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+; V38 tmp34 [V38,T33] ( 3, 0.93) 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.75) ref -> r0 class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
; V42 tmp38 [V42,T07] ( 4, 3.75) 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.48) ref -> r5 class-hnd exact single-def "impAppendStmt" <<unknown class>>
-; V45 tmp41 [V45,T14] ( 2, 2.31) int -> r8 "impAppendStmt"
-; V46 tmp42 [V46,T31] ( 4, 1.15) ref -> r0 "guarded devirt return temp"
+; V45 tmp41 [V45,T13] ( 2, 2.31) int -> r8 "impAppendStmt"
+; V46 tmp42 [V46,T30] ( 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,T32] ( 3, 1.15) ref -> r0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V53 tmp49 [V53,T31] ( 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,T30] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V57 tmp53 [V57,T13] ( 4, 2.72) ref -> r1 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V58 tmp54 [V58,T36] ( 3, 0.85) int -> r0
-; V59 tmp55 [V59,T29] ( 3, 1.36) ref -> r8 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V56 tmp52 [V56,T29] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V57 tmp53 [V57,T12] ( 3, 2.54) ref -> r0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V58 tmp54 [V58,T35] ( 3, 0.85) int -> r0
+; V59 tmp55 [V59,T28] ( 3, 1.49) 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,T43] ( 3, 0.68) ref -> r3 "guarded devirt return temp"
+; V61 tmp57 [V61,T42] ( 3, 0.68) ref -> r3 "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.55) ref -> r8 "guarded devirt return temp"
-; V64 tmp60 [V64,T25] ( 5, 1.65) ref -> r0 single-def "guarded devirt arg temp"
+; V63 tmp59 [V63,T43] ( 3, 0.62) ref -> r8 "guarded devirt return temp"
+; V64 tmp60 [V64,T24] ( 5, 1.65) 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.55) ref -> r8 "guarded devirt return temp"
-; V67 tmp63 [V67,T26] ( 5, 1.65) ref -> r0 single-def "guarded devirt arg temp"
+; V66 tmp62 [V66,T44] ( 3, 0.55) ref -> r8 "guarded devirt return temp"
+; V67 tmp63 [V67,T25] ( 5, 1.65) 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.54) ref -> r3 "guarded devirt return temp"
-; V70 tmp66 [V70,T27] ( 5, 1.61) ref -> r0 single-def "guarded devirt arg temp"
+; V69 tmp65 [V69,T45] ( 3, 0.54) ref -> r3 "guarded devirt return temp"
+; V70 tmp66 [V70,T26] ( 5, 1.61) 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.54) ref -> r3 "guarded devirt return temp"
-; V73 tmp69 [V73,T28] ( 5, 1.61) ref -> r0 single-def "guarded devirt arg temp"
+; V72 tmp68 [V72,T46] ( 3, 0.54) ref -> r3 "guarded devirt return temp"
+; V73 tmp69 [V73,T27] ( 5, 1.61) 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,T10] ( 8, 2.82) ref -> r6 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
-; V76 tmp72 [V76,T09] ( 8, 2.86) ref -> r7 single-def "field V43._instantiatedType (fldOffset=0x4)" P-INDEP
-; V77 tmp73 [V77,T24] ( 3, 1.67) int -> r4 single-def "field V43._hashcode (fldOffset=0x8)" P-INDEP
+; V75 tmp71 [V75,T09] ( 8, 2.82) ref -> r6 single-def "field V43._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V76 tmp72 [V76,T08] ( 8, 2.86) ref -> r7 single-def "field V43._instantiatedType (fldOffset=0x4)" P-INDEP
+; V77 tmp73 [V77,T23] ( 3, 1.67) 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,T22] ( 3, 1.73) ref -> r0 "CSE - moderate"
-; V82 rat0 [V82,T08] ( 6, 3.39) ref -> r3 class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
+; V81 cse0 [V81,T21] ( 3, 1.73) ref -> r0 "CSE - moderate"
;
; Lcl frame size = 20
@@ -152,7 +151,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_IG48
+ bne G_M10698_IG67
ldr r9, [r6+0x08]
; gcrRegs +[r9]
;; size=24 bbWeight=0.58 PerfScore 4.03
@@ -169,7 +168,7 @@ G_M10698_IG11: ; bbWeight=0.46, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefReg
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- bne G_M10698_IG55
+ bne G_M10698_IG59
;; size=18 bbWeight=0.46 PerfScore 2.31
G_M10698_IG12: ; bbWeight=0.37, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r0, [r8+0x34]
@@ -178,16 +177,16 @@ G_M10698_IG12: ; bbWeight=0.37, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefReg
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r3, r2
- bne G_M10698_IG76
+ bne G_M10698_IG69
ldr r0, [r0+0x38]
ldr r3, [r0]
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r3, r2
- bne G_M10698_IG49
+ bne G_M10698_IG68
ldr r10, [r0+0x04]
; gcrRegs +[r10]
- b SHORT G_M10698_IG50
+ b SHORT G_M10698_IG57
;; size=44 bbWeight=0.37 PerfScore 5.24
G_M10698_IG13: ; bbWeight=0.41, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r6-r10] +[r5]
@@ -228,7 +227,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_IG57
+ bne G_M10698_IG58
;; size=28 bbWeight=0.58 PerfScore 5.19
G_M10698_IG18: ; bbWeight=0.47, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x08]
@@ -238,7 +237,7 @@ G_M10698_IG18: ; bbWeight=0.47, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r3, r2
- bne G_M10698_IG77
+ bne G_M10698_IG70
ldr r5, [r0+0x04]
; gcrRegs +[r5]
;; size=22 bbWeight=0.47 PerfScore 3.73
@@ -251,7 +250,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_IG42
+ bne G_M10698_IG44
;; 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
@@ -302,11 +301,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_IG80
+ bne G_M10698_IG73
ldr r0, [r6+0x10]
; gcrRegs +[r0]
cmp r0, 0
- beq G_M10698_IG79
+ beq G_M10698_IG72
;; 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
@@ -357,7 +356,7 @@ G_M10698_IG30: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=07D
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- bne G_M10698_IG56
+ bne G_M10698_IG60
;; size=18 bbWeight=0.46 PerfScore 2.31
G_M10698_IG31: ; bbWeight=0.37, gcrefRegs=07D0 {r4 r6 r7 r8 r9 r10}, byrefRegs=0000 {}, byref, isz
ldr r0, [r9+0x34]
@@ -366,13 +365,13 @@ G_M10698_IG31: ; bbWeight=0.37, gcrefRegs=07D0 {r4 r6 r7 r8 r9 r10}, byre
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r3, r2
- bne G_M10698_IG75
+ bne G_M10698_IG66
ldr r0, [r0+0x38]
ldr r3, [r0]
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r3, r2
- bne G_M10698_IG74
+ bne G_M10698_IG65
ldr r3, [r0+0x04]
; gcrRegs +[r3]
;; size=40 bbWeight=0.37 PerfScore 4.75
@@ -400,7 +399,7 @@ G_M10698_IG35: ; bbWeight=0.42, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
;; size=14 bbWeight=0.42 PerfScore 2.12
G_M10698_IG36: ; bbWeight=0.21, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4]
- b SHORT G_M10698_IG51
+ b SHORT G_M10698_IG45
;; size=2 bbWeight=0.21 PerfScore 0.21
G_M10698_IG37: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r5-r6]
@@ -418,13 +417,13 @@ G_M10698_IG38: ; bbWeight=0.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r3, r2
- bne G_M10698_IG78
+ bne G_M10698_IG71
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // Internal.TypeSystem.Ecma.EcmaType:GetHashCode():int:this
...
-28 (-2.61%) : 472984.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.92) 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,T34] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-; V07 tmp3 [V07,T33] ( 2, 0.83) ref -> r0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V08 tmp4 [V08,T21] ( 3, 1.66) 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,T33] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V07 tmp3 [V07,T32] ( 2, 0.83) ref -> r0 class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V08 tmp4 [V08,T20] ( 3, 1.66) 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.72) ref -> r8 class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
; V11 tmp7 [V11,T03] ( 14, 5.17) 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,T11] ( 8, 2.79) ref -> r9 "guarded devirt return temp"
+; V13 tmp9 [V13,T10] ( 8, 2.79) 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,T18] ( 4, 1.76) ref -> r5 "guarded devirt return temp"
+; V15 tmp11 [V15,T17] ( 4, 1.76) 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, 1.98) ref -> r7 "guarded devirt return temp"
+; V17 tmp13 [V17,T14] ( 8, 1.98) 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,T28] ( 3, 1.17) int -> r0
-; V21 tmp17 [V21,T17] ( 3, 1.83) ref -> r10 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V20 tmp16 [V20,T27] ( 3, 1.17) int -> r0
+; V21 tmp17 [V21,T16] ( 3, 1.83) 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.91) ref -> r3 "guarded devirt return temp"
+; V23 tmp19 [V23,T29] ( 3, 0.91) 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.54) ref -> r10 "guarded devirt return temp"
-; V26 tmp22 [V26,T22] ( 5, 1.62) ref -> r0 single-def "guarded devirt arg temp"
+; V25 tmp21 [V25,T36] ( 3, 0.54) ref -> r10 "guarded devirt return temp"
+; V26 tmp22 [V26,T21] ( 5, 1.62) 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,T35] ( 3, 0.65) ref -> r3 "guarded devirt return temp"
-; V29 tmp25 [V29,T16] ( 5, 1.95) ref -> r0 single-def "guarded devirt arg temp"
+; V28 tmp24 [V28,T34] ( 3, 0.65) ref -> r3 "guarded devirt return temp"
+; V29 tmp25 [V29,T15] ( 5, 1.95) 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.49) ref -> r0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V32 tmp28 [V32,T31] ( 3, 0.83) ref -> r5 "guarded devirt return temp"
+; V31 tmp27 [V31,T11] ( 5, 2.49) ref -> r0 class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+; V32 tmp28 [V32,T30] ( 3, 0.83) 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.81) ref -> r0 class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
; V36 tmp32 [V36,T07] ( 4, 3.81) 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.51) ref -> r5 class-hnd exact single-def "impAppendStmt" <<unknown class>>
-; V39 tmp35 [V39,T14] ( 2, 2.34) int -> r8 "impAppendStmt"
-; V40 tmp36 [V40,T26] ( 4, 1.17) ref -> r0 "guarded devirt return temp"
+; V39 tmp35 [V39,T13] ( 2, 2.34) int -> r8 "impAppendStmt"
+; V40 tmp36 [V40,T25] ( 4, 1.17) 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.04) byref -> r8 single-def "impAppendStmt"
-; V43 tmp39 [V43,T42] ( 3, 0.02) int -> r0 "guarded devirt return temp"
-; V44 tmp40 [V44,T40] ( 5, 0.06) ref -> r0 single-def "guarded devirt arg temp"
+; V42 tmp38 [V42,T40] ( 2, 0.04) byref -> r8 single-def "impAppendStmt"
+; V43 tmp39 [V43,T41] ( 3, 0.02) int -> r0 "guarded devirt return temp"
+; V44 tmp40 [V44,T39] ( 5, 0.06) 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,T27] ( 3, 1.17) ref -> r0 class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V47 tmp43 [V47,T26] ( 3, 1.17) 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.67) 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,T25] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V51 tmp47 [V51,T12] ( 4, 2.58) ref -> r0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V52 tmp48 [V52,T32] ( 3, 0.83) int -> r0
-; V53 tmp49 [V53,T24] ( 3, 1.29) ref -> r8 class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V50 tmp46 [V50,T24] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V51 tmp47 [V51,T12] ( 3, 2.49) ref -> r0 class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V52 tmp48 [V52,T31] ( 3, 0.83) int -> r0
+; V53 tmp49 [V53,T23] ( 3, 1.29) 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,T36] ( 3, 0.65) ref -> r3 "guarded devirt return temp"
+; V55 tmp51 [V55,T35] ( 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.38) ref -> r8 "guarded devirt return temp"
-; V58 tmp54 [V58,T29] ( 5, 1.15) ref -> r0 single-def "guarded devirt arg temp"
+; V57 tmp53 [V57,T38] ( 3, 0.38) ref -> r8 "guarded devirt return temp"
+; V58 tmp54 [V58,T28] ( 5, 1.15) 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.46) ref -> r3 "guarded devirt return temp"
-; V61 tmp57 [V61,T23] ( 5, 1.38) ref -> r0 single-def "guarded devirt arg temp"
+; V60 tmp56 [V60,T37] ( 3, 0.46) ref -> r3 "guarded devirt return temp"
+; V61 tmp57 [V61,T22] ( 5, 1.38) 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.84) ref -> r6 single-def "field V37._typicalMethodDef (fldOffset=0x0)" P-INDEP
-; V64 tmp60 [V64,T09] ( 8, 2.87) ref -> r7 single-def "field V37._instantiatedType (fldOffset=0x4)" P-INDEP
-; V65 tmp61 [V65,T20] ( 3, 1.67) int -> r4 single-def "field V37._hashcode (fldOffset=0x8)" P-INDEP
+; V63 tmp59 [V63,T09] ( 8, 2.84) ref -> r6 single-def "field V37._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V64 tmp60 [V64,T08] ( 8, 2.87) ref -> r7 single-def "field V37._instantiatedType (fldOffset=0x4)" P-INDEP
+; V65 tmp61 [V65,T19] ( 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,T19] ( 3, 1.76) ref -> r0 "CSE - moderate"
-; V70 rat0 [V70,T08] ( 6, 3.32) ref -> r3 class-hnd "replacement local" <Internal.TypeSystem.ArrayType>
+; V69 cse0 [V69,T18] ( 3, 1.76) ref -> r0 "CSE - moderate"
;
; Lcl frame size = 20
@@ -140,7 +139,7 @@ G_M10698_IG08: ; bbWeight=0.59, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- bne G_M10698_IG81
+ bne G_M10698_IG52
ldr r9, [r6+0x08]
; gcrRegs +[r9]
;; size=24 bbWeight=0.59 PerfScore 4.10
@@ -157,7 +156,7 @@ G_M10698_IG11: ; bbWeight=0.46, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefReg
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- bne G_M10698_IG57
+ bne G_M10698_IG56
;; size=18 bbWeight=0.46 PerfScore 2.28
G_M10698_IG12: ; bbWeight=0.27, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r0, [r8+0x38]
@@ -166,10 +165,10 @@ G_M10698_IG12: ; bbWeight=0.27, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefReg
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r3, r2
- bne G_M10698_IG82
+ bne G_M10698_IG53
ldr r10, [r0+0x04]
; gcrRegs +[r10]
- b SHORT G_M10698_IG68
+ b SHORT G_M10698_IG54
;; size=26 bbWeight=0.27 PerfScore 2.16
G_M10698_IG13: ; bbWeight=0.22, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r6-r10] +[r5]
@@ -210,7 +209,7 @@ G_M10698_IG17: ; bbWeight=0.59, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- bne G_M10698_IG69
+ bne G_M10698_IG58
;; size=28 bbWeight=0.59 PerfScore 5.27
G_M10698_IG18: ; bbWeight=0.42, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x08]
@@ -220,7 +219,7 @@ G_M10698_IG18: ; bbWeight=0.42, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r3, r2
- bne G_M10698_IG84
+ bne G_M10698_IG79
;; size=20 bbWeight=0.42 PerfScore 2.91
G_M10698_IG19: ; bbWeight=0.42, gcrefRegs=00C1 {r0 r6 r7}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
@@ -287,11 +286,11 @@ G_M10698_IG27: ; bbWeight=0.59, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- bne G_M10698_IG74
+ bne G_M10698_IG71
ldr r0, [r6+0x10]
; gcrRegs +[r0]
cmp r0, 0
- beq G_M10698_IG73
+ beq G_M10698_IG70
;; size=28 bbWeight=0.59 PerfScore 5.27
G_M10698_IG28: ; bbWeight=0.59, gcrefRegs=00E1 {r0 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
movw r3, 0xd1ff
@@ -367,7 +366,7 @@ G_M10698_IG35: ; bbWeight=0.41, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
beq SHORT G_M10698_IG40
;; size=4 bbWeight=0.41 PerfScore 0.83
G_M10698_IG36: ; bbWeight=0.32, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M10698_IG61
+ b SHORT G_M10698_IG60
;; size=2 bbWeight=0.32 PerfScore 0.32
G_M10698_IG37: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r5-r7]
@@ -385,13 +384,13 @@ G_M10698_IG38: ; bbWeight=0.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r3, r2
- bne G_M10698_IG85
+ bne G_M10698_IG80
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // Internal.TypeSystem.Ecma.EcmaType:GetHashCode():int:this
; gcrRegs -[r0]
- b SHORT G_M10698_IG72
+ b SHORT G_M10698_IG69
;; size=36 bbWeight=0.01 PerfScore 0.12
G_M10698_IG39: ; bbWeight=0.15, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r8]
@@ -437,7 +436,7 @@ G_M10698_IG45: ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=007
;; size=14 bbWeight=0.41 PerfScore 2.07
G_M10698_IG46: ; bbWeight=0.21, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4]
- b SHORT G_M10698_IG56
+ b SHORT G_M10698_IG59
;; size=2 bbWeight=0.21 PerfScore 0.21
G_M10698_IG47: ; bbWeight=0.15, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r7]
@@ -453,35 +452,25 @@ G_M10698_IG48: ; bbWeight=0.41, 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_IG51
- ;; size=20 bbWeight=0.41 PerfScore 3.73
-G_M10698_IG49: ; bbWeight=0.21, gcrefRegs=0039 {r0 r3 r4 r5}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r3]
- movw r3, 0xd1ff
- ; gcrRegs -[r3]
- movt r3, 0xd1ff
- cmp r1, r3
- bne SHORT G_M10698_IG55
- ;; size=14 bbWeight=0.21 PerfScore 1.04
-G_M10698_IG50: ; bbWeight=0.16, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ mov r1, r0
+ ; gcrRegs +[r1]
+ movw r0, 0xd1ff
; gcrRegs -[r0]
- movs r3, 0
- ;; size=2 bbWeight=0.16 PerfScore 0.16
-G_M10698_IG51: ; bbWeight=0.41, gcrefRegs=0038 {r3 r4 r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r3]
- cmp r3, 0
- bne SHORT G_M10698_IG52
+ movt r0, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[r1] +[r0]
+ cmp r0, 0
+ bne SHORT G_M10698_IG49
movs r0, 0
- b SHORT G_M10698_IG53
- ;; size=8 bbWeight=0.41 PerfScore 1.66
-G_M10698_IG52: ; bbWeight=0.41, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
+ ; gcrRegs -[r0]
+ b SHORT G_M10698_IG50
+ ;; size=42 bbWeight=0.41 PerfScore 6.63
+G_M10698_IG49: ; bbWeight=0.41, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=0.41 PerfScore 0.41
...
libraries_tests.run.linux.arm.Release.mch
-18 (-1.07%) : 101520.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
@@ -158,7 +158,7 @@ G_M58093_IG04: ; bbWeight=1.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r6, [r8+0x0C]
ands r0, r6, 2
cmp r0, 0
- bne G_M58093_IG27
+ bne G_M58093_IG43
cmp r0, 0
beq SHORT G_M58093_IG05
movs r0, 0
@@ -218,7 +218,7 @@ G_M58093_IG11: ; bbWeight=0.55, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
; gcr arg pop 0
cmp r0, 0
- beq G_M58093_IG26
+ beq G_M58093_IG42
movw r1, 0xd1ff
movt r1, 0xd1ff
movw r2, 0xd1ff
@@ -231,7 +231,7 @@ G_M58093_IG11: ; bbWeight=0.55, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
;; size=44 bbWeight=0.55 PerfScore 8.27
G_M58093_IG12: ; bbWeight=0.55, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz
cmp r0, 0
- beq G_M58093_IG25
+ beq G_M58093_IG41
;; size=6 bbWeight=0.55 PerfScore 1.10
G_M58093_IG13: ; bbWeight=0.55, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz
str r0, [sp+0x10] // [V09 loc7]
@@ -245,15 +245,15 @@ G_M58093_IG14: ; bbWeight=0.44, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}
movw r0, 0xd1ff
movt r0, 0xd1ff
cmp r1, r0
- beq G_M58093_IG33
+ beq SHORT G_M58093_IG18
movw r0, 0xd1ff
movt r0, 0xd1ff
cmp r1, r0
- beq G_M58093_IG34
+ beq SHORT G_M58093_IG19
movw r0, 0xd1ff
movt r0, 0xd1ff
cmp r1, r0
- bne G_M58093_IG35
+ bne SHORT G_M58093_IG20
mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -265,10 +265,466 @@ G_M58093_IG14: ; bbWeight=0.44, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}
str r0, [sp+0x10] // [V09 loc7]
; GC ptr vars +{V09}
b SHORT G_M58093_IG48
- ;; size=62 bbWeight=0.44 PerfScore 8.89
-G_M58093_IG15: ; bbWeight=0, gcrefRegs=0150 {r4 r6 r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0] +[r6 r8]
+ ;; size=56 bbWeight=0.44 PerfScore 8.89
+G_M58093_IG15: ; bbWeight=0.02, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0] +[r7]
; GC ptr vars -{V09}
+ mov r0, r7
+ ; gcrRegs +[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // Xunit.Internal.ArgumentFormatter:IsAnonymousType(System.Reflection.TypeInfo):ubyte
+ ; gcrRegs -[r0]
+ ; gcr arg pop 0
+ mov r8, r0
+ cmp r8, 0
+ bne SHORT G_M58093_IG17
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ ldr r0, [r0]
+ ; gcrRegs +[r0]
+ movs r1, 3
+ str r1, [sp] // [V14 OutArgs]
+ str r0, [sp+0x04] // [V14 OutArgs+0x04]
+ ; gcr arg write
+ movs r0, 0
+ ; gcrRegs -[r0]
+ str r0, [sp+0x08] // [V14 OutArgs+0x08]
+ ; gcr arg write
+ mov r0, r7
+ ; gcrRegs +[r0]
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ movs r2, 28
+ movs r3, 0
+ movw lr, 0xd1ff
+ movt lr, 0xd1ff
+ ldr lr, [lr]
+ blx lr // System.Type:GetMethod(System.String,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this
+ ; gcr arg pop 0
+ mov r6, r0
+ ; gcrRegs +[r6]
+ cmp r6, 0
+ beq SHORT G_M58093_IG17
+ ldr r0, [r6]
+ ; gcrRegs -[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ bne G_M58093_IG38
+ mov r0, r6
+ ; gcrRegs +[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // System.Reflection.RuntimeMethodInfo:get_DeclaringType():System.Type:this
+ ; gcr arg pop 0
+ ;; size=106 bbWeight=0.02 PerfScore 0.86
+G_M58093_IG16: ; bbWeight=0.02, gcrefRegs=00D1 {r0 r4 r6 r7}, byrefRegs=0000 {}, byref, isz
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ cmp r0, r1
+ bne G_M58093_IG37
+ ;; size=14 bbWeight=0.02 PerfScore 0.09
+G_M58093_IG17: ; bbWeight=0.02, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0 r6]
+ mov r0, r4
+ ; gcrRegs +[r0]
+ mov r1, r5
+ mov r2, r7
+ ; gcrRegs +[r2]
+ mov r3, r8
+ movw lr, 0xd1ff
+ movt lr, 0xd1ff
+ ldr lr, [lr]
+ blx lr // Xunit.Internal.ArgumentFormatter:FormatComplexValue(System.Object,int,System.Type,ubyte):System.String
+ ; gcrRegs -[r2 r7]
+ ; gcr arg pop 0
+ str r0, [sp+0x10] // [V09 loc7]
+ ; GC ptr vars +{V09}
+ b SHORT G_M58093_IG48
+ ;; size=26 bbWeight=0.02 PerfScore 0.23
+G_M58093_IG18: ; bbWeight=0.44, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0]
+ ; GC ptr vars -{V09}
+ mov r1, r4
+ ; gcrRegs +[r1]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_UNBOX
+ ; gcrRegs -[r1]
+ ; byrRegs +[r0]
+ ; gcr arg pop 0
+ ldrh r0, [r0]
+ ; byrRegs -[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // Xunit.Internal.ArgumentFormatter:FormatCharValue(ushort):System.String
+ ; gcrRegs +[r0]
+ ; gcr arg pop 0
+ str r0, [sp+0x10] // [V09 loc7]
+ ; GC ptr vars +{V09}
+ b SHORT G_M58093_IG48
+ ;; size=38 bbWeight=0.44 PerfScore 5.78
+G_M58093_IG19: ; bbWeight=0.44, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0]
+ ; GC ptr vars -{V09}
+ mov r0, r4
+ ; gcrRegs +[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // Xunit.Internal.ArgumentFormatter:FormatFloatValue(System.Object):System.String
+ ; gcr arg pop 0
+ str r0, [sp+0x10] // [V09 loc7]
+ ; GC ptr vars +{V09}
+ b SHORT G_M58093_IG48
+ ;; size=18 bbWeight=0.44 PerfScore 3.11
+G_M58093_IG20: ; bbWeight=0.44, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0] +[r7]
+ ; GC ptr vars -{V09}
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r1, r0
+ beq SHORT G_M58093_IG22
+ ;; size=12 bbWeight=0.44 PerfScore 1.75
+G_M58093_IG21: ; bbWeight=0.44, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r1, r0
+ beq SHORT G_M58093_IG22
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r1, r0
+ bne SHORT G_M58093_IG23
+ mov r0, r4
+ ; gcrRegs +[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // Xunit.Internal.ArgumentFormatter:FormatStringValue(System.String):System.String
+ ; gcrRegs -[r7]
+ ; gcr arg pop 0
+ str r0, [sp+0x10] // [V09 loc7]
+ ; GC ptr vars +{V09}
+ b SHORT G_M58093_IG48
+ ;; size=42 bbWeight=0.44 PerfScore 6.55
+G_M58093_IG22: ; bbWeight=0.44, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0]
+ ; GC ptr vars -{V09}
+ mov r0, r4
+ ; gcrRegs +[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // Xunit.Internal.ArgumentFormatter:FormatDateTimeValue(System.Object):System.String
+ ; gcr arg pop 0
+ str r0, [sp+0x10] // [V09 loc7]
+ ; GC ptr vars +{V09}
+ b SHORT G_M58093_IG48
+ ;; size=18 bbWeight=0.44 PerfScore 3.06
+G_M58093_IG23: ; bbWeight=0.42, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0] +[r7]
+ ; GC ptr vars -{V09}
+ mov r1, r4
+ ; gcrRegs +[r1]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[r1 r4] +[r0]
+ ; gcr arg pop 0
+ cmp r0, 0
+ bne G_M58093_IG36
+ ldr r4, [sp+0x14] // [V00 arg0]
+ ; gcrRegs +[r4]
+ mov r6, r7
+ ; gcrRegs +[r6]
+ movw r0, 0xd1ff
+ ; gcrRegs -[r0]
+ movt r0, 0xd1ff
+ ldr r0, [r0]
+ ; gcrRegs +[r0]
+ cmp r0, 0
+ beq SHORT G_M58093_IG26
+ ldr r0, [r7]
+ ; gcrRegs -[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ cmp r0, r3
+ bne SHORT G_M58093_IG35
+ mov r0, r7
+ ; gcrRegs +[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
...
-12 (-0.74%) : 590645.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
@@ -9,7 +9,7 @@
; 12 inlinees with PGO data; 16 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 21, 8.40) ref -> [sp+0x14] class-hnd EH-live single-def <System.Object>
+; V00 arg0 [V00,T00] ( 21, 8.38) ref -> [sp+0x14] class-hnd EH-live single-def <System.Object>
; V01 arg1 [V01,T01] ( 5, 2.10) int -> r6 single-def
; V02 loc0 [V02,T16] ( 3, 1.91) ref -> r4 class-hnd single-def <System.Type>
; V03 loc1 [V03,T22] ( 2, 1.07) ref -> r0 class-hnd exact <System.String>
@@ -313,7 +313,7 @@ G_M58093_IG19: ; bbWeight=0.04, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0000
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- bne G_M58093_IG31
+ bne SHORT G_M58093_IG26
mov r0, r9
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -321,7 +321,7 @@ G_M58093_IG19: ; bbWeight=0.04, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0000
ldr r3, [r3]
blx r3 // System.Reflection.RuntimeMethodInfo:get_DeclaringType():System.Type:this
; gcr arg pop 0
- ;; size=32 bbWeight=0.04 PerfScore 0.42
+ ;; size=30 bbWeight=0.04 PerfScore 0.42
G_M58093_IG20: ; bbWeight=0.04, gcrefRegs=02A1 {r0 r5 r7 r9}, byrefRegs=0000 {}, byref, isz
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -356,16 +356,16 @@ G_M58093_IG22: ; bbWeight=0.54, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}
movw r0, 0xd1ff
movt r0, 0xd1ff
cmp r4, r0
- beq G_M58093_IG30
+ beq SHORT G_M58093_IG25
movw r0, 0xd1ff
movt r0, 0xd1ff
cmp r4, r0
- beq G_M58093_IG30
+ beq SHORT G_M58093_IG25
movw r0, 0xd1ff
movt r0, 0xd1ff
cmp r4, r0
beq G_M58093_IG36
- ;; size=56 bbWeight=0.54 PerfScore 8.59
+ ;; size=52 bbWeight=0.54 PerfScore 8.59
G_M58093_IG23: ; bbWeight=0.27, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
b SHORT G_M58093_IG39
;; size=2 bbWeight=0.27 PerfScore 0.27
@@ -398,13 +398,13 @@ G_M58093_IG24: ; bbWeight=0, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, b
mov r4, r1
; gcrRegs +[r4]
cmp r4, 0
- beq G_M58093_IG32
+ beq SHORT G_M58093_IG27
ldr r0, [r4]
; gcrRegs -[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- beq G_M58093_IG32
+ beq SHORT G_M58093_IG27
mov r0, r3
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -412,9 +412,93 @@ G_M58093_IG24: ; bbWeight=0, gcrefRegs=0220 {r5 r9}, byrefRegs=0000 {}, b
; gcrRegs -[r1 r4] +[r0]
; gcr arg pop 0
bkpt
- ;; size=78 bbWeight=0 PerfScore 0.00
-G_M58093_IG25: ; bbWeight=0, gcrefRegs=0230 {r4 r5 r9}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0] +[r4 r9]
+ ;; size=74 bbWeight=0 PerfScore 0.00
+G_M58093_IG25: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0]
+ mov r0, r5
+ ; gcrRegs +[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // Xunit.Internal.ArgumentFormatter:FormatDateTimeValue(System.Object):System.String
+ ; gcr arg pop 0
+ str r0, [sp+0x10] // [V09 loc7]
+ ; GC ptr vars +{V09}
+ b SHORT G_M58093_IG55
+ ;; size=18 bbWeight=0 PerfScore 0.00
+G_M58093_IG26: ; bbWeight=0, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0] +[r7 r9]
+ ; GC ptr vars -{V09}
+ mov r0, r9
+ ; gcrRegs +[r0]
+ ldr r3, [r9]
+ ldr r3, [r3+0x2C]
+ ldr r3, [r3+0x1C]
+ blx r3 // <unknown method>
+ ; gcr arg pop 0
+ b SHORT G_M58093_IG20
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M58093_IG27: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0 r7 r9] +[r4]
+ cmp r4, 0
+ bne SHORT G_M58093_IG28
+ movw r4, 0xd1ff
+ ; gcrRegs -[r4]
+ movt r4, 0xd1ff
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M58093_IG28: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r4]
+ str r4, [sp+0x10] // [V09 loc7]
+ ; GC ptr vars +{V09}
+ b SHORT G_M58093_IG55
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M58093_IG29: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r4]
+ ; GC ptr vars -{V09}
+ mov r0, r5
+ ; gcrRegs +[r0]
+ mov r1, r6
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // Xunit.Internal.ArgumentFormatter:FormatTupleValue(System.Object,int):System.String
+ ; gcr arg pop 0
+ str r0, [sp+0x10] // [V09 loc7]
+ ; GC ptr vars +{V09}
+ b SHORT G_M58093_IG55
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M58093_IG30: ; bbWeight=0, gcrefRegs=03B0 {r4 r5 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0] +[r4 r7-r9]
+ ; GC ptr vars -{V09}
+ mov r2, r8
+ ; gcrRegs +[r2]
+ mov r1, r4
+ ; gcrRegs +[r1]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movs r3, 0
+ movw lr, 0xd1ff
+ movt lr, 0xd1ff
+ ldr lr, [lr]
+ blx lr // <unknown method>
+ ; gcrRegs -[r1-r2 r4 r8]
+ ; gcr arg pop 0
+ b SHORT G_M58093_IG46
+ ;; size=30 bbWeight=0 PerfScore 0.00
+G_M58093_IG31: ; bbWeight=0, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0000 {}, byref, isz
+ mov r0, r7
+ ; gcrRegs +[r0]
+ ldr r3, [r7]
+ ldr r3, [r3+0x6C]
+ ldr r3, [r3+0x14]
+ blx r3 // System.Reflection.TypeInfo:get_ImplementedInterfaces():System.Collections.Generic.IEnumerable`1[System.Type]:this
+ ; gcr arg pop 0
+ mov r4, r0
+ ; gcrRegs +[r4]
+ b SHORT G_M58093_IG45
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M58093_IG32: ; bbWeight=0, gcrefRegs=0230 {r4 r5 r9}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0 r7]
mov r0, r9
; gcrRegs +[r0]
ldr r3, [r9]
@@ -427,7 +511,7 @@ G_M58093_IG25: ; bbWeight=0, gcrefRegs=0230 {r4 r5 r9}, byrefRegs=0000 {}
; gcrRegs +[r6]
ldr r3, [r6+0x04]
cmp r3, 0
- beq G_M58093_IG34
+ beq SHORT G_M58093_IG34
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -452,7 +536,7 @@ G_M58093_IG25: ; bbWeight=0, gcrefRegs=0230 {r4 r5 r9}, byrefRegs=0000 {}
ldr r2, [r0]
; gcrRegs +[r2]
cmp r2, 0
- bne SHORT G_M58093_IG26
+ bne SHORT G_M58093_IG33
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
@@ -485,8 +569,8 @@ G_M58093_IG25: ; bbWeight=0, gcrefRegs=0230 {r4 r5 r9}, byrefRegs=0000 {}
; gcrRegs -[r1]
mov r2, r9
; gcrRegs +[r2]
- ;; size=146 bbWeight=0 PerfScore 0.00
-G_M58093_IG26: ; bbWeight=0, gcrefRegs=01F4 {r2 r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
+ ;; size=144 bbWeight=0 PerfScore 0.00
+G_M58093_IG33: ; bbWeight=0, gcrefRegs=01F4 {r2 r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r9]
mov r1, r6
; gcrRegs +[r1]
@@ -534,91 +618,8 @@ G_M58093_IG26: ; bbWeight=0, gcrefRegs=01F4 {r2 r4 r5 r6 r7 r8}, byrefReg
; gcrRegs +[r6]
b SHORT G_M58093_IG35
;; size=88 bbWeight=0 PerfScore 0.00
-G_M58093_IG27: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0 r4 r6]
- mov r0, r5
- ; gcrRegs +[r0]
- mov r1, r6
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // Xunit.Internal.ArgumentFormatter:FormatTupleValue(System.Object,int):System.String
- ; gcr arg pop 0
- str r0, [sp+0x10] // [V09 loc7]
- ; GC ptr vars +{V09}
- b SHORT G_M58093_IG55
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M58093_IG28: ; bbWeight=0, gcrefRegs=03B0 {r4 r5 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0] +[r4 r7-r9]
- ; GC ptr vars -{V09}
- mov r2, r8
- ; gcrRegs +[r2]
- mov r1, r4
- ; gcrRegs +[r1]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movs r3, 0
- movw lr, 0xd1ff
- movt lr, 0xd1ff
- ldr lr, [lr]
- blx lr // <unknown method>
- ; gcrRegs -[r1-r2 r4 r8]
- ; gcr arg pop 0
- b SHORT G_M58093_IG46
- ;; size=30 bbWeight=0 PerfScore 0.00
-G_M58093_IG29: ; bbWeight=0, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0000 {}, byref, isz
- mov r0, r7
- ; gcrRegs +[r0]
- ldr r3, [r7]
- ldr r3, [r3+0x6C]
- ldr r3, [r3+0x14]
- blx r3 // System.Reflection.TypeInfo:get_ImplementedInterfaces():System.Collections.Generic.IEnumerable`1[System.Type]:this
- ; gcr arg pop 0
- mov r4, r0
- ; gcrRegs +[r4]
- b SHORT G_M58093_IG45
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M58093_IG30: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0 r4 r7 r9]
- mov r0, r5
- ; gcrRegs +[r0]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // Xunit.Internal.ArgumentFormatter:FormatDateTimeValue(System.Object):System.String
- ; gcr arg pop 0
- str r0, [sp+0x10] // [V09 loc7]
- ; GC ptr vars +{V09}
- b SHORT G_M58093_IG55
- ;; size=18 bbWeight=0 PerfScore 0.00
...
-2 (-0.34%) : 393388.dasm - System.Threading.Tasks.Task:ContinueWithCore(System.Threading.Tasks.Task,System.Threading.Tasks.TaskScheduler,System.Threading.CancellationToken,int):this (Tier1)
@@ -9,7 +9,7 @@
; 2 inlinees with PGO data; 18 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 12, 6.87) ref -> r4 this class-hnd single-def <System.Threading.Tasks.Task>
+; V00 this [V00,T00] ( 12, 6.88) ref -> r4 this class-hnd single-def <System.Threading.Tasks.Task>
; V01 arg1 [V01,T01] ( 9, 6 ) ref -> r5 class-hnd single-def <System.Threading.Tasks.Task>
; V02 arg2 [V02,T03] ( 4, 4 ) ref -> r6 class-hnd single-def <System.Threading.Tasks.TaskScheduler>
; V03 arg3 [V03 ] ( 7, 4 ) struct ( 4) [sp+0x2C] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
@@ -19,7 +19,7 @@
; V07 loc2 [V07,T06] ( 3, 1.83) ref -> r6 class-hnd exact single-def <<unknown class>>
; V08 loc3 [V08 ] ( 2, 0 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T04] ( 6, 5.94) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V10 tmp1 [V10,T04] ( 6, 6 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V11 tmp2 [V11,T11] ( 2, 0 ) int -> r8 "impAppendStmt"
; V12 tmp3 [V12,T12] ( 2, 0 ) int -> r9 "impAppendStmt"
;* V13 tmp4 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -118,7 +118,7 @@ G_M53372_IG05: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
ldr r1, [sp+0x2C] // [V27 tmp18]
; gcrRegs +[r1]
cmp r1, 0
- bne SHORT G_M53372_IG16
+ bne SHORT G_M53372_IG17
;; size=48 bbWeight=1 PerfScore 17.00
G_M53372_IG06: ; bbWeight=1, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r1]
@@ -144,12 +144,12 @@ G_M53372_IG08: ; bbWeight=0.46, gcrefRegs=00B8 {r3 r4 r5 r7}, byrefRegs=0
movw r0, 0xd1ff
movt r0, 0xd1ff
cmp r1, r0
- bne SHORT G_M53372_IG14
+ bne SHORT G_M53372_IG15
;; size=14 bbWeight=0.46 PerfScore 2.29
-G_M53372_IG09: ; bbWeight=0.35, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref
+G_M53372_IG09: ; bbWeight=0.36, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref
; gcrRegs -[r3]
movs r3, 0
- ;; size=2 bbWeight=0.35 PerfScore 0.35
+ ;; size=2 bbWeight=0.36 PerfScore 0.36
G_M53372_IG10: ; bbWeight=0.91, gcrefRegs=00B8 {r3 r4 r5 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r3]
cmp r3, 0
@@ -160,7 +160,7 @@ G_M53372_IG10: ; bbWeight=0.91, gcrefRegs=00B8 {r3 r4 r5 r7}, byrefRegs=0
; gcrRegs +[r6]
ldrb r0, [r6+0x5D]
cmp r0, 0
- bne SHORT G_M53372_IG19
+ bne SHORT G_M53372_IG20
;; size=22 bbWeight=0.91 PerfScore 7.31
G_M53372_IG11: ; bbWeight=1, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r3 r5-r6]
@@ -173,19 +173,19 @@ G_M53372_IG11: ; bbWeight=1, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, b
dmb 15
ands r0, r0, 0x1600000
cmp r0, 0
- bne SHORT G_M53372_IG15
+ bne SHORT G_M53372_IG14
;; size=28 bbWeight=1 PerfScore 10.00
G_M53372_IG12: ; bbWeight=0.87, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x10]
; gcrRegs +[r0]
dmb 15
cmp r0, 0
- bne G_M53372_IG22
+ bne SHORT G_M53372_IG16
add r0, r4, 16
; gcrRegs -[r0]
; byrRegs +[r0]
cmp r0, 0
- beq SHORT G_M53372_IG21
+ beq G_M53372_IG22
mov r1, r7
; gcrRegs +[r1]
movs r2, 0
@@ -195,7 +195,7 @@ G_M53372_IG12: ; bbWeight=0.87, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}
; gcrRegs -[r1] +[r0]
; byrRegs -[r0]
cmp r0, 0
- bne SHORT G_M53372_IG22
+ bne SHORT G_M53372_IG16
;; size=38 bbWeight=0.87 PerfScore 12.20
G_M53372_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r0 r4 r7]
@@ -204,7 +204,21 @@ G_M53372_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add sp, 4
bx lr
;; size=10 bbWeight=1 PerfScore 4.00
-G_M53372_IG14: ; bbWeight=0.11, gcVars=00000000 {}, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M53372_IG14: ; bbWeight=0.13, gcVars=00000000 {}, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r4 r7]
+ mov r0, r7
+ ; gcrRegs +[r0]
+ mov r1, r4
+ ; gcrRegs +[r1]
+ movs r2, 1
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0-r1 r4 r7]
+ b SHORT G_M53372_IG13
+ ;; size=20 bbWeight=0.13 PerfScore 1.03
+G_M53372_IG15: ; bbWeight=0.10, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r4-r5 r7]
mov r1, r4
; gcrRegs +[r1]
@@ -217,37 +231,39 @@ G_M53372_IG14: ; bbWeight=0.11, gcVars=00000000 {}, gcrefRegs=00B0 {r4 r5
mov r3, r0
; gcrRegs +[r3]
b SHORT G_M53372_IG10
- ;; size=24 bbWeight=0.11 PerfScore 0.88
-G_M53372_IG15: ; bbWeight=0.10, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=0.10 PerfScore 0.77
+G_M53372_IG16: ; bbWeight=0, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r3 r5]
- mov r0, r7
+ mov r0, r4
; gcrRegs +[r0]
- mov r1, r4
+ mov r1, r7
; gcrRegs +[r1]
- movs r2, 1
+ movs r2, 0
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ; gcrRegs -[r0-r1 r4 r7]
- b SHORT G_M53372_IG13
- ;; size=20 bbWeight=0.10 PerfScore 0.80
-G_M53372_IG16: ; bbWeight=0, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r4-r5 r7]
+ ; gcrRegs -[r0-r1]
+ cmp r0, 0
+ bne SHORT G_M53372_IG13
+ b SHORT G_M53372_IG14
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M53372_IG17: ; bbWeight=0, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r5]
ldr r0, [r4+0x1C]
dmb 15
ands r0, r0, 0x1600000
cmp r0, 0
- bne SHORT G_M53372_IG17
+ bne SHORT G_M53372_IG18
add r0, sp, 44 // [V03 arg3]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // System.Threading.CancellationToken:get_IsCancellationRequested():ubyte:this
cmp r0, 0
- beq SHORT G_M53372_IG18
+ beq SHORT G_M53372_IG19
;; size=32 bbWeight=0 PerfScore 0.00
-G_M53372_IG17: ; bbWeight=0, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M53372_IG18: ; bbWeight=0, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
mov r0, r5
; gcrRegs +[r0]
ldr r1, [sp+0x2C] // [V27 tmp18]
@@ -261,7 +277,7 @@ G_M53372_IG17: ; bbWeight=0, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}
; gcrRegs -[r0-r1]
b SHORT G_M53372_IG06
;; size=24 bbWeight=0 PerfScore 0.00
-G_M53372_IG18: ; bbWeight=0, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M53372_IG19: ; bbWeight=0, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
mov r0, r5
; gcrRegs +[r0]
ldr r1, [sp+0x2C] // [V27 tmp18]
@@ -277,7 +293,7 @@ G_M53372_IG18: ; bbWeight=0, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}
; gcrRegs -[r0-r3]
b SHORT G_M53372_IG06
;; size=24 bbWeight=0 PerfScore 0.00
-G_M53372_IG19: ; bbWeight=0, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M53372_IG20: ; bbWeight=0, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r6]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -285,14 +301,14 @@ G_M53372_IG19: ; bbWeight=0, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000
blx r3 // System.Threading.Tasks.TaskScheduler:get_InternalCurrent():System.Threading.Tasks.TaskScheduler
; gcrRegs +[r0]
cmp r0, 0
- bne SHORT G_M53372_IG20
+ bne SHORT G_M53372_IG21
movw r0, 0xd1ff
; gcrRegs -[r0]
movt r0, 0xd1ff
ldr r0, [r0]
; gcrRegs +[r0]
;; size=26 bbWeight=0 PerfScore 0.00
-G_M53372_IG20: ; bbWeight=0, gcrefRegs=00F1 {r0 r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M53372_IG21: ; bbWeight=0, gcrefRegs=00F1 {r0 r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -325,7 +341,7 @@ G_M53372_IG20: ; bbWeight=0, gcrefRegs=00F1 {r0 r4 r5 r6 r7}, byrefRegs=0
; gcrRegs -[r0 r6]
b SHORT G_M53372_IG11
;; size=72 bbWeight=0 PerfScore 0.00
-G_M53372_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M53372_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r4 r7]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -333,24 +349,8 @@ G_M53372_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blx r3 // System.ThrowHelper:ThrowNullReferenceException()
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-G_M53372_IG22: ; bbWeight=0, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r4 r7]
- mov r0, r4
- ; gcrRegs +[r0]
- mov r1, r7
- ; gcrRegs +[r1]
- movs r2, 0
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ; gcrRegs -[r0-r1]
- cmp r0, 0
- bne G_M53372_IG13
- b SHORT G_M53372_IG15
- ;; size=26 bbWeight=0 PerfScore 0.00
-; Total bytes of code 582, prolog size 12, PerfScore 107.57, instruction count 208, allocated bytes for code 582 (MethodHash=b7622f83) for method System.Threading.Tasks.Task:ContinueWithCore(System.Threading.Tasks.Task,System.Threading.Tasks.TaskScheduler,System.Threading.CancellationToken,int):this (Tier1)
+; Total bytes of code 580, prolog size 12, PerfScore 107.70, instruction count 208, allocated bytes for code 580 (MethodHash=b7622f83) for method System.Threading.Tasks.Task:ContinueWithCore(System.Threading.Tasks.Task,System.Threading.Tasks.TaskScheduler,System.Threading.CancellationToken,int):this (Tier1)
; ============================================================
Unwind Info:
@@ -362,7 +362,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 291 (0x00123) Actual length = 582 (0x000246)
+ Function Length : 290 (0x00122) Actual length = 580 (0x000244)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+2 (+1.18%) : 181421.dasm - Microsoft.CodeAnalysis.CSharp.BoundNode:get_HasAnyErrors():ubyte:this (Tier1)
@@ -9,7 +9,7 @@
; 2 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 5.24) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundNode>
+; V00 this [V00,T01] ( 6, 5.15) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundNode>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Nullable`1[ubyte]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T03] ( 3, 5.98) ref -> r5 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
@@ -31,7 +31,7 @@
;* V19 tmp17 [V19 ] ( 0, 0 ) ubyte -> zero-ref "field V08.hasValue (fldOffset=0x0)" P-INDEP
; V20 tmp18 [V20,T07] ( 3, 1.98) ubyte -> r3 "field V08.value (fldOffset=0x1)" P-INDEP
; V21 cse0 [V21,T05] ( 3, 3 ) ref -> r0 "CSE - aggressive"
-; V22 rat0 [V22,T00] ( 5, 7.48) ref -> r5 class-hnd "replacement local" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V22 rat0 [V22,T00] ( 5, 7.30) ref -> r5 class-hnd "replacement local" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;
; Lcl frame size = 0
@@ -45,7 +45,7 @@ G_M41946_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
ldrsh r0, [r4+0x08]
ands r0, r0, 1
cmp r0, 0
- bne SHORT G_M41946_IG16
+ bne SHORT G_M41946_IG17
ldr r0, [r4+0x04]
; gcrRegs +[r0]
cmp r0, 0
@@ -63,23 +63,70 @@ G_M41946_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
blx r3 // Microsoft.CodeAnalysis.SyntaxNode:HasErrorsSlow():ubyte:this
; gcrRegs -[r0]
cmp r0, 0
- bne SHORT G_M41946_IG16
+ bne SHORT G_M41946_IG17
;; size=46 bbWeight=1 PerfScore 18.00
G_M41946_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r5, r4
; gcrRegs +[r5]
cmp r5, 0
- beq SHORT G_M41946_IG06
+ beq SHORT G_M41946_IG05
;; size=6 bbWeight=1 PerfScore 3.00
G_M41946_IG04: ; 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_M41946_IG06
+ bne SHORT G_M41946_IG15
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M41946_IG05: ; bbWeight=0.24, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M41946_IG05: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r4]
+ cmp r5, 0
+ beq SHORT G_M41946_IG09
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M41946_IG06: ; bbWeight=0.99, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r5+0x0C]
+ ; gcrRegs +[r0]
+ cmp r0, 0
+ beq SHORT G_M41946_IG08
+ ;; size=6 bbWeight=0.99 PerfScore 2.97
+G_M41946_IG07: ; bbWeight=0.88, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r5]
+ ldr r3, [r0]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
+ bne SHORT G_M41946_IG16
+ movs r4, 11
+ b SHORT G_M41946_IG11
+ ;; size=18 bbWeight=0.88 PerfScore 6.19
+G_M41946_IG08: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0]
+ movs r3, 0
+ b SHORT G_M41946_IG13
+ ;; size=4 bbWeight=0.11 PerfScore 0.21
+G_M41946_IG09: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movs r0, 0
+ ;; size=2 bbWeight=0.01 PerfScore 0.01
+G_M41946_IG10: ; bbWeight=0.01, epilog, nogc, extend
+ pop {r4,r5,r11,pc}
+ ;; size=4 bbWeight=0.01 PerfScore 0.01
+G_M41946_IG11: ; bbWeight=0.88, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ cmp r4, 4
+ beq SHORT G_M41946_IG12
+ movs r3, 0
+ b SHORT G_M41946_IG13
+ ;; size=8 bbWeight=0.88 PerfScore 3.54
+G_M41946_IG12: ; bbWeight=0.88, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movs r3, 1
+ ;; size=2 bbWeight=0.88 PerfScore 0.88
+G_M41946_IG13: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ uxtb r0, r3
+ ;; size=2 bbWeight=0.99 PerfScore 0.99
+G_M41946_IG14: ; bbWeight=0.99, epilog, nogc, extend
+ pop {r4,r5,r11,pc}
+ ;; size=4 bbWeight=0.99 PerfScore 0.99
+G_M41946_IG15: ; bbWeight=0.15, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r4]
mov r1, r4
; gcrRegs +[r1]
movw r0, 0xd1ff
@@ -90,72 +137,26 @@ G_M41946_IG05: ; bbWeight=0.24, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r1 r4] +[r0]
mov r5, r0
; gcrRegs +[r5]
- ;; size=22 bbWeight=0.24 PerfScore 1.68
-G_M41946_IG06: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0]
- cmp r5, 0
- beq SHORT G_M41946_IG10
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M41946_IG07: ; bbWeight=0.99, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r5+0x0C]
- ; gcrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M41946_IG09
- ;; size=6 bbWeight=0.99 PerfScore 2.97
-G_M41946_IG08: ; bbWeight=0.88, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M41946_IG05
+ ;; size=24 bbWeight=0.15 PerfScore 1.20
+G_M41946_IG16: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r5]
ldr r3, [r0]
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- cmp r3, r2
- bne SHORT G_M41946_IG18
- movs r4, 11
- b SHORT G_M41946_IG12
- ;; size=18 bbWeight=0.88 PerfScore 6.19
-G_M41946_IG09: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0]
- movs r3, 0
- b SHORT G_M41946_IG14
- ;; size=4 bbWeight=0.11 PerfScore 0.21
-G_M41946_IG10: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movs r0, 0
- ;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M41946_IG11: ; bbWeight=0.01, epilog, nogc, extend
- pop {r4,r5,r11,pc}
- ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M41946_IG12: ; bbWeight=0.88, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- cmp r4, 4
- beq SHORT G_M41946_IG13
- movs r3, 0
- b SHORT G_M41946_IG14
- ;; size=8 bbWeight=0.88 PerfScore 3.54
-G_M41946_IG13: ; bbWeight=0.88, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movs r3, 1
- ;; size=2 bbWeight=0.88 PerfScore 0.88
-G_M41946_IG14: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- uxtb r0, r3
- ;; size=2 bbWeight=0.99 PerfScore 0.99
-G_M41946_IG15: ; bbWeight=0.99, epilog, nogc, extend
- pop {r4,r5,r11,pc}
- ;; size=4 bbWeight=0.99 PerfScore 0.99
-G_M41946_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movs r0, 1
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M41946_IG17: ; bbWeight=0, epilog, nogc, extend
- pop {r4,r5,r11,pc}
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M41946_IG18: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r0]
- ldr r3, [r0]
ldr r3, [r3+0x34]
ldr r3, [r3]
blx r3 // <unknown method>
; gcrRegs -[r0]
mov r4, r0
- b SHORT G_M41946_IG12
+ b SHORT G_M41946_IG11
;; size=12 bbWeight=0 PerfScore 0.00
+G_M41946_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movs r0, 1
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M41946_IG18: ; bbWeight=0, epilog, nogc, extend
+ pop {r4,r5,r11,pc}
+ ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 170, prolog size 8, PerfScore 45.97, instruction count 67, allocated bytes for code 170 (MethodHash=090c5c25) for method Microsoft.CodeAnalysis.CSharp.BoundNode:get_HasAnyErrors():ubyte:this (Tier1)
+; Total bytes of code 172, prolog size 8, PerfScore 45.49, instruction count 68, allocated bytes for code 172 (MethodHash=090c5c25) for method Microsoft.CodeAnalysis.CSharp.BoundNode:get_HasAnyErrors():ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -167,7 +168,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 85 (0x00055) Actual length = 170 (0x0000aa)
+ Function Length : 86 (0x00056) Actual length = 172 (0x0000ac)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+1.74%) : 172906.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.78) 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.15) 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.05) 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.55, 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.55 PerfScore 6.57
+G_M16580_IG06: ; bbWeight=0.45, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
+ b SHORT G_M16580_IG11
+ ;; size=2 bbWeight=0.45 PerfScore 0.45
+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.55, 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.55, 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.55 PerfScore 6.57
-G_M16580_IG07: ; bbWeight=0.45, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
+ ;; size=16 bbWeight=0.55 PerfScore 3.29
+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.45, 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.45 PerfScore 2.71
-G_M16580_IG08: ; bbWeight=0.18, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
+G_M16580_IG12: ; bbWeight=0.18, 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.18, 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.18 PerfScore 1.06
-G_M16580_IG09: ; bbWeight=0.45, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref
+G_M16580_IG13: ; bbWeight=0.45, 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.45, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r
; gcrRegs -[r1 r4 r6]
; gcr arg pop 0
;; size=22 bbWeight=0.45 PerfScore 4.98
-G_M16580_IG10: ; bbWeight=0.45, gcrefRegs=0001 {r0}, byrefRegs=0020 {r5}, byref, isz
- b SHORT G_M16580_IG13
+G_M16580_IG14: ; bbWeight=0.45, gcrefRegs=0001 {r0}, byrefRegs=0020 {r5}, byref, isz
+ b SHORT G_M16580_IG09
;; size=2 bbWeight=0.45 PerfScore 0.45
-G_M16580_IG11: ; bbWeight=0.15, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
+G_M16580_IG15: ; bbWeight=0.15, 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.15, 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.15 PerfScore 1.04
-G_M16580_IG12: ; bbWeight=0.55, 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.55 PerfScore 3.29
-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.00, 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 (+3.28%) : 622816.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfoResolver:IsCompatibleWithOptions(System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver,System.Text.Json.JsonSerializerOptions):ubyte (Tier1)
@@ -9,7 +9,7 @@
; 1 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 4, 3.21) ref -> r0 class-hnd single-def <System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver>
+; V00 arg0 [V00,T01] ( 4, 3.17) ref -> r0 class-hnd single-def <System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver>
; V01 arg1 [V01,T02] ( 3, 2.42) ref -> r4 class-hnd single-def <System.Text.Json.JsonSerializerOptions>
; V02 loc0 [V02,T03] ( 5, 4 ) ref -> r3 class-hnd single-def <System.Text.Json.Serialization.Metadata.IBuiltInJsonTypeInfoResolver>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -19,7 +19,7 @@
;* V07 tmp4 [V07,T06] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-; V10 rat0 [V10,T00] ( 5, 7.42) ref -> r3 class-hnd "replacement local" <System.Text.Json.Serialization.Metadata.IBuiltInJsonTypeInfoResolver>
+; V10 rat0 [V10,T00] ( 5, 7.33) ref -> r3 class-hnd "replacement local" <System.Text.Json.Serialization.Metadata.IBuiltInJsonTypeInfoResolver>
;
; Lcl frame size = 0
@@ -34,17 +34,51 @@ G_M18669_IG02: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, b
mov r3, r0
; gcrRegs +[r3]
cmp r3, 0
- beq SHORT G_M18669_IG05
+ beq SHORT G_M18669_IG04
;; size=6 bbWeight=1 PerfScore 3.00
G_M18669_IG03: ; bbWeight=0.50, gcrefRegs=0019 {r0 r3 r4}, byrefRegs=0000 {}, byref, isz
ldr r1, [r3]
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r1, r2
- beq SHORT G_M18669_IG05
+ bne SHORT G_M18669_IG09
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M18669_IG04: ; bbWeight=0.21, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref
+G_M18669_IG04: ; bbWeight=1, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0]
+ cmp r3, 0
+ beq SHORT G_M18669_IG14
+ ldr r0, [r3]
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ cmp r0, r1
+ bne SHORT G_M18669_IG10
+ ;; size=18 bbWeight=1 PerfScore 7.00
+G_M18669_IG05: ; bbWeight=0.58, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r4]
+ ldr r3, [r3+0x04]
+ cmp r3, 0
+ bne SHORT G_M18669_IG07
+ ;; size=6 bbWeight=0.58 PerfScore 1.74
+G_M18669_IG06: ; bbWeight=0.49, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r3]
+ movs r5, 0
+ b SHORT G_M18669_IG11
+ ;; size=4 bbWeight=0.49 PerfScore 0.98
+G_M18669_IG07: ; bbWeight=0.11, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r3]
+ ldr r0, [r3+0x04]
+ ; gcrRegs +[r0]
+ ldr r0, [r0+0x08]
+ ; gcrRegs -[r0]
+ cmp r0, 0
+ beq SHORT G_M18669_IG06
+ ;; size=8 bbWeight=0.11 PerfScore 0.45
+G_M18669_IG08: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r3]
+ b SHORT G_M18669_IG13
+ ;; size=2 bbWeight=0.58 PerfScore 0.58
+G_M18669_IG09: ; bbWeight=0.16, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r0 r4]
mov r1, r0
; gcrRegs +[r1]
movw r0, 0xd1ff
@@ -56,49 +90,10 @@ G_M18669_IG04: ; bbWeight=0.21, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}
; gcrRegs -[r1] +[r0]
mov r3, r0
; gcrRegs +[r3]
- ;; size=22 bbWeight=0.21 PerfScore 1.47
-G_M18669_IG05: ; bbWeight=1, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M18669_IG04
+ ;; size=24 bbWeight=0.16 PerfScore 1.32
+G_M18669_IG10: ; bbWeight=0.42, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
- cmp r3, 0
- beq SHORT G_M18669_IG13
- ldr r0, [r3]
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- cmp r0, r1
- bne SHORT G_M18669_IG12
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M18669_IG06: ; bbWeight=0.58, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4]
- ldr r3, [r3+0x04]
- cmp r3, 0
- bne SHORT G_M18669_IG08
- ;; size=6 bbWeight=0.58 PerfScore 1.74
-G_M18669_IG07: ; bbWeight=0.49, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r3]
- movs r5, 0
- b SHORT G_M18669_IG10
- ;; size=4 bbWeight=0.49 PerfScore 0.98
-G_M18669_IG08: ; bbWeight=0.11, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r3]
- ldr r0, [r3+0x04]
- ; gcrRegs +[r0]
- ldr r0, [r0+0x08]
- ; gcrRegs -[r0]
- cmp r0, 0
- beq SHORT G_M18669_IG07
- ;; size=8 bbWeight=0.11 PerfScore 0.45
-G_M18669_IG09: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3]
- movs r5, 0
- ;; size=2 bbWeight=0.58 PerfScore 0.58
-G_M18669_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- uxtb r0, r5
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M18669_IG11: ; bbWeight=1, epilog, nogc, extend
- pop {r4,r5,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M18669_IG12: ; bbWeight=0.42, gcVars=00000000 {}, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r3-r4]
mov r0, r3
; gcrRegs +[r0]
mov r1, r4
@@ -111,16 +106,25 @@ G_M18669_IG12: ; bbWeight=0.42, gcVars=00000000 {}, gcrefRegs=0018 {r3 r4
blx r3 // <unknown method>
; gcrRegs -[r0-r1]
mov r5, r0
- b SHORT G_M18669_IG10
- ;; size=20 bbWeight=0.42 PerfScore 3.36
-G_M18669_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=18 bbWeight=0.42 PerfScore 2.94
+G_M18669_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ uxtb r0, r5
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M18669_IG12: ; bbWeight=1, epilog, nogc, extend
+ pop {r4,r5,r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M18669_IG13: ; bbWeight=0.58, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ movs r5, 0
+ b SHORT G_M18669_IG11
+ ;; size=4 bbWeight=0.58 PerfScore 1.16
+G_M18669_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 0
;; size=2 bbWeight=0 PerfScore 0.00
-G_M18669_IG14: ; bbWeight=0, epilog, nogc, extend
+G_M18669_IG15: ; bbWeight=0, epilog, nogc, extend
pop {r4,r5,r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 122, prolog size 8, PerfScore 26.08, instruction count 47, allocated bytes for code 122 (MethodHash=f7b1b712) for method System.Text.Json.Serialization.Metadata.JsonTypeInfoResolver:IsCompatibleWithOptions(System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver,System.Text.Json.JsonSerializerOptions):ubyte (Tier1)
+; Total bytes of code 126, prolog size 8, PerfScore 26.67, instruction count 49, allocated bytes for code 126 (MethodHash=f7b1b712) for method System.Text.Json.Serialization.Metadata.JsonTypeInfoResolver:IsCompatibleWithOptions(System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver,System.Text.Json.JsonSerializerOptions):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -132,7 +136,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 61 (0x0003d) Actual length = 122 (0x00007a)
+ Function Length : 63 (0x0003f) Actual length = 126 (0x00007e)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
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 |
-62 |
+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 |
27 |
5 |
18 |
4 |
-38 |
+78 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| realworld.run.linux.arm.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
29 |
7 |
18 |
4 |
-100 |
+78 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.arm.checked.mch |
45,977 |
5,279 |
40,698 |
1,202 (2.54%) |
1,423 (3.00%) |
| benchmarks.run_pgo.linux.arm.checked.mch |
159,274 |
58,093 |
101,181 |
3,243 (1.99%) |
3,553 (2.18%) |
| benchmarks.run_tiered.linux.arm.checked.mch |
71,355 |
38,077 |
33,278 |
945 (1.30%) |
1,124 (1.55%) |
| coreclr_tests.run.linux.arm.checked.mch |
471,423 |
259,093 |
212,330 |
7,156 (1.49%) |
7,618 (1.59%) |
| libraries.crossgen2.linux.arm.checked.mch |
195,441 |
14 |
195,427 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.linux.arm.checked.mch |
269,967 |
6 |
269,961 |
7,766 (2.78%) |
9,462 (3.39%) |
| libraries_tests.run.linux.arm.Release.mch |
708,260 |
442,850 |
265,410 |
15,984 (2.20%) |
17,521 (2.41%) |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
272,764 |
21,565 |
251,199 |
33,273 (10.81%) |
35,091 (11.40%) |
| realworld.run.linux.arm.checked.mch |
36,070 |
153 |
35,917 |
1,407 (3.72%) |
1,734 (4.59%) |
|
2,230,531 |
825,130 |
1,405,401 |
70,976 (3.08%) |
77,526 (3.36%) |
jit-analyze output
coreclr_tests.run.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 321408598 (overridden on cmd)
Total bytes of diff: 321408536 (overridden on cmd)
Total bytes of delta: -62 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-34 : 475721.dasm (-2.83 % of base)
-28 : 472984.dasm (-2.61 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-34 (-2.83 % of base) : 475721.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-28 (-2.61 % of base) : 472984.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
Top method improvements (percentages):
-34 (-2.83 % of base) : 475721.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-28 (-2.61 % of base) : 472984.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
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 244971184 (overridden on cmd)
Total bytes of diff: 244971224 (overridden on cmd)
Total bytes of delta: 40 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
10 : 432298.dasm (0.75 % of base)
10 : 78054.dasm (0.37 % of base)
8 : 371133.dasm (0.33 % of base)
8 : 564163.dasm (0.33 % of base)
4 : 172906.dasm (1.74 % of base)
4 : 192398.dasm (0.33 % of base)
4 : 331801.dasm (0.25 % of base)
4 : 622816.dasm (3.28 % of base)
4 : 133995.dasm (0.71 % of base)
4 : 431647.dasm (0.31 % of base)
4 : 66751.dasm (0.90 % of base)
2 : 192361.dasm (0.18 % of base)
2 : 650490.dasm (0.21 % of base)
2 : 181421.dasm (1.18 % of base)
2 : 192366.dasm (0.22 % of base)
2 : 350425.dasm (0.44 % of base)
2 : 488935.dasm (0.26 % of base)
2 : 650757.dasm (0.19 % of base)
Top file improvements (bytes):
-18 : 101520.dasm (-1.07 % of base)
-12 : 590645.dasm (-0.74 % of base)
-4 : 417226.dasm (-0.18 % of base)
-2 : 134475.dasm (-0.25 % of base)
-2 : 393388.dasm (-0.34 % of base)
23 total files with Code Size differences (5 improved, 18 regressed), 4 unchanged.
Top method regressions (bytes):
10 (0.75 % of base) : 432298.dasm - Xunit.Sdk.AssertEqualityComparer`1[System.__Canon]:Equals(System.__Canon,Xunit.Sdk.CollectionTracker,System.__Canon,Xunit.Sdk.CollectionTracker,byref):ubyte:this (Tier1)
10 (0.37 % of base) : 78054.dasm - Xunit.Sdk.TestInvoker`1+<<RunAsync>b__47_0>d[System.__Canon]:MoveNext():this (Tier1)
8 (0.33 % of base) : 371133.dasm - Xunit.Sdk.TestInvoker`1+<<RunAsync>b__47_0>d[System.__Canon]:MoveNext():this (Tier1)
8 (0.33 % of base) : 564163.dasm - Xunit.Sdk.TestInvoker`1+<<RunAsync>b__47_0>d[System.__Canon]:MoveNext():this (Tier1)
4 (1.74 % of base) : 172906.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.71 % of base) : 133995.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
4 (0.33 % of base) : 192398.dasm - Microsoft.VisualBasic.CompilerServices.StringType:FromObject(System.Object):System.String (Tier1)
4 (0.90 % of base) : 66751.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
4 (3.28 % of base) : 622816.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfoResolver:IsCompatibleWithOptions(System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver,System.Text.Json.JsonSerializerOptions):ubyte (Tier1)
4 (0.25 % of base) : 331801.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
4 (0.31 % of base) : 431647.dasm - System.Xml.Serialization.XmlSerializationWriter:WritePotentiallyReferencingElement(System.String,System.String,System.Object,System.Type,ubyte,ubyte):this (Tier1)
2 (1.18 % of base) : 181421.dasm - Microsoft.CodeAnalysis.CSharp.BoundNode:get_HasAnyErrors():ubyte:this (Tier1)
2 (0.18 % of base) : 192361.dasm - Microsoft.VisualBasic.CompilerServices.ShortType:FromObject(System.Object):short (Tier1)
2 (0.22 % of base) : 192366.dasm - Microsoft.VisualBasic.CompilerServices.SingleType:FromObject(System.Object,System.Globalization.NumberFormatInfo):float (Tier1)
2 (0.44 % of base) : 350425.dasm - System.Linq.Enumerable:Skip[int](System.Collections.Generic.IEnumerable`1[int],int):System.Collections.Generic.IEnumerable`1[int] (Tier1)
2 (0.26 % of base) : 488935.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectReader:Deserialize(System.Runtime.Serialization.Formatters.Binary.BinaryParser):System.Object:this (Tier1)
2 (0.21 % of base) : 650490.dasm - System.Text.Json.Serialization.Tests.ConstructorTests+<ReadSimpleObjectAsync>d__149:MoveNext():this (Tier1)
2 (0.19 % of base) : 650757.dasm - System.Text.Json.Serialization.Tests.ConstructorTests+<ReadSimpleObjectWithTrailingTriviaAsync>d__151:MoveNext():this (Tier1)
Top method improvements (bytes):
-18 (-1.07 % of base) : 101520.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
-12 (-0.74 % of base) : 590645.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
-4 (-0.18 % of base) : 417226.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
-2 (-0.25 % of base) : 134475.dasm - Microsoft.Extensions.Hosting.Internal.Host+<<StartAsync>b__15_1>d:MoveNext():this (Tier1)
-2 (-0.34 % of base) : 393388.dasm - System.Threading.Tasks.Task:ContinueWithCore(System.Threading.Tasks.Task,System.Threading.Tasks.TaskScheduler,System.Threading.CancellationToken,int):this (Tier1)
Top method regressions (percentages):
4 (3.28 % of base) : 622816.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfoResolver:IsCompatibleWithOptions(System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver,System.Text.Json.JsonSerializerOptions):ubyte (Tier1)
4 (1.74 % of base) : 172906.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
2 (1.18 % of base) : 181421.dasm - Microsoft.CodeAnalysis.CSharp.BoundNode:get_HasAnyErrors():ubyte:this (Tier1)
4 (0.90 % of base) : 66751.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
10 (0.75 % of base) : 432298.dasm - Xunit.Sdk.AssertEqualityComparer`1[System.__Canon]:Equals(System.__Canon,Xunit.Sdk.CollectionTracker,System.__Canon,Xunit.Sdk.CollectionTracker,byref):ubyte:this (Tier1)
4 (0.71 % of base) : 133995.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
2 (0.44 % of base) : 350425.dasm - System.Linq.Enumerable:Skip[int](System.Collections.Generic.IEnumerable`1[int],int):System.Collections.Generic.IEnumerable`1[int] (Tier1)
10 (0.37 % of base) : 78054.dasm - Xunit.Sdk.TestInvoker`1+<<RunAsync>b__47_0>d[System.__Canon]:MoveNext():this (Tier1)
8 (0.33 % of base) : 371133.dasm - Xunit.Sdk.TestInvoker`1+<<RunAsync>b__47_0>d[System.__Canon]:MoveNext():this (Tier1)
8 (0.33 % of base) : 564163.dasm - Xunit.Sdk.TestInvoker`1+<<RunAsync>b__47_0>d[System.__Canon]:MoveNext():this (Tier1)
4 (0.33 % of base) : 192398.dasm - Microsoft.VisualBasic.CompilerServices.StringType:FromObject(System.Object):System.String (Tier1)
4 (0.31 % of base) : 431647.dasm - System.Xml.Serialization.XmlSerializationWriter:WritePotentiallyReferencingElement(System.String,System.String,System.Object,System.Type,ubyte,ubyte):this (Tier1)
2 (0.26 % of base) : 488935.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectReader:Deserialize(System.Runtime.Serialization.Formatters.Binary.BinaryParser):System.Object:this (Tier1)
4 (0.25 % of base) : 331801.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
2 (0.22 % of base) : 192366.dasm - Microsoft.VisualBasic.CompilerServices.SingleType:FromObject(System.Object,System.Globalization.NumberFormatInfo):float (Tier1)
2 (0.21 % of base) : 650490.dasm - System.Text.Json.Serialization.Tests.ConstructorTests+<ReadSimpleObjectAsync>d__149:MoveNext():this (Tier1)
2 (0.19 % of base) : 650757.dasm - System.Text.Json.Serialization.Tests.ConstructorTests+<ReadSimpleObjectWithTrailingTriviaAsync>d__151:MoveNext():this (Tier1)
2 (0.18 % of base) : 192361.dasm - Microsoft.VisualBasic.CompilerServices.ShortType:FromObject(System.Object):short (Tier1)
Top method improvements (percentages):
-18 (-1.07 % of base) : 101520.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
-12 (-0.74 % of base) : 590645.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
-2 (-0.34 % of base) : 393388.dasm - System.Threading.Tasks.Task:ContinueWithCore(System.Threading.Tasks.Task,System.Threading.Tasks.TaskScheduler,System.Threading.CancellationToken,int):this (Tier1)
-2 (-0.25 % of base) : 134475.dasm - Microsoft.Extensions.Hosting.Internal.Host+<<StartAsync>b__15_1>d:MoveNext():this (Tier1)
-4 (-0.18 % of base) : 417226.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
23 total methods with Code Size differences (5 improved, 18 regressed).
windows x86
Diffs are based on 2,292,458 contexts (840,463 MinOpts, 1,451,995 FullOpts).
MISSED contexts: base: 7 (0.00%), diff: 6,670 (0.29%)
Overall (+127 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| coreclr_tests.run.windows.x86.checked.mch |
308,783,332 |
-41 |
| libraries_tests.run.windows.x86.Release.mch |
187,431,731 |
+168 |
FullOpts (+127 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| coreclr_tests.run.windows.x86.checked.mch |
107,089,027 |
-41 |
| libraries_tests.run.windows.x86.Release.mch |
89,274,581 |
+168 |
Example diffs
coreclr_tests.run.windows.x86.checked.mch
-26 (-2.50%) : 369547.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.60) 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,T33] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-; V06 tmp2 [V06,T32] ( 2, 0.90) ref -> ecx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
-; V07 tmp3 [V07,T17] ( 3, 1.80) 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,T32] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
+; V06 tmp2 [V06,T31] ( 2, 0.90) ref -> ecx class-hnd single-def "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V07 tmp3 [V07,T16] ( 3, 1.80) 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.66) ref -> edi class-hnd single-def "impAppendStmt" <Internal.TypeSystem.MetadataType>
; V10 tmp6 [V10,T05] ( 14, 5.10) 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,T11] ( 8, 2.38) ref -> [ebp-0x20] "guarded devirt return temp"
+; V12 tmp8 [V12,T10] ( 8, 2.38) 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.65) ref -> edi "guarded devirt return temp"
+; V14 tmp10 [V14,T18] ( 4, 1.65) 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,T15] ( 8, 1.95) ref -> esi "guarded devirt return temp"
+; V16 tmp12 [V16,T14] ( 8, 1.95) 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,T29] ( 3, 1.10) int -> ecx
-; V20 tmp16 [V20,T23] ( 3, 1.37) ref -> [ebp-0x24] class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V19 tmp15 [V19,T28] ( 3, 1.10) int -> ecx
+; V20 tmp16 [V20,T22] ( 3, 1.37) 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.66) ref -> [ebp-0x28] "guarded devirt return temp"
+; V22 tmp18 [V22,T33] ( 3, 0.66) 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.64) ref -> ecx "guarded devirt return temp"
-; V25 tmp21 [V25,T16] ( 5, 1.84) ref -> ecx single-def "guarded devirt arg temp"
+; V24 tmp20 [V24,T34] ( 3, 0.64) ref -> ecx "guarded devirt return temp"
+; V25 tmp21 [V25,T15] ( 5, 1.84) 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.52) ref -> ecx "guarded devirt return temp"
-; V28 tmp24 [V28,T21] ( 5, 1.57) ref -> ecx single-def "guarded devirt arg temp"
+; V27 tmp23 [V27,T37] ( 3, 0.52) ref -> ecx "guarded devirt return temp"
+; V28 tmp24 [V28,T20] ( 5, 1.57) 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,T09] ( 5, 3.16) ref -> ecx class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V31 tmp27 [V31,T30] ( 3, 1.05) ref -> eax "guarded devirt return temp"
+; V30 tmp26 [V30,T08] ( 5, 3.16) ref -> ecx class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+; V31 tmp27 [V31,T29] ( 3, 1.05) 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.49) ref -> ecx class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
; V35 tmp31 [V35,T04] ( 5, 5.49) 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.46) ref -> edi class-hnd exact single-def "impAppendStmt" <<unknown class>>
-; V38 tmp34 [V38,T14] ( 2, 2.20) int -> [ebp-0x10] spill-single-def "impAppendStmt"
-; V39 tmp35 [V39,T27] ( 4, 1.10) ref -> ecx "guarded devirt return temp"
+; V37 tmp33 [V37,T07] ( 4, 3.46) ref -> edi class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V38 tmp34 [V38,T13] ( 2, 2.20) int -> [ebp-0x10] spill-single-def "impAppendStmt"
+; V39 tmp35 [V39,T26] ( 4, 1.10) 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,T28] ( 3, 1.10) ref -> eax class-hnd "Inline return value spill temp" <Internal.TypeSystem.MethodForInstantiatedType>
+; V46 tmp42 [V46,T27] ( 3, 1.10) 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.56) 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,T10] ( 4, 2.88) ref -> eax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
-; V51 tmp47 [V51,T31] ( 3, 0.90) int -> ecx
-; V52 tmp48 [V52,T26] ( 3, 1.12) 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,T09] ( 3, 2.71) ref -> eax class-hnd single-def "Inlining Arg" <Internal.TypeSystem.TypeDesc>
+; V51 tmp47 [V51,T30] ( 3, 0.90) int -> ecx
+; V52 tmp48 [V52,T25] ( 3, 1.12) 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,T22] ( 5, 1.52) ref -> ecx single-def "guarded devirt arg temp"
+; V56 tmp52 [V56,T36] ( 3, 0.52) ref -> registers "guarded devirt return temp"
+; V57 tmp53 [V57,T21] ( 5, 1.52) 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.43) ref -> eax "guarded devirt return temp"
-; V60 tmp56 [V60,T24] ( 5, 1.29) ref -> ecx single-def "guarded devirt arg temp"
+; V59 tmp55 [V59,T38] ( 3, 0.43) ref -> eax "guarded devirt return temp"
+; V60 tmp56 [V60,T23] ( 5, 1.29) 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.28) ref -> ebx single-def "field V36._typicalMethodDef (fldOffset=0x0)" P-INDEP
-; V63 tmp59 [V63,T12] ( 8, 2.28) ref -> esi single-def "field V36._instantiatedType (fldOffset=0x4)" P-INDEP
-; V64 tmp60 [V64,T25] ( 3, 1.18) int -> [ebp-0x18] spill-single-def "field V36._hashcode (fldOffset=0x8)" P-INDEP
+; V62 tmp58 [V62,T12] ( 8, 2.28) ref -> ebx single-def "field V36._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V63 tmp59 [V63,T11] ( 8, 2.28) ref -> esi single-def "field V36._instantiatedType (fldOffset=0x4)" P-INDEP
+; V64 tmp60 [V64,T24] ( 3, 1.18) 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.65) ref -> ecx "CSE - conservative"
-; V70 rat0 [V70,T07] ( 6, 3.61) 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.65) ref -> ecx "CSE - conservative"
; TEMP_02 ref -> [ebp-0x34]
; TEMP_01 int -> [ebp-0x38]
;
@@ -139,7 +138,7 @@ G_M10698_IG07: ; bbWeight=0.55, 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.55 PerfScore 4.94
@@ -160,9 +159,9 @@ G_M10698_IG11: ; bbWeight=0.31, gcrefRegs=000000CC {edx ebx esi edi}, byr
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.31 PerfScore 3.07
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=0000000000000004 {V03}, gcrefRegs=
mov gword ptr [ebp-0x20], edx
; GC ptr vars +{V12}
;; size=8 bbWeight=0.22 PerfScore 0.27
-G_M10698_IG15: ; bbWeight=0.55, gcVars=0000000000000804 {V03 V12}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M10698_IG15: ; bbWeight=0.55, gcVars=0000000000000404 {V03 V12}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[edx]
call [<unknown method>]
xor ecx, ecx
@@ -208,7 +207,7 @@ G_M10698_IG16: ; bbWeight=0.53, gcrefRegs=00000048 {ebx esi}, byrefRegs=0
; 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.53 PerfScore 5.27
@@ -259,11 +258,11 @@ G_M10698_IG19: ; bbWeight=0.55, 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.55 PerfScore 5.63
G_M10698_IG20: ; bbWeight=0.55, 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.55, gcrefRegs=000000CA {ecx ebx esi edi}, byr
call [<unknown method>]
; gcrRegs -[ecx]
test eax, eax
- je G_M10698_IG54
+ je G_M10698_IG49
;; size=38 bbWeight=0.55 PerfScore 9.47
G_M10698_IG21: ; bbWeight=0.46, 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.45, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
cmp dword ptr [edi], 0xD1FFAB1E
je G_M10698_IG39
cmp dword ptr [ebx], 0xD1FFAB1E
- jne G_M10698_IG66
+ jne G_M10698_IG62
mov esi, gword ptr [ebx+0x08]
;; size=27 bbWeight=0.45 PerfScore 4.51
G_M10698_IG29: ; bbWeight=0.45, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
test esi, esi
- je G_M10698_IG53
+ je G_M10698_IG48
;; size=8 bbWeight=0.45 PerfScore 0.56
G_M10698_IG30: ; 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.09
G_M10698_IG31: ; bbWeight=0.25, 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.25 PerfScore 2.02
@@ -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_IG68
+ jne G_M10698_IG64
;; size=15 bbWeight=0.21 PerfScore 1.29
G_M10698_IG34: ; bbWeight=0.21, gcrefRegs=000000CE {ecx edx ebx esi edi}, byrefRegs=00000000 {}, byref
mov eax, gword ptr [ecx+0x04]
@@ -409,9 +408,9 @@ G_M10698_IG38: ; bbWeight=0.14, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs -[eax] +[edx esi edi]
mov gword ptr [ebp-0x30], edx
; GC ptr vars +{V52}
- jmp G_M10698_IG56
+ jmp G_M10698_IG54
;; size=8 bbWeight=0.14 PerfScore 0.41
-G_M10698_IG39: ; bbWeight=0.45, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M10698_IG39: ; bbWeight=0.45, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[edx ebx]
; GC ptr vars -{V52}
mov ecx, esi
@@ -421,52 +420,82 @@ G_M10698_IG39: ; bbWeight=0.45, 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
- je SHORT G_M10698_IG48
- ;; size=18 bbWeight=0.45 PerfScore 5.30
-G_M10698_IG40: ; bbWeight=0.23, gcrefRegs=000000C3 {eax ecx esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [ecx], 0xD1FFAB1E
- je SHORT G_M10698_IG47
- ;; size=8 bbWeight=0.23 PerfScore 0.90
-G_M10698_IG41: ; bbWeight=0.09, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx]
mov edx, eax
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; Internal.TypeSystem.ArrayType
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[edx]
+ xor ecx, ecx
...
-15 (-1.44%) : 372476.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.63) 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.63) 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.08) 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.57) ref -> [ebp-0x20] "guarded devirt return temp"
+; V12 tmp8 [V12,T08] ( 8, 2.57) 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,T17] ( 4, 1.77) ref -> edi "guarded devirt return temp"
+; V14 tmp10 [V14,T16] ( 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,T16] ( 8, 1.78) ref -> esi "guarded devirt return temp"
+; V16 tmp12 [V16,T15] ( 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.53) ref -> [ebp-0x24] class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+; V19 tmp15 [V19,T27] ( 3, 1.18) int -> ecx
+; V20 tmp16 [V20,T20] ( 3, 1.53) 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.73) ref -> [ebp-0x28] "guarded devirt return temp"
+; V22 tmp18 [V22,T33] ( 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,T35] ( 3, 0.69) ref -> ecx "guarded devirt return temp"
-; V25 tmp21 [V25,T15] ( 5, 1.97) ref -> ecx single-def "guarded devirt arg temp"
+; V24 tmp20 [V24,T34] ( 3, 0.69) ref -> ecx "guarded devirt return temp"
+; V25 tmp21 [V25,T14] ( 5, 1.97) 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.58) ref -> ecx "guarded devirt return temp"
-; V28 tmp24 [V28,T19] ( 5, 1.73) ref -> ecx single-def "guarded devirt arg temp"
+; V27 tmp23 [V27,T35] ( 3, 0.58) ref -> ecx "guarded devirt return temp"
+; V28 tmp24 [V28,T18] ( 5, 1.73) 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,T13] ( 5, 2.41) ref -> ecx class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
-; V31 tmp27 [V31,T33] ( 3, 0.80) ref -> eax "guarded devirt return temp"
+; V30 tmp26 [V30,T12] ( 5, 2.41) ref -> ecx class-hnd single-def "spilling ret_expr" <Internal.TypeSystem.Ecma.EcmaModule>
+; V31 tmp27 [V31,T32] ( 3, 0.80) 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.92) ref -> ecx class-hnd "spilling QMark2" <Internal.TypeSystem.MethodForInstantiatedType>
; V35 tmp31 [V35,T03] ( 5, 5.92) 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,T14] ( 2, 2.37) int -> [ebp-0x10] spill-single-def "impAppendStmt"
-; V39 tmp35 [V39,T26] ( 4, 1.18) ref -> ecx "guarded devirt return temp"
+; V38 tmp34 [V38,T13] ( 2, 2.37) 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.65) 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.06) ref -> [ebp-0x30] class-hnd "impAppendStmt" <Internal.TypeSystem.TypeSystemContext>
+;* V49 tmp45 [V49,T23] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.ArrayType>
+; V50 tmp46 [V50,T11] ( 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.06) 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.50) ref -> eax "guarded devirt return temp"
+; V54 tmp50 [V54,T36] ( 3, 0.50) 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.48) ref -> registers "guarded devirt return temp"
-; V57 tmp53 [V57,T23] ( 5, 1.36) ref -> ecx single-def "guarded devirt arg temp"
+; V56 tmp52 [V56,T37] ( 3, 0.48) ref -> registers "guarded devirt return temp"
+; V57 tmp53 [V57,T21] ( 5, 1.36) 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.40) ref -> eax "guarded devirt return temp"
-; V60 tmp56 [V60,T25] ( 5, 1.19) ref -> ecx single-def "guarded devirt arg temp"
+; V59 tmp55 [V59,T38] ( 3, 0.40) ref -> eax "guarded devirt return temp"
+; V60 tmp56 [V60,T24] ( 5, 1.19) 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,T10] ( 8, 2.45) ref -> ebx single-def "field V36._typicalMethodDef (fldOffset=0x0)" P-INDEP
+; V63 tmp59 [V63,T09] ( 8, 2.45) ref -> esi single-def "field V36._instantiatedType (fldOffset=0x4)" P-INDEP
+; V64 tmp60 [V64,T22] ( 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,T18] ( 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,T17] ( 3, 1.77) ref -> ecx "CSE - conservative"
; TEMP_02 ref -> [ebp-0x34]
; TEMP_01 int -> [ebp-0x38]
;
@@ -152,7 +151,7 @@ G_M10698_IG08: ; bbWeight=0.59, gcVars=0000000000000000 {}, gcrefRegs=000
mov edi, gword ptr [eax+0x34]
; gcrRegs +[edi]
cmp dword ptr [ebx], 0xD1FFAB1E
- jne G_M10698_IG58
+ jne G_M10698_IG57
mov edx, gword ptr [ebx+0x08]
; gcrRegs +[edx]
;; size=21 bbWeight=0.59 PerfScore 5.32
@@ -173,7 +172,7 @@ G_M10698_IG12: ; bbWeight=0.33, gcrefRegs=000000CC {edx ebx esi edi}, byr
mov ecx, gword ptr [edi+0x38]
; gcrRegs +[ecx]
cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M10698_IG59
+ jne G_M10698_IG58
mov ecx, gword ptr [ecx+0x04]
;; size=18 bbWeight=0.33 PerfScore 2.63
G_M10698_IG13: ; bbWeight=0.36, gcrefRegs=000000CE {ecx edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
@@ -184,22 +183,22 @@ G_M10698_IG13: ; bbWeight=0.36, gcrefRegs=000000CE {ecx edx ebx esi edi},
; GC ptr vars +{V20}
jne SHORT G_M10698_IG19
;; size=14 bbWeight=0.36 PerfScore 2.19
-G_M10698_IG14: ; bbWeight=0.29, gcVars=0000000000400410 {V03 V12 V20}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M10698_IG14: ; bbWeight=0.29, gcVars=0000000000100110 {V03 V12 V20}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx edx]
mov edx, gword ptr [ebp-0x20]
; gcrRegs +[edx]
mov ecx, gword ptr [edx+0x38]
; gcrRegs +[ecx]
cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M10698_IG60
+ jne G_M10698_IG59
mov ecx, gword ptr [ecx+0x04]
;; size=21 bbWeight=0.29 PerfScore 2.59
-G_M10698_IG15: ; bbWeight=0.29, gcVars=0000000000400010 {V03 V20}, gcrefRegs=000000CE {ecx edx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M10698_IG15: ; bbWeight=0.29, gcVars=0000000000100010 {V03 V20}, gcrefRegs=000000CE {ecx edx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V12}
mov gword ptr [ebp-0x28], ecx
; GC ptr vars +{V22}
;; size=3 bbWeight=0.29 PerfScore 0.29
-G_M10698_IG16: ; bbWeight=0.36, gcVars=0000000400400010 {V03 V20 V22}, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M10698_IG16: ; bbWeight=0.36, gcVars=0000000200100010 {V03 V20 V22}, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx]
mov ecx, gword ptr [ebp-0x24]
; gcrRegs +[ecx]
@@ -210,7 +209,7 @@ G_M10698_IG16: ; bbWeight=0.36, gcVars=0000000400400010 {V03 V20 V22}, gc
mov gword ptr [ebp-0x20], edx
; GC ptr vars +{V12}
;; size=15 bbWeight=0.36 PerfScore 1.91
-G_M10698_IG17: ; bbWeight=0.59, gcVars=0000000000000410 {V03 V12}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M10698_IG17: ; bbWeight=0.59, gcVars=0000000000000110 {V03 V12}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[edx]
; GC ptr vars -{V20 V22}
call [<unknown method>]
@@ -228,21 +227,21 @@ G_M10698_IG18: ; bbWeight=0.40, gcrefRegs=00000048 {ebx esi}, byrefRegs=0
; gcrRegs +[ecx]
mov ecx, gword ptr [ecx+0x38]
cmp dword ptr [ecx], 0xD1FFAB1E
- jne G_M10698_IG61
+ jne G_M10698_IG60
mov eax, gword ptr [ecx+0x04]
; gcrRegs +[eax]
jmp G_M10698_IG30
;; size=26 bbWeight=0.40 PerfScore 4.83
-G_M10698_IG19: ; bbWeight=0.18, gcVars=0000000000400410 {V03 V12 V20}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M10698_IG19: ; bbWeight=0.18, gcVars=0000000000100110 {V03 V12 V20}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax ecx] +[edi]
- ; GC ptr vars +{V10 V12 V20 V22}
+ ; GC ptr vars +{V08 V12 V20}
mov edx, gword ptr [ebp-0x20]
; gcrRegs +[edx]
jmp SHORT G_M10698_IG22
;; size=5 bbWeight=0.18 PerfScore 0.55
G_M10698_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[edx] +[ecx]
- ; GC ptr vars -{V03 V10 V12 V20 V22}
+ ; GC ptr vars -{V03 V08 V12 V20}
mov gword ptr [ebp-0x1C], ecx
; GC ptr vars +{V03}
jmp G_M10698_IG07
@@ -269,7 +268,7 @@ G_M10698_IG21: ; bbWeight=0.04, gcVars=0000000000000010 {V03}, gcrefRegs=
mov edx, gword ptr [ebp-0x20]
; gcrRegs +[edx]
;; size=31 bbWeight=0.04 PerfScore 0.52
-G_M10698_IG22: ; bbWeight=0.08, gcVars=0000000000400010 {V03 V20}, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M10698_IG22: ; bbWeight=0.08, gcVars=0000000000100010 {V03 V20}, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax]
; GC ptr vars -{V12}
mov ecx, edx
@@ -293,7 +292,7 @@ G_M10698_IG22: ; bbWeight=0.08, gcVars=0000000000400010 {V03 V20}, gcrefR
; gcrRegs +[edx]
jmp G_M10698_IG16
;; size=36 bbWeight=0.08 PerfScore 1.24
-G_M10698_IG23: ; bbWeight=0.00, gcVars=0000020000000000 {V41}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M10698_IG23: ; bbWeight=0.00, gcVars=0000010000000000 {V41}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax edx]
; GC ptr vars -{V03 V12 V20 V22} +{V41}
mov ecx, bword ptr [ebp-0x2C]
@@ -312,11 +311,11 @@ G_M10698_IG24: ; bbWeight=0.59, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
mov eax, dword ptr [esi+0x40]
mov dword ptr [ebp-0x10], eax
cmp dword ptr [ebx], 0xD1FFAB1E
- jne G_M10698_IG63
+ jne G_M10698_IG41
mov ecx, gword ptr [ebx+0x10]
; gcrRegs +[ecx]
test ecx, ecx
- je G_M10698_IG62
+ je G_M10698_IG40
;; size=29 bbWeight=0.59 PerfScore 6.06
G_M10698_IG25: ; bbWeight=0.59, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
call [Internal.NativeFormat.TypeHashingAlgorithms:ComputeNameHashCode(System.String):int]
@@ -334,7 +333,7 @@ G_M10698_IG25: ; bbWeight=0.59, gcrefRegs=000000CA {ecx ebx esi edi}, byr
call [<unknown method>]
; gcrRegs -[ecx]
test eax, eax
- je G_M10698_IG41
+ je G_M10698_IG42
;; size=38 bbWeight=0.59 PerfScore 10.21
G_M10698_IG26: ; bbWeight=0.51, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ebx esi edi]
@@ -416,7 +415,7 @@ G_M10698_IG32: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=000
cmp dword ptr [ecx], 0xD1FFAB1E
je SHORT G_M10698_IG34
;; size=17 bbWeight=0.00 PerfScore 0.01
-G_M10698_IG33: ; bbWeight=0, gcVars=0000020000000000 {V41}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M10698_IG33: ; bbWeight=0, gcVars=0000010000000000 {V41}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[eax]
mov edx, dword ptr [ecx]
mov edx, dword ptr [edx+0x2C]
@@ -437,7 +436,7 @@ G_M10698_IG35: ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=000
;; size=8 bbWeight=0.41 PerfScore 1.63
G_M10698_IG36: ; bbWeight=0.20, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[esi]
- jmp SHORT G_M10698_IG45
+ jmp SHORT G_M10698_IG43
;; size=2 bbWeight=0.20 PerfScore 0.41
G_M10698_IG37: ; bbWeight=0.19, gcVars=0000000000000010 {V03}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[edi] +[esi]
@@ -452,7 +451,7 @@ G_M10698_IG37: ; bbWeight=0.19, gcVars=0000000000000010 {V03}, gcrefRegs=
; gcrRegs +[edi]
...
libraries_tests.run.windows.x86.Release.mch
-2 (-0.34%) : 157792.dasm - Microsoft.Cci.MetadataWriter:ResolveEntityHandleFromPseudoToken(int):System.Reflection.Metadata.EntityHandle:this (Tier1)
@@ -12,7 +12,7 @@
; V00 this [V00,T02] ( 12, 6.70) ref -> edi this class-hnd single-def <Microsoft.Cci.MetadataWriter>
; V01 arg1 [V01,T01] ( 10, 7.80) int -> esi single-def
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref single-def
-; V03 loc1 [V03,T05] ( 10, 5.61) ref -> ebx class-hnd single-def <System.Object>
+; V03 loc1 [V03,T05] ( 10, 5.59) ref -> ebx class-hnd single-def <System.Object>
; V04 loc2 [V04,T08] ( 5, 4.35) ref -> [ebp-0x10] class-hnd spill-single-def <Microsoft.Cci.IReference>
;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 4) zero-ref <System.Reflection.Metadata.EntityHandle>
; V06 loc4 [V06,T18] ( 3, 0 ) ref -> eax class-hnd single-def <Microsoft.Cci.ISignature>
@@ -38,7 +38,7 @@
;* V26 tmp19 [V26,T20] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V27 tmp20 [V27,T06] ( 3, 5.40) ref -> ecx single-def "arr expr"
; V28 tmp21 [V28,T07] ( 3, 5.40) ref -> ecx single-def "arr expr"
-; V29 rat0 [V29,T03] ( 5, 6.62) ref -> eax class-hnd "replacement local" <Microsoft.Cci.IReference>
+; V29 rat0 [V29,T03] ( 5, 6.58) ref -> eax class-hnd "replacement local" <Microsoft.Cci.IReference>
;
; Lcl frame size = 12
@@ -57,7 +57,7 @@ G_M47371_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000
mov edx, gword ptr [edi+0x14]
; gcrRegs +[edx]
cmp esi, dword ptr [edx+0x04]
- jae G_M47371_IG23
+ jae G_M47371_IG19
mov ebx, gword ptr [edx+4*esi+0x08]
; gcrRegs +[ebx]
test ebx, ebx
@@ -72,13 +72,13 @@ G_M47371_IG03: ; bbWeight=0.90, gcrefRegs=00000088 {ebx edi}, byrefRegs=0
;; size=6 bbWeight=0.90 PerfScore 1.35
G_M47371_IG04: ; bbWeight=0.45, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, byref
cmp dword ptr [eax], 0xD1FFAB1E
- jne G_M47371_IG12
+ jne G_M47371_IG16
;; size=12 bbWeight=0.45 PerfScore 1.80
G_M47371_IG05: ; bbWeight=0.90, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, byref
mov gword ptr [ebp-0x10], eax
; GC ptr vars +{V04}
test eax, eax
- je G_M47371_IG24
+ je G_M47371_IG20
mov ecx, gword ptr [edi+0x20]
; gcrRegs +[ecx]
mov gword ptr [ebp-0x18], ecx
@@ -91,7 +91,7 @@ G_M47371_IG05: ; bbWeight=0.90, gcrefRegs=00000089 {eax ebx edi}, byrefRe
call CORINFO_HELP_ISINSTANCEOFINTERFACE
; gcrRegs -[edx]
test eax, eax
- jne G_M47371_IG19
+ jne G_M47371_IG22
mov edx, gword ptr [ebp-0x10]
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; Microsoft.Cci.IFieldReference
@@ -100,7 +100,7 @@ G_M47371_IG05: ; bbWeight=0.90, gcrefRegs=00000089 {eax ebx edi}, byrefRe
mov gword ptr [ebp-0x14], eax
; GC ptr vars +{V08}
test eax, eax
- jne G_M47371_IG13
+ jne G_M47371_IG12
;; size=63 bbWeight=0.90 PerfScore 13.95
G_M47371_IG06: ; bbWeight=0.75, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
@@ -146,14 +146,14 @@ G_M47371_IG08: ; bbWeight=0.90, gcrefRegs=00000088 {ebx edi}, byrefRegs=0
call CORINFO_HELP_ISINSTANCEOFINTERFACE
; gcrRegs -[edx] +[eax]
test eax, eax
- jne G_M47371_IG20
+ jne G_M47371_IG24
mov edx, ebx
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; Microsoft.Cci.IFieldReference
call CORINFO_HELP_ISINSTANCEOFINTERFACE
; gcrRegs -[edx]
test eax, eax
- jne G_M47371_IG16
+ jne G_M47371_IG15
;; size=40 bbWeight=0.90 PerfScore 4.95
G_M47371_IG09: ; bbWeight=0.75, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
@@ -163,7 +163,7 @@ G_M47371_IG09: ; bbWeight=0.75, gcrefRegs=00000088 {ebx edi}, byrefRegs=0
call CORINFO_HELP_ISINSTANCEOFINTERFACE
; gcrRegs -[edx] +[eax]
test eax, eax
- je G_M47371_IG25
+ je G_M47371_IG21
mov ecx, edi
; gcrRegs +[ecx]
mov edx, eax
@@ -175,11 +175,11 @@ G_M47371_IG10: ; bbWeight=0.90, gcrefRegs=00000080 {edi}, byrefRegs=00000
mov ecx, gword ptr [edi+0x10]
; gcrRegs +[ecx]
cmp esi, dword ptr [ecx+0x04]
- jae G_M47371_IG23
+ jae G_M47371_IG19
mov dword ptr [ecx+4*esi+0x08], eax
mov ecx, gword ptr [edi+0x14]
cmp esi, dword ptr [ecx+0x04]
- jae G_M47371_IG23
+ jae G_M47371_IG19
xor edx, edx
; gcrRegs +[edx]
mov gword ptr [ecx+4*esi+0x08], edx
@@ -192,19 +192,11 @@ G_M47371_IG11: ; bbWeight=0.90, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0.90 PerfScore 3.15
-G_M47371_IG12: ; bbWeight=0.16, gcVars=00000000 {}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[ecx edx] +[ebx]
- mov edx, ebx
- ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; Microsoft.Cci.IReference
- call CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[edx] +[eax]
- jmp G_M47371_IG05
- ;; size=17 bbWeight=0.16 PerfScore 0.57
-G_M47371_IG13: ; bbWeight=0.15, gcVars=00000801 {V08 V10}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M47371_IG12: ; bbWeight=0.15, gcVars=00000801 {V08 V10}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[ecx edx] +[eax ebx]
; GC ptr vars +{V00 V08 V10 V11}
cmp dword ptr [eax], 0xD1FFAB1E
- je SHORT G_M47371_IG14
+ je SHORT G_M47371_IG13
mov ecx, eax
; gcrRegs +[ecx]
call [<unknown method>]
@@ -212,13 +204,13 @@ G_M47371_IG13: ; bbWeight=0.15, gcVars=00000801 {V08 V10}, gcrefRegs=0000
test eax, eax
mov eax, gword ptr [ebp-0x14]
; gcrRegs +[eax]
- jne G_M47371_IG26
+ jne G_M47371_IG23
;; size=27 bbWeight=0.15 PerfScore 1.42
-G_M47371_IG14: ; bbWeight=0.15, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, byref, isz
+G_M47371_IG13: ; bbWeight=0.15, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, byref, isz
mov edx, gword ptr [ebp-0x18]
; gcrRegs +[edx]
cmp dword ptr [edx], 0xD1FFAB1E
- jne SHORT G_M47371_IG15
+ jne SHORT G_M47371_IG14
mov ecx, edx
; gcrRegs +[ecx]
mov edx, eax
@@ -227,7 +219,7 @@ G_M47371_IG14: ; bbWeight=0.15, gcrefRegs=00000089 {eax ebx edi}, byrefRe
; gcrRegs -[eax ecx edx]
jmp G_M47371_IG08
;; size=26 bbWeight=0.15 PerfScore 1.57
-G_M47371_IG15: ; bbWeight=0.15, gcVars=00000801 {V08 V10}, gcrefRegs=0000008D {eax edx ebx edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M47371_IG14: ; bbWeight=0.15, gcVars=00000801 {V08 V10}, gcrefRegs=0000008D {eax edx ebx edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[eax edx]
; GC ptr vars +{V00 V08 V10 V11}
mov ecx, edx
@@ -242,7 +234,7 @@ G_M47371_IG15: ; bbWeight=0.15, gcVars=00000801 {V08 V10}, gcrefRegs=0000
; gcrRegs -[ecx edx]
jmp G_M47371_IG08
;; size=20 bbWeight=0.15 PerfScore 1.57
-G_M47371_IG16: ; bbWeight=0.15, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
+G_M47371_IG15: ; bbWeight=0.15, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ebx] +[eax]
mov ecx, edi
; gcrRegs +[ecx]
@@ -250,13 +242,23 @@ G_M47371_IG16: ; bbWeight=0.15, gcrefRegs=00000081 {eax edi}, byrefRegs=0
; gcrRegs +[edx]
call [Microsoft.Cci.MetadataWriter:GetFieldHandle(Microsoft.Cci.IFieldReference):System.Reflection.Metadata.EntityHandle:this]
; gcrRegs -[eax ecx edx]
- jmp G_M47371_IG10
- ;; size=15 bbWeight=0.15 PerfScore 0.82
+ jmp SHORT G_M47371_IG10
+ ;; size=12 bbWeight=0.15 PerfScore 0.82
+G_M47371_IG16: ; bbWeight=0.14, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs +[ebx]
+ mov edx, ebx
+ ; gcrRegs +[edx]
+ mov ecx, 0xD1FFAB1E ; Microsoft.Cci.IReference
+ call CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[edx] +[eax]
+ jmp G_M47371_IG05
+ ;; size=17 bbWeight=0.14 PerfScore 0.49
G_M47371_IG17: ; bbWeight=0.10, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax ebx]
mov eax, gword ptr [edi+0x10]
; gcrRegs +[eax]
cmp esi, dword ptr [eax+0x04]
- jae SHORT G_M47371_IG23
+ jae SHORT G_M47371_IG19
mov eax, dword ptr [eax+4*esi+0x08]
; gcrRegs -[eax]
;; size=12 bbWeight=0.10 PerfScore 0.80
@@ -268,60 +270,11 @@ G_M47371_IG18: ; bbWeight=0.10, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=0.10 PerfScore 0.35
-G_M47371_IG19: ; bbWeight=0, gcVars=00000001 {V10}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs +[eax ebx]
- ; GC ptr vars +{V00 V10}
- mov edx, gword ptr [ebp-0x18]
- ; gcrRegs +[edx]
- mov byte ptr [edx+0x24], 1
- mov ecx, edx
- ; gcrRegs +[ecx]
- mov edx, eax
- mov eax, gword ptr [ebp-0x18]
- mov eax, dword ptr [eax]
- ; gcrRegs -[eax]
- mov eax, dword ptr [eax+0x44]
- ; GC ptr vars -{V00 V10}
- call [eax+0x0C]<unknown method>
- ; gcrRegs -[ecx edx]
- jmp G_M47371_IG08
- ;; size=27 bbWeight=0 PerfScore 0.00
-G_M47371_IG20: ; bbWeight=0, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx] +[eax]
- push 1
- mov ecx, edi
- ; gcrRegs +[ecx]
- mov edx, eax
- ; gcrRegs +[edx]
- call [Microsoft.Cci.MetadataWriter:GetTypeHandle(Microsoft.Cci.ITypeReference,ubyte):System.Reflection.Metadata.EntityHandle:this]
- ; gcrRegs -[eax ecx edx]
- jmp G_M47371_IG10
- ;; size=17 bbWeight=0 PerfScore 0.00
-G_M47371_IG21: ; bbWeight=0, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs +[eax]
- mov ecx, edi
- ; gcrRegs +[ecx]
- mov edx, eax
- ; gcrRegs +[edx]
- call [Microsoft.Cci.MetadataWriter:GetStandaloneSignatureHandle(Microsoft.Cci.ISignature):System.Reflection.Metadata.EntityHandle:this]
- ; gcrRegs -[eax ecx edx]
- jmp G_M47371_IG10
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M47371_IG22: ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edi] +[ebx]
- mov ecx, ebx
- ; gcrRegs +[ecx]
- call [<unknown method>]
- ; gcrRegs -[ecx ebx] +[eax]
- mov ecx, eax
- ; gcrRegs +[ecx]
- call CORINFO_HELP_THROW
- ; gcrRegs -[eax ecx]
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M47371_IG23: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M47371_IG19: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[edi]
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
-G_M47371_IG24: ; bbWeight=0, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref
+G_M47371_IG20: ; bbWeight=0, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[ebx edi]
mov edx, ebx
; gcrRegs +[edx]
...
+0 (0.00%) : 334329.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 15, 3.64) ref -> [ebp-0x40] this class-hnd EH-live single-def <System.Threading.Tasks.Task>
-; V01 arg1 [V01,T01] ( 11, 5.55) ref -> esi class-hnd single-def <System.Object>
+; V01 arg1 [V01,T01] ( 11, 5.50) ref -> esi class-hnd single-def <System.Object>
; V02 loc0 [V02,T10] ( 6, 1 ) ref -> [ebp-0x44] must-init class-hnd exact EH-live single-def <System.Threading.Tasks.TplEventSource>
; V03 loc1 [V03,T07] ( 5, 2 ) ubyte -> [ebp-0x24] do-not-enreg[Z] EH-live
; V04 loc2 [V04,T06] ( 11, 2 ) ubyte -> [ebp-0x28] do-not-enreg[Z] EH-live
@@ -103,65 +103,54 @@ G_M51094_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov ecx, esi
; gcrRegs +[ecx]
test ecx, ecx
- je SHORT G_M51094_IG08
+ je SHORT G_M51094_IG07
;; size=12 bbWeight=1 PerfScore 2.75
G_M51094_IG05: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [ecx], 0xD1FFAB1E
- je SHORT G_M51094_IG07
+ jne SHORT G_M51094_IG18
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M51094_IG06: ; bbWeight=0.19, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M51094_IG06: ; bbWeight=0.35, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
- mov edx, esi
- ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[edx] +[eax]
- mov ecx, eax
- ; gcrRegs +[ecx]
- jmp SHORT G_M51094_IG08
- ;; size=16 bbWeight=0.19 PerfScore 0.73
-G_M51094_IG07: ; 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_M51094_IG08: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=0.35 PerfScore 0.09
+G_M51094_IG07: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
test ecx, ecx
- jne SHORT G_M51094_IG18
+ jne SHORT G_M51094_IG17
;; size=4 bbWeight=1 PerfScore 1.25
-G_M51094_IG09: ; bbWeight=0.64, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M51094_IG08: ; bbWeight=0.64, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
mov ecx, esi
; gcrRegs +[ecx]
test ecx, ecx
- je SHORT G_M51094_IG11
+ je SHORT G_M51094_IG10
;; size=6 bbWeight=0.64 PerfScore 0.95
-G_M51094_IG10: ; bbWeight=0.32, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+G_M51094_IG09: ; bbWeight=0.32, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
cmp dword ptr [ecx], 0xD1FFAB1E
je G_M51094_IG57
;; size=12 bbWeight=0.32 PerfScore 1.27
-G_M51094_IG11: ; bbWeight=0.64, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M51094_IG10: ; bbWeight=0.64, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
mov ecx, esi
; gcrRegs +[ecx]
test ecx, ecx
- je SHORT G_M51094_IG13
+ je SHORT G_M51094_IG12
;; size=6 bbWeight=0.64 PerfScore 0.95
-G_M51094_IG12: ; bbWeight=0.32, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M51094_IG11: ; bbWeight=0.32, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [ecx], 0xD1FFAB1E
jne SHORT G_M51094_IG20
;; size=8 bbWeight=0.32 PerfScore 1.27
-G_M51094_IG13: ; bbWeight=0.64, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M51094_IG12: ; bbWeight=0.64, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
test ecx, ecx
je SHORT G_M51094_IG21
;; size=4 bbWeight=0.64 PerfScore 0.79
-G_M51094_IG14: ; bbWeight=0.62, gcVars=0000000000000004 {V00}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M51094_IG13: ; bbWeight=0.62, gcVars=0000000000000004 {V00}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[esi]
; GC ptr vars -{V02}
cmp dword ptr [ecx], 0xD1FFAB1E
jne SHORT G_M51094_IG19
;; size=8 bbWeight=0.62 PerfScore 2.48
-G_M51094_IG15: ; bbWeight=0.54, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+G_M51094_IG14: ; bbWeight=0.54, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
push dword ptr [ebp-0x28]
mov edx, gword ptr [ebp-0x40]
; gcrRegs +[edx]
@@ -169,10 +158,10 @@ G_M51094_IG15: ; bbWeight=0.54, gcrefRegs=00000002 {ecx}, byrefRegs=00000
call [System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation:Run(System.Threading.Tasks.Task,ubyte):this]
; gcrRegs -[ecx edx]
;; size=12 bbWeight=0.54 PerfScore 2.70
-G_M51094_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M51094_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call [System.Threading.Tasks.Task:LogFinishCompletionNotification()]
;; size=6 bbWeight=1 PerfScore 3.00
-G_M51094_IG17: ; bbWeight=1, epilog, nogc, extend
+G_M51094_IG16: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -180,25 +169,37 @@ G_M51094_IG17: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=1 PerfScore 3.50
-G_M51094_IG18: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M51094_IG17: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ecx]
mov edx, dword ptr [ebp-0x28]
call [<unknown method>]
; gcrRegs -[ecx]
- jmp SHORT G_M51094_IG16
+ jmp SHORT G_M51094_IG15
;; size=11 bbWeight=0.36 PerfScore 2.19
-G_M51094_IG19: ; bbWeight=0.08, gcVars=0000000000000004 {V00}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M51094_IG18: ; bbWeight=0.15, gcVars=0000000000000404 {V00 V02}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs +[esi]
+ ; GC ptr vars +{V00 V02 V10}
+ mov edx, esi
+ ; gcrRegs +[edx]
+ mov ecx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[edx] +[eax]
+ mov ecx, eax
; gcrRegs +[ecx]
- ; GC ptr vars +{V00 V02}
+ jmp SHORT G_M51094_IG07
+ ;; size=16 bbWeight=0.15 PerfScore 0.56
+G_M51094_IG19: ; bbWeight=0.08, gcVars=0000000000000004 {V00}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax esi]
+ ; GC ptr vars -{V02 V10}
push dword ptr [ebp-0x28]
mov edx, gword ptr [ebp-0x40]
; gcrRegs +[edx]
mov eax, dword ptr [ecx]
mov eax, dword ptr [eax+0x2C]
- ; GC ptr vars -{V00 V02}
+ ; GC ptr vars -{V00}
call [eax+0x10]<unknown method>
; gcrRegs -[ecx edx]
- jmp SHORT G_M51094_IG16
+ jmp SHORT G_M51094_IG15
;; size=16 bbWeight=0.08 PerfScore 0.89
G_M51094_IG20: ; bbWeight=0.07, gcVars=0000000000000404 {V00 V02}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi]
@@ -210,7 +211,7 @@ G_M51094_IG20: ; bbWeight=0.07, gcVars=0000000000000404 {V00 V02}, gcrefR
; gcrRegs -[edx] +[eax]
mov ecx, eax
; gcrRegs +[ecx]
- jmp SHORT G_M51094_IG13
+ jmp SHORT G_M51094_IG12
;; size=16 bbWeight=0.07 PerfScore 0.25
G_M51094_IG21: ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax ecx]
@@ -236,7 +237,7 @@ G_M51094_IG24: ; bbWeight=0.02, gcVars=0000000000000004 {V00}, gcrefRegs=
; GC ptr vars -{V00}
call [System.Threading.Tasks.Task:RunOrQueueCompletionAction(System.Threading.Tasks.ITaskCompletionAction,ubyte):this]
; gcrRegs -[ecx edx]
- jmp SHORT G_M51094_IG16
+ jmp SHORT G_M51094_IG15
;; size=14 bbWeight=0.02 PerfScore 0.11
G_M51094_IG25: ; bbWeight=0, gcVars=0000000000000404 {V00 V02}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi]
@@ -611,7 +612,7 @@ G_M51094_IG49: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000
G_M51094_IG50: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
cmp edi, esi
jl G_M51094_IG43
- jmp G_M51094_IG16
+ jmp G_M51094_IG15
;; size=13 bbWeight=0 PerfScore 0.00
G_M51094_IG51: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx]
@@ -678,10 +679,10 @@ G_M51094_IG57: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=000000
mov edx, dword ptr [ebp-0x28]
call [<unknown method>]
; gcrRegs -[ecx]
- jmp G_M51094_IG16
+ jmp G_M51094_IG15
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1152, prolog size 34, PerfScore 58.07, instruction count 344, allocated bytes for code 1152 (MethodHash=8bc43869) for method System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
+; Total bytes of code 1152, prolog size 34, PerfScore 57.91, instruction count 344, allocated bytes for code 1152 (MethodHash=8bc43869) for method System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
; ============================================================
*************** EH table for System.Threading.Tasks.Task:RunContinuations(System.Object):this
+0 (0.00%) : 275110.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 15, 3.54) ref -> [ebp-0x40] this class-hnd EH-live single-def <System.Threading.Tasks.Task>
-; V01 arg1 [V01,T01] ( 11, 5.33) ref -> esi class-hnd single-def <System.Object>
+; V01 arg1 [V01,T01] ( 11, 5.27) ref -> esi class-hnd single-def <System.Object>
; V02 loc0 [V02,T10] ( 6, 1 ) ref -> [ebp-0x44] must-init class-hnd exact EH-live single-def <System.Threading.Tasks.TplEventSource>
; V03 loc1 [V03,T07] ( 5, 2 ) ubyte -> [ebp-0x24] do-not-enreg[Z] EH-live
; V04 loc2 [V04,T06] ( 11, 2 ) ubyte -> [ebp-0x28] do-not-enreg[Z] EH-live
@@ -103,65 +103,54 @@ G_M51094_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov ecx, esi
; gcrRegs +[ecx]
test ecx, ecx
- je SHORT G_M51094_IG08
+ je SHORT G_M51094_IG07
;; size=12 bbWeight=1 PerfScore 2.75
G_M51094_IG05: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [ecx], 0xD1FFAB1E
- je SHORT G_M51094_IG07
+ jne SHORT G_M51094_IG18
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M51094_IG06: ; bbWeight=0.21, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M51094_IG06: ; bbWeight=0.35, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
- mov edx, esi
- ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[edx] +[eax]
- mov ecx, eax
- ; gcrRegs +[ecx]
- jmp SHORT G_M51094_IG08
- ;; size=16 bbWeight=0.21 PerfScore 0.79
-G_M51094_IG07: ; 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_M51094_IG08: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=0.35 PerfScore 0.09
+G_M51094_IG07: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
test ecx, ecx
- jne SHORT G_M51094_IG18
+ jne SHORT G_M51094_IG17
;; size=4 bbWeight=1 PerfScore 1.25
-G_M51094_IG09: ; bbWeight=0.54, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M51094_IG08: ; bbWeight=0.54, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
mov ecx, esi
; gcrRegs +[ecx]
test ecx, ecx
- je SHORT G_M51094_IG11
+ je SHORT G_M51094_IG10
;; size=6 bbWeight=0.54 PerfScore 0.81
-G_M51094_IG10: ; bbWeight=0.27, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+G_M51094_IG09: ; bbWeight=0.27, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
cmp dword ptr [ecx], 0xD1FFAB1E
je G_M51094_IG54
;; size=12 bbWeight=0.27 PerfScore 1.07
-G_M51094_IG11: ; bbWeight=0.54, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M51094_IG10: ; bbWeight=0.54, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
mov ecx, esi
; gcrRegs +[ecx]
test ecx, ecx
- je SHORT G_M51094_IG13
+ je SHORT G_M51094_IG12
;; size=6 bbWeight=0.54 PerfScore 0.81
-G_M51094_IG12: ; bbWeight=0.27, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M51094_IG11: ; bbWeight=0.27, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [ecx], 0xD1FFAB1E
jne SHORT G_M51094_IG21
;; size=8 bbWeight=0.27 PerfScore 1.07
-G_M51094_IG13: ; bbWeight=0.54, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M51094_IG12: ; bbWeight=0.54, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
test ecx, ecx
je SHORT G_M51094_IG19
;; size=4 bbWeight=0.54 PerfScore 0.67
-G_M51094_IG14: ; bbWeight=0.51, gcVars=0000000000000004 {V00}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M51094_IG13: ; bbWeight=0.51, gcVars=0000000000000004 {V00}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[esi]
; GC ptr vars -{V02}
cmp dword ptr [ecx], 0xD1FFAB1E
jne SHORT G_M51094_IG22
;; size=8 bbWeight=0.51 PerfScore 2.05
-G_M51094_IG15: ; bbWeight=0.49, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+G_M51094_IG14: ; bbWeight=0.49, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
push dword ptr [ebp-0x28]
mov edx, gword ptr [ebp-0x40]
; gcrRegs +[edx]
@@ -169,10 +158,10 @@ G_M51094_IG15: ; bbWeight=0.49, gcrefRegs=00000002 {ecx}, byrefRegs=00000
call [System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation:Run(System.Threading.Tasks.Task,ubyte):this]
; gcrRegs -[ecx edx]
;; size=12 bbWeight=0.49 PerfScore 2.46
-G_M51094_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M51094_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call [System.Threading.Tasks.Task:LogFinishCompletionNotification()]
;; size=6 bbWeight=1 PerfScore 3.00
-G_M51094_IG17: ; bbWeight=1, epilog, nogc, extend
+G_M51094_IG16: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -180,18 +169,29 @@ G_M51094_IG17: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=1 PerfScore 3.50
-G_M51094_IG18: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M51094_IG17: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ecx]
mov edx, dword ptr [ebp-0x28]
call [<unknown method>]
; gcrRegs -[ecx]
- jmp SHORT G_M51094_IG16
+ jmp SHORT G_M51094_IG15
;; size=11 bbWeight=0.46 PerfScore 2.78
-G_M51094_IG19: ; bbWeight=0.03, gcVars=0000000000000404 {V00 V02}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M51094_IG18: ; bbWeight=0.15, gcVars=0000000000000404 {V00 V02}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi]
; GC ptr vars +{V00 V02 V10}
mov edx, esi
; gcrRegs +[edx]
+ mov ecx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[edx] +[eax]
+ mov ecx, eax
+ ; gcrRegs +[ecx]
+ jmp SHORT G_M51094_IG07
+ ;; size=16 bbWeight=0.15 PerfScore 0.56
+G_M51094_IG19: ; bbWeight=0.03, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax ecx]
+ mov edx, esi
+ ; gcrRegs +[edx]
test edx, edx
jne SHORT G_M51094_IG23
;; size=6 bbWeight=0.03 PerfScore 0.04
@@ -204,7 +204,7 @@ G_M51094_IG20: ; bbWeight=0.03, gcrefRegs=00000044 {edx esi}, byrefRegs=0
; GC ptr vars -{V00 V02 V10}
call [System.Threading.Tasks.Task:RunOrQueueCompletionAction(System.Threading.Tasks.ITaskCompletionAction,ubyte):this]
; gcrRegs -[ecx edx esi]
- jmp SHORT G_M51094_IG16
+ jmp SHORT G_M51094_IG15
;; size=22 bbWeight=0.03 PerfScore 0.21
G_M51094_IG21: ; bbWeight=0.02, gcVars=0000000000000404 {V00 V02}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi]
@@ -216,7 +216,7 @@ G_M51094_IG21: ; bbWeight=0.02, gcVars=0000000000000404 {V00 V02}, gcrefR
; gcrRegs -[edx] +[eax]
mov ecx, eax
; gcrRegs +[ecx]
- jmp SHORT G_M51094_IG13
+ jmp SHORT G_M51094_IG12
;; size=16 bbWeight=0.02 PerfScore 0.09
G_M51094_IG22: ; bbWeight=0.02, gcVars=0000000000000004 {V00}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax esi]
@@ -229,7 +229,7 @@ G_M51094_IG22: ; bbWeight=0.02, gcVars=0000000000000004 {V00}, gcrefRegs=
; GC ptr vars -{V00}
call [eax+0x10]<unknown method>
; gcrRegs -[ecx edx]
- jmp SHORT G_M51094_IG16
+ jmp SHORT G_M51094_IG15
;; size=16 bbWeight=0.02 PerfScore 0.23
G_M51094_IG23: ; bbWeight=0.01, gcVars=0000000000000404 {V00 V02}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[edx esi]
@@ -591,7 +591,7 @@ G_M51094_IG46: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000
G_M51094_IG47: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
cmp edi, esi
jl G_M51094_IG40
- jmp G_M51094_IG16
+ jmp G_M51094_IG15
;; size=13 bbWeight=0 PerfScore 0.00
G_M51094_IG48: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx]
@@ -656,7 +656,7 @@ G_M51094_IG54: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=000000
mov edx, dword ptr [ebp-0x28]
call [<unknown method>]
; gcrRegs -[ecx]
- jmp G_M51094_IG16
+ jmp G_M51094_IG15
;; size=14 bbWeight=0 PerfScore 0.00
G_M51094_IG55: ; bbWeight=0, gcVars=0000000000000404 {V00 V02}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi]
@@ -682,7 +682,7 @@ G_M51094_IG56: ; bbWeight=0, gcVars=0000000000002404 {V00 V02 V05}, gcref
jmp G_M51094_IG26
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1153, prolog size 34, PerfScore 56.55, instruction count 343, allocated bytes for code 1153 (MethodHash=8bc43869) for method System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
+; Total bytes of code 1153, prolog size 34, PerfScore 56.34, instruction count 343, allocated bytes for code 1153 (MethodHash=8bc43869) for method System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
; ============================================================
*************** EH table for System.Threading.Tasks.Task:RunContinuations(System.Object):this
+40 (+2.69%) : 67944.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 17, 3.77) ref -> edi this class-hnd single-def <System.Threading.Tasks.Task>
-; V01 arg1 [V01,T01] ( 11, 5.65) ref -> esi class-hnd single-def <System.Object>
+; V01 arg1 [V01,T01] ( 11, 5.57) 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,T05] ( 5, 2.05) ubyte -> [ebp-0x24] spill-single-def
; V04 loc2 [V04,T06] ( 11, 2.02) ubyte -> [ebp-0x28] spill-single-def
@@ -22,20 +22,20 @@
; V10 loc8 [V10,T10] ( 9, 1.43) ref -> [ebp-0x50] class-hnd spill-single-def <System.Threading.Tasks.ITaskCompletionAction>
; V11 loc9 [V11,T42] ( 2, 0 ) ref -> [ebp-0x54] class-hnd EH-live single-def <System.Collections.Generic.List`1[System.Object]>
; V12 loc10 [V12 ] ( 4, 0.07) ubyte -> [ebp-0x30] do-not-enreg[X] addr-exposed ld-addr-op
-; V13 loc11 [V13,T35] ( 3, 0.02) ubyte -> [ebp-0x34]
+; V13 loc11 [V13,T36] ( 3, 0.02) ubyte -> [ebp-0x34]
; V14 loc12 [V14,T13] ( 13, 0.37) int -> [ebp-0x38]
-; V15 loc13 [V15,T18] ( 12, 0.20) ref -> [ebp-0x58] class-hnd spill-single-def <System.Object>
-; V16 loc14 [V16,T24] ( 4, 0.12) ref -> [ebp-0x5C] class-hnd exact spill-single-def <System.Threading.Tasks.ContinueWithTaskContinuation>
-; V17 loc15 [V17,T39] ( 3, 0.00) ref -> eax class-hnd <<unknown class>>
+; V15 loc13 [V15,T18] ( 12, 0.22) ref -> [ebp-0x58] class-hnd spill-single-def <System.Object>
+; V16 loc14 [V16,T24] ( 4, 0.12) ref -> [ebp-0x5C] class-hnd exact <System.Threading.Tasks.ContinueWithTaskContinuation>
+; V17 loc15 [V17,T39] ( 3, 0.00) ref -> esi class-hnd <<unknown class>>
; V18 loc16 [V18,T40] ( 3, 0 ) ref -> eax class-hnd exact <<unknown class>>
; V19 loc17 [V19,T14] ( 9, 0.34) int -> [ebp-0x3C]
; V20 loc18 [V20,T20] ( 11, 0.19) ref -> [ebp-0x60] class-hnd spill-single-def <System.Object>
-; V21 loc19 [V21,T33] ( 3, 0.05) ref -> esi class-hnd <<unknown class>>
-; V22 loc20 [V22,T34] ( 2, 0.02) ref -> esi class-hnd exact <<unknown class>>
-; V23 loc21 [V23,T31] ( 6, 0.10) ref -> registers class-hnd <System.Threading.Tasks.TaskContinuation>
+; V21 loc19 [V21,T34] ( 3, 0.05) ref -> esi class-hnd <<unknown class>>
+; V22 loc20 [V22,T35] ( 2, 0.02) ref -> esi class-hnd exact <<unknown class>>
+; V23 loc21 [V23,T32] ( 4, 0.10) ref -> esi class-hnd <System.Threading.Tasks.TaskContinuation>
; V24 tmp0 [V24,T08] ( 3, 2 ) int -> registers
;* V25 tmp1 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V26 tmp2 [V26,T32] ( 3, 0.06) int -> ecx "fgMakeTemp is creating a new local variable"
+; V26 tmp2 [V26,T33] ( 3, 0.06) int -> ecx "fgMakeTemp is creating a new local variable"
; V27 tmp3 [V27,T21] ( 5, 0.18) ref -> registers class-hnd "spilling QMark2" <System.Collections.Generic.List`1[System.Object]>
;* V28 tmp4 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
;* V29 tmp5 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Threading.Tasks.ContinueWithTaskContinuation>
@@ -52,24 +52,24 @@
; V40 tmp16 [V40 ] ( 2, 0 ) ref -> [ebp-0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.Object>
; V41 tmp17 [V41,T47] ( 2, 0 ) int -> edx "argument with side effect"
; V42 tmp18 [V42,T16] ( 3, 0.29) ref -> eax "arr expr"
-; V43 tmp19 [V43,T38] ( 3, 0.00) ref -> ecx "arr expr"
+; V43 tmp19 [V43,T38] ( 3, 0.00) ref -> [ebp-0x64] spill-single-def "arr expr"
; V44 tmp20 [V44,T41] ( 3, 0 ) ref -> eax "argument with side effect"
; V45 tmp21 [V45,T25] ( 3, 0.15) ref -> ecx "arr expr"
-; V46 tmp22 [V46,T17] ( 3, 0.29) ref -> [ebp-0x64] spill-single-def "arr expr"
-; V47 tmp23 [V47,T29] ( 2, 0.10) ref -> [ebp-0x68] spill-single-def "arr expr"
+; V46 tmp22 [V46,T17] ( 3, 0.29) ref -> [ebp-0x68] spill-single-def "arr expr"
+; V47 tmp23 [V47,T30] ( 2, 0.10) ref -> [ebp-0x6C] spill-single-def "arr expr"
; V48 tmp24 [V48,T43] ( 2, 0 ) ref -> edx "argument with side effect"
; V49 EHSlots [V49 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"
-; V50 cse0 [V50,T26] ( 4, 0.12) ref -> [ebp-0x6C] spill-single-def "CSE - conservative"
-; V51 cse1 [V51,T27] ( 3, 0.12) ref -> [ebp-0x70] spill-single-def "CSE - conservative"
-; V52 cse2 [V52,T30] ( 2, 0.10) int -> eax "CSE - conservative"
+; V50 cse0 [V50,T26] ( 4, 0.12) ref -> [ebp-0x70] spill-single-def "CSE - conservative"
+; V51 cse1 [V51,T27] ( 3, 0.12) ref -> [ebp-0x74] spill-single-def "CSE - conservative"
+; V52 cse2 [V52,T31] ( 2, 0.10) int -> eax "CSE - conservative"
; V53 rat0 [V53,T00] ( 6, 8 ) ref -> ecx class-hnd "replacement local" <<unknown class>>
; V54 rat1 [V54,T04] ( 5, 2.25) ref -> registers class-hnd "replacement local" <System.Threading.Tasks.ITaskCompletionAction>
-; V55 rat2 [V55,T36] ( 6, 0.00) ref -> edx class-hnd "replacement local" <System.Threading.Tasks.ITaskCompletionAction>
-; V56 rat3 [V56,T37] ( 5, 0.00) ref -> eax class-hnd "replacement local" <<unknown class>>
+; V55 rat2 [V55,T29] ( 6, 0.10) ref -> registers class-hnd "replacement local" <System.Threading.Tasks.ITaskCompletionAction>
+; V56 rat3 [V56,T37] ( 5, 0.00) ref -> registers class-hnd "replacement local" <<unknown class>>
; V57 rat4 [V57,T19] ( 6, 0.19) ref -> registers class-hnd "replacement local" <<unknown class>>
-; V58 rat5 [V58,T23] ( 6, 0.17) ref -> registers class-hnd "replacement local" <System.Threading.Tasks.TaskContinuation>
+; V58 rat5 [V58,T23] ( 5, 0.17) ref -> registers class-hnd "replacement local" <System.Threading.Tasks.TaskContinuation>
;
-; Lcl frame size = 100
+; Lcl frame size = 104
G_M51094_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -77,7 +77,7 @@ G_M51094_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 100
+ sub esp, 104
xor eax, eax
mov dword ptr [ebp-0x40], eax
mov dword ptr [ebp-0x44], eax
@@ -98,12 +98,12 @@ G_M51094_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
movzx eax, byte ptr [ebx+0x59]
mov dword ptr [ebp-0x24], eax
test eax, eax
- jne G_M51094_IG79
+ jne G_M51094_IG80
;; size=34 bbWeight=1 PerfScore 10.75
-G_M51094_IG03: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M51094_IG03: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
test byte ptr [edi+0x1C], 64
- jne SHORT G_M51094_IG08
- ;; size=6 bbWeight=1 PerfScore 4.00
+ jne G_M51094_IG34
+ ;; size=10 bbWeight=1 PerfScore 4.00
G_M51094_IG04: ; bbWeight=0.96, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
call <unknown method>
;; size=5 bbWeight=0.96 PerfScore 0.96
@@ -114,51 +114,33 @@ G_M51094_IG05: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
; gcrRegs +[ecx]
test ecx, ecx
mov eax, dword ptr [ebp-0x28]
- je SHORT G_M51094_IG10
+ je SHORT G_M51094_IG08
;; 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
- je SHORT G_M51094_IG09
+ jne SHORT G_M51094_IG19
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M51094_IG07: ; bbWeight=0.24, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M51094_IG07: ; bbWeight=0.34, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
- mov edx, esi
- ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[edx] +[eax]
- mov ecx, eax
- ; gcrRegs +[ecx]
- mov eax, dword ptr [ebp-0x28]
- ; gcrRegs -[eax]
- jmp SHORT G_M51094_IG10
- ;; size=19 bbWeight=0.24 PerfScore 1.14
-G_M51094_IG08: ; bbWeight=0.04, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx]
- xor edx, edx
- mov eax, edx
- jmp SHORT G_M51094_IG05
- ;; size=6 bbWeight=0.04 PerfScore 0.10
-G_M51094_IG09: ; bbWeight=0.26, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
xor ecx, ecx
; gcrRegs +[ecx]
- ;; size=2 bbWeight=0.26 PerfScore 0.07
-G_M51094_IG10: ; bbWeight=1, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=0.34 PerfScore 0.08
+G_M51094_IG08: ; bbWeight=1, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
test ecx, ecx
- jne SHORT G_M51094_IG21
+ jne SHORT G_M51094_IG20
;; size=4 bbWeight=1 PerfScore 1.25
-G_M51094_IG11: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M51094_IG09: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
mov ecx, esi
; gcrRegs +[ecx]
test ecx, ecx
- je SHORT G_M51094_IG20
+ je SHORT G_M51094_IG18
;; size=6 bbWeight=0.50 PerfScore 0.75
-G_M51094_IG12: ; bbWeight=0.25, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M51094_IG10: ; bbWeight=0.25, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
cmp dword ptr [ecx], 0xD1FFAB1E
- je G_M51094_IG80
+ je G_M51094_IG81
;; size=12 bbWeight=0.25 PerfScore 1.00
-G_M51094_IG13: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M51094_IG11: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
mov edx, esi
; gcrRegs +[edx]
@@ -166,20 +148,20 @@ G_M51094_IG13: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
call CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[edx] +[eax]
test eax, eax
- jne G_M51094_IG29
+ jne G_M51094_IG28
;; size=20 bbWeight=0.50 PerfScore 1.38
-G_M51094_IG14: ; bbWeight=0.30, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M51094_IG12: ; bbWeight=0.30, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
mov ecx, esi
; gcrRegs +[ecx]
test ecx, ecx
- je SHORT G_M51094_IG17
+ je SHORT G_M51094_IG15
;; size=6 bbWeight=0.30 PerfScore 0.45
-G_M51094_IG15: ; bbWeight=0.15, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M51094_IG13: ; bbWeight=0.15, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [ecx], 0xD1FFAB1E
- je SHORT G_M51094_IG17
+ je SHORT G_M51094_IG15
;; size=8 bbWeight=0.15 PerfScore 0.60
-G_M51094_IG16: ; bbWeight=0.07, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M51094_IG14: ; bbWeight=0.07, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
mov edx, esi
; gcrRegs +[edx]
@@ -189,38 +171,50 @@ G_M51094_IG16: ; bbWeight=0.07, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
mov ecx, eax
; gcrRegs +[ecx]
;; size=14 bbWeight=0.07 PerfScore 0.13
-G_M51094_IG17: ; bbWeight=0.30, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M51094_IG15: ; bbWeight=0.30, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
mov eax, ecx
; gcrRegs +[eax]
mov gword ptr [ebp-0x50], eax
; GC ptr vars +{V10}
test eax, eax
- je G_M51094_IG40
+ je G_M51094_IG63
;; size=13 bbWeight=0.30 PerfScore 0.75
-G_M51094_IG18: ; bbWeight=0.28, gcVars=0000000000000400 {V10}, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M51094_IG16: ; bbWeight=0.28, gcVars=0000000000000400 {V10}, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ecx ebx esi]
cmp dword ptr [ebp-0x28], 0
- jne SHORT G_M51094_IG26
+ jne SHORT G_M51094_IG25
;; size=6 bbWeight=0.28 PerfScore 0.83
-G_M51094_IG19: ; bbWeight=0.04, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
- jmp G_M51094_IG34
+G_M51094_IG17: ; bbWeight=0.04, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
+ jmp G_M51094_IG59
;; size=5 bbWeight=0.04 PerfScore 0.08
-G_M51094_IG20: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M51094_IG18: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[ebx esi]
; GC ptr vars -{V10}
- jmp SHORT G_M51094_IG13
+ jmp SHORT G_M51094_IG11
;; size=2 bbWeight=0.25 PerfScore 0.50
-G_M51094_IG21: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx esi edi] +[ecx]
+G_M51094_IG19: ; bbWeight=0.17, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, esi
+ ; gcrRegs +[edx]
+ mov ecx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[edx] +[eax]
+ mov ecx, eax
+ ; gcrRegs +[ecx]
+ mov eax, dword ptr [ebp-0x28]
+ ; gcrRegs -[eax]
+ jmp SHORT G_M51094_IG08
+ ;; size=19 bbWeight=0.17 PerfScore 0.78
+G_M51094_IG20: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ebx esi edi]
mov edx, eax
call [<unknown method>]
; gcrRegs -[ecx]
;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M51094_IG22: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M51094_IG21: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call [System.Threading.Tasks.Task:LogFinishCompletionNotification()]
;; size=6 bbWeight=1 PerfScore 3.00
-G_M51094_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M51094_IG22: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
...
+14 (+2.93%) : 116138.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 this [V00,T03] ( 8, 3.75) ref -> esi this class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope>
-; V01 arg1 [V01,T00] ( 12, 6.26) ref -> [ebp-0x28] class-hnd EH-live single-def <System.Object>
+; V01 arg1 [V01,T00] ( 12, 6.09) ref -> [ebp-0x28] class-hnd EH-live single-def <System.Object>
; V02 loc0 [V02,T09] ( 3, 0.18) ubyte -> [ebp-0x20] do-not-enreg[M] EH-live
; V03 loc1 [V03,T07] ( 4, 0.36) ref -> [ebp-0x2C] class-hnd EH-live spill-single-def <System.Collections.Generic.Dictionary`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey,System.Object]>
; V04 loc2 [V04 ] ( 6, 0.89) ubyte -> [ebp-0x24] do-not-enreg[X] must-init addr-exposed ld-addr-op
@@ -53,82 +53,58 @@ G_M19770_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=32 bbWeight=1 PerfScore 9.58
G_M19770_IG02: ; bbWeight=1, gcVars=00000001 {V01}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
cmp esi, eax
- je SHORT G_M19770_IG12
- mov ecx, eax
- ; gcrRegs +[ecx]
- test ecx, ecx
- je SHORT G_M19770_IG06
- ;; size=10 bbWeight=1 PerfScore 2.75
-G_M19770_IG03: ; bbWeight=0.50, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [ecx], 0xD1FFAB1E
- je SHORT G_M19770_IG05
- ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M19770_IG04: ; bbWeight=0.24, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx]
- mov edx, eax
- ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[edx]
- mov ecx, eax
- ; gcrRegs +[ecx]
- mov eax, gword ptr [ebp-0x28]
- jmp SHORT G_M19770_IG06
- ;; size=19 bbWeight=0.24 PerfScore 1.14
-G_M19770_IG05: ; bbWeight=0.26, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ecx]
- xor ecx, ecx
- ; gcrRegs +[ecx]
- ;; size=2 bbWeight=0.26 PerfScore 0.07
-G_M19770_IG06: ; bbWeight=1, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
- test ecx, ecx
- jne SHORT G_M19770_IG14
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M19770_IG07: ; bbWeight=0.82, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx]
- mov ecx, eax
- ; gcrRegs +[ecx]
- test ecx, ecx
- je SHORT G_M19770_IG11
- ;; size=6 bbWeight=0.82 PerfScore 1.23
-G_M19770_IG08: ; bbWeight=0.41, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [ecx], 0xD1FFAB1E
je SHORT G_M19770_IG10
- ;; size=8 bbWeight=0.41 PerfScore 1.64
-G_M19770_IG09: ; bbWeight=0.20, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx]
- mov edx, eax
- ; gcrRegs +[edx]
- mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[edx]
mov ecx, eax
; gcrRegs +[ecx]
- mov eax, gword ptr [ebp-0x28]
- jmp SHORT G_M19770_IG11
- ;; size=19 bbWeight=0.20 PerfScore 0.94
-G_M19770_IG10: ; bbWeight=0.21, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
+ test ecx, ecx
+ je SHORT G_M19770_IG05
+ ;; size=10 bbWeight=1 PerfScore 2.75
+G_M19770_IG03: ; bbWeight=0.50, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref
+ cmp dword ptr [ecx], 0xD1FFAB1E
+ jne G_M19770_IG22
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M19770_IG04: ; bbWeight=0.35, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
xor ecx, ecx
; gcrRegs +[ecx]
- ;; size=2 bbWeight=0.21 PerfScore 0.05
-G_M19770_IG11: ; bbWeight=0.82, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=2 bbWeight=0.35 PerfScore 0.09
+G_M19770_IG05: ; bbWeight=1, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
test ecx, ecx
- jne SHORT G_M19770_IG14
+ jne SHORT G_M19770_IG12
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M19770_IG06: ; bbWeight=0.82, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[ecx]
+ mov ecx, eax
+ ; gcrRegs +[ecx]
+ test ecx, ecx
+ je SHORT G_M19770_IG09
+ ;; size=6 bbWeight=0.82 PerfScore 1.23
+G_M19770_IG07: ; bbWeight=0.41, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref
+ cmp dword ptr [ecx], 0xD1FFAB1E
+ jne G_M19770_IG23
+ ;; size=12 bbWeight=0.41 PerfScore 1.64
+G_M19770_IG08: ; bbWeight=0.29, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ecx]
+ xor ecx, ecx
+ ; gcrRegs +[ecx]
+ ;; size=2 bbWeight=0.29 PerfScore 0.07
+G_M19770_IG09: ; bbWeight=0.82, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+ test ecx, ecx
+ jne SHORT G_M19770_IG12
;; size=4 bbWeight=0.82 PerfScore 1.03
-G_M19770_IG12: ; bbWeight=0.82, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M19770_IG10: ; bbWeight=0.82, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax ecx esi]
mov eax, gword ptr [ebp-0x28]
; gcrRegs +[eax]
;; size=3 bbWeight=0.82 PerfScore 0.82
-G_M19770_IG13: ; bbWeight=0.82, epilog, nogc, extend
+G_M19770_IG11: ; bbWeight=0.82, epilog, nogc, extend
lea esp, [ebp-0x08]
pop esi
pop edi
pop ebp
ret
;; size=7 bbWeight=0.82 PerfScore 2.46
-G_M19770_IG14: ; bbWeight=0.18, gcVars=00000001 {V01}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M19770_IG12: ; bbWeight=0.18, gcVars=00000001 {V01}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi]
xor edx, edx
mov dword ptr [ebp-0x20], edx
@@ -137,23 +113,23 @@ G_M19770_IG14: ; bbWeight=0.18, gcVars=00000001 {V01}, gcrefRegs=00000041
mov gword ptr [ebp-0x2C], ecx
; GC ptr vars +{V03}
;; size=11 bbWeight=0.18 PerfScore 0.76
-G_M19770_IG15: ; bbWeight=0.18, gcVars=00000081 {V01 V03}, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M19770_IG13: ; bbWeight=0.18, gcVars=00000081 {V01 V03}, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, gcvars, byref
mov dword ptr [ebp-0x24], edx
;; size=3 bbWeight=0.18 PerfScore 0.18
-G_M19770_IG16: ; bbWeight=0.18, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M19770_IG14: ; bbWeight=0.18, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
cmp byte ptr [ebp-0x24], 0
- jne SHORT G_M19770_IG21
+ jne SHORT G_M19770_IG19
lea edx, [ebp-0x24]
call <unknown method>
; gcrRegs -[eax ecx]
movzx ecx, byte ptr [ebp-0x24]
call [<unknown method>]
cmp byte ptr [esi+0x10], 0
- jne SHORT G_M19770_IG20
+ jne SHORT G_M19770_IG18
cmp gword ptr [esi+0x04], 0
- je SHORT G_M19770_IG19
+ je SHORT G_M19770_IG17
;; size=36 bbWeight=0.18 PerfScore 2.95
-G_M19770_IG17: ; bbWeight=0.18, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M19770_IG15: ; bbWeight=0.18, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [esi+0x04]
; gcrRegs +[ecx]
inc dword ptr [ecx+0x0C]
@@ -161,9 +137,9 @@ G_M19770_IG17: ; bbWeight=0.18, gcrefRegs=00000040 {esi}, byrefRegs=00000
; gcrRegs +[edx]
mov eax, dword ptr [ecx+0x08]
cmp dword ptr [edx+0x04], eax
- jbe SHORT G_M19770_IG22
+ jbe SHORT G_M19770_IG20
;; size=17 bbWeight=0.18 PerfScore 2.32
-G_M19770_IG18: ; bbWeight=0.14, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz
+G_M19770_IG16: ; bbWeight=0.14, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[esi]
lea esi, [eax+0x01]
mov dword ptr [ecx+0x08], esi
@@ -173,9 +149,9 @@ G_M19770_IG18: ; bbWeight=0.14, gcrefRegs=00000006 {ecx edx}, byrefRegs=0
; gcrRegs -[edx]
call CORINFO_HELP_ARRADDR_ST
; gcrRegs -[ecx]
- jmp SHORT G_M19770_IG23
+ jmp SHORT G_M19770_IG21
;; size=20 bbWeight=0.14 PerfScore 0.81
-G_M19770_IG19: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M19770_IG17: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi]
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
@@ -186,9 +162,9 @@ G_M19770_IG19: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax]
; byrRegs -[edx]
- jmp SHORT G_M19770_IG17
+ jmp SHORT G_M19770_IG15
;; size=27 bbWeight=0.04 PerfScore 0.21
-G_M19770_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M19770_IG18: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[esi]
mov dword ptr [ebp-0x20], 1
mov dword ptr [ebp-0x18], 0
@@ -196,28 +172,53 @@ G_M19770_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push G_M19770_IG24
jmp SHORT G_M19770_IG25
;; size=28 bbWeight=0 PerfScore 0.00
-G_M19770_IG21: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M19770_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call [System.Threading.Monitor:ThrowLockTakenException()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M19770_IG22: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+G_M19770_IG20: ; bbWeight=0.04, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
; gcrRegs +[ecx]
mov edx, gword ptr [ebp-0x28]
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=9 bbWeight=0.04 PerfScore 0.17
-G_M19770_IG23: ; bbWeight=0.18, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M19770_IG21: ; bbWeight=0.18, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
cmp byte ptr [ebp-0x24], 0
- je G_M19770_IG12
+ je G_M19770_IG10
mov ecx, gword ptr [ebp-0x2C]
; gcrRegs +[ecx]
; GC ptr vars -{V03}
call <unknown method>
; gcrRegs -[ecx]
- jmp G_M19770_IG12
+ jmp G_M19770_IG10
;; size=23 bbWeight=0.18 PerfScore 1.25
+G_M19770_IG22: ; bbWeight=0.15, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs +[eax esi]
+ mov edx, eax
+ ; gcrRegs +[edx]
+ mov ecx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[edx]
+ mov ecx, eax
+ ; gcrRegs +[ecx]
+ mov eax, gword ptr [ebp-0x28]
+ jmp G_M19770_IG05
+ ;; size=22 bbWeight=0.15 PerfScore 0.71
+G_M19770_IG23: ; bbWeight=0.12, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[ecx]
+ mov edx, eax
+ ; gcrRegs +[edx]
+ mov ecx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[edx]
+ mov ecx, eax
+ ; gcrRegs +[ecx]
+ mov eax, gword ptr [ebp-0x28]
+ jmp G_M19770_IG09
+ ;; size=22 bbWeight=0.12 PerfScore 0.59
G_M19770_IG24: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax ecx esi]
mov dword ptr [ebp-0x14], 0
jmp SHORT G_M19770_IG27
...
+35 (+10.09%) : 30353.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,T00] ( 8, 5.77) ref -> esi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V00 arg0 [V00,T00] ( 8, 5.73) ref -> esi class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V01 TypeCtx [V01,T01] ( 11, 5.44) int -> edi single-def
; V02 loc0 [V02,T06] ( 5, 2.41) ref -> ecx class-hnd single-def <System.Collections.Immutable.IImmutableArray>
; V03 loc1 [V03 ] ( 2, 1.22) int -> [ebp-0x10] do-not-enreg[X] addr-exposed ld-addr-op
@@ -50,7 +50,7 @@
; V38 rat8 [V38,T12] ( 3, 1.49) int -> edx "runtime lookup"
; V39 rat9 [V39,T08] ( 3, 2.09) int -> ecx "spilling expr"
; V40 rat10 [V40,T11] ( 3, 1.67) int -> edx "fgMakeTemp is creating a new local variable"
-; V41 rat11 [V41,T02] ( 5, 7.36) ref -> ecx class-hnd "replacement local" <System.Collections.Immutable.IImmutableArray>
+; V41 rat11 [V41,T02] ( 5, 7.27) ref -> ecx class-hnd "replacement local" <System.Collections.Immutable.IImmutableArray>
;
; Lcl frame size = 8
@@ -71,39 +71,28 @@ 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.18, 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.18 PerfScore 0.32
-G_M43512_IG05: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]
+ jne G_M43512_IG25
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M43512_IG04: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
test ecx, ecx
- jne SHORT G_M43512_IG18
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M43512_IG06: ; bbWeight=0.80, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jne G_M43512_IG17
+ ;; size=8 bbWeight=1 PerfScore 1.25
+G_M43512_IG05: ; 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_IG17
+ jle SHORT G_M43512_IG16
;; size=9 bbWeight=0.80 PerfScore 4.78
-G_M43512_IG07: ; bbWeight=0.64, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG06: ; bbWeight=0.64, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ecx+0x0C]
test eax, eax
- je SHORT G_M43512_IG17
+ je SHORT G_M43512_IG16
;; size=7 bbWeight=0.64 PerfScore 2.07
-G_M43512_IG08: ; bbWeight=0.80, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG07: ; bbWeight=0.80, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
push eax
lea edx, [ebp-0x10]
mov ecx, esi
@@ -111,19 +100,19 @@ G_M43512_IG08: ; 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_IG13
+ je SHORT G_M43512_IG12
;; size=16 bbWeight=0.80 PerfScore 4.78
-G_M43512_IG09: ; bbWeight=0.42, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG08: ; bbWeight=0.42, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [edi+0x20]
cmp dword ptr [ecx+0x04], 24
- jle SHORT G_M43512_IG25
- ;; size=9 bbWeight=0.42 PerfScore 2.55
-G_M43512_IG10: ; bbWeight=0.34, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jle G_M43512_IG24
+ ;; size=13 bbWeight=0.42 PerfScore 2.55
+G_M43512_IG09: ; bbWeight=0.34, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov eax, dword ptr [ecx+0x18]
test eax, eax
- je SHORT G_M43512_IG25
- ;; size=7 bbWeight=0.34 PerfScore 1.10
-G_M43512_IG11: ; bbWeight=0.42, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ je G_M43512_IG24
+ ;; size=11 bbWeight=0.34 PerfScore 1.10
+G_M43512_IG10: ; bbWeight=0.42, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
push eax
mov ecx, esi
; gcrRegs +[ecx]
@@ -131,54 +120,54 @@ G_M43512_IG11: ; bbWeight=0.42, gcrefRegs=00000040 {esi}, byrefRegs=00000
call [<unknown method>]
; gcrRegs -[ecx esi] +[eax]
;; size=12 bbWeight=0.42 PerfScore 2.23
-G_M43512_IG12: ; bbWeight=0.42, epilog, nogc, extend
+G_M43512_IG11: ; bbWeight=0.42, epilog, nogc, extend
lea esp, [ebp-0x08]
pop esi
pop edi
pop ebp
ret
;; size=7 bbWeight=0.42 PerfScore 1.27
-G_M43512_IG13: ; bbWeight=0.37, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M43512_IG12: ; bbWeight=0.37, 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_IG26
- ;; size=9 bbWeight=0.37 PerfScore 2.24
-G_M43512_IG14: ; bbWeight=0.30, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jle G_M43512_IG26
+ ;; size=13 bbWeight=0.37 PerfScore 2.24
+G_M43512_IG13: ; bbWeight=0.30, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [ecx+0x10]
test edx, edx
je SHORT G_M43512_IG26
;; size=7 bbWeight=0.30 PerfScore 0.97
-G_M43512_IG15: ; bbWeight=0.37, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M43512_IG14: ; bbWeight=0.37, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, esi
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx esi] +[eax]
;; size=8 bbWeight=0.37 PerfScore 1.21
-G_M43512_IG16: ; bbWeight=0.37, epilog, nogc, extend
+G_M43512_IG15: ; bbWeight=0.37, epilog, nogc, extend
lea esp, [ebp-0x08]
pop esi
pop edi
pop ebp
ret
;; size=7 bbWeight=0.37 PerfScore 1.12
-G_M43512_IG17: ; bbWeight=0.29, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M43512_IG16: ; 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_IG08
+ jmp SHORT G_M43512_IG07
;; size=14 bbWeight=0.29 PerfScore 1.00
-G_M43512_IG18: ; bbWeight=0.20, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG17: ; bbWeight=0.20, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi] +[ecx]
cmp dword ptr [ecx], 0xD1FFAB1E
- jne SHORT G_M43512_IG29
- ;; size=8 bbWeight=0.20 PerfScore 0.81
-G_M43512_IG19: ; bbWeight=0.17, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+ jne G_M43512_IG29
+ ;; size=12 bbWeight=0.20 PerfScore 0.81
+G_M43512_IG18: ; 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_IG20: ; bbWeight=0.20, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG19: ; bbWeight=0.20, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
test esi, esi
je G_M43512_IG31
@@ -186,49 +175,60 @@ G_M43512_IG20: ; bbWeight=0.20, gcrefRegs=00000040 {esi}, byrefRegs=00000
cmp dword ptr [ecx+0x04], 28
jle SHORT G_M43512_IG27
;; size=17 bbWeight=0.20 PerfScore 1.47
-G_M43512_IG21: ; bbWeight=0.16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG20: ; bbWeight=0.16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ecx+0x1C]
test eax, eax
je SHORT G_M43512_IG27
;; size=7 bbWeight=0.16 PerfScore 0.53
-G_M43512_IG22: ; bbWeight=0.20, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG21: ; 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_IG28
;; size=8 bbWeight=0.20 PerfScore 0.91
-G_M43512_IG23: ; bbWeight=0.20, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+G_M43512_IG22: ; 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_IG24: ; bbWeight=0.20, epilog, nogc, extend
+G_M43512_IG23: ; bbWeight=0.20, epilog, nogc, extend
lea esp, [ebp-0x08]
pop esi
pop edi
pop ebp
ret
;; size=7 bbWeight=0.20 PerfScore 0.61
-G_M43512_IG25: ; bbWeight=0.15, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M43512_IG24: ; bbWeight=0.15, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax edx] +[esi]
mov ecx, edi
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
- jmp G_M43512_IG11
+ jmp G_M43512_IG10
;; size=17 bbWeight=0.15 PerfScore 0.53
-G_M43512_IG26: ; bbWeight=0.13, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG25: ; 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.51
+G_M43512_IG26: ; bbWeight=0.13, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax ecx]
mov ecx, edi
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov edx, eax
- jmp SHORT G_M43512_IG15
- ;; size=16 bbWeight=0.13 PerfScore 0.50
+ jmp G_M43512_IG14
+ ;; size=19 bbWeight=0.13 PerfScore 0.50
G_M43512_IG27: ; 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_IG22
+ jmp SHORT G_M43512_IG21
;; size=14 bbWeight=0.07 PerfScore 0.26
G_M43512_IG28: ; bbWeight=0.05, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edx, esi
@@ -237,16 +237,16 @@ G_M43512_IG28: ; bbWeight=0.05, gcrefRegs=00000040 {esi}, byrefRegs=00000
; gcrRegs -[edx esi] +[eax]
mov edx, eax
; gcrRegs +[edx]
- jmp SHORT G_M43512_IG23
+ jmp SHORT G_M43512_IG22
;; size=11 bbWeight=0.05 PerfScore 0.18
-G_M43512_IG29: ; bbWeight=0.03, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+G_M43512_IG29: ; bbWeight=0.03, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax edx] +[ecx]
call [<unknown method>]
; gcrRegs -[ecx] +[eax]
...
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 |
2 |
2 |
0 |
0 |
-41 |
+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 |
16 |
1 |
12 |
3 |
-2 |
+170 |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| realworld.run.windows.x86.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
18 |
3 |
12 |
3 |
-43 |
+170 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.windows.x86.checked.mch |
24,267 |
4 |
24,263 |
0 (0.00%) |
219 (0.89%) |
| benchmarks.run_pgo.windows.x86.checked.mch |
119,601 |
41,887 |
77,714 |
0 (0.00%) |
232 (0.19%) |
| benchmarks.run_tiered.windows.x86.checked.mch |
47,819 |
28,727 |
19,092 |
0 (0.00%) |
161 (0.34%) |
| coreclr_tests.run.windows.x86.checked.mch |
574,211 |
320,026 |
254,185 |
7 (0.00%) |
524 (0.09%) |
| libraries.crossgen2.windows.x86.checked.mch |
242,344 |
15 |
242,329 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.windows.x86.checked.mch |
303,120 |
6 |
303,114 |
0 (0.00%) |
1,929 (0.63%) |
| libraries_tests.run.windows.x86.Release.mch |
631,084 |
427,924 |
203,160 |
0 (0.00%) |
1,202 (0.19%) |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
314,413 |
21,871 |
292,542 |
0 (0.00%) |
2,015 (0.64%) |
| realworld.run.windows.x86.checked.mch |
35,599 |
3 |
35,596 |
0 (0.00%) |
388 (1.08%) |
|
2,292,458 |
840,463 |
1,451,995 |
7 (0.00%) |
6,670 (0.29%) |
jit-analyze output
coreclr_tests.run.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 308783332 (overridden on cmd)
Total bytes of diff: 308783291 (overridden on cmd)
Total bytes of delta: -41 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-26 : 369547.dasm (-2.50 % of base)
-15 : 372476.dasm (-1.44 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-26 (-2.50 % of base) : 369547.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-15 (-1.44 % of base) : 372476.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
Top method improvements (percentages):
-26 (-2.50 % of base) : 369547.dasm - Internal.TypeSystem.TypeSystemHelpers:FindMethodOnExactTypeWithMatchingTypicalMethod(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc):Internal.TypeSystem.MethodDesc (Tier1)
-15 (-1.44 % of base) : 372476.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
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 187431731 (overridden on cmd)
Total bytes of diff: 187431899 (overridden on cmd)
Total bytes of delta: 168 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
40 : 67944.dasm (2.69 % of base)
35 : 30353.dasm (10.09 % of base)
19 : 31096.dasm (1.36 % of base)
14 : 116138.dasm (2.93 % of base)
14 : 620410.dasm (1.18 % of base)
13 : 539968.dasm (0.87 % of base)
9 : 420475.dasm (0.71 % of base)
9 : 556710.dasm (2.07 % of base)
9 : 350827.dasm (0.77 % of base)
4 : 551549.dasm (0.96 % of base)
2 : 108111.dasm (0.40 % of base)
2 : 153815.dasm (0.87 % of base)
Top file improvements (bytes):
-2 : 157792.dasm (-0.34 % of base)
13 total files with Code Size differences (1 improved, 12 regressed), 3 unchanged.
Top method regressions (bytes):
40 (2.69 % of base) : 67944.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
35 (10.09 % of base) : 30353.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
19 (1.36 % of base) : 31096.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
14 (2.93 % of base) : 116138.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
14 (1.18 % of base) : 620410.dasm - Xunit.Sdk.AssertEqualityComparer`1[System.__Canon]:Equals(System.__Canon,Xunit.Sdk.CollectionTracker,System.__Canon,Xunit.Sdk.CollectionTracker,byref):ubyte:this (Tier1)
13 (0.87 % of base) : 539968.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
9 (2.07 % of base) : 556710.dasm - System.Text.Json.ReadStack:<JsonPath>g__AppendStackFrame|22_0(System.Text.StringBuilder,byref) (Tier1)
9 (0.77 % of base) : 350827.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
9 (0.71 % of base) : 420475.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
4 (0.96 % of base) : 551549.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]:SetCreateObject(System.Delegate):this (Tier1)
2 (0.87 % of base) : 153815.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
2 (0.40 % of base) : 108111.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
Top method improvements (bytes):
-2 (-0.34 % of base) : 157792.dasm - Microsoft.Cci.MetadataWriter:ResolveEntityHandleFromPseudoToken(int):System.Reflection.Metadata.EntityHandle:this (Tier1)
Top method regressions (percentages):
35 (10.09 % of base) : 30353.dasm - System.Collections.Immutable.ImmutableArray:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
14 (2.93 % of base) : 116138.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
40 (2.69 % of base) : 67944.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
9 (2.07 % of base) : 556710.dasm - System.Text.Json.ReadStack:<JsonPath>g__AppendStackFrame|22_0(System.Text.StringBuilder,byref) (Tier1)
19 (1.36 % of base) : 31096.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
14 (1.18 % of base) : 620410.dasm - Xunit.Sdk.AssertEqualityComparer`1[System.__Canon]:Equals(System.__Canon,Xunit.Sdk.CollectionTracker,System.__Canon,Xunit.Sdk.CollectionTracker,byref):ubyte:this (Tier1)
4 (0.96 % of base) : 551549.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]:SetCreateObject(System.Delegate):this (Tier1)
13 (0.87 % of base) : 539968.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
2 (0.87 % of base) : 153815.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:VisitWithStackGuard(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
9 (0.77 % of base) : 350827.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (Tier1)
9 (0.71 % of base) : 420475.dasm - Xunit.Internal.ArgumentFormatter:Format(System.Object,int):System.String (Tier1)
2 (0.40 % of base) : 108111.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope:CaptureDisposable(System.Object):System.Object:this (Tier1)
Top method improvements (percentages):
-2 (-0.34 % of base) : 157792.dasm - Microsoft.Cci.MetadataWriter:ResolveEntityHandleFromPseudoToken(int):System.Reflection.Metadata.EntityHandle:this (Tier1)
13 total methods with Code Size differences (1 improved, 12 regressed).