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).