Assembly Diffs

linux arm

Diffs are based on 2,237,676 contexts (827,812 MinOpts, 1,409,864 FullOpts).

MISSED contexts: base: 74,588 (3.23%), diff: 74,602 (3.23%)

Overall (-2,188 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch 61,255,640 +192
coreclr_tests.run.linux.arm.checked.mch 321,788,912 +404
libraries.pmi.linux.arm.checked.mch 49,610,860 +86
libraries_tests.run.linux.arm.Release.mch 242,758,250 -2,864
librariestestsnotieredcompilation.run.linux.arm.Release.mch 93,199,432 -6

FullOpts (-2,188 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch 50,458,038 +192
coreclr_tests.run.linux.arm.checked.mch 109,058,778 +404
libraries.pmi.linux.arm.checked.mch 49,504,356 +86
libraries_tests.run.linux.arm.Release.mch 120,755,306 -2,864
librariestestsnotieredcompilation.run.linux.arm.Release.mch 83,115,612 -6

Example diffs

benchmarks.run_pgo.linux.arm.checked.mch

-22 (-1.37%) : 20486.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)

@@ -9,35 +9,35 @@ ; Final local variable assignments ; ; V00 this [V00,T20] ( 16, 23 ) ref -> r4 this class-hnd single-def <System.Reflection.Emit.RuntimeMethodBuilder>
-; V01 arg1 [V01,T32] ( 9, 4 ) ref -> r5 class-hnd single-def <System.Reflection.Emit.RuntimeILGenerator> -; V02 loc0 [V02,T34] ( 4, 4 ) ref -> [sp+0x34] class-hnd exact spill-single-def <System.Reflection.Emit.__ExceptionInfo[]> -; V03 loc1 [V03,T11] ( 9, 33 ) int -> [sp+0x8C] -; V04 loc2 [V04,T21] ( 9, 24.16) ref -> [sp+0x30] class-hnd spill-single-def <int[]> -; V05 loc3 [V05,T22] ( 9, 24.16) ref -> [sp+0x2C] class-hnd spill-single-def <int[]> -; V06 loc4 [V06,T23] ( 9, 24.16) ref -> [sp+0x28] class-hnd spill-single-def <int[]> -; V07 loc5 [V07,T24] ( 6, 24.16) ref -> [sp+0x24] class-hnd spill-single-def <System.Type[]> -; V08 loc6 [V08,T25] ( 6, 24.16) ref -> [sp+0x20] class-hnd spill-single-def <int[]> -; V09 loc7 [V09,T10] ( 9, 34 ) int -> [sp+0x88] spill-single-def -; V10 loc8 [V10,T26] ( 5, 20 ) int -> [sp+0x84] spill-single-def -; V11 loc9 [V11,T30] ( 3, 12 ) int -> [sp+0x80] spill-single-def -; V12 loc10 [V12,T31] ( 3, 9 ) ref -> [sp+0x1C] class-hnd exact spill-single-def <<unknown class>> -; V13 loc11 [V13,T42] ( 3, 0 ) int -> r0 -; V14 loc12 [V14,T27] ( 5, 16 ) int -> [sp+0x7C]
+; V01 arg1 [V01,T33] ( 9, 4 ) ref -> r5 class-hnd single-def <System.Reflection.Emit.RuntimeILGenerator> +; V02 loc0 [V02,T32] ( 5, 8 ) ref -> [sp+0x40] class-hnd exact spill-single-def <System.Reflection.Emit.__ExceptionInfo[]> +; V03 loc1 [V03,T11] ( 9, 33 ) int -> [sp+0x94] +; V04 loc2 [V04,T21] ( 9, 24.16) ref -> [sp+0x3C] class-hnd spill-single-def <int[]> +; V05 loc3 [V05,T22] ( 9, 24.16) ref -> [sp+0x38] class-hnd spill-single-def <int[]> +; V06 loc4 [V06,T23] ( 9, 24.16) ref -> [sp+0x34] class-hnd spill-single-def <int[]> +; V07 loc5 [V07,T24] ( 6, 24.16) ref -> [sp+0x30] class-hnd spill-single-def <System.Type[]> +; V08 loc6 [V08,T25] ( 6, 24.16) ref -> [sp+0x2C] class-hnd spill-single-def <int[]> +; V09 loc7 [V09,T10] ( 9, 34 ) int -> [sp+0x90] spill-single-def +; V10 loc8 [V10,T26] ( 5, 20 ) int -> [sp+0x8C] spill-single-def +; V11 loc9 [V11,T30] ( 3, 12 ) int -> [sp+0x88] spill-single-def +; V12 loc10 [V12,T31] ( 3, 9 ) ref -> [sp+0x28] class-hnd exact spill-single-def <<unknown class>> +; V13 loc11 [V13,T41] ( 3, 0 ) int -> r0 +; V14 loc12 [V14,T27] ( 5, 16 ) int -> [sp+0x84]
; V15 loc13 [V15,T01] ( 24, 69.44) int -> r8 ; V16 loc14 [V16,T07] ( 8, 40 ) int -> registers ;* V17 loc15 [V17 ] ( 0, 0 ) int -> zero-ref ; V18 OutArgs [V18 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V19 tmp1 [V19,T02] ( 8, 64 ) int -> registers "impSpillLclRefs"
-; V20 tmp2 [V20,T05] ( 6, 48 ) ref -> registers class-hnd exact "impAppendStmt" <<unknown class>> -; V21 tmp3 [V21 ] ( 6, 48 ) struct (28) [sp+0x60] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Reflection.Emit.ExceptionHandler>
+; V20 tmp2 [V20,T05] ( 6, 48 ) ref -> [sp+0x24] class-hnd exact "impAppendStmt" <<unknown class>> +; V21 tmp3 [V21 ] ( 6, 48 ) struct (28) [sp+0x68] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Reflection.Emit.ExceptionHandler>
; V22 tmp4 [V22,T03] ( 8, 64 ) int -> r6 "impSpillLclRefs"
-; V23 tmp5 [V23 ] ( 6, 48 ) struct (28) [sp+0x44] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Reflection.Emit.ExceptionHandler> -; V24 tmp6 [V24,T06] ( 6, 48 ) ref -> registers class-hnd exact "impAppendStmt" <<unknown class>> -; V25 tmp7 [V25,T39] ( 3, 0 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V26 tmp8 [V26,T40] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V27 tmp9 [V27,T41] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V28 tmp10 [V28,T33] ( 5, 4 ) ref -> r0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodInfo> -; V29 tmp11 [V29,T38] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp"
+; V23 tmp5 [V23 ] ( 6, 48 ) struct (28) [sp+0x4C] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Reflection.Emit.ExceptionHandler> +; V24 tmp6 [V24,T06] ( 6, 48 ) ref -> [sp+0x20] class-hnd exact "impAppendStmt" <<unknown class>> +; V25 tmp7 [V25,T38] ( 3, 0 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V26 tmp8 [V26,T39] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V27 tmp9 [V27,T40] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V28 tmp10 [V28,T34] ( 5, 4 ) ref -> r0 class-hnd single-def "Inlining Arg" <System.Reflection.MethodInfo> +; V29 tmp11 [V29,T37] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp"
;* V30 tmp12 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.MethodInfo> ;* V31 tmp13 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V32 tmp14 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo> @@ -48,38 +48,37 @@ ;* V37 tmp19 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo> ;* V38 tmp20 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo> ;* V39 tmp21 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
-; V40 tmp22 [V40,T12] ( 4, 32 ) ref -> r1 class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
+; V40 tmp22 [V40,T12] ( 4, 32 ) ref -> registers class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo>
; V41 tmp23 [V41,T13] ( 4, 32 ) int -> registers "argument with side effect"
-; V42 tmp24 [V42,T14] ( 4, 32 ) int -> registers "argument with side effect"
+; V42 tmp24 [V42,T14] ( 4, 32 ) int -> r0 "argument with side effect"
; V43 tmp25 [V43,T15] ( 4, 32 ) int -> r12 "argument with side effect" ; V44 tmp26 [V44,T16] ( 4, 32 ) int -> registers "argument with side effect"
-; V45 tmp27 [V45,T17] ( 4, 32 ) int -> r1 "argument with side effect" -; V46 tmp28 [V46,T18] ( 4, 32 ) int -> r12 "argument with side effect"
+; V45 tmp27 [V45,T17] ( 4, 32 ) int -> r0 "argument with side effect" +; V46 tmp28 [V46,T18] ( 4, 32 ) int -> registers "argument with side effect"
; V47 tmp29 [V47,T19] ( 4, 32 ) int -> registers "argument with side effect"
-; V48 tmp30 [V48,T43] ( 2, 0 ) ref -> r1 single-def "argument with side effect" -; V49 tmp31 [V49,T44] ( 2, 0 ) ref -> r1 single-def "argument with side effect" -; V50 tmp32 [V50,T45] ( 2, 0 ) ref -> r1 single-def "argument with side effect" -; V51 cse0 [V51,T36] ( 5, 0.64) int -> [sp+0x40] spill-single-def "CSE - conservative" -; V52 cse1 [V52,T37] ( 3, 0.40) ref -> r3 "CSE - conservative"
+; V48 tmp30 [V48,T42] ( 2, 0 ) ref -> r1 single-def "argument with side effect" +; V49 tmp31 [V49,T43] ( 2, 0 ) ref -> r1 single-def "argument with side effect" +; V50 tmp32 [V50,T44] ( 2, 0 ) ref -> r1 single-def "argument with side effect" +; V51 cse0 [V51,T35] ( 5, 0.64) int -> [sp+0x48] spill-single-def "CSE - conservative" +; V52 cse1 [V52,T36] ( 3, 0.40) ref -> r3 "CSE - conservative"
; V53 cse2 [V53,T09] ( 9, 36 ) ref -> r1 "CSE - moderate"
-; V54 cse3 [V54,T04] ( 5, 63.36) int -> lr "CSE - aggressive" -; V55 cse4 [V55,T08] ( 3, 39.60) ref -> lr "CSE - aggressive"
+; V54 cse3 [V54,T04] ( 5, 63.36) int -> r3 "CSE - aggressive" +; V55 cse4 [V55,T08] ( 3, 39.60) ref -> r3 "CSE - aggressive"
; V56 cse5 [V56,T00] ( 9, 95.04) int -> r7 "CSE - aggressive"
-; V57 cse6 [V57,T28] ( 4, 16 ) byref -> [sp+0x18] spill-single-def "CSE - moderate" -; V58 cse7 [V58,T29] ( 4, 16 ) int -> [sp+0x3C] spill-single-def "CSE - moderate" -; V59 cse8 [V59,T35] ( 3, 4 ) int -> [sp+0x38] spill-single-def "CSE - moderate" -; TEMP_02 byref -> [r11-0x9C] -; TEMP_01 ref -> [r11-0xA0]
+; V57 cse6 [V57,T28] ( 4, 16 ) byref -> [sp+0x1C] spill-single-def "CSE - moderate" +; V58 cse7 [V58,T29] ( 4, 16 ) int -> [sp+0x44] spill-single-def "CSE - moderate" +; TEMP_02 byref -> [r11-0xA0] +; TEMP_01 ref -> [r11-0xA4]
;
-; Lcl frame size = 148
+; Lcl frame size = 156
G_M41336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 148 - add r11, sp, 176
+ sub sp, 156 + add r11, sp, 184
movs r2, 0
- str r2, [sp+0x14] // [TEMP_02] - str r2, [sp+0x10] // [TEMP_01]
+ str r2, [sp+0x18] // [TEMP_02] + str r2, [sp+0x14] // [TEMP_01]
mov r4, r0 ; gcrRegs +[r4] mov r5, r1 @@ -87,11 +86,11 @@ G_M41336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=20 bbWeight=1 PerfScore 8.00 G_M41336_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz cmp r5, 0
- beq G_M41336_IG37
+ beq G_M41336_IG31
movs r6, 0 ldr r7, [r4+0x08] ; gcrRegs +[r7]
- str r7, [sp+0x1C] // [V12 loc10]
+ str r7, [sp+0x28] // [V12 loc10]
; GC ptr vars +{V12} ldr r0, [r4+0x0C] ; gcrRegs +[r0] @@ -104,7 +103,7 @@ G_M41336_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ; gcr arg pop 0 ldrb r0, [r4+0x58] cmp r0, 0
- bne G_M41336_IG38
+ bne G_M41336_IG32
ldr r0, [r5+0x2C] ; gcrRegs +[r0] cmp r0, r4 @@ -221,11 +220,11 @@ G_M41336_IG06: ; bbWeight=0, gcVars=0000000080000000 {V12}, gcrefRegs=003 ldr r3, [r3] blx r3 // <unknown method> ; gcr arg pop 0
- str r0, [sp+0x10] // [TEMP_01]
+ str r0, [sp+0x14] // [TEMP_01]
add r0, r4, 32 ; gcrRegs -[r0] ; byrRegs +[r0]
- ldr r1, [sp+0x10] // [TEMP_01]
+ ldr r1, [sp+0x14] // [TEMP_01]
; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff @@ -239,11 +238,11 @@ G_M41336_IG06: ; bbWeight=0, gcVars=0000000080000000 {V12}, gcrefRegs=003 ldr r3, [r3] blx r3 // System.Reflection.Emit.RuntimeILGenerator:GetTokenFixups():int[]:this ; gcr arg pop 0
- str r0, [sp+0x10] // [TEMP_01]
+ str r0, [sp+0x14] // [TEMP_01]
add r0, r4, 16 ; gcrRegs -[r0] ; byrRegs +[r0]
- ldr r1, [sp+0x10] // [TEMP_01]
+ ldr r1, [sp+0x14] // [TEMP_01]
; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff @@ -260,7 +259,7 @@ G_M41336_IG06: ; bbWeight=0, gcVars=0000000080000000 {V12}, gcrefRegs=003 ; gcr arg pop 0 mov r5, r0 ; gcrRegs +[r5]
- str r5, [sp+0x34] // [V02 loc0]
+ str r5, [sp+0x40] // [V02 loc0]
; GC ptr vars +{V02} mov r0, r5 movw r3, 0xd1ff @@ -270,7 +269,7 @@ G_M41336_IG06: ; bbWeight=0, gcVars=0000000080000000 {V12}, gcrefRegs=003 ; gcrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- ble G_M41336_IG34
+ ble G_M41336_IG28
mov r1, r0 movw r0, 0xd1ff movt r0, 0xd1ff @@ -279,11 +278,11 @@ G_M41336_IG06: ; bbWeight=0, gcVars=0000000080000000 {V12}, gcrefRegs=003 blx r3 // CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[r0] ; gcr arg pop 0
- str r0, [sp+0x10] // [TEMP_01]
+ str r0, [sp+0x14] // [TEMP_01]
add r0, r4, 36 ; gcrRegs -[r0] ; byrRegs +[r0]
- ldr r1, [sp+0x10] // [TEMP_01]
+ ldr r1, [sp+0x14] // [TEMP_01]
; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff @@ -291,582 +290,471 @@ G_M41336_IG06: ; bbWeight=0, gcVars=0000000080000000 {V12}, gcrefRegs=003 ; gcrRegs -[r1] ; byrRegs -[r0] mov r8, 0
- ldr r9, [r5+0x04] - str r9, [sp+0x38] // [V59 cse8] - cmp r9, 0 - ble G_M41336_IG34 - ;; size=160 bbWeight=0 PerfScore 0.00
+ ldr r1, [r5+0x04] + cmp r1, 0 + ble G_M41336_IG28 + ;; size=152 bbWeight=0 PerfScore 0.00
G_M41336_IG07: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- add r3, r5, 8 - ; byrRegs +[r3] - str r3, [sp+0x18] // [V57 cse6]
+ add r9, r5, 8 + ; byrRegs +[r9] + str r9, [sp+0x1C] // [V57 cse6]
; GC ptr vars +{V57}
- str r8, [sp+0x7C] // [V14 loc12] - lsl lr, r8, 2 - str lr, [sp+0x3C] // [V58 cse7] - ldr r1, [r3+lr]
+ str r8, [sp+0x84] // [V14 loc12] + lsl r3, r8, 2 + str r3, [sp+0x44] // [V58 cse7] + ldr r1, [r9+r3]
; gcrRegs +[r1]
- ldr r12, [r1+0x04] - ; gcrRegs +[r12] - str r12, [sp+0x30] // [V04 loc2]
+ ldr lr, [r1+0x04] + ; gcrRegs +[lr] + str lr, [sp+0x3C] // [V04 loc2]
; GC ptr vars +{V04}
- ldr r2, [r1+0x08] - ; gcrRegs +[r2] - str r2, [sp+0x2C] // [V05 loc3]
+ ldr r12, [r1+0x08] + ; gcrRegs +[r12] + str r12, [sp+0x38] // [V05 loc3]
; GC ptr vars +{V05}
- ldr r0, [r1+0x0C] - ; gcrRegs +[r0] - str r0, [sp+0x28] // [V06 loc4]
+ ldr r2, [r1+0x0C] + ; gcrRegs +[r2]
...

-6 (-0.85%) : 101217.dasm - System.Reflection.Internal.EncodingHelper:DecodeUtf8(uint,int,ubyte[],System.Reflection.Metadata.MetadataStringDecoder):System.String (Tier1)

@@ -67,8 +67,8 @@ ; V55 tmp51 [V55,T33] ( 4, 3 ) int -> r3 "Inline stloc first use temp" ;* V56 tmp52 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp53 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V58 tmp54 [V58,T42] ( 2, 0 ) int -> r0 -; V59 tmp55 [V59,T43] ( 2, 0 ) int -> r0
+; V58 tmp54 [V58,T41] ( 2, 0 ) int -> r0 +; V59 tmp55 [V59,T42] ( 2, 0 ) int -> r0
;* V60 tmp56 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V61 tmp57 [V61 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V62 tmp58 [V62,T36] ( 2, 2 ) byref -> r1 single-def "field V07._reference (fldOffset=0x0)" P-INDEP @@ -87,7 +87,6 @@ ; V75 cse0 [V75,T09] ( 3, 24 ) int -> r12 "CSE - aggressive" ; V76 cse1 [V76,T01] ( 2,285.44) byref -> r8 hoist "CSE - aggressive" ; V77 cse2 [V77,T17] ( 2, 9 ) int -> lr hoist "CSE - moderate"
-; V78 cse3 [V78,T41] ( 8, 0 ) ref -> registers multi-def "CSE - conservative"
; ; Lcl frame size = 28 @@ -217,8 +216,8 @@ G_M43263_IG13: ; bbWeight=8, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, by G_M43263_IG14: ; bbWeight=1, gcrefRegs=0080 {r7}, byrefRegs=0002 {r1}, byref, isz ; gcrRegs -[r2] +[r7] cmp r7, 0
- bne G_M43263_IG29 - ;; size=6 bbWeight=1 PerfScore 2.00
+ bne SHORT G_M43263_IG29 + ;; size=4 bbWeight=1 PerfScore 2.00
G_M43263_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref, isz ; gcrRegs -[r7] str r1, [sp+0x14] // [V27 tmp23] @@ -346,17 +345,14 @@ G_M43263_IG25: ; bbWeight=0, epilog, nogc, extend ;; size=6 bbWeight=0 PerfScore 0.00 G_M43263_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r0]
- movw r7, 0xd1ff - movt r7, 0xd1ff - mov r0, r7 - ; gcrRegs +[r0] - ;; size=10 bbWeight=0 PerfScore 0.00
+ movw r0, 0xd1ff + movt r0, 0xd1ff + ;; size=8 bbWeight=0 PerfScore 0.00
G_M43263_IG27: ; bbWeight=0, epilog, nogc, extend add sp, 28 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=0 PerfScore 0.00 G_M43263_IG28: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -415,19 +411,16 @@ G_M43263_IG32: ; bbWeight=0, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, byre ; gcrRegs +[r9] movw r0, 0xd1ff movt r0, 0xd1ff
- movw r7, 0xd1ff - movt r7, 0xd1ff - mov r1, r7 - ; gcrRegs +[r1]
+ movw r1, 0xd1ff + movt r1, 0xd1ff
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r1]
; gcr arg pop 0 cmp r10, 0 bne G_M43263_IG17
- ;; size=38 bbWeight=0 PerfScore 0.00
+ ;; size=36 bbWeight=0 PerfScore 0.00
G_M43263_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r9] movw r7, 0xd1ff @@ -481,7 +474,7 @@ G_M43263_IG37: ; bbWeight=0, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byre b SHORT G_M43263_IG22 ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 702, prolog size 20, PerfScore 1864.24, instruction count 247, allocated bytes for code 702 (MethodHash=a82e5700) for method System.Reflection.Internal.EncodingHelper:DecodeUtf8(uint,int,ubyte[],System.Reflection.Metadata.MetadataStringDecoder):System.String (Tier1)
+Total bytes of code 696, prolog size 20, PerfScore 1864.24, instruction count 245, allocated bytes for code 696 (MethodHash=a82e5700) for method System.Reflection.Internal.EncodingHelper:DecodeUtf8(uint,int,ubyte[],System.Reflection.Metadata.MetadataStringDecoder):System.String (Tier1)
; ============================================================ Unwind Info: @@ -493,7 +486,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 351 (0x0015f) Actual length = 702 (0x0002be)
+ Function Length : 348 (0x0015c) Actual length = 696 (0x0002b8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-6 (-0.85%) : 83818.dasm - System.Reflection.Internal.EncodingHelper:DecodeUtf8(uint,int,ubyte[],System.Reflection.Metadata.MetadataStringDecoder):System.String (Tier1)

@@ -67,8 +67,8 @@ ; V55 tmp51 [V55,T33] ( 4, 3 ) int -> r3 "Inline stloc first use temp" ;* V56 tmp52 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp53 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V58 tmp54 [V58,T42] ( 2, 0 ) int -> r0 -; V59 tmp55 [V59,T43] ( 2, 0 ) int -> r0
+; V58 tmp54 [V58,T41] ( 2, 0 ) int -> r0 +; V59 tmp55 [V59,T42] ( 2, 0 ) int -> r0
;* V60 tmp56 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V61 tmp57 [V61 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V62 tmp58 [V62,T36] ( 2, 2 ) byref -> r1 single-def "field V07._reference (fldOffset=0x0)" P-INDEP @@ -87,7 +87,6 @@ ; V75 cse0 [V75,T09] ( 3, 24 ) int -> r12 "CSE - aggressive" ; V76 cse1 [V76,T01] ( 2,285.44) byref -> r8 hoist "CSE - aggressive" ; V77 cse2 [V77,T17] ( 2, 9 ) int -> lr hoist "CSE - moderate"
-; V78 cse3 [V78,T41] ( 8, 0 ) ref -> registers multi-def "CSE - conservative"
; ; Lcl frame size = 28 @@ -217,8 +216,8 @@ G_M43263_IG13: ; bbWeight=8, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, by G_M43263_IG14: ; bbWeight=1, gcrefRegs=0080 {r7}, byrefRegs=0002 {r1}, byref, isz ; gcrRegs -[r2] +[r7] cmp r7, 0
- bne G_M43263_IG29 - ;; size=6 bbWeight=1 PerfScore 2.00
+ bne SHORT G_M43263_IG29 + ;; size=4 bbWeight=1 PerfScore 2.00
G_M43263_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref, isz ; gcrRegs -[r7] str r1, [sp+0x14] // [V27 tmp23] @@ -346,17 +345,14 @@ G_M43263_IG25: ; bbWeight=0, epilog, nogc, extend ;; size=6 bbWeight=0 PerfScore 0.00 G_M43263_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r0]
- movw r7, 0xd1ff - movt r7, 0xd1ff - mov r0, r7 - ; gcrRegs +[r0] - ;; size=10 bbWeight=0 PerfScore 0.00
+ movw r0, 0xd1ff + movt r0, 0xd1ff + ;; size=8 bbWeight=0 PerfScore 0.00
G_M43263_IG27: ; bbWeight=0, epilog, nogc, extend add sp, 28 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=0 PerfScore 0.00 G_M43263_IG28: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -415,19 +411,16 @@ G_M43263_IG32: ; bbWeight=0, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, byre ; gcrRegs +[r9] movw r0, 0xd1ff movt r0, 0xd1ff
- movw r7, 0xd1ff - movt r7, 0xd1ff - mov r1, r7 - ; gcrRegs +[r1]
+ movw r1, 0xd1ff + movt r1, 0xd1ff
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r1]
; gcr arg pop 0 cmp r10, 0 bne G_M43263_IG17
- ;; size=38 bbWeight=0 PerfScore 0.00
+ ;; size=36 bbWeight=0 PerfScore 0.00
G_M43263_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r9] movw r7, 0xd1ff @@ -481,7 +474,7 @@ G_M43263_IG37: ; bbWeight=0, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byre b SHORT G_M43263_IG22 ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 702, prolog size 20, PerfScore 1864.24, instruction count 247, allocated bytes for code 702 (MethodHash=a82e5700) for method System.Reflection.Internal.EncodingHelper:DecodeUtf8(uint,int,ubyte[],System.Reflection.Metadata.MetadataStringDecoder):System.String (Tier1)
+Total bytes of code 696, prolog size 20, PerfScore 1864.24, instruction count 245, allocated bytes for code 696 (MethodHash=a82e5700) for method System.Reflection.Internal.EncodingHelper:DecodeUtf8(uint,int,ubyte[],System.Reflection.Metadata.MetadataStringDecoder):System.String (Tier1)
; ============================================================ Unwind Info: @@ -493,7 +486,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 351 (0x0015f) Actual length = 702 (0x0002be)
+ Function Length : 348 (0x0015c) Actual length = 696 (0x0002b8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+6 (+1.90%) : 25081.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CanLockTheFile(int,int):ubyte:this (Tier1)

@@ -144,9 +144,8 @@ ;* V132 tmp128 [V132 ] ( 0, 0 ) ref -> zero-ref single-def "V101.[000..004)" ;* V133 tmp129 [V133 ] ( 0, 0 ) ref -> zero-ref single-def "V101.[004..008)" ;* V134 tmp130 [V134 ] ( 0, 0 ) ubyte -> zero-ref "V101.[008..009)"
-; V135 cse0 [V135,T11] ( 3, 0 ) ref -> r1 "CSE - conservative" -;* V136 rat0 [V136 ] ( 0, 0 ) int -> zero-ref "field V64.lo (fldOffset=0x0)" P-INDEP -;* V137 rat1 [V137 ] ( 0, 0 ) int -> zero-ref "field V64.hi (fldOffset=0x4)" P-INDEP
+;* V135 rat0 [V135 ] ( 0, 0 ) int -> zero-ref "field V64.lo (fldOffset=0x0)" P-INDEP +;* V136 rat1 [V136 ] ( 0, 0 ) int -> zero-ref "field V64.hi (fldOffset=0x4)" P-INDEP
; ; Lcl frame size = 44 @@ -295,18 +294,17 @@ G_M55442_IG14: ; bbWeight=1, epilog, nogc, extend ;; size=6 bbWeight=1 PerfScore 2.00 G_M55442_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[r4]
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0]
; gcr arg pop 0 b SHORT G_M55442_IG05
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=30 bbWeight=0 PerfScore 0.00
G_M55442_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r4] movw r0, 0xd1ff @@ -324,7 +322,7 @@ G_M55442_IG18: ; bbWeight=0, epilog, nogc, extend pop {r4,r5,r6,r11,pc} ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 316, prolog size 28, PerfScore 106.00, instruction count 123, allocated bytes for code 316 (MethodHash=e8c8276d) for method Microsoft.Win32.SafeHandles.SafeFileHandle:CanLockTheFile(int,int):ubyte:this (Tier1)
+Total bytes of code 322, prolog size 28, PerfScore 106.00, instruction count 124, allocated bytes for code 322 (MethodHash=e8c8276d) for method Microsoft.Win32.SafeHandles.SafeFileHandle:CanLockTheFile(int,int):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -336,7 +334,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 158 (0x0009e) Actual length = 316 (0x00013c)
+ Function Length : 161 (0x000a1) Actual length = 322 (0x000142)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+6 (+1.90%) : 127590.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CanLockTheFile(int,int):ubyte:this (Tier1)

@@ -144,9 +144,8 @@ ;* V132 tmp128 [V132 ] ( 0, 0 ) ref -> zero-ref single-def "V101.[000..004)" ;* V133 tmp129 [V133 ] ( 0, 0 ) ref -> zero-ref single-def "V101.[004..008)" ;* V134 tmp130 [V134 ] ( 0, 0 ) ubyte -> zero-ref "V101.[008..009)"
-; V135 cse0 [V135,T11] ( 3, 0 ) ref -> r1 "CSE - conservative" -;* V136 rat0 [V136 ] ( 0, 0 ) int -> zero-ref "field V64.lo (fldOffset=0x0)" P-INDEP -;* V137 rat1 [V137 ] ( 0, 0 ) int -> zero-ref "field V64.hi (fldOffset=0x4)" P-INDEP
+;* V135 rat0 [V135 ] ( 0, 0 ) int -> zero-ref "field V64.lo (fldOffset=0x0)" P-INDEP +;* V136 rat1 [V136 ] ( 0, 0 ) int -> zero-ref "field V64.hi (fldOffset=0x4)" P-INDEP
; ; Lcl frame size = 44 @@ -297,18 +296,17 @@ G_M55442_IG15: ; bbWeight=1, epilog, nogc, extend ;; size=6 bbWeight=1 PerfScore 2.00 G_M55442_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[r4]
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0]
; gcr arg pop 0 b SHORT G_M55442_IG05
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=30 bbWeight=0 PerfScore 0.00
G_M55442_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r4] movw r0, 0xd1ff @@ -326,7 +324,7 @@ G_M55442_IG19: ; bbWeight=0, epilog, nogc, extend pop {r4,r5,r6,r11,pc} ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 316, prolog size 28, PerfScore 106.00, instruction count 123, allocated bytes for code 316 (MethodHash=e8c8276d) for method Microsoft.Win32.SafeHandles.SafeFileHandle:CanLockTheFile(int,int):ubyte:this (Tier1)
+Total bytes of code 322, prolog size 28, PerfScore 106.00, instruction count 124, allocated bytes for code 322 (MethodHash=e8c8276d) for method Microsoft.Win32.SafeHandles.SafeFileHandle:CanLockTheFile(int,int):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -338,7 +336,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 158 (0x0009e) Actual length = 316 (0x00013c)
+ Function Length : 161 (0x000a1) Actual length = 322 (0x000142)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+6 (+2.75%) : 667.dasm - System.Runtime.CompilerServices.ConditionalWeakTable2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable2[System.Canon,System.Canon]):this (Tier0-FullOpts)

@@ -18,9 +18,8 @@ ;* V07 tmp4 [V07,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V08 tmp5 [V08,T00] ( 3, 24 ) ref -> r3 "arr expr" ; V09 cse0 [V09,T02] ( 4, 10 ) ref -> r1 "CSE - aggressive"
-; V10 cse1 [V10,T09] ( 3, 0 ) ref -> r1 "CSE - moderate" -; V11 rat0 [V11,T06] ( 3, 4.40) int -> r0 "Spilling to split statement for tree" -; V12 rat1 [V12,T05] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable"
+; V10 rat0 [V10,T06] ( 3, 4.40) int -> r0 "Spilling to split statement for tree" +; V11 rat1 [V11,T05] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable"
; TEMP_01 ref -> [r11-0x10] ; ; Lcl frame size = 8 @@ -146,20 +145,19 @@ G_M9941_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byre ;; size=10 bbWeight=0 PerfScore 0.00 G_M9941_IG11: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r5]
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0]
; gcr arg pop 0 b SHORT G_M9941_IG03
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 218, prolog size 20, PerfScore 99.00, instruction count 79, allocated bytes for code 218 (MethodHash=9205d92a) for method System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable`2[System.__Canon,System.__Canon]):this (Tier0-FullOpts)
+Total bytes of code 224, prolog size 20, PerfScore 99.00, instruction count 80, allocated bytes for code 224 (MethodHash=9205d92a) for method System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable`2[System.__Canon,System.__Canon]):this (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -171,7 +169,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 109 (0x0006d) Actual length = 218 (0x0000da)
+ Function Length : 112 (0x00070) Actual length = 224 (0x0000e0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

coreclr_tests.run.linux.arm.checked.mch

-24 (-2.96%) : 375660.dasm - System.Buffers.SharedArrayPool`1[float]:Return(float[],ubyte):this (FullOpts)

@@ -10,31 +10,31 @@ ; ; V00 this [V00,T09] ( 8, 5 ) ref -> r5 this class-hnd single-def <System.Buffers.SharedArrayPool`1[float]> ; V01 arg1 [V01,T08] ( 8, 6 ) ref -> r4 class-hnd single-def <float[]>
-; V02 arg2 [V02,T12] ( 3, 2.50) ubyte -> r6 single-def
+; V02 arg2 [V02,T11] ( 3, 2.50) ubyte -> r6 single-def
; V03 loc0 [V03,T10] ( 8, 5 ) int -> r8 ;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V05 loc2 [V05,T20] ( 4, 2.50) ubyte -> [sp+0x2C] -; V06 loc3 [V06,T23] ( 3, 2 ) ubyte -> [sp+0x28] -; V07 loc4 [V07,T16] ( 4, 3 ) ref -> r9 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource> -; V08 loc5 [V08,T21] ( 4, 2 ) byref -> r2 single-def -; V09 loc6 [V09,T18] ( 3, 3 ) ref -> r6 class-hnd single-def <System.Array>
+; V05 loc2 [V05,T19] ( 4, 2.50) ubyte -> r10 +; V06 loc3 [V06,T22] ( 3, 2 ) ubyte -> [sp+0x24] +; V07 loc4 [V07,T15] ( 4, 3 ) ref -> r9 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource> +; V08 loc5 [V08,T20] ( 4, 2 ) byref -> r2 single-def +; V09 loc6 [V09,T17] ( 3, 3 ) ref -> r6 class-hnd single-def <System.Array>
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Buffers.SharedArrayPoolPartitions> ; V11 OutArgs [V11 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T15] ( 2, 4 ) ref -> r9 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]> -; V13 tmp2 [V13,T14] ( 5, 4 ) ref -> r9 -; V14 tmp3 [V14,T25] ( 2, 2 ) int -> r6 "impAppendStmt" -; V15 tmp4 [V15,T26] ( 2, 2 ) int -> [sp+0x24] spill-single-def "impAppendStmt" -; V16 tmp5 [V16,T27] ( 2, 2 ) int -> r6 "impAppendStmt" -; V17 tmp6 [V17,T28] ( 2, 2 ) int -> r7 "impAppendStmt"
+; V12 tmp1 [V12,T14] ( 2, 4 ) ref -> r9 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]> +; V13 tmp2 [V13,T13] ( 5, 4 ) ref -> r9 +; V14 tmp3 [V14,T24] ( 2, 2 ) int -> r6 "impAppendStmt" +; V15 tmp4 [V15,T25] ( 2, 2 ) int -> [sp+0x20] spill-single-def "impAppendStmt" +; V16 tmp5 [V16,T26] ( 2, 2 ) int -> r6 "impAppendStmt" +; V17 tmp6 [V17,T27] ( 2, 2 ) int -> r7 "impAppendStmt"
;* V18 tmp7 [V18 ] ( 0, 0 ) ref -> zero-ref single-def ;* V19 tmp8 [V19 ] ( 0, 0 ) int -> zero-ref ;* V20 tmp9 [V20 ] ( 0, 0 ) int -> zero-ref
-; V21 tmp10 [V21,T36] ( 2, 1 ) int -> r3
+; V21 tmp10 [V21,T35] ( 2, 1 ) int -> r3
;* V22 tmp11 [V22 ] ( 0, 0 ) ref -> zero-ref single-def ;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref ;* V24 tmp13 [V24 ] ( 0, 0 ) int -> zero-ref ;* V25 tmp14 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp15 [V26,T31] ( 3, 1.50) int -> r0
+; V26 tmp15 [V26,T30] ( 3, 1.50) int -> r0
;* V27 tmp16 [V27 ] ( 0, 0 ) ref -> zero-ref single-def ;* V28 tmp17 [V28 ] ( 0, 0 ) int -> zero-ref ;* V29 tmp18 [V29 ] ( 0, 0 ) int -> zero-ref @@ -45,47 +45,46 @@ ;* V34 tmp23 [V34 ] ( 0, 0 ) int -> zero-ref ;* V35 tmp24 [V35 ] ( 0, 0 ) int -> zero-ref ;* V36 tmp25 [V36 ] ( 0, 0 ) int -> zero-ref
-; V37 tmp26 [V37,T32] ( 3, 1.50) int -> r1 -; V38 tmp27 [V38,T29] ( 2, 2 ) int -> r6 "impAppendStmt"
+; V37 tmp26 [V37,T31] ( 3, 1.50) int -> r1 +; V38 tmp27 [V38,T28] ( 2, 2 ) int -> r6 "impAppendStmt"
;* V39 tmp28 [V39 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Buffers.SharedArrayPoolThreadLocalArray>
-; V40 tmp29 [V40,T24] ( 2, 2 ) ref -> r3 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions> -; V41 tmp30 [V41,T22] ( 4, 2 ) ref -> r3 -; V42 tmp31 [V42,T39] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V40 tmp29 [V40,T23] ( 2, 2 ) ref -> r3 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions> +; V41 tmp30 [V41,T21] ( 4, 2 ) ref -> r3 +; V42 tmp31 [V42,T38] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V43 tmp32 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V44 tmp33 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V45 tmp34 [V45,T33] ( 3, 1.50) int -> [sp+0x20] spill-single-def "Inline stloc first use temp"
+; V45 tmp34 [V45,T32] ( 3, 1.50) int -> [sp+0x1C] spill-single-def "Inline stloc first use temp"
;* V46 tmp35 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V47 tmp36 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V48 tmp37 [V48,T34] ( 3, 1.50) ubyte -> r6 "Inline return value spill temp" -; V49 tmp38 [V49,T11] ( 3, 4.50) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V50 tmp39 [V50,T01] ( 7, 22 ) int -> [sp+0x1C] "Inline stloc first use temp" -; V51 tmp40 [V51,T05] ( 4, 12 ) int -> [sp+0x18] "Inline stloc first use temp" -; V52 tmp41 [V52,T02] ( 2, 16 ) int -> r10 "dup spill"
+; V48 tmp37 [V48,T33] ( 3, 1.50) ubyte -> r6 "Inline return value spill temp" +; V49 tmp38 [V49,T02] ( 6, 16.50) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V50 tmp39 [V50,T01] ( 7, 22 ) int -> [sp+0x18] "Inline stloc first use temp" +; V51 tmp40 [V51,T05] ( 4, 12 ) int -> [sp+0x14] "Inline stloc first use temp" +; V52 tmp41 [V52,T03] ( 2, 16 ) int -> r3 "dup spill"
;* V53 tmp42 [V53 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V54 tmp43 [V54,T40] ( 3, 0 ) int -> r0 "Inline return value spill temp" -; V55 tmp44 [V55,T17] ( 4, 3 ) int -> r3 "dup spill"
+; V54 tmp43 [V54,T39] ( 3, 0 ) int -> r0 "Inline return value spill temp" +; V55 tmp44 [V55,T16] ( 4, 3 ) int -> r3 "dup spill"
;* V56 tmp45 [V56 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V57 tmp46 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V58 tmp47 [V58,T07] ( 3, 10 ) ubyte -> [sp+0x14] "Inline stloc first use temp" -; V59 tmp48 [V59,T00] ( 8, 56 ) ref -> [sp+0x0C] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V58 tmp47 [V58,T07] ( 3, 10 ) ubyte -> [sp+0x10] "Inline stloc first use temp" +; V59 tmp48 [V59,T00] ( 8, 56 ) ref -> [sp+0x08] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
; V60 tmp49 [V60,T06] ( 3, 10 ) ref -> r1 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V61 tmp50 [V61,T03] ( 5, 14 ) int -> r2 "Inline stloc first use temp" -; V62 tmp51 [V62,T30] ( 2, 2 ) int -> r0 "Inlining Arg" -;* V63 tmp52 [V63,T37] ( 0, 0 ) ref -> zero-ref single-def "field V39.Array (fldOffset=0x0)" P-INDEP -;* V64 tmp53 [V64,T38] ( 0, 0 ) int -> zero-ref "field V39.MillisecondsTimeStamp (fldOffset=0x4)" P-INDEP -; V65 tmp54 [V65,T19] ( 3, 3 ) ref -> r0 single-def "arr expr" -; V66 tmp55 [V66,T41] ( 2, 0 ) ref -> r5 single-def "argument with side effect" -; V67 tmp56 [V67,T42] ( 2, 0 ) ref -> r2 single-def "argument with side effect" -; V68 cse0 [V68,T35] ( 3, 1.50) int -> r0 "CSE - conservative" -; V69 cse1 [V69,T04] ( 5, 12 ) int -> [sp+0x10] spill-single-def "CSE - aggressive" -; V70 cse2 [V70,T13] ( 6, 4 ) int -> r7 "CSE - moderate"
+; V61 tmp50 [V61,T04] ( 5, 14 ) int -> [sp+0x0C] spill-single-def "Inline stloc first use temp" +; V62 tmp51 [V62,T29] ( 2, 2 ) int -> r0 "Inlining Arg" +;* V63 tmp52 [V63,T36] ( 0, 0 ) ref -> zero-ref single-def "field V39.Array (fldOffset=0x0)" P-INDEP +;* V64 tmp53 [V64,T37] ( 0, 0 ) int -> zero-ref "field V39.MillisecondsTimeStamp (fldOffset=0x4)" P-INDEP +; V65 tmp54 [V65,T18] ( 3, 3 ) ref -> r0 single-def "arr expr" +; V66 tmp55 [V66,T40] ( 2, 0 ) ref -> r5 single-def "argument with side effect" +; V67 tmp56 [V67,T41] ( 2, 0 ) ref -> r2 single-def "argument with side effect" +; V68 cse0 [V68,T34] ( 3, 1.50) int -> r0 "CSE - conservative" +; V69 cse1 [V69,T12] ( 6, 4 ) int -> r7 "CSE - moderate"
;
-; Lcl frame size = 52
+; Lcl frame size = 44
G_M43855_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 52 - add r11, sp, 80
+ sub sp, 44 + add r11, sp, 72
mov r5, r0 ; gcrRegs +[r5] mov r4, r1 @@ -134,7 +133,7 @@ G_M43855_IG04: ; bbWeight=1, gcrefRegs=0230 {r4 r5 r9}, byrefRegs=0000 {} ; gcrRegs -[r0] mov r10, 0 movs r3, 1
- str r3, [sp+0x28] // [V06 loc3]
+ str r3, [sp+0x24] // [V06 loc3]
ldr r0, [r9+0x04] cmp r0, r8 bls G_M43855_IG21 @@ -158,7 +157,7 @@ G_M43855_IG06: ; bbWeight=0.50, gcrefRegs=0230 {r4 r5 r9}, byrefRegs=0000 and r0, r8, 31 movs r1, 16 lsl r2, r1, r0
- str r2, [sp+0x20] // [V45 tmp34]
+ str r2, [sp+0x1C] // [V45 tmp34]
cmp r2, 0 bge SHORT G_M43855_IG07 movw r0, 0xd1ff @@ -172,7 +171,7 @@ G_M43855_IG06: ; bbWeight=0.50, gcrefRegs=0230 {r4 r5 r9}, byrefRegs=0000 ; gcr arg pop 0 ;; size=48 bbWeight=0.50 PerfScore 7.50 G_M43855_IG07: ; bbWeight=0.50, gcrefRegs=0230 {r4 r5 r9}, byrefRegs=0000 {}, byref, isz
- ldr r2, [sp+0x20] // [V45 tmp34]
+ ldr r2, [sp+0x1C] // [V45 tmp34]
cmp r6, r2 bne G_M43855_IG30 lsl r1, r8, 3 @@ -259,55 +258,55 @@ G_M43855_IG11: ; bbWeight=0, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 ; gcr arg pop 0 mov r3, r0 movs r2, 0
- str r2, [sp+0x18] // [V51 tmp40] - ldr r1, [r9+0x04] - str r1, [sp+0x10] // [V69 cse1] - cmp r1, 0 - str r10, [sp+0x2C] // [V05 loc2]
+ str r2, [sp+0x14] // [V51 tmp40] + ldr r0, [r9+0x04] + cmp r0, 0
ble SHORT G_M43855_IG18
- ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=26 bbWeight=0 PerfScore 0.00
G_M43855_IG12: ; bbWeight=4, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz
- cmp r3, r1
+ ldr r0, [r9+0x04] + cmp r3, r0
bhs G_M43855_IG28 add r0, r9, 8 ; byrRegs +[r0]
- str r3, [sp+0x1C] // [V50 tmp39] - lsl lr, r3, 2 - ldr lr, [r0+lr] - ; gcrRegs +[lr] - str lr, [sp+0x0C] // [V59 tmp48] - ; GC ptr vars +{V59} - ldrsb r0, [lr] - ; byrRegs -[r0] - mov r12, 0 - str r12, [sp+0x14] // [V58 tmp47] - mov r0, lr - ; gcrRegs +[r0] - movw r10, 0xd1ff - movt r10, 0xd1ff - blx r10 // <unknown method> - ; gcrRegs -[r0 lr] - ; gcr arg pop 0 - ldr r10, [sp+0x0C] // [V59 tmp48] - ; gcrRegs +[r10] - ldr r1, [r10+0x04]
+ str r3, [sp+0x18] // [V50 tmp39] + lsls r1, r3, 2 + ldr r1, [r0+r1]
; gcrRegs +[r1]
- ldr r2, [r10+0x0C]
+ str r1, [sp+0x08] // [V59 tmp48] + ; GC ptr vars +{V59} + ldrsb r0, [r1] + ; byrRegs -[r0] + mov lr, 0 + str lr, [sp+0x10] // [V58 tmp47] + mov r0, r1 + ; gcrRegs +[r0] + movw r12, 0xd1ff + movt r12, 0xd1ff + blx r12 // <unknown method> + ; gcrRegs -[r0-r1] + ; gcr arg pop 0 + ldr r2, [sp+0x08] // [V59 tmp48] + ; gcrRegs +[r2] + ldr r1, [r2+0x04] + ; gcrRegs +[r1] + ldr r3, [r2+0x0C] + str r3, [sp+0x0C] // [V61 tmp50]
ldr r0, [r1+0x04]
- cmp r0, r2
+ cmp r0, r3
bls SHORT G_M43855_IG15
- ;; size=66 bbWeight=4 PerfScore 80.00 -G_M43855_IG13: ; bbWeight=2, gcrefRegs=0672 {r1 r4 r5 r6 r9 r10}, byrefRegs=0000 {}, byref, isz - cmp r2, 0
+ ;; size=60 bbWeight=4 PerfScore 88.00 +G_M43855_IG13: ; bbWeight=2, gcrefRegs=0276 {r1 r2 r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz + cmp r3, 0
bne SHORT G_M43855_IG14 movs r0, 0
- str r0, [r10+0x10] - ;; size=10 bbWeight=2 PerfScore 8.00 -G_M43855_IG14: ; bbWeight=2, gcrefRegs=0672 {r1 r4 r5 r6 r9 r10}, byrefRegs=0000 {}, byref
+ str r0, [r2+0x10] + ;; size=8 bbWeight=2 PerfScore 8.00 +G_M43855_IG14: ; bbWeight=2, gcrefRegs=0276 {r1 r2 r4 r5 r6 r9}, byrefRegs=0000 {}, byref
adds r1, 8 ; gcrRegs -[r1] ; byrRegs +[r1]
- lsls r0, r2, 2
+ lsls r0, r3, 2
adds r0, r1, r0 ; byrRegs +[r0] mov r1, r6 @@ -318,40 +317,42 @@ G_M43855_IG14: ; bbWeight=2, gcrefRegs=0672 {r1 r4 r5 r6 r9 r10}, byrefRe blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0]
- adds r0, r2, 1 - str r0, [r10+0x0C] - mov r12, 1 - str r12, [sp+0x14] // [V58 tmp47] - ;; size=32 bbWeight=2 PerfScore 22.00 -G_M43855_IG15: ; bbWeight=4, gcrefRegs=0670 {r4 r5 r6 r9 r10}, byrefRegs=0000 {}, byref, isz
...

-12 (-2.83%) : 143234.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol+<>c:<.ctor>b_171(Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte:this (Tier1)

@@ -10,32 +10,32 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol+<>c>
-; V01 arg1 [V01,T05] ( 6, 4 ) struct (20) [sp+0x24] do-not-enreg[S] ld-addr-op single-def <Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]>
+; V01 arg1 [V01,T04] ( 6, 4 ) struct (20) [sp+0x1C] do-not-enreg[S] ld-addr-op single-def <Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T16] ( 2, 0 ) ref -> r2 class-hnd single-def "dup spill" <<unknown class>> ;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 4) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]]>
-; V05 tmp3 [V05,T13] ( 4, 0 ) ref -> r2 -; V06 tmp4 [V06,T14] ( 4, 0 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V07 tmp5 [V07,T10] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp"
+; V05 tmp3 [V05,T12] ( 4, 0 ) ref -> r2 +; V06 tmp4 [V06,T13] ( 4, 0 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V07 tmp5 [V07,T09] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp"
;* V08 tmp6 [V08 ] ( 0, 0 ) struct ( 4) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]]>
-; V09 tmp7 [V09,T06] ( 3, 3 ) ubyte -> r0 "Inline return value spill temp"
+; V09 tmp7 [V09,T05] ( 3, 3 ) ubyte -> r0 "Inline return value spill temp"
;* V10 tmp8 [V10 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]]> ; V11 tmp9 [V11,T17] ( 2, 0 ) ref -> r6 class-hnd single-def "dup spill" <<unknown class>> ;* V12 tmp10 [V12 ] ( 0, 0 ) struct ( 4) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]]> ;* V13 tmp11 [V13 ] ( 0, 0 ) struct ( 4) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]]> ; V14 tmp12 [V14,T02] ( 6, 16 ) ref -> r6
-; V15 tmp13 [V15,T12] ( 5, 0 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V16 tmp14 [V16,T11] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp"
+; V15 tmp13 [V15,T11] ( 5, 0 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V16 tmp14 [V16,T10] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp"
;* V17 tmp15 [V17 ] ( 0, 0 ) struct ( 4) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]]> ; V18 tmp16 [V18,T15] ( 3, 0 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-; V19 tmp17 [V19,T07] ( 3, 3 ) ubyte -> r0 "Inline return value spill temp"
+; V19 tmp17 [V19,T06] ( 3, 3 ) ubyte -> r0 "Inline return value spill temp"
;* V20 tmp18 [V20 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]]>
-; V21 tmp19 [V21,T04] ( 2, 8 ) ref -> r4 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V22 tmp20 [V22,T01] ( 5, 32 ) int -> r7 "Inline stloc first use temp"
+; V21 tmp19 [V21,T03] ( 4, 16 ) ref -> r4 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V22 tmp20 [V22,T01] ( 5, 32 ) int -> r5 "Inline stloc first use temp"
;* V23 tmp21 [V23 ] ( 0, 0 ) struct ( 8) zero-ref "Inline stloc first use temp" <Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]> ; V24 tmp22 [V24,T18] ( 2, 0 ) ref -> r4 single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V25 tmp23 [V25,T09] ( 3, 2 ) ref -> r3 single-def "field V08.array (fldOffset=0x0)" P-INDEP -; V26 tmp24 [V26,T08] ( 6, 2 ) ref -> r4 single-def "field V10.array (fldOffset=0x0)" P-INDEP
+; V25 tmp23 [V25,T08] ( 3, 2 ) ref -> r3 single-def "field V08.array (fldOffset=0x0)" P-INDEP +; V26 tmp24 [V26,T07] ( 7, 2 ) ref -> r4 single-def "field V10.array (fldOffset=0x0)" P-INDEP
;* V27 tmp25 [V27 ] ( 0, 0 ) ref -> zero-ref single-def "field V12.array (fldOffset=0x0)" P-INDEP ;* V28 tmp26 [V28 ] ( 0, 0 ) ref -> zero-ref single-def "field V13.array (fldOffset=0x0)" P-INDEP ;* V29 tmp27 [V29 ] ( 0, 0 ) ref -> zero-ref single-def "field V17.array (fldOffset=0x0)" P-INDEP @@ -44,28 +44,27 @@ ;* V32 tmp30 [V32 ] ( 0, 0 ) ubyte -> zero-ref "field V23.IsOptional (fldOffset=0x4)" P-INDEP ; V33 tmp31 [V33,T00] ( 3, 48 ) struct ( 8) [sp+0x00] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]> ;* V34 cse0 [V34,T19] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V35 cse1 [V35,T03] ( 4, 8 ) int -> r5 "CSE - aggressive"
+; V35 cse1 [V35,T14] ( 4, 0 ) int -> r5 "CSE - aggressive"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M10801_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r1,r2,r3}
- push {r4,r5,r6,r7,r11,lr} - sub sp, 12 - add r11, sp, 28
+ push {r2,r3,r4,r5,r6,r11,lr} + add r11, sp, 20
movs r1, 0 str r1, [sp] str r1, [sp+0x04]
- ;; size=18 bbWeight=1 PerfScore 7.00
+ ;; size=16 bbWeight=1 PerfScore 6.00
G_M10801_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x30]
+ ldr r3, [sp+0x28]
; gcrRegs +[r3] cmp r3, 0 bne SHORT G_M10801_IG12 ;; size=6 bbWeight=1 PerfScore 3.00 G_M10801_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r3]
- ldr r4, [sp+0x34]
+ ldr r4, [sp+0x2C]
; gcrRegs +[r4] cmp r4, 0 bne SHORT G_M10801_IG16 @@ -75,14 +74,13 @@ G_M10801_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movs r0, 0 ;; size=2 bbWeight=1 PerfScore 1.00 G_M10801_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- add sp, 12 - pop {r4,r5,r6,r7,r11,lr}
+ pop {r2,r3,r4,r5,r6,r11,lr}
add sp, 12 bx lr
- ;; size=10 bbWeight=1 PerfScore 4.00
+ ;; size=8 bbWeight=1 PerfScore 3.00
G_M10801_IG06: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[r4 r6]
- lsls r1, r7, 3
+ lsls r1, r5, 3
adds r1, 8 adds r1, r4, r1 ; byrRegs +[r1] @@ -105,10 +103,11 @@ G_M10801_IG08: ; bbWeight=8, isz, extend ; gcrRegs -[r0-r1] cmp r0, 0 bne SHORT G_M10801_IG10
- adds r7, r7, 1 - cmp r5, r7
+ adds r5, r5, 1 + ldr r3, [r4+0x04] + cmp r3, r5
bgt SHORT G_M10801_IG06
- ;; size=20 bbWeight=8 PerfScore 80.00
+ ;; size=22 bbWeight=8 PerfScore 88.00
G_M10801_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r4 r6] movs r0, 0 @@ -139,7 +138,7 @@ G_M10801_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movt r0, 0xd1ff ldr r2, [r0] ; gcrRegs +[r2]
- ldr r4, [sp+0x30]
+ ldr r4, [sp+0x28]
; gcrRegs +[r4] cmp r2, 0 bne SHORT G_M10801_IG15 @@ -187,14 +186,14 @@ G_M10801_IG15: ; bbWeight=0, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, b ; gcrRegs -[r1-r2 r4] cmp r0, 0 bne SHORT G_M10801_IG22
- ldr r4, [sp+0x34]
+ ldr r4, [sp+0x2C]
; gcrRegs +[r4] cmp r4, 0 beq SHORT G_M10801_IG04 ;; size=32 bbWeight=0 PerfScore 0.00 G_M10801_IG16: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r5, [r4+0x04] - cmp r5, 0
+ ldr r0, [r4+0x04] + cmp r0, 0
beq SHORT G_M10801_IG17 movs r0, 0 b SHORT G_M10801_IG18 @@ -211,9 +210,9 @@ G_M10801_IG18: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
- movw r0, 0xd1ff - movt r0, 0xd1ff - ldr r6, [r0]
+ movw r5, 0xd1ff + movt r5, 0xd1ff + ldr r6, [r5]
; gcrRegs +[r6] cmp r6, 0 bne SHORT G_M10801_IG20 @@ -225,9 +224,7 @@ G_M10801_IG18: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ; gcrRegs -[r6] +[r0] mov r6, r0 ; gcrRegs +[r6]
- movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r1, [r3]
+ ldr r1, [r5-0x04]
; gcrRegs +[r1] cmp r1, 0 bne SHORT G_M10801_IG19 @@ -237,7 +234,7 @@ G_M10801_IG18: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre blx r3 // System.MulticastDelegate:ThrowNullThisInDelegateToInstance() ; gcrRegs -[r0-r1 r4 r6] bkpt
- ;; size=86 bbWeight=0 PerfScore 0.00
+ ;; size=80 bbWeight=0 PerfScore 0.00
G_M10801_IG19: ; bbWeight=0, gcrefRegs=0052 {r1 r4 r6}, byrefRegs=0000 {}, byref ; gcrRegs +[r1 r4 r6] adds r0, r6, 4 @@ -250,16 +247,16 @@ G_M10801_IG19: ; bbWeight=0, gcrefRegs=0052 {r1 r4 r6}, byrefRegs=0000 {} movw r1, 0xd1ff movt r1, 0xd1ff str r1, [r6+0x0C]
- movw r0, 0xd1ff - movt r0, 0xd1ff
+ mov r0, r5
mov r1, r6 ; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1]
- ;; size=42 bbWeight=0 PerfScore 0.00
+ ;; size=36 bbWeight=0 PerfScore 0.00
G_M10801_IG20: ; bbWeight=0, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r4+0x04]
cmp r6, 0 bne SHORT G_M10801_IG21 movw r0, 0xd1ff @@ -275,26 +272,26 @@ G_M10801_IG20: ; bbWeight=0, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, b blx r3 // System.Collections.Immutable.Requires:FailArgumentNullException(System.String) ; gcrRegs -[r0] bkpt
- ;; size=40 bbWeight=0 PerfScore 0.00
+ ;; size=42 bbWeight=0 PerfScore 0.00
G_M10801_IG21: ; bbWeight=0, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r4 r6]
- movs r7, 0 - cmp r5, 0
+ movs r5, 0 + ldr r0, [r4+0x04] + cmp r0, 0
ble G_M10801_IG09 b SHORT G_M10801_IG06
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M10801_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[r4 r6] movs r0, 1 ;; size=2 bbWeight=0 PerfScore 0.00 G_M10801_IG23: ; bbWeight=0, epilog, nogc, extend
- add sp, 12 - pop {r4,r5,r6,r7,r11,lr}
+ pop {r2,r3,r4,r5,r6,r11,lr}
add sp, 12 bx lr
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 424, prolog size 18, PerfScore 158.00, instruction count 158, allocated bytes for code 424 (MethodHash=b48cd5ce) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol+<>c:<.ctor>b__17_1(Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte:this (Tier1)
+Total bytes of code 412, prolog size 16, PerfScore 164.00, instruction count 155, allocated bytes for code 412 (MethodHash=b48cd5ce) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol+<>c:<.ctor>b__17_1(Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -306,25 +303,25 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 212 (0x000d4) Actual length = 424 (0x0001a8)
+ Function Length : 206 (0x000ce) Actual length = 412 (0x00019c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Condition : 14 (0xe) (always)
- Epilog Start Index : 6 (0x06)
+ Epilog Start Index : 5 (0x05)
---- Scope 1 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Condition : 14 (0xe) (always)
- Epilog Start Index : 6 (0x06)
+ Epilog Start Index : 5 (0x05)
---- Unwind codes ----
- 03 add sp, sp, #12 ; opsize 16 - A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ A8 7C pop {r2,r3,r4,r5,r6,r11,lr} ; opsize 32
...

-4 (-0.49%) : 178543.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Return(ubyte[],ubyte):this (Tier1)

@@ -14,28 +14,28 @@ ; V02 arg2 [V02,T12] ( 3, 3 ) ubyte -> r6 single-def ; V03 loc0 [V03,T11] ( 8, 5 ) int -> r7 ;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V05 loc2 [V05,T23] ( 4, 2 ) ubyte -> r9 -; V06 loc3 [V06,T27] ( 3, 1.50) ubyte -> r10 -; V07 loc4 [V07,T22] ( 4, 2 ) ref -> r6 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource> -; V08 loc5 [V08,T15] ( 4, 4 ) byref -> r2 single-def -; V09 loc6 [V09,T16] ( 3, 4 ) ref -> r6 class-hnd single-def <System.Array>
+; V05 loc2 [V05,T22] ( 4, 2 ) ubyte -> r9 +; V06 loc3 [V06,T26] ( 3, 1.50) ubyte -> r10 +; V07 loc4 [V07,T21] ( 4, 2 ) ref -> r6 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource> +; V08 loc5 [V08,T14] ( 4, 4 ) byref -> r2 single-def +; V09 loc6 [V09,T15] ( 3, 4 ) ref -> r6 class-hnd single-def <System.Array>
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Buffers.SharedArrayPoolPartitions> ; V11 OutArgs [V11 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T17] ( 2, 4 ) ref -> r8 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+; V12 tmp1 [V12,T16] ( 2, 4 ) ref -> r8 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]>
; V13 tmp2 [V13,T13] ( 5, 4.50) ref -> r8
-; V14 tmp3 [V14,T38] ( 2, 0 ) int -> r8 "impAppendStmt" -; V15 tmp4 [V15,T39] ( 2, 0 ) int -> [sp+0x24] spill-single-def "impAppendStmt" -; V16 tmp5 [V16,T40] ( 2, 0 ) int -> r8 "impAppendStmt" -; V17 tmp6 [V17,T41] ( 2, 0 ) int -> r4 "impAppendStmt"
+; V14 tmp3 [V14,T37] ( 2, 0 ) int -> r8 "impAppendStmt" +; V15 tmp4 [V15,T38] ( 2, 0 ) int -> [sp+0x1C] spill-single-def "impAppendStmt" +; V16 tmp5 [V16,T39] ( 2, 0 ) int -> r8 "impAppendStmt" +; V17 tmp6 [V17,T40] ( 2, 0 ) int -> r4 "impAppendStmt"
;* V18 tmp7 [V18 ] ( 0, 0 ) ref -> zero-ref single-def ;* V19 tmp8 [V19 ] ( 0, 0 ) int -> zero-ref ;* V20 tmp9 [V20 ] ( 0, 0 ) int -> zero-ref
-; V21 tmp10 [V21,T42] ( 2, 0 ) int -> r3
+; V21 tmp10 [V21,T41] ( 2, 0 ) int -> r3
;* V22 tmp11 [V22 ] ( 0, 0 ) ref -> zero-ref single-def ;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref ;* V24 tmp13 [V24 ] ( 0, 0 ) int -> zero-ref ;* V25 tmp14 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp15 [V26,T33] ( 3, 0 ) int -> r0
+; V26 tmp15 [V26,T32] ( 3, 0 ) int -> r0
;* V27 tmp16 [V27 ] ( 0, 0 ) ref -> zero-ref single-def ;* V28 tmp17 [V28 ] ( 0, 0 ) int -> zero-ref ;* V29 tmp18 [V29 ] ( 0, 0 ) int -> zero-ref @@ -46,56 +46,55 @@ ;* V34 tmp23 [V34 ] ( 0, 0 ) int -> zero-ref ;* V35 tmp24 [V35 ] ( 0, 0 ) int -> zero-ref ;* V36 tmp25 [V36 ] ( 0, 0 ) int -> zero-ref
-; V37 tmp26 [V37,T34] ( 3, 0 ) int -> r1 -; V38 tmp27 [V38,T18] ( 2, 4 ) int -> r6 "impAppendStmt"
+; V37 tmp26 [V37,T33] ( 3, 0 ) int -> r1 +; V38 tmp27 [V38,T17] ( 2, 4 ) int -> r6 "impAppendStmt"
;* V39 tmp28 [V39 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Buffers.SharedArrayPoolThreadLocalArray>
-; V40 tmp29 [V40,T24] ( 2, 2 ) ref -> r3 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions> -; V41 tmp30 [V41,T26] ( 4, 1.50) ref -> r3 -; V42 tmp31 [V42,T32] ( 3, 0 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V40 tmp29 [V40,T23] ( 2, 2 ) ref -> r3 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions> +; V41 tmp30 [V41,T25] ( 4, 1.50) ref -> r3 +; V42 tmp31 [V42,T31] ( 3, 0 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V43 tmp32 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V44 tmp33 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V45 tmp34 [V45,T01] ( 17, 34 ) int -> r0 "Inlining Arg" ;* V46 tmp35 [V46 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]> ;* V47 tmp36 [V47 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V48 tmp37 [V48 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-; V49 tmp38 [V49,T21] ( 3, 3 ) int -> [sp+0x20] spill-single-def "Inline stloc first use temp"
+; V49 tmp38 [V49,T20] ( 3, 3 ) int -> [sp+0x18] spill-single-def "Inline stloc first use temp"
;* V50 tmp39 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V51 tmp40 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V52 tmp41 [V52,T28] ( 3, 1.50) ubyte -> r10 "Inline return value spill temp" -; V53 tmp42 [V53,T14] ( 3, 4.50) ref -> r8 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V52 tmp41 [V52,T27] ( 3, 1.50) ubyte -> r10 "Inline return value spill temp" +; V53 tmp42 [V53,T03] ( 6, 16.50) ref -> r8 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
; V54 tmp43 [V54,T02] ( 7, 22 ) int -> r10 "Inline stloc first use temp"
-; V55 tmp44 [V55,T06] ( 4, 12 ) int -> [sp+0x1C] "Inline stloc first use temp" -; V56 tmp45 [V56,T03] ( 2, 16 ) int -> r10 "dup spill"
+; V55 tmp44 [V55,T06] ( 4, 12 ) int -> [sp+0x14] "Inline stloc first use temp" +; V56 tmp45 [V56,T04] ( 2, 16 ) int -> r10 "dup spill"
;* V57 tmp46 [V57 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V58 tmp47 [V58,T35] ( 3, 0 ) int -> r0 "Inline return value spill temp" -; V59 tmp48 [V59,T19] ( 4, 3 ) int -> r3 "dup spill"
+; V58 tmp47 [V58,T34] ( 3, 0 ) int -> r0 "Inline return value spill temp" +; V59 tmp48 [V59,T18] ( 4, 3 ) int -> r3 "dup spill"
;* V60 tmp49 [V60 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V61 tmp50 [V61 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V62 tmp51 [V62,T08] ( 3, 10 ) ubyte -> [sp+0x18] "Inline stloc first use temp" -; V63 tmp52 [V63,T00] ( 8, 56 ) ref -> [sp+0x0C] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V62 tmp51 [V62,T08] ( 3, 10 ) ubyte -> [sp+0x10] "Inline stloc first use temp" +; V63 tmp52 [V63,T00] ( 8, 56 ) ref -> [sp+0x08] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
; V64 tmp53 [V64,T07] ( 3, 10 ) ref -> r1 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V65 tmp54 [V65,T04] ( 5, 14 ) int -> [sp+0x14] spill-single-def "Inline stloc first use temp" -; V66 tmp55 [V66,T43] ( 2, 0 ) int -> r0 "Inlining Arg" -;* V67 tmp56 [V67,T30] ( 0, 0 ) ref -> zero-ref single-def "field V39.Array (fldOffset=0x0)" P-INDEP -;* V68 tmp57 [V68,T31] ( 0, 0 ) int -> zero-ref "field V39.MillisecondsTimeStamp (fldOffset=0x4)" P-INDEP
+; V65 tmp54 [V65,T05] ( 5, 14 ) int -> [sp+0x0C] spill-single-def "Inline stloc first use temp" +; V66 tmp55 [V66,T42] ( 2, 0 ) int -> r0 "Inlining Arg" +;* V67 tmp56 [V67,T29] ( 0, 0 ) ref -> zero-ref single-def "field V39.Array (fldOffset=0x0)" P-INDEP +;* V68 tmp57 [V68,T30] ( 0, 0 ) int -> zero-ref "field V39.MillisecondsTimeStamp (fldOffset=0x4)" P-INDEP
;* V69 tmp58 [V69 ] ( 0, 0 ) byref -> zero-ref "field V46._reference (fldOffset=0x0)" P-INDEP ;* V70 tmp59 [V70 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x4)" P-INDEP
-; V71 tmp60 [V71,T25] ( 2, 2 ) byref -> r1 single-def "field V47._reference (fldOffset=0x0)" P-INDEP
+; V71 tmp60 [V71,T24] ( 2, 2 ) byref -> r1 single-def "field V47._reference (fldOffset=0x0)" P-INDEP
;* V72 tmp61 [V72 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x4)" P-INDEP ;* V73 tmp62 [V73 ] ( 0, 0 ) byref -> zero-ref single-def "field V48._reference (fldOffset=0x0)" P-INDEP ;* V74 tmp63 [V74 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x4)" P-INDEP
-; V75 tmp64 [V75,T20] ( 3, 3 ) ref -> r0 single-def "arr expr" -; V76 tmp65 [V76,T36] ( 2, 0 ) ref -> r7 single-def "argument with side effect" -; V77 tmp66 [V77,T37] ( 2, 0 ) ref -> r2 single-def "argument with side effect" -; V78 cse0 [V78,T29] ( 3, 1.50) int -> r0 "CSE - moderate" -; V79 cse1 [V79,T05] ( 5, 12 ) int -> [sp+0x10] spill-single-def "CSE - aggressive"
+; V75 tmp64 [V75,T19] ( 3, 3 ) ref -> r0 single-def "arr expr" +; V76 tmp65 [V76,T35] ( 2, 0 ) ref -> r7 single-def "argument with side effect" +; V77 tmp66 [V77,T36] ( 2, 0 ) ref -> r2 single-def "argument with side effect" +; V78 cse0 [V78,T28] ( 3, 1.50) int -> r0 "CSE - moderate"
;
-; Lcl frame size = 44
+; Lcl frame size = 36
G_M60175_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 44 - add r11, sp, 72
+ sub sp, 36 + add r11, sp, 64
mov r5, r0 ; gcrRegs +[r5] mov r4, r1 @@ -169,7 +168,7 @@ G_M60175_IG05: ; bbWeight=1, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {} and r0, r7, 31 movs r1, 16 lsl r3, r1, r0
- str r3, [sp+0x20]
+ str r3, [sp+0x18]
cmp r3, 0 bge SHORT G_M60175_IG06 movw r0, 0xd1ff @@ -183,7 +182,7 @@ G_M60175_IG05: ; bbWeight=1, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {} ; gcr arg pop 0 ;; size=46 bbWeight=1 PerfScore 15.00 G_M60175_IG06: ; bbWeight=1, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x20] // [V49 tmp38]
+ ldr r3, [sp+0x18] // [V49 tmp38]
cmp r6, r3 bne G_M60175_IG25 lsls r1, r7, 3 @@ -204,8 +203,8 @@ G_M60175_IG06: ; bbWeight=1, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {} movs r0, 0 str r0, [r2+0x04] cmp r6, 0
- beq G_M60175_IG20 - ;; size=42 bbWeight=1 PerfScore 16.00
+ beq SHORT G_M60175_IG20 + ;; size=40 bbWeight=1 PerfScore 16.00
G_M60175_IG07: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz ; byrRegs -[r2] ldr r0, [r5+0x08] @@ -260,43 +259,43 @@ G_M60175_IG11: ; bbWeight=0, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 ; gcr arg pop 0 mov r10, r0 movs r3, 0
- str r3, [sp+0x1C] // [V55 tmp44] - ldr r2, [r8+0x04] - str r2, [sp+0x10] // [V79 cse1] - cmp r2, 0
+ str r3, [sp+0x14] // [V55 tmp44] + ldr r0, [r8+0x04] + cmp r0, 0
ble SHORT G_M60175_IG18
- ;; size=28 bbWeight=0 PerfScore 0.00
+ ;; size=26 bbWeight=0 PerfScore 0.00
G_M60175_IG12: ; bbWeight=4, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
- cmp r10, r2
+ ldr r0, [r8+0x04] + cmp r10, r0
bhs SHORT G_M60175_IG22 add r0, r8, 8 ; byrRegs +[r0]
- lsl r1, r10, 2 - ldr r1, [r0+r1] - ; gcrRegs +[r1] - str r1, [sp+0x0C] // [V63 tmp52]
+ lsl r2, r10, 2 + ldr r2, [r0+r2] + ; gcrRegs +[r2] + str r2, [sp+0x08] // [V63 tmp52]
; GC ptr vars +{V63}
- ldrsb r0, [r1]
+ ldrsb r0, [r2]
; byrRegs -[r0]
- mov lr, 0 - str lr, [sp+0x18] // [V62 tmp51] - mov r0, r1
+ movs r1, 0 + str r1, [sp+0x10] // [V62 tmp51] + mov r0, r2
; gcrRegs +[r0]
- movw r12, 0xd1ff - movt r12, 0xd1ff - blx r12 // <unknown method> - ; gcrRegs -[r0-r1]
+ movw lr, 0xd1ff + movt lr, 0xd1ff + blx lr // <unknown method> + ; gcrRegs -[r0 r2]
; gcr arg pop 0
- ldr r2, [sp+0x0C] // [V63 tmp52]
+ ldr r2, [sp+0x08] // [V63 tmp52]
; gcrRegs +[r2] ldr r1, [r2+0x04] ; gcrRegs +[r1] ldr r3, [r2+0x0C]
- str r3, [sp+0x14] // [V65 tmp54]
+ str r3, [sp+0x0C] // [V65 tmp54]
ldr r0, [r1+0x04] cmp r0, r3 bls SHORT G_M60175_IG15
- ;; size=54 bbWeight=4 PerfScore 80.00
+ ;; size=54 bbWeight=4 PerfScore 84.00
G_M60175_IG13: ; bbWeight=2, gcrefRegs=0176 {r1 r2 r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz cmp r3, 0 bne SHORT G_M60175_IG14 @@ -318,12 +317,12 @@ G_M60175_IG14: ; bbWeight=2, gcrefRegs=0176 {r1 r2 r4 r5 r6 r8}, byrefReg blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0]
- ldr r1, [sp+0x14] // [V65 tmp54]
+ ldr r1, [sp+0x0C] // [V65 tmp54]
adds r0, r1, 1 str r0, [r2+0x0C]
- mov lr, 1 - str lr, [sp+0x18] // [V62 tmp51] - ;; size=32 bbWeight=2 PerfScore 24.00
+ movs r1, 1 + str r1, [sp+0x10] // [V62 tmp51] + ;; size=28 bbWeight=2 PerfScore 24.00
G_M60175_IG15: ; bbWeight=4, gcrefRegs=0174 {r2 r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz mov r0, r2 ; gcrRegs +[r0] @@ -334,25 +333,25 @@ G_M60175_IG15: ; bbWeight=4, gcrefRegs=0174 {r2 r4 r5 r6 r8}, byrefRegs=0 blx r2 // <unknown method> ; gcrRegs -[r0] ; gcr arg pop 0
- ldr r0, [sp+0x18] // [V62 tmp51]
+ ldr r0, [sp+0x10] // [V62 tmp51]
cmp r0, 0 bne SHORT G_M60175_IG19 add r10, r10, 1
- ldr r0, [sp+0x10] // [V79 cse1]
+ ldr r0, [r8+0x04]
cmp r0, r10 bne SHORT G_M60175_IG17
- ;; size=28 bbWeight=4 PerfScore 44.00
+ ;; size=30 bbWeight=4 PerfScore 44.00
...

+24 (+2.23%) : 381963.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)

@@ -20,56 +20,56 @@ ; V09 loc6 [V09,T03] ( 7, 17 ) int -> r9 ; V10 loc7 [V10,T08] ( 3, 12 ) ref -> r2 class-hnd <System.Xml.XmlDictionaryString> ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T25] ( 3, 0 ) ref -> r4 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> -; V13 tmp2 [V13,T26] ( 3, 0 ) ref -> r10 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V12 tmp1 [V12,T24] ( 3, 0 ) ref -> r4 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> +; V13 tmp2 [V13,T25] ( 3, 0 ) ref -> r10 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V16 tmp5 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V17 tmp6 [V17,T21] ( 4, 0 ) int -> r0 "Inlining Arg"
+; V17 tmp6 [V17,T20] ( 4, 0 ) int -> r0 "Inlining Arg"
;* V18 tmp7 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V19 tmp8 [V19,T27] ( 3, 0 ) int -> r5 "Inlining Arg" -; V20 tmp9 [V20,T31] ( 2, 0 ) byref -> r4 "Inlining Arg"
+; V19 tmp8 [V19,T26] ( 3, 0 ) int -> r5 "Inlining Arg" +; V20 tmp9 [V20,T30] ( 2, 0 ) byref -> r4 "Inlining Arg"
;* V21 tmp10 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp11 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V23 tmp12 [V23,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V23 tmp12 [V23,T40] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V24 tmp13 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V25 tmp14 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V26 tmp15 [V26,T32] ( 2, 0 ) byref -> r1 "Inlining Arg"
+; V26 tmp15 [V26,T31] ( 2, 0 ) byref -> r1 "Inlining Arg"
;* V27 tmp16 [V27 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V28 tmp17 [V28,T22] ( 4, 0 ) int -> r0 "Inlining Arg"
+; V28 tmp17 [V28,T21] ( 4, 0 ) int -> r0 "Inlining Arg"
;* V29 tmp18 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V30 tmp19 [V30,T28] ( 3, 0 ) int -> r8 "Inlining Arg" -; V31 tmp20 [V31,T33] ( 2, 0 ) byref -> r7 "Inlining Arg"
+; V30 tmp19 [V30,T27] ( 3, 0 ) int -> r8 "Inlining Arg" +; V31 tmp20 [V31,T32] ( 2, 0 ) byref -> r7 "Inlining Arg"
;* V32 tmp21 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp22 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V34 tmp23 [V34,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V34 tmp23 [V34,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V35 tmp24 [V35 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V36 tmp25 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V37 tmp26 [V37,T34] ( 2, 0 ) byref -> r1 "Inlining Arg"
+; V37 tmp26 [V37,T33] ( 2, 0 ) byref -> r1 "Inlining Arg"
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.XmlBaseReader+Namespace> ;* V40 tmp29 [V40 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V41 tmp30 [V41,T23] ( 4, 0 ) int -> r0 "Inlining Arg"
+; V41 tmp30 [V41,T22] ( 4, 0 ) int -> r0 "Inlining Arg"
;* V42 tmp31 [V42 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V43 tmp32 [V43,T29] ( 3, 0 ) int -> r5 "Inlining Arg" -; V44 tmp33 [V44,T35] ( 2, 0 ) byref -> r4 "Inlining Arg"
+; V43 tmp32 [V43,T28] ( 3, 0 ) int -> r5 "Inlining Arg" +; V44 tmp33 [V44,T34] ( 2, 0 ) byref -> r4 "Inlining Arg"
;* V45 tmp34 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V46 tmp35 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V47 tmp36 [V47,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V47 tmp36 [V47,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V48 tmp37 [V48 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V49 tmp38 [V49 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V50 tmp39 [V50,T36] ( 2, 0 ) byref -> r1 "Inlining Arg"
+; V50 tmp39 [V50,T35] ( 2, 0 ) byref -> r1 "Inlining Arg"
;* V51 tmp40 [V51 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V52 tmp41 [V52,T24] ( 4, 0 ) int -> r4 "Inlining Arg"
+; V52 tmp41 [V52,T23] ( 4, 0 ) int -> r4 "Inlining Arg"
;* V53 tmp42 [V53 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V54 tmp43 [V54,T30] ( 3, 0 ) int -> r4 "Inlining Arg" -; V55 tmp44 [V55,T37] ( 2, 0 ) byref -> r5 "Inlining Arg"
+; V54 tmp43 [V54,T29] ( 3, 0 ) int -> r4 "Inlining Arg" +; V55 tmp44 [V55,T36] ( 2, 0 ) byref -> r5 "Inlining Arg"
;* V56 tmp45 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp46 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V58 tmp47 [V58,T44] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V58 tmp47 [V58,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V59 tmp48 [V59 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V60 tmp49 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V61 tmp50 [V61,T38] ( 2, 0 ) byref -> r1 "Inlining Arg"
+; V61 tmp50 [V61,T37] ( 2, 0 ) byref -> r1 "Inlining Arg"
; V62 tmp51 [V62,T12] ( 3, 8 ) ubyte -> r6 "Inline return value spill temp" ; V63 tmp52 [V63,T06] ( 4, 12 ) int -> r10 "Inline stloc first use temp" ; V64 tmp53 [V64,T00] ( 6, 25.46) ref -> r8 class-hnd exact "Inlining Arg" <System.String> @@ -106,12 +106,11 @@ ;* V95 tmp84 [V95 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-INDEP ;* V96 tmp85 [V96 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x4)" P-INDEP ; V97 tmp86 [V97,T09] ( 3, 12 ) ref -> r2 "arr expr"
-; V98 tmp87 [V98,T39] ( 2, 0 ) ref -> r1 "argument with side effect" -; V99 tmp88 [V99,T40] ( 2, 0 ) ref -> r1 "argument with side effect"
+; V98 tmp87 [V98,T38] ( 2, 0 ) ref -> r1 "argument with side effect" +; V99 tmp88 [V99,T39] ( 2, 0 ) ref -> r1 "argument with side effect"
; V100 cse0 [V100,T18] ( 3, 3 ) ref -> r0 "CSE - moderate" ; V101 cse1 [V101,T11] ( 6, 10 ) int -> r7 multi-def "CSE - aggressive" ; V102 cse2 [V102,T05] ( 4, 12.50) byref -> r8 hoist multi-def "CSE - aggressive"
-; V103 cse3 [V103,T20] ( 12, 0 ) ref -> r1 multi-def "CSE - moderate"
; ; Lcl frame size = 28 @@ -396,17 +395,16 @@ G_M45430_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, subs r5, r1, r0 cmp r5, 0 bge SHORT G_M45430_IG29
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0]
; gcr arg pop 0
- ;; size=64 bbWeight=0 PerfScore 0.00
+ ;; size=70 bbWeight=0 PerfScore 0.00
G_M45430_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz cmp r5, 11 blo SHORT G_M45430_IG30 @@ -458,17 +456,16 @@ G_M45430_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub r8, r1, r0 cmp r8, 0 bge SHORT G_M45430_IG32
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0]
; gcr arg pop 0
- ;; size=66 bbWeight=0 PerfScore 0.00
+ ;; size=72 bbWeight=0 PerfScore 0.00
G_M45430_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref, isz cmp r8, 0 beq SHORT G_M45430_IG33 @@ -568,17 +565,16 @@ G_M45430_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, subs r5, r1, r0 cmp r5, 0 bge SHORT G_M45430_IG37
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0]
; gcr arg pop 0
- ;; size=62 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
G_M45430_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz cmp r5, 11 blo SHORT G_M45430_IG38 @@ -640,17 +636,16 @@ G_M45430_IG41: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, subs r4, r0, r4 cmp r4, 0 bge SHORT G_M45430_IG42
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0]
; gcr arg pop 0
- ;; size=36 bbWeight=0 PerfScore 0.00
+ ;; size=42 bbWeight=0 PerfScore 0.00
G_M45430_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz cmp r4, 0 beq SHORT G_M45430_IG43 @@ -717,7 +712,7 @@ G_M45430_IG44: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=64 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1074, prolog size 28, PerfScore 239.60, instruction count 391, allocated bytes for code 1074 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
+Total bytes of code 1098, prolog size 28, PerfScore 239.60, instruction count 395, allocated bytes for code 1098 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -729,7 +724,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 537 (0x00219) Actual length = 1074 (0x000432)
+ Function Length : 549 (0x00225) Actual length = 1098 (0x00044a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+6 (+2.27%) : 295575.dasm - System.Runtime.CompilerServices.ConditionalWeakTable2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable2[System.Canon,System.Canon]):this (Tier0-FullOpts)

@@ -18,9 +18,8 @@ ;* V07 tmp4 [V07,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V08 tmp5 [V08,T00] ( 3, 24 ) ref -> r3 "arr expr" ; V09 cse0 [V09,T02] ( 4, 10 ) ref -> r1 "CSE - aggressive"
-; V10 cse1 [V10,T09] ( 3, 0 ) ref -> r1 "CSE - moderate" -; V11 rat0 [V11,T06] ( 3, 4.40) int -> r0 "Spilling to split statement for tree" -; V12 rat1 [V12,T05] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable"
+; V10 rat0 [V10,T06] ( 3, 4.40) int -> r0 "Spilling to split statement for tree" +; V11 rat1 [V11,T05] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable"
; TEMP_01 ref -> [r11-0x10] ; ; Lcl frame size = 8 @@ -160,20 +159,19 @@ G_M9941_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byre ;; size=10 bbWeight=0 PerfScore 0.00 G_M9941_IG11: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r5]
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0]
; gcr arg pop 0 b SHORT G_M9941_IG03
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 264, prolog size 44, PerfScore 113.00, instruction count 93, allocated bytes for code 264 (MethodHash=9205d92a) for method System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable`2[System.__Canon,System.__Canon]):this (Tier0-FullOpts)
+Total bytes of code 270, prolog size 44, PerfScore 113.00, instruction count 94, allocated bytes for code 270 (MethodHash=9205d92a) for method System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable`2[System.__Canon,System.__Canon]):this (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -185,7 +183,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 132 (0x00084) Actual length = 264 (0x000108)
+ Function Length : 135 (0x00087) Actual length = 270 (0x00010e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+4.35%) : 201968.dasm - JIT.HardwareIntrinsics.General.Vector128.VectorBooleanBinaryOpTestLessThanOrEqualAnySingle:RunBasicScenarioUnsafeRead():this (FullOpts)

@@ -12,7 +12,7 @@ ;* V01 loc0 [V01 ] ( 0, 0 ) ubyte -> zero-ref ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] double-align "non-inline candidate call" <System.Runtime.Intrinsics.Vector128`1[float]>
-; V04 tmp2 [V04,T22] ( 3, 0 ) ubyte -> r1 "Inline return value spill temp"
+; V04 tmp2 [V04,T21] ( 3, 0 ) ubyte -> r1 "Inline return value spill temp"
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] double-align "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[float]> ;* V06 tmp4 [V06,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V07 tmp5 [V07,T18] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" @@ -29,17 +29,17 @@ ;* V18 tmp16 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp17 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp18 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V21 tmp19 [V21,T23] ( 3, 0 ) ubyte -> r1 "Inline return value spill temp"
+; V21 tmp19 [V21,T22] ( 3, 0 ) ubyte -> r1 "Inline return value spill temp"
; V22 tmp20 [V22,T19] ( 9, 9 ) int -> r5 "Inline stloc first use temp" ; V23 tmp21 [V23 ] ( 2, 9 ) struct ( 8) [sp+0x08] do-not-enreg[XS] addr-exposed ld-addr-op double-align "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]> ; V24 tmp22 [V24 ] ( 2, 9 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed ld-addr-op double-align "Inlining Arg" <System.Runtime.Intrinsics.Vector64`1[float]>
-; V25 tmp23 [V25,T26] ( 2, 0 ) float -> f16 "impAppendStmt" -; V26 tmp24 [V26,T24] ( 3, 0 ) int -> r0
+; V25 tmp23 [V25,T25] ( 2, 0 ) float -> f16 "impAppendStmt" +; V26 tmp24 [V26,T23] ( 3, 0 ) int -> r0
;* V27 tmp25 [V27 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V28 tmp26 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp27 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp28 [V30 ] ( 0, 0 ) float -> zero-ref "Inline return value spill temp"
-; V31 tmp29 [V31,T25] ( 3, 0 ) int -> r0
+; V31 tmp29 [V31,T24] ( 3, 0 ) int -> r0
;* V32 tmp30 [V32 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V33 tmp31 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp32 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -54,19 +54,18 @@ ;* V43 tmp41 [V43 ] ( 0, 0 ) long -> zero-ref single-def "V05.[008..016)" ; V44 tmp42 [V44,T01] ( 3,1944 ) int -> r0 "Spilling address for field-by-field copy" ; V45 tmp43 [V45,T02] ( 3,1944 ) int -> r0 "Spilling address for field-by-field copy"
-; V46 cse0 [V46,T21] ( 6, 0 ) ref -> r1 multi-def "CSE - moderate" -; V47 rat0 [V47,T10] ( 2, 648 ) int -> r5 "field V40.lo (fldOffset=0x0)" P-INDEP -; V48 rat1 [V48,T11] ( 2, 648 ) int -> r6 "field V40.hi (fldOffset=0x4)" P-INDEP -; V49 rat2 [V49,T14] ( 2, 328.50) int -> r7 "field V41.lo (fldOffset=0x0)" P-INDEP -; V50 rat3 [V50,T15] ( 2, 328.50) int -> r8 "field V41.hi (fldOffset=0x4)" P-INDEP -; V51 rat4 [V51,T12] ( 2, 648 ) int -> r3 "field V42.lo (fldOffset=0x0)" P-INDEP -; V52 rat5 [V52,T13] ( 2, 648 ) int -> r1 "field V42.hi (fldOffset=0x4)" P-INDEP -; V53 rat6 [V53,T16] ( 2, 328.50) int -> r2 "field V43.lo (fldOffset=0x0)" P-INDEP -; V54 rat7 [V54,T17] ( 2, 328.50) int -> r0 "field V43.hi (fldOffset=0x4)" P-INDEP -; V55 rat8 [V55,T03] ( 3,1944 ) int -> r3 "ReplaceWithLclVar is creating a new local variable" -; V56 rat9 [V56,T04] ( 3,1944 ) int -> r0 "ReplaceWithLclVar is creating a new local variable" -; V57 rat10 [V57,T05] ( 3,1944 ) int -> r1 "ReplaceWithLclVar is creating a new local variable" -; V58 rat11 [V58,T06] ( 3,1944 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V46 rat0 [V46,T10] ( 2, 648 ) int -> r5 "field V40.lo (fldOffset=0x0)" P-INDEP +; V47 rat1 [V47,T11] ( 2, 648 ) int -> r6 "field V40.hi (fldOffset=0x4)" P-INDEP +; V48 rat2 [V48,T14] ( 2, 328.50) int -> r7 "field V41.lo (fldOffset=0x0)" P-INDEP +; V49 rat3 [V49,T15] ( 2, 328.50) int -> r8 "field V41.hi (fldOffset=0x4)" P-INDEP +; V50 rat4 [V50,T12] ( 2, 648 ) int -> r3 "field V42.lo (fldOffset=0x0)" P-INDEP +; V51 rat5 [V51,T13] ( 2, 648 ) int -> r1 "field V42.hi (fldOffset=0x4)" P-INDEP +; V52 rat6 [V52,T16] ( 2, 328.50) int -> r2 "field V43.lo (fldOffset=0x0)" P-INDEP +; V53 rat7 [V53,T17] ( 2, 328.50) int -> r0 "field V43.hi (fldOffset=0x4)" P-INDEP +; V54 rat8 [V54,T03] ( 3,1944 ) int -> r3 "ReplaceWithLclVar is creating a new local variable" +; V55 rat9 [V55,T04] ( 3,1944 ) int -> r0 "ReplaceWithLclVar is creating a new local variable" +; V56 rat10 [V56,T05] ( 3,1944 ) int -> r1 "ReplaceWithLclVar is creating a new local variable" +; V57 rat11 [V57,T06] ( 3,1944 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 32 @@ -144,17 +143,16 @@ G_M21877_IG06: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre uxtb r0, r0 cmp r0, 0 bne SHORT G_M21877_IG07
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0]
; gcr arg pop 0
- ;; size=28 bbWeight=0 PerfScore 0.00
+ ;; size=34 bbWeight=0 PerfScore 0.00
G_M21877_IG07: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz add r0, sp, 8 ; byrRegs +[r0] @@ -174,17 +172,16 @@ G_M21877_IG09: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre uxtb r0, r0 cmp r0, 0 bne SHORT G_M21877_IG10
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0]
; gcr arg pop 0
- ;; size=28 bbWeight=0 PerfScore 0.00
+ ;; size=34 bbWeight=0 PerfScore 0.00
G_M21877_IG10: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz add r0, sp, 0 ; byrRegs +[r0] @@ -228,7 +225,7 @@ G_M21877_IG16: ; bbWeight=0, epilog, nogc, extend pop {r4,r5,r6,r7,r8,r9,r11,pc} ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 16, PerfScore 13315.50, instruction count 105, allocated bytes for code 276 (MethodHash=3f44aa8a) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
+Total bytes of code 288, prolog size 16, PerfScore 13315.50, instruction count 107, allocated bytes for code 288 (MethodHash=3f44aa8a) for method JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
; ============================================================ Unwind Info: @@ -240,7 +237,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 138 (0x0008a) Actual length = 276 (0x000114)
+ Function Length : 144 (0x00090) Actual length = 288 (0x000120)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

libraries.pmi.linux.arm.checked.mch

-24 (-2.87%) : 4785.dasm - System.Buffers.SharedArrayPool`1[short]:Return(short[],ubyte):this (FullOpts)

@@ -10,31 +10,31 @@ ; ; V00 this [V00,T09] ( 8, 5 ) ref -> r5 this class-hnd single-def <System.Buffers.SharedArrayPool`1[short]> ; V01 arg1 [V01,T08] ( 8, 6 ) ref -> r4 class-hnd single-def <short[]>
-; V02 arg2 [V02,T12] ( 3, 2.50) ubyte -> r6 single-def
+; V02 arg2 [V02,T11] ( 3, 2.50) ubyte -> r6 single-def
; V03 loc0 [V03,T10] ( 8, 5 ) int -> r8 ;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V05 loc2 [V05,T20] ( 4, 2.50) ubyte -> [sp+0x2C] -; V06 loc3 [V06,T23] ( 3, 2 ) ubyte -> [sp+0x28] -; V07 loc4 [V07,T16] ( 4, 3 ) ref -> r9 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource> -; V08 loc5 [V08,T21] ( 4, 2 ) byref -> r2 single-def -; V09 loc6 [V09,T18] ( 3, 3 ) ref -> r6 class-hnd single-def <System.Array>
+; V05 loc2 [V05,T19] ( 4, 2.50) ubyte -> r10 +; V06 loc3 [V06,T22] ( 3, 2 ) ubyte -> [sp+0x2C] +; V07 loc4 [V07,T15] ( 4, 3 ) ref -> r9 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource> +; V08 loc5 [V08,T20] ( 4, 2 ) byref -> r2 single-def +; V09 loc6 [V09,T17] ( 3, 3 ) ref -> r6 class-hnd single-def <System.Array>
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Buffers.SharedArrayPoolPartitions> ; V11 OutArgs [V11 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T15] ( 2, 4 ) ref -> r9 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]> -; V13 tmp2 [V13,T14] ( 5, 4 ) ref -> r9 -; V14 tmp3 [V14,T25] ( 2, 2 ) int -> r6 "impAppendStmt" -; V15 tmp4 [V15,T26] ( 2, 2 ) int -> [sp+0x24] spill-single-def "impAppendStmt" -; V16 tmp5 [V16,T27] ( 2, 2 ) int -> r6 "impAppendStmt" -; V17 tmp6 [V17,T28] ( 2, 2 ) int -> r7 "impAppendStmt"
+; V12 tmp1 [V12,T14] ( 2, 4 ) ref -> r9 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]> +; V13 tmp2 [V13,T13] ( 5, 4 ) ref -> r9 +; V14 tmp3 [V14,T24] ( 2, 2 ) int -> r6 "impAppendStmt" +; V15 tmp4 [V15,T25] ( 2, 2 ) int -> [sp+0x28] spill-single-def "impAppendStmt" +; V16 tmp5 [V16,T26] ( 2, 2 ) int -> r6 "impAppendStmt" +; V17 tmp6 [V17,T27] ( 2, 2 ) int -> r7 "impAppendStmt"
;* V18 tmp7 [V18 ] ( 0, 0 ) ref -> zero-ref single-def ;* V19 tmp8 [V19 ] ( 0, 0 ) int -> zero-ref ;* V20 tmp9 [V20 ] ( 0, 0 ) int -> zero-ref
-; V21 tmp10 [V21,T36] ( 2, 1 ) int -> r3
+; V21 tmp10 [V21,T35] ( 2, 1 ) int -> r3
;* V22 tmp11 [V22 ] ( 0, 0 ) ref -> zero-ref single-def ;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref ;* V24 tmp13 [V24 ] ( 0, 0 ) int -> zero-ref ;* V25 tmp14 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp15 [V26,T31] ( 3, 1.50) int -> r0
+; V26 tmp15 [V26,T30] ( 3, 1.50) int -> r0
;* V27 tmp16 [V27 ] ( 0, 0 ) ref -> zero-ref single-def ;* V28 tmp17 [V28 ] ( 0, 0 ) int -> zero-ref ;* V29 tmp18 [V29 ] ( 0, 0 ) int -> zero-ref @@ -45,39 +45,38 @@ ;* V34 tmp23 [V34 ] ( 0, 0 ) int -> zero-ref ;* V35 tmp24 [V35 ] ( 0, 0 ) int -> zero-ref ;* V36 tmp25 [V36 ] ( 0, 0 ) int -> zero-ref
-; V37 tmp26 [V37,T32] ( 3, 1.50) int -> r1 -; V38 tmp27 [V38,T29] ( 2, 2 ) int -> r6 "impAppendStmt"
+; V37 tmp26 [V37,T31] ( 3, 1.50) int -> r1 +; V38 tmp27 [V38,T28] ( 2, 2 ) int -> r6 "impAppendStmt"
;* V39 tmp28 [V39 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Buffers.SharedArrayPoolThreadLocalArray>
-; V40 tmp29 [V40,T24] ( 2, 2 ) ref -> r3 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions> -; V41 tmp30 [V41,T22] ( 4, 2 ) ref -> r3 -; V42 tmp31 [V42,T39] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V40 tmp29 [V40,T23] ( 2, 2 ) ref -> r3 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions> +; V41 tmp30 [V41,T21] ( 4, 2 ) ref -> r3 +; V42 tmp31 [V42,T38] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V43 tmp32 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V44 tmp33 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V45 tmp34 [V45,T33] ( 3, 1.50) int -> [sp+0x20] spill-single-def "Inline stloc first use temp" -; V46 tmp35 [V46,T34] ( 3, 1.50) ubyte -> r6 "Inline return value spill temp" -; V47 tmp36 [V47,T11] ( 3, 4.50) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V48 tmp37 [V48,T01] ( 7, 22 ) int -> [sp+0x1C] "Inline stloc first use temp" -; V49 tmp38 [V49,T05] ( 4, 12 ) int -> [sp+0x18] "Inline stloc first use temp" -; V50 tmp39 [V50,T02] ( 2, 16 ) int -> r10 "dup spill"
+; V45 tmp34 [V45,T32] ( 3, 1.50) int -> [sp+0x24] spill-single-def "Inline stloc first use temp" +; V46 tmp35 [V46,T33] ( 3, 1.50) ubyte -> r6 "Inline return value spill temp" +; V47 tmp36 [V47,T02] ( 6, 16.50) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V48 tmp37 [V48,T01] ( 7, 22 ) int -> [sp+0x20] "Inline stloc first use temp" +; V49 tmp38 [V49,T05] ( 4, 12 ) int -> [sp+0x1C] "Inline stloc first use temp" +; V50 tmp39 [V50,T03] ( 2, 16 ) int -> r3 "dup spill"
;* V51 tmp40 [V51 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V52 tmp41 [V52,T40] ( 3, 0 ) int -> [sp+0x14] "Inline return value spill temp" -; V53 tmp42 [V53,T17] ( 4, 3 ) int -> r3 "dup spill"
+; V52 tmp41 [V52,T39] ( 3, 0 ) int -> [sp+0x18] "Inline return value spill temp" +; V53 tmp42 [V53,T16] ( 4, 3 ) int -> r3 "dup spill"
;* V54 tmp43 [V54 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V55 tmp44 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V56 tmp45 [V56,T07] ( 3, 10 ) ubyte -> [sp+0x10] "Inline stloc first use temp" -; V57 tmp46 [V57,T00] ( 8, 56 ) ref -> [sp+0x08] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V56 tmp45 [V56,T07] ( 3, 10 ) ubyte -> [sp+0x14] "Inline stloc first use temp" +; V57 tmp46 [V57,T00] ( 8, 56 ) ref -> [sp+0x0C] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
; V58 tmp47 [V58,T06] ( 3, 10 ) ref -> r1 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V59 tmp48 [V59,T03] ( 5, 14 ) int -> r2 "Inline stloc first use temp" -; V60 tmp49 [V60,T30] ( 2, 2 ) int -> r0 "Inlining Arg" -;* V61 tmp50 [V61,T37] ( 0, 0 ) ref -> zero-ref single-def "field V39.Array (fldOffset=0x0)" P-INDEP -;* V62 tmp51 [V62,T38] ( 0, 0 ) int -> zero-ref "field V39.MillisecondsTimeStamp (fldOffset=0x4)" P-INDEP -; V63 tmp52 [V63,T19] ( 3, 3 ) ref -> r0 single-def "arr expr" -; V64 tmp53 [V64,T43] ( 2, 0 ) int -> r1 "argument with side effect" -; V65 tmp54 [V65,T41] ( 2, 0 ) ref -> r5 single-def "argument with side effect" -; V66 tmp55 [V66,T42] ( 2, 0 ) ref -> r2 single-def "argument with side effect" -; V67 cse0 [V67,T35] ( 3, 1.50) int -> r0 "CSE - conservative" -; V68 cse1 [V68,T04] ( 5, 12 ) int -> [sp+0x0C] spill-single-def "CSE - aggressive" -; V69 cse2 [V69,T13] ( 6, 4 ) int -> r7 "CSE - moderate"
+; V59 tmp48 [V59,T04] ( 5, 14 ) int -> [sp+0x10] spill-single-def "Inline stloc first use temp" +; V60 tmp49 [V60,T29] ( 2, 2 ) int -> r0 "Inlining Arg" +;* V61 tmp50 [V61,T36] ( 0, 0 ) ref -> zero-ref single-def "field V39.Array (fldOffset=0x0)" P-INDEP +;* V62 tmp51 [V62,T37] ( 0, 0 ) int -> zero-ref "field V39.MillisecondsTimeStamp (fldOffset=0x4)" P-INDEP +; V63 tmp52 [V63,T18] ( 3, 3 ) ref -> r0 single-def "arr expr" +; V64 tmp53 [V64,T42] ( 2, 0 ) int -> r1 "argument with side effect" +; V65 tmp54 [V65,T40] ( 2, 0 ) ref -> r5 single-def "argument with side effect" +; V66 tmp55 [V66,T41] ( 2, 0 ) ref -> r2 single-def "argument with side effect" +; V67 cse0 [V67,T34] ( 3, 1.50) int -> r0 "CSE - conservative" +; V68 cse1 [V68,T12] ( 6, 4 ) int -> r7 "CSE - moderate"
; ; Lcl frame size = 52 @@ -133,7 +132,7 @@ G_M62415_IG04: ; bbWeight=1, gcrefRegs=0230 {r4 r5 r9}, byrefRegs=0000 {} ; gcrRegs -[r0] mov r10, 0 movs r3, 1
- str r3, [sp+0x28] // [V06 loc3]
+ str r3, [sp+0x2C] // [V06 loc3]
ldr r0, [r9+0x04] cmp r0, r8 bls G_M62415_IG22 @@ -157,7 +156,7 @@ G_M62415_IG06: ; bbWeight=0.50, gcrefRegs=0230 {r4 r5 r9}, byrefRegs=0000 and r0, r8, 31 movs r2, 16 lsls r2, r0
- str r2, [sp+0x20] // [V45 tmp34]
+ str r2, [sp+0x24] // [V45 tmp34]
cmp r2, 0 bge SHORT G_M62415_IG07 movs r0, 0 @@ -172,7 +171,7 @@ G_M62415_IG08: ; bbWeight=0.50, gcrefRegs=0230 {r4 r5 r9}, byrefRegs=0000 ldr r1, [r1] blx r1 // <unknown method> ; gcr arg pop 0
- ldr r1, [sp+0x20] // [V45 tmp34]
+ ldr r1, [sp+0x24] // [V45 tmp34]
cmp r6, r1 bne G_M62415_IG31 lsl r1, r8, 3 @@ -247,12 +246,12 @@ G_M62415_IG10: ; bbWeight=0, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 blx r3 // System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int ; gcr arg pop 0 mov r3, r0
- str r3, [sp+0x14] // [V52 tmp41]
+ str r3, [sp+0x18] // [V52 tmp41]
b SHORT G_M62415_IG12 ;; size=18 bbWeight=0 PerfScore 0.00 G_M62415_IG11: ; bbWeight=0, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, byref asrs r3, r3, 16
- str r3, [sp+0x14] // [V52 tmp41]
+ str r3, [sp+0x18] // [V52 tmp41]
;; size=4 bbWeight=0 PerfScore 0.00 G_M62415_IG12: ; bbWeight=0, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz movw r0, 0xd1ff @@ -265,62 +264,62 @@ G_M62415_IG12: ; bbWeight=0, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 movw r1, 0xd1ff movt r1, 0xd1ff ldr r1, [r1]
- ldr r0, [sp+0x14] // [V52 tmp41]
+ ldr r0, [sp+0x18] // [V52 tmp41]
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_UMOD ; gcr arg pop 0 mov r3, r0 movs r2, 0
- str r2, [sp+0x18] // [V49 tmp38] - ldr r1, [r9+0x04] - str r1, [sp+0x0C] // [V68 cse1] - cmp r1, 0 - str r10, [sp+0x2C] // [V05 loc2]
+ str r2, [sp+0x1C] // [V49 tmp38] + ldr r0, [r9+0x04] + cmp r0, 0
ble SHORT G_M62415_IG19
- ;; size=64 bbWeight=0 PerfScore 0.00
+ ;; size=58 bbWeight=0 PerfScore 0.00
G_M62415_IG13: ; bbWeight=4, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz
- cmp r3, r1
+ ldr r0, [r9+0x04] + cmp r3, r0
bhs G_M62415_IG29 add r0, r9, 8 ; byrRegs +[r0]
- str r3, [sp+0x1C] // [V48 tmp37] - lsl lr, r3, 2 - ldr lr, [r0+lr] - ; gcrRegs +[lr] - str lr, [sp+0x08] // [V57 tmp46] - ; GC ptr vars +{V57} - ldrsb r0, [lr] - ; byrRegs -[r0] - mov r12, 0 - str r12, [sp+0x10] // [V56 tmp45] - mov r0, lr - ; gcrRegs +[r0] - movw r10, 0xd1ff - movt r10, 0xd1ff - blx r10 // <unknown method> - ; gcrRegs -[r0 lr] - ; gcr arg pop 0 - ldr r10, [sp+0x08] // [V57 tmp46] - ; gcrRegs +[r10] - ldr r1, [r10+0x04]
+ str r3, [sp+0x20] // [V48 tmp37] + lsls r1, r3, 2 + ldr r1, [r0+r1]
; gcrRegs +[r1]
- ldr r2, [r10+0x0C]
+ str r1, [sp+0x0C] // [V57 tmp46] + ; GC ptr vars +{V57} + ldrsb r0, [r1] + ; byrRegs -[r0] + mov lr, 0 + str lr, [sp+0x14] // [V56 tmp45] + mov r0, r1 + ; gcrRegs +[r0] + movw r12, 0xd1ff + movt r12, 0xd1ff + blx r12 // <unknown method> + ; gcrRegs -[r0-r1] + ; gcr arg pop 0 + ldr r2, [sp+0x0C] // [V57 tmp46] + ; gcrRegs +[r2] + ldr r1, [r2+0x04] + ; gcrRegs +[r1] + ldr r3, [r2+0x0C] + str r3, [sp+0x10] // [V59 tmp48]
ldr r0, [r1+0x04]
- cmp r0, r2
+ cmp r0, r3
bls SHORT G_M62415_IG16
- ;; size=66 bbWeight=4 PerfScore 80.00 -G_M62415_IG14: ; bbWeight=2, gcrefRegs=0672 {r1 r4 r5 r6 r9 r10}, byrefRegs=0000 {}, byref, isz - cmp r2, 0
+ ;; size=60 bbWeight=4 PerfScore 88.00 +G_M62415_IG14: ; bbWeight=2, gcrefRegs=0276 {r1 r2 r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz + cmp r3, 0
bne SHORT G_M62415_IG15 movs r0, 0
- str r0, [r10+0x10] - ;; size=10 bbWeight=2 PerfScore 8.00 -G_M62415_IG15: ; bbWeight=2, gcrefRegs=0672 {r1 r4 r5 r6 r9 r10}, byrefRegs=0000 {}, byref
+ str r0, [r2+0x10] + ;; size=8 bbWeight=2 PerfScore 8.00 +G_M62415_IG15: ; bbWeight=2, gcrefRegs=0276 {r1 r2 r4 r5 r6 r9}, byrefRegs=0000 {}, byref
adds r1, 8 ; gcrRegs -[r1] ; byrRegs +[r1]
- lsls r0, r2, 2
+ lsls r0, r3, 2
...

-2 (-0.83%) : 4792.dasm - System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (FullOpts)

@@ -10,32 +10,31 @@ ; ; V00 this [V00,T12] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Buffers.SharedArrayPoolPartitions> ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Array>
-; V02 loc1 [V02,T13] ( 3, 5 ) ref -> r4 class-hnd exact single-def <<unknown class>>
+; V02 loc1 [V02,T02] ( 6, 17 ) ref -> r4 class-hnd exact single-def <<unknown class>>
; V03 loc2 [V03,T01] ( 7, 22 ) int -> r5 ; V04 loc3 [V04,T04] ( 4, 12 ) int -> r6 ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Array>
-; V07 tmp2 [V07,T02] ( 2, 16 ) int -> r5 "dup spill"
+; V07 tmp2 [V07,T03] ( 2, 16 ) int -> r5 "dup spill"
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V09 tmp4 [V09,T15] ( 3, 0 ) int -> r6 "Inline return value spill temp"
+; V09 tmp4 [V09,T14] ( 3, 0 ) int -> r6 "Inline return value spill temp"
; V10 tmp5 [V10,T09] ( 4, 6 ) int -> r5 "dup spill" ;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
-; V13 tmp8 [V13,T06] ( 4, 10.50) ref -> r9 class-hnd "Inline stloc first use temp" <System.Array> -; V14 tmp9 [V14,T00] ( 7, 52 ) ref -> r8 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V13 tmp8 [V13,T06] ( 4, 10.50) ref -> r8 class-hnd "Inline stloc first use temp" <System.Array> +; V14 tmp9 [V14,T00] ( 7, 52 ) ref -> r7 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
; V15 tmp10 [V15,T07] ( 3, 10 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>> ; V16 tmp11 [V16,T05] ( 4, 12 ) int -> r3 "Inline stloc first use temp"
-; V17 tmp12 [V17,T16] ( 2, 0 ) int -> r1 "argument with side effect" -; V18 cse0 [V18,T14] ( 3, 3 ) int -> r0 "CSE - moderate" -; V19 cse1 [V19,T03] ( 5, 12 ) int -> r7 "CSE - aggressive" -; V20 cse2 [V20,T08] ( 2, 8 ) int -> r2 "CSE - aggressive" -; V21 cse3 [V21,T10] ( 3, 6 ) byref -> r0 "CSE - aggressive" -; V22 cse4 [V22,T11] ( 3, 6 ) int -> r2 "CSE - aggressive"
+; V17 tmp12 [V17,T15] ( 2, 0 ) int -> r1 "argument with side effect" +; V18 cse0 [V18,T13] ( 3, 3 ) int -> r0 "CSE - moderate" +; V19 cse1 [V19,T08] ( 2, 8 ) int -> r2 "CSE - aggressive" +; V20 cse2 [V20,T10] ( 3, 6 ) byref -> r0 "CSE - aggressive" +; V21 cse3 [V21,T11] ( 3, 6 ) int -> r2 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M10734_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r9,r11,lr}
+ push {r3,r4,r5,r6,r7,r8,r11,lr}
add r11, sp, 24 ;; size=8 bbWeight=1 PerfScore 2.00 G_M10734_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz @@ -87,89 +86,92 @@ G_M10734_IG05: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ; gcr arg pop 0 mov r5, r0 movs r6, 0
- ldr r7, [r4+0x04] - cmp r7, 0
+ ldr r0, [r4+0x04] + cmp r0, 0
ble SHORT G_M10734_IG11 ;; size=54 bbWeight=0 PerfScore 0.00 G_M10734_IG06: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r5, r7
+ ldr r0, [r4+0x04] + cmp r5, r0
bhs SHORT G_M10734_IG15 add r0, r4, 8 ; byrRegs +[r0] lsls r3, r5, 2
- ldr r8, [r0+r3] - ; gcrRegs +[r8] - ldrsb r0, [r8]
+ ldr r7, [r0+r3] + ; gcrRegs +[r7] + ldrsb r0, [r7]
; byrRegs -[r0]
- mov r9, 0 - mov r0, r8
+ mov r8, 0 + mov r0, r7
; gcrRegs +[r0] movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // <unknown method>
- ; gcrRegs -[r0] +[r9]
+ ; gcrRegs -[r0] +[r8]
; gcr arg pop 0
- ldr r0, [r8+0x04]
+ ldr r0, [r7+0x04]
; gcrRegs +[r0]
- ldr r3, [r8+0x0C]
+ ldr r3, [r7+0x0C]
subs r3, r3, 1 ldr r2, [r0+0x04] cmp r2, r3 bls SHORT G_M10734_IG08
- ;; size=50 bbWeight=4 PerfScore 68.00 -G_M10734_IG07: ; bbWeight=2, gcrefRegs=0111 {r0 r4 r8}, byrefRegs=0000 {}, byref - ; gcrRegs -[r9]
+ ;; size=46 bbWeight=4 PerfScore 72.00 +G_M10734_IG07: ; bbWeight=2, gcrefRegs=0091 {r0 r4 r7}, byrefRegs=0000 {}, byref + ; gcrRegs -[r8]
adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0] lsls r2, r3, 2
- ldr r9, [r0+r2] - ; gcrRegs +[r9]
+ ldr r8, [r0+r2] + ; gcrRegs +[r8]
movs r1, 0 str r1, [r0+r2]
- str r3, [r8+0x0C] - ;; size=16 bbWeight=2 PerfScore 12.00 -G_M10734_IG08: ; bbWeight=4, gcrefRegs=0310 {r4 r8 r9}, byrefRegs=0000 {}, byref, isz
+ str r3, [r7+0x0C] + ;; size=14 bbWeight=2 PerfScore 12.00 +G_M10734_IG08: ; bbWeight=4, gcrefRegs=0190 {r4 r7 r8}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
- mov r0, r8
+ mov r0, r7
; gcrRegs +[r0] movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // <unknown method>
- ; gcrRegs -[r0 r8]
+ ; gcrRegs -[r0 r7]
; gcr arg pop 0
- cmp r9, 0
+ cmp r8, 0
bne SHORT G_M10734_IG13 adds r5, r5, 1
- cmp r7, r5
+ ldr r0, [r4+0x04] + cmp r0, r5
bne SHORT G_M10734_IG10
- ;; size=24 bbWeight=4 PerfScore 36.00
+ ;; size=26 bbWeight=4 PerfScore 40.00
G_M10734_IG09: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r9]
+ ; gcrRegs -[r8]
movs r5, 0 ;; size=2 bbWeight=2 PerfScore 2.00 G_M10734_IG10: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz adds r6, r6, 1
- cmp r7, r6
+ ldr r0, [r4+0x04] + cmp r0, r6
bgt SHORT G_M10734_IG06
- ;; size=6 bbWeight=4 PerfScore 12.00
+ ;; size=8 bbWeight=4 PerfScore 16.00
G_M10734_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[r4] movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M10734_IG12: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r6,r7,r8,r9,r11,pc}
+ pop {r3,r4,r5,r6,r7,r8,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M10734_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[r9] - mov r0, r9
+G_M10734_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[r8] + mov r0, r8
; gcrRegs +[r0] ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M10734_IG14: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r6,r7,r8,r9,r11,pc}
+ pop {r3,r4,r5,r6,r7,r8,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50 G_M10734_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0 r9]
+ ; gcrRegs -[r0 r8]
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL @@ -177,7 +179,7 @@ G_M10734_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 242, prolog size 8, PerfScore 147.00, instruction count 84, allocated bytes for code 242 (MethodHash=16ebd611) for method System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (FullOpts)
+Total bytes of code 240, prolog size 8, PerfScore 159.00, instruction count 87, allocated bytes for code 240 (MethodHash=16ebd611) for method System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (FullOpts)
; ============================================================ Unwind Info: @@ -189,7 +191,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 121 (0x00079) Actual length = 242 (0x0000f2)
+ Function Length : 120 (0x00078) Actual length = 240 (0x0000f0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -201,7 +203,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- AB F0 pop {r4,r5,r6,r7,r8,r9,r11,lr} ; opsize 32
+ A9 F8 pop {r3,r4,r5,r6,r7,r8,r11,lr} ; opsize 32
FF end FF end

+2 (+0.75%) : 4791.dasm - System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):ubyte:this (FullOpts)

@@ -10,29 +10,28 @@ ; ; V00 this [V00,T10] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Buffers.SharedArrayPoolPartitions> ; V01 arg1 [V01,T09] ( 3, 4 ) ref -> r4 class-hnd single-def <System.Array>
-; V02 loc0 [V02,T11] ( 3, 5 ) ref -> r5 class-hnd exact single-def <<unknown class>>
+; V02 loc0 [V02,T02] ( 6, 17 ) ref -> r5 class-hnd exact single-def <<unknown class>>
; V03 loc1 [V03,T01] ( 7, 22 ) int -> r6 ; V04 loc2 [V04,T05] ( 4, 12 ) int -> r7 ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T02] ( 2, 16 ) int -> r6 "dup spill"
+; V06 tmp1 [V06,T03] ( 2, 16 ) int -> r6 "dup spill"
;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V08 tmp3 [V08,T13] ( 3, 0 ) int -> r7 "Inline return value spill temp"
+; V08 tmp3 [V08,T12] ( 3, 0 ) int -> r7 "Inline return value spill temp"
; V09 tmp4 [V09,T08] ( 4, 6 ) int -> r6 "dup spill" ;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V11 tmp6 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V12 tmp7 [V12,T07] ( 3, 10 ) ubyte -> r10 "Inline stloc first use temp" -; V13 tmp8 [V13,T00] ( 8, 56 ) ref -> r9 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V12 tmp7 [V12,T07] ( 3, 10 ) ubyte -> r9 "Inline stloc first use temp" +; V13 tmp8 [V13,T00] ( 8, 56 ) ref -> r8 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
; V14 tmp9 [V14,T06] ( 3, 10 ) ref -> r1 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V15 tmp10 [V15,T03] ( 5, 14 ) int -> r2 "Inline stloc first use temp" -; V16 tmp11 [V16,T14] ( 2, 0 ) int -> r1 "argument with side effect" -; V17 cse0 [V17,T12] ( 3, 3 ) int -> r0 "CSE - moderate" -; V18 cse1 [V18,T04] ( 5, 12 ) int -> r8 "CSE - aggressive"
+; V15 tmp10 [V15,T04] ( 5, 14 ) int -> r2 "Inline stloc first use temp" +; V16 tmp11 [V16,T13] ( 2, 0 ) int -> r1 "argument with side effect" +; V17 cse0 [V17,T11] ( 3, 3 ) int -> r0 "CSE - moderate"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M28192_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,r6,r7,r8,r9,r10,r11,lr} - add r11, sp, 32
+ push {r4,r5,r6,r7,r8,r9,r11,lr} + add r11, sp, 24
mov r4, r1 ; gcrRegs +[r4] ;; size=10 bbWeight=1 PerfScore 3.00 @@ -85,42 +84,43 @@ G_M28192_IG05: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ; gcr arg pop 0 mov r6, r0 movs r7, 0
- ldr r8, [r5+0x04] - cmp r8, 0
+ ldr r0, [r5+0x04] + cmp r0, 0
ble SHORT G_M28192_IG12
- ;; size=58 bbWeight=0 PerfScore 0.00
+ ;; size=54 bbWeight=0 PerfScore 0.00
G_M28192_IG06: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- cmp r6, r8
+ ldr r0, [r5+0x04] + cmp r6, r0
bhs SHORT G_M28192_IG16 add r0, r5, 8 ; byrRegs +[r0] lsls r3, r6, 2
- ldr r9, [r0+r3] - ; gcrRegs +[r9] - ldrsb r0, [r9]
+ ldr r8, [r0+r3] + ; gcrRegs +[r8] + ldrsb r0, [r8]
; byrRegs -[r0]
- mov r10, 0 - mov r0, r9
+ mov r9, 0 + mov r0, r8
; gcrRegs +[r0] movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // <unknown method> ; gcrRegs -[r0] ; gcr arg pop 0
- ldr r1, [r9+0x04]
+ ldr r1, [r8+0x04]
; gcrRegs +[r1]
- ldr r2, [r9+0x0C]
+ ldr r2, [r8+0x0C]
ldr r0, [r1+0x04] cmp r0, r2 bls SHORT G_M28192_IG09
- ;; size=48 bbWeight=4 PerfScore 64.00 -G_M28192_IG07: ; bbWeight=2, gcrefRegs=0232 {r1 r4 r5 r9}, byrefRegs=0000 {}, byref, isz
+ ;; size=50 bbWeight=4 PerfScore 68.00 +G_M28192_IG07: ; bbWeight=2, gcrefRegs=0132 {r1 r4 r5 r8}, byrefRegs=0000 {}, byref, isz
cmp r2, 0 bne SHORT G_M28192_IG08 movs r0, 0
- str r0, [r9+0x10]
+ str r0, [r8+0x10]
;; size=10 bbWeight=2 PerfScore 8.00
-G_M28192_IG08: ; bbWeight=2, gcrefRegs=0232 {r1 r4 r5 r9}, byrefRegs=0000 {}, byref
+G_M28192_IG08: ; bbWeight=2, gcrefRegs=0132 {r1 r4 r5 r8}, byrefRegs=0000 {}, byref
adds r1, 8 ; gcrRegs -[r1] ; byrRegs +[r1] @@ -136,43 +136,45 @@ G_M28192_IG08: ; bbWeight=2, gcrefRegs=0232 {r1 r4 r5 r9}, byrefRegs=0000 ; gcrRegs -[r1] ; byrRegs -[r0] adds r0, r2, 1
- str r0, [r9+0x0C] - mov r10, 1
+ str r0, [r8+0x0C] + mov r9, 1
;; size=28 bbWeight=2 PerfScore 20.00
-G_M28192_IG09: ; bbWeight=4, gcrefRegs=0230 {r4 r5 r9}, byrefRegs=0000 {}, byref, isz - mov r0, r9
+G_M28192_IG09: ; bbWeight=4, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz + mov r0, r8
; gcrRegs +[r0] movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // <unknown method>
- ; gcrRegs -[r0 r9]
+ ; gcrRegs -[r0 r8]
; gcr arg pop 0
- cmp r10, 0
+ cmp r9, 0
bne SHORT G_M28192_IG14 adds r6, r6, 1
- cmp r8, r6
+ ldr r0, [r5+0x04] + cmp r0, r6
bne SHORT G_M28192_IG11
- ;; size=24 bbWeight=4 PerfScore 36.00
+ ;; size=26 bbWeight=4 PerfScore 40.00
G_M28192_IG10: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref movs r6, 0 ;; size=2 bbWeight=2 PerfScore 2.00 G_M28192_IG11: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz adds r7, r7, 1
- cmp r8, r7
+ ldr r0, [r5+0x04] + cmp r0, r7
bgt SHORT G_M28192_IG06
- ;; size=6 bbWeight=4 PerfScore 12.00
+ ;; size=8 bbWeight=4 PerfScore 16.00
G_M28192_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[r4-r5] movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M28192_IG13: ; bbWeight=0.50, epilog, nogc, extend
- pop {r3,r4,r5,r6,r7,r8,r9,r10,r11,pc}
+ pop {r4,r5,r6,r7,r8,r9,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50 G_M28192_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M28192_IG15: ; bbWeight=0.50, epilog, nogc, extend
- pop {r3,r4,r5,r6,r7,r8,r9,r10,r11,pc}
+ pop {r4,r5,r6,r7,r8,r9,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50 G_M28192_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref movw r3, 0xd1ff @@ -182,7 +184,7 @@ G_M28192_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 268, prolog size 10, PerfScore 160.00, instruction count 92, allocated bytes for code 268 (MethodHash=5f5691df) for method System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):ubyte:this (FullOpts)
+Total bytes of code 270, prolog size 10, PerfScore 172.00, instruction count 95, allocated bytes for code 270 (MethodHash=5f5691df) for method System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -194,7 +196,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 134 (0x00086) Actual length = 268 (0x00010c)
+ Function Length : 135 (0x00087) Actual length = 270 (0x00010e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -206,7 +208,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- AF F8 pop {r3,r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32
+ AB F0 pop {r4,r5,r6,r7,r8,r9,r11,lr} ; opsize 32
FF end FF end

+24 (+2.23%) : 161632.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)

@@ -20,56 +20,56 @@ ; V09 loc6 [V09,T03] ( 7, 17 ) int -> r9 ; V10 loc7 [V10,T08] ( 3, 12 ) ref -> r2 class-hnd <System.Xml.XmlDictionaryString> ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T25] ( 3, 0 ) ref -> r4 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> -; V13 tmp2 [V13,T26] ( 3, 0 ) ref -> r10 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V12 tmp1 [V12,T24] ( 3, 0 ) ref -> r4 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> +; V13 tmp2 [V13,T25] ( 3, 0 ) ref -> r10 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V16 tmp5 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V17 tmp6 [V17,T21] ( 4, 0 ) int -> r0 "Inlining Arg"
+; V17 tmp6 [V17,T20] ( 4, 0 ) int -> r0 "Inlining Arg"
;* V18 tmp7 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V19 tmp8 [V19,T27] ( 3, 0 ) int -> r5 "Inlining Arg" -; V20 tmp9 [V20,T31] ( 2, 0 ) byref -> r4 "Inlining Arg"
+; V19 tmp8 [V19,T26] ( 3, 0 ) int -> r5 "Inlining Arg" +; V20 tmp9 [V20,T30] ( 2, 0 ) byref -> r4 "Inlining Arg"
;* V21 tmp10 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp11 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V23 tmp12 [V23,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V23 tmp12 [V23,T40] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V24 tmp13 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V25 tmp14 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V26 tmp15 [V26,T32] ( 2, 0 ) byref -> r1 "Inlining Arg"
+; V26 tmp15 [V26,T31] ( 2, 0 ) byref -> r1 "Inlining Arg"
;* V27 tmp16 [V27 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V28 tmp17 [V28,T22] ( 4, 0 ) int -> r0 "Inlining Arg"
+; V28 tmp17 [V28,T21] ( 4, 0 ) int -> r0 "Inlining Arg"
;* V29 tmp18 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V30 tmp19 [V30,T28] ( 3, 0 ) int -> r8 "Inlining Arg" -; V31 tmp20 [V31,T33] ( 2, 0 ) byref -> r7 "Inlining Arg"
+; V30 tmp19 [V30,T27] ( 3, 0 ) int -> r8 "Inlining Arg" +; V31 tmp20 [V31,T32] ( 2, 0 ) byref -> r7 "Inlining Arg"
;* V32 tmp21 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp22 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V34 tmp23 [V34,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V34 tmp23 [V34,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V35 tmp24 [V35 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V36 tmp25 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V37 tmp26 [V37,T34] ( 2, 0 ) byref -> r1 "Inlining Arg"
+; V37 tmp26 [V37,T33] ( 2, 0 ) byref -> r1 "Inlining Arg"
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.XmlBaseReader+Namespace> ;* V40 tmp29 [V40 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V41 tmp30 [V41,T23] ( 4, 0 ) int -> r0 "Inlining Arg"
+; V41 tmp30 [V41,T22] ( 4, 0 ) int -> r0 "Inlining Arg"
;* V42 tmp31 [V42 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V43 tmp32 [V43,T29] ( 3, 0 ) int -> r5 "Inlining Arg" -; V44 tmp33 [V44,T35] ( 2, 0 ) byref -> r4 "Inlining Arg"
+; V43 tmp32 [V43,T28] ( 3, 0 ) int -> r5 "Inlining Arg" +; V44 tmp33 [V44,T34] ( 2, 0 ) byref -> r4 "Inlining Arg"
;* V45 tmp34 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V46 tmp35 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V47 tmp36 [V47,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V47 tmp36 [V47,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V48 tmp37 [V48 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V49 tmp38 [V49 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V50 tmp39 [V50,T36] ( 2, 0 ) byref -> r1 "Inlining Arg"
+; V50 tmp39 [V50,T35] ( 2, 0 ) byref -> r1 "Inlining Arg"
;* V51 tmp40 [V51 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V52 tmp41 [V52,T24] ( 4, 0 ) int -> r4 "Inlining Arg"
+; V52 tmp41 [V52,T23] ( 4, 0 ) int -> r4 "Inlining Arg"
;* V53 tmp42 [V53 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V54 tmp43 [V54,T30] ( 3, 0 ) int -> r4 "Inlining Arg" -; V55 tmp44 [V55,T37] ( 2, 0 ) byref -> r5 "Inlining Arg"
+; V54 tmp43 [V54,T29] ( 3, 0 ) int -> r4 "Inlining Arg" +; V55 tmp44 [V55,T36] ( 2, 0 ) byref -> r5 "Inlining Arg"
;* V56 tmp45 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp46 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V58 tmp47 [V58,T44] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V58 tmp47 [V58,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V59 tmp48 [V59 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V60 tmp49 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V61 tmp50 [V61,T38] ( 2, 0 ) byref -> r1 "Inlining Arg"
+; V61 tmp50 [V61,T37] ( 2, 0 ) byref -> r1 "Inlining Arg"
; V62 tmp51 [V62,T12] ( 3, 8 ) ubyte -> r6 "Inline return value spill temp" ; V63 tmp52 [V63,T06] ( 4, 12 ) int -> r10 "Inline stloc first use temp" ; V64 tmp53 [V64,T00] ( 6, 25.46) ref -> r8 class-hnd exact "Inlining Arg" <System.String> @@ -106,12 +106,11 @@ ;* V95 tmp84 [V95 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-INDEP ;* V96 tmp85 [V96 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x4)" P-INDEP ; V97 tmp86 [V97,T09] ( 3, 12 ) ref -> r2 "arr expr"
-; V98 tmp87 [V98,T39] ( 2, 0 ) ref -> r1 "argument with side effect" -; V99 tmp88 [V99,T40] ( 2, 0 ) ref -> r1 "argument with side effect"
+; V98 tmp87 [V98,T38] ( 2, 0 ) ref -> r1 "argument with side effect" +; V99 tmp88 [V99,T39] ( 2, 0 ) ref -> r1 "argument with side effect"
; V100 cse0 [V100,T18] ( 3, 3 ) ref -> r0 "CSE - moderate" ; V101 cse1 [V101,T11] ( 6, 10 ) int -> r7 multi-def "CSE - aggressive" ; V102 cse2 [V102,T05] ( 4, 12.50) byref -> r8 hoist multi-def "CSE - aggressive"
-; V103 cse3 [V103,T20] ( 12, 0 ) ref -> r1 multi-def "CSE - moderate"
; ; Lcl frame size = 28 @@ -396,17 +395,16 @@ G_M45430_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, subs r5, r1, r0 cmp r5, 0 bge SHORT G_M45430_IG29
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0]
; gcr arg pop 0
- ;; size=64 bbWeight=0 PerfScore 0.00
+ ;; size=70 bbWeight=0 PerfScore 0.00
G_M45430_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz cmp r5, 11 blo SHORT G_M45430_IG30 @@ -458,17 +456,16 @@ G_M45430_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub r8, r1, r0 cmp r8, 0 bge SHORT G_M45430_IG32
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0]
; gcr arg pop 0
- ;; size=66 bbWeight=0 PerfScore 0.00
+ ;; size=72 bbWeight=0 PerfScore 0.00
G_M45430_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref, isz cmp r8, 0 beq SHORT G_M45430_IG33 @@ -568,17 +565,16 @@ G_M45430_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, subs r5, r1, r0 cmp r5, 0 bge SHORT G_M45430_IG37
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0]
; gcr arg pop 0
- ;; size=62 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
G_M45430_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz cmp r5, 11 blo SHORT G_M45430_IG38 @@ -640,17 +636,16 @@ G_M45430_IG41: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, subs r4, r0, r4 cmp r4, 0 bge SHORT G_M45430_IG42
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0]
; gcr arg pop 0
- ;; size=36 bbWeight=0 PerfScore 0.00
+ ;; size=42 bbWeight=0 PerfScore 0.00
G_M45430_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz cmp r4, 0 beq SHORT G_M45430_IG43 @@ -717,7 +712,7 @@ G_M45430_IG44: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=64 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1074, prolog size 28, PerfScore 239.60, instruction count 391, allocated bytes for code 1074 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
+Total bytes of code 1098, prolog size 28, PerfScore 239.60, instruction count 395, allocated bytes for code 1098 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -729,7 +724,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 537 (0x00219) Actual length = 1074 (0x000432)
+ Function Length : 549 (0x00225) Actual length = 1098 (0x00044a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+2.39%) : 162350.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.Xml.XmlDictionaryString[],byref):System.String:this (FullOpts)

@@ -16,29 +16,29 @@ ; V05 loc2 [V05,T02] ( 4, 12.50) ref -> r9 class-hnd <System.Xml.XmlDictionaryString> ; V06 loc3 [V06 ] ( 17, 0 ) struct (24) [sp+0x00] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T15] ( 3, 0 ) ref -> r4 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V08 tmp1 [V08,T14] ( 3, 0 ) ref -> r4 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V10 tmp3 [V10,T13] ( 4, 0 ) int -> r0 "Inlining Arg"
+; V10 tmp3 [V10,T12] ( 4, 0 ) int -> r0 "Inlining Arg"
;* V11 tmp4 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V12 tmp5 [V12,T16] ( 3, 0 ) int -> r5 "Inlining Arg" -; V13 tmp6 [V13,T18] ( 2, 0 ) byref -> r4 "Inlining Arg"
+; V12 tmp5 [V12,T15] ( 3, 0 ) int -> r5 "Inlining Arg" +; V13 tmp6 [V13,T17] ( 2, 0 ) byref -> r4 "Inlining Arg"
;* V14 tmp7 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V16 tmp9 [V16,T23] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V16 tmp9 [V16,T22] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V17 tmp10 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V18 tmp11 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V19 tmp12 [V19,T19] ( 2, 0 ) byref -> r1 "Inlining Arg"
+; V19 tmp12 [V19,T18] ( 2, 0 ) byref -> r1 "Inlining Arg"
;* V20 tmp13 [V20 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V21 tmp14 [V21,T14] ( 4, 0 ) int -> r4 "Inlining Arg"
+; V21 tmp14 [V21,T13] ( 4, 0 ) int -> r4 "Inlining Arg"
;* V22 tmp15 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V23 tmp16 [V23,T17] ( 3, 0 ) int -> r4 "Inlining Arg" -; V24 tmp17 [V24,T20] ( 2, 0 ) byref -> r5 "Inlining Arg"
+; V23 tmp16 [V23,T16] ( 3, 0 ) int -> r4 "Inlining Arg" +; V24 tmp17 [V24,T19] ( 2, 0 ) byref -> r5 "Inlining Arg"
;* V25 tmp18 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V26 tmp19 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V27 tmp20 [V27,T24] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V27 tmp20 [V27,T23] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V28 tmp21 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V29 tmp22 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V30 tmp23 [V30,T21] ( 2, 0 ) byref -> r1 "Inlining Arg"
+; V30 tmp23 [V30,T20] ( 2, 0 ) byref -> r1 "Inlining Arg"
; V31 tmp24 [V31,T00] ( 5, 27.00) ref -> r2 class-hnd exact "Inlining Arg" <System.String> ; V32 tmp25 [V32,T11] ( 2, 4 ) ubyte -> r0 "Inline return value spill temp" ; V33 tmp26 [V33,T04] ( 2, 8 ) byref -> r0 "impAppendStmt" @@ -59,11 +59,10 @@ ;* V48 tmp41 [V48 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x4)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP ;* V50 tmp43 [V50 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP
-; V51 tmp44 [V51,T22] ( 2, 0 ) ref -> r1 "argument with side effect"
+; V51 tmp44 [V51,T21] ( 2, 0 ) ref -> r1 "argument with side effect"
; V52 cse0 [V52,T10] ( 2, 5 ) byref -> r4 hoist "CSE - aggressive" ; V53 cse1 [V53,T07] ( 3, 6 ) int -> r8 "CSE - aggressive" ; V54 cse2 [V54,T08] ( 3, 5.50) int -> r1 "CSE - aggressive"
-; V55 cse3 [V55,T12] ( 6, 0 ) ref -> r1 multi-def "CSE - aggressive"
; ; Lcl frame size = 24 @@ -213,17 +212,16 @@ G_M28309_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, subs r5, r1, r0 cmp r5, 0 bge SHORT G_M28309_IG15
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0]
; gcr arg pop 0
- ;; size=62 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
G_M28309_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz cmp r5, 8 blo SHORT G_M28309_IG16 @@ -285,17 +283,16 @@ G_M28309_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, subs r4, r0, r4 cmp r4, 0 bge SHORT G_M28309_IG20
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0]
; gcr arg pop 0
- ;; size=36 bbWeight=0 PerfScore 0.00
+ ;; size=42 bbWeight=0 PerfScore 0.00
G_M28309_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz cmp r4, 0 beq SHORT G_M28309_IG21 @@ -362,7 +359,7 @@ G_M28309_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=64 bbWeight=0 PerfScore 0.00
-; Total bytes of code 502, prolog size 28, PerfScore 100.51, instruction count 188, allocated bytes for code 502 (MethodHash=e43c916a) for method System.Xml.XmlDictionaryReader:ReadContentAsString(System.Xml.XmlDictionaryString[],byref):System.String:this (FullOpts)
+Total bytes of code 514, prolog size 28, PerfScore 100.51, instruction count 190, allocated bytes for code 514 (MethodHash=e43c916a) for method System.Xml.XmlDictionaryReader:ReadContentAsString(System.Xml.XmlDictionaryString[],byref):System.String:this (FullOpts)
; ============================================================ Unwind Info: @@ -374,7 +371,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 251 (0x000fb) Actual length = 502 (0x0001f6)
+ Function Length : 257 (0x00101) Actual length = 514 (0x000202)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+2.43%) : 162349.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.String[],byref):System.String:this (FullOpts)

@@ -16,29 +16,29 @@ ; V05 loc2 [V05,T01] ( 6, 16.25) ref -> r9 class-hnd exact <System.String> ; V06 loc3 [V06 ] ( 17, 0 ) struct (24) [sp+0x00] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T14] ( 3, 0 ) ref -> r4 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V08 tmp1 [V08,T13] ( 3, 0 ) ref -> r4 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V10 tmp3 [V10,T12] ( 4, 0 ) int -> r0 "Inlining Arg"
+; V10 tmp3 [V10,T11] ( 4, 0 ) int -> r0 "Inlining Arg"
;* V11 tmp4 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V12 tmp5 [V12,T15] ( 3, 0 ) int -> r5 "Inlining Arg" -; V13 tmp6 [V13,T17] ( 2, 0 ) byref -> r4 "Inlining Arg"
+; V12 tmp5 [V12,T14] ( 3, 0 ) int -> r5 "Inlining Arg" +; V13 tmp6 [V13,T16] ( 2, 0 ) byref -> r4 "Inlining Arg"
;* V14 tmp7 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V16 tmp9 [V16,T22] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V16 tmp9 [V16,T21] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V17 tmp10 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V18 tmp11 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V19 tmp12 [V19,T18] ( 2, 0 ) byref -> r1 "Inlining Arg"
+; V19 tmp12 [V19,T17] ( 2, 0 ) byref -> r1 "Inlining Arg"
;* V20 tmp13 [V20 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V21 tmp14 [V21,T13] ( 4, 0 ) int -> r4 "Inlining Arg"
+; V21 tmp14 [V21,T12] ( 4, 0 ) int -> r4 "Inlining Arg"
;* V22 tmp15 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V23 tmp16 [V23,T16] ( 3, 0 ) int -> r4 "Inlining Arg" -; V24 tmp17 [V24,T19] ( 2, 0 ) byref -> r5 "Inlining Arg"
+; V23 tmp16 [V23,T15] ( 3, 0 ) int -> r4 "Inlining Arg" +; V24 tmp17 [V24,T18] ( 2, 0 ) byref -> r5 "Inlining Arg"
;* V25 tmp18 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V26 tmp19 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V27 tmp20 [V27,T23] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V27 tmp20 [V27,T22] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V28 tmp21 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V29 tmp22 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V30 tmp23 [V30,T20] ( 2, 0 ) byref -> r1 "Inlining Arg"
+; V30 tmp23 [V30,T19] ( 2, 0 ) byref -> r1 "Inlining Arg"
; V31 tmp24 [V31,T10] ( 2, 4 ) ubyte -> r0 "Inline return value spill temp" ; V32 tmp25 [V32,T03] ( 2, 8 ) byref -> r0 "impAppendStmt" ;* V33 tmp26 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -58,11 +58,10 @@ ;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x4)" P-INDEP ;* V48 tmp41 [V48 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP
-; V50 tmp43 [V50,T21] ( 2, 0 ) ref -> r1 "argument with side effect"
+; V50 tmp43 [V50,T20] ( 2, 0 ) ref -> r1 "argument with side effect"
; V51 cse0 [V51,T09] ( 2, 5 ) byref -> r4 hoist "CSE - aggressive" ; V52 cse1 [V52,T06] ( 3, 6 ) int -> r8 "CSE - aggressive" ; V53 cse2 [V53,T07] ( 3, 5.50) int -> r2 "CSE - aggressive"
-; V54 cse3 [V54,T11] ( 6, 0 ) ref -> r1 multi-def "CSE - aggressive"
; ; Lcl frame size = 24 @@ -205,17 +204,16 @@ G_M58179_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, subs r5, r1, r0 cmp r5, 0 bge SHORT G_M58179_IG14
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0]
; gcr arg pop 0
- ;; size=62 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
G_M58179_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz cmp r5, 8 blo SHORT G_M58179_IG15 @@ -277,17 +275,16 @@ G_M58179_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, subs r4, r0, r4 cmp r4, 0 bge SHORT G_M58179_IG19
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0]
; gcr arg pop 0
- ;; size=36 bbWeight=0 PerfScore 0.00
+ ;; size=42 bbWeight=0 PerfScore 0.00
G_M58179_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz cmp r4, 0 beq SHORT G_M58179_IG20 @@ -354,7 +351,7 @@ G_M58179_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=64 bbWeight=0 PerfScore 0.00
-; Total bytes of code 494, prolog size 28, PerfScore 93.00, instruction count 185, allocated bytes for code 494 (MethodHash=40bb1cbc) for method System.Xml.XmlDictionaryReader:ReadContentAsString(System.String[],byref):System.String:this (FullOpts)
+Total bytes of code 506, prolog size 28, PerfScore 93.00, instruction count 187, allocated bytes for code 506 (MethodHash=40bb1cbc) for method System.Xml.XmlDictionaryReader:ReadContentAsString(System.String[],byref):System.String:this (FullOpts)
; ============================================================ Unwind Info: @@ -366,7 +363,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 247 (0x000f7) Actual length = 494 (0x0001ee)
+ Function Length : 253 (0x000fd) Actual length = 506 (0x0001fa)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries_tests.run.linux.arm.Release.mch

-28 (-3.28%) : 600771.dasm - System.Text.Json.JsonDocument+MetadataDb:Dispose():this (Tier1)

@@ -13,29 +13,29 @@ ; V01 loc0 [V01,T03] ( 10, 5 ) ref -> r5 class-hnd single-def <ubyte[]> ; V02 OutArgs [V02 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T07] ( 2, 4 ) ref -> r6 class-hnd exact single-def "spilling ret_expr" <System.Buffers.SharedArrayPool`1[ubyte]>
-; V04 tmp2 [V04,T14] ( 7, 2.08) ref -> r6 class-hnd exact single-def "guarded devirt this exact temp" <System.Buffers.SharedArrayPool`1[ubyte]>
+; V04 tmp2 [V04,T15] ( 7, 2.08) ref -> r6 class-hnd exact single-def "guarded devirt this exact temp" <System.Buffers.SharedArrayPool`1[ubyte]>
;* V05 tmp3 [V05 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <ubyte[]> ; V07 tmp5 [V07,T04] ( 8, 4.15) int -> r7 "Inline stloc first use temp" ; V08 tmp6 [V08,T08] ( 2, 4 ) ref -> r8 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]> ; V09 tmp7 [V09,T05] ( 5, 4.00) ref -> r8 ;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V11 tmp9 [V11,T17] ( 4, 2 ) ubyte -> r9 "Inline stloc first use temp"
+; V11 tmp9 [V11,T18] ( 4, 2 ) ubyte -> r9 "Inline stloc first use temp"
; V12 tmp10 [V12,T23] ( 3, 1.07) ubyte -> r10 "Inline stloc first use temp"
-; V13 tmp11 [V13,T16] ( 4, 2 ) ref -> r8 class-hnd exact single-def "Inline stloc first use temp" <System.Buffers.ArrayPoolEventSource> -; V14 tmp12 [V14,T39] ( 2, 0 ) int -> [sp+0x2C] spill-single-def "impAppendStmt" -; V15 tmp13 [V15,T40] ( 2, 0 ) int -> [sp+0x28] spill-single-def "impAppendStmt" -; V16 tmp14 [V16,T41] ( 2, 0 ) int -> r10 "impAppendStmt" -; V17 tmp15 [V17,T42] ( 2, 0 ) int -> r5 "impAppendStmt"
+; V13 tmp11 [V13,T17] ( 4, 2 ) ref -> r8 class-hnd exact single-def "Inline stloc first use temp" <System.Buffers.ArrayPoolEventSource> +; V14 tmp12 [V14,T38] ( 2, 0 ) int -> [sp+0x2C] spill-single-def "impAppendStmt" +; V15 tmp13 [V15,T39] ( 2, 0 ) int -> [sp+0x28] spill-single-def "impAppendStmt" +; V16 tmp14 [V16,T40] ( 2, 0 ) int -> r10 "impAppendStmt" +; V17 tmp15 [V17,T41] ( 2, 0 ) int -> r5 "impAppendStmt"
;* V18 tmp16 [V18 ] ( 0, 0 ) ref -> zero-ref single-def ;* V19 tmp17 [V19 ] ( 0, 0 ) int -> zero-ref ;* V20 tmp18 [V20 ] ( 0, 0 ) int -> zero-ref
-; V21 tmp19 [V21,T43] ( 2, 0 ) int -> r3
+; V21 tmp19 [V21,T42] ( 2, 0 ) int -> r3
;* V22 tmp20 [V22 ] ( 0, 0 ) ref -> zero-ref single-def ;* V23 tmp21 [V23 ] ( 0, 0 ) int -> zero-ref ;* V24 tmp22 [V24 ] ( 0, 0 ) int -> zero-ref ;* V25 tmp23 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp24 [V26,T34] ( 3, 0 ) int -> r0
+; V26 tmp24 [V26,T33] ( 3, 0 ) int -> r0
;* V27 tmp25 [V27 ] ( 0, 0 ) ref -> zero-ref single-def ;* V28 tmp26 [V28 ] ( 0, 0 ) int -> zero-ref ;* V29 tmp27 [V29 ] ( 0, 0 ) int -> zero-ref @@ -46,15 +46,15 @@ ;* V34 tmp32 [V34 ] ( 0, 0 ) int -> zero-ref ;* V35 tmp33 [V35 ] ( 0, 0 ) int -> zero-ref ;* V36 tmp34 [V36 ] ( 0, 0 ) int -> zero-ref
-; V37 tmp35 [V37,T35] ( 3, 0 ) int -> r1
+; V37 tmp35 [V37,T34] ( 3, 0 ) int -> r1
; V38 tmp36 [V38,T09] ( 2, 4 ) int -> [sp+0x24] spill-single-def "impAppendStmt" ; V39 tmp37 [V39,T06] ( 4, 4 ) byref -> r2 single-def "Inline stloc first use temp"
-; V40 tmp38 [V40,T13] ( 3, 2.29) ref -> r8 class-hnd single-def "Inline stloc first use temp" <System.Array>
+; V40 tmp38 [V40,T14] ( 3, 2.29) ref -> r8 class-hnd single-def "Inline stloc first use temp" <System.Array>
;* V41 tmp39 [V41 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Buffers.SharedArrayPoolThreadLocalArray>
-; V42 tmp40 [V42,T29] ( 2, 0.29) ref -> r3 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions> -; V43 tmp41 [V43,T30] ( 4, 0.22) ref -> r3
+; V42 tmp40 [V42,T28] ( 2, 0.29) ref -> r3 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions> +; V43 tmp41 [V43,T29] ( 4, 0.22) ref -> r3
;* V44 tmp42 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions>
-; V45 tmp43 [V45,T33] ( 3, 0 ) ref -> r10 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V45 tmp43 [V45,T32] ( 3, 0 ) ref -> r10 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V46 tmp44 [V46 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V47 tmp45 [V47 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V48 tmp46 [V48,T00] ( 17, 34 ) int -> r0 "Inlining Arg" @@ -62,34 +62,33 @@ ;* V50 tmp48 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V51 tmp49 [V51 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ; V52 tmp50 [V52,T11] ( 3, 3 ) int -> [sp+0x20] spill-single-def "Inline stloc first use temp"
-; V53 tmp51 [V53,T31] ( 3, 0.22) ubyte -> r10 "Inline return value spill temp" -; V54 tmp52 [V54,T26] ( 3, 0.66) ref -> [sp+0x0C] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V53 tmp51 [V53,T30] ( 3, 0.22) ubyte -> r10 "Inline return value spill temp" +; V54 tmp52 [V54,T12] ( 6, 2.41) ref -> r10 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
; V55 tmp53 [V55,T10] ( 7, 3.21) int -> [sp+0x1C] "Inline stloc first use temp" ; V56 tmp54 [V56,T20] ( 4, 1.75) int -> [sp+0x18] "Inline stloc first use temp"
-; V57 tmp55 [V57,T12] ( 2, 2.34) int -> r10 "dup spill"
+; V57 tmp55 [V57,T13] ( 2, 2.34) int -> r3 "dup spill"
;* V58 tmp56 [V58 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V59 tmp57 [V59,T36] ( 3, 0 ) int -> r0 "Inline return value spill temp" -; V60 tmp58 [V60,T27] ( 4, 0.44) int -> r3 "dup spill"
+; V59 tmp57 [V59,T35] ( 3, 0 ) int -> r0 "Inline return value spill temp" +; V60 tmp58 [V60,T26] ( 4, 0.44) int -> r3 "dup spill"
;* V61 tmp59 [V61 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V62 tmp60 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V63 tmp61 [V63,T22] ( 3, 1.46) ubyte -> [sp+0x14] "Inline stloc first use temp"
-; V64 tmp62 [V64,T01] ( 8, 8.18) ref -> [sp+0x08] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V64 tmp62 [V64,T01] ( 8, 8.18) ref -> [sp+0x0C] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
; V65 tmp63 [V65,T21] ( 3, 1.46) ref -> r1 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V66 tmp64 [V66,T15] ( 5, 2.04) int -> r2 "Inline stloc first use temp" -; V67 tmp65 [V67,T44] ( 2, 0 ) int -> r0 "Inlining Arg"
+; V66 tmp64 [V66,T16] ( 5, 2.04) int -> [sp+0x10] spill-single-def "Inline stloc first use temp" +; V67 tmp65 [V67,T43] ( 2, 0 ) int -> r0 "Inlining Arg"
;* V68 tmp66 [V68,T24] ( 0, 0 ) ref -> zero-ref single-def "field V41.Array (fldOffset=0x0)" P-INDEP ;* V69 tmp67 [V69,T25] ( 0, 0 ) int -> zero-ref "field V41.MillisecondsTimeStamp (fldOffset=0x4)" P-INDEP ;* V70 tmp68 [V70 ] ( 0, 0 ) byref -> zero-ref "field V49._reference (fldOffset=0x0)" P-INDEP ;* V71 tmp69 [V71 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x4)" P-INDEP
-; V72 tmp70 [V72,T18] ( 2, 2 ) byref -> r1 single-def "field V50._reference (fldOffset=0x0)" P-INDEP
+; V72 tmp70 [V72,T19] ( 2, 2 ) byref -> r1 single-def "field V50._reference (fldOffset=0x0)" P-INDEP
;* V73 tmp71 [V73 ] ( 0, 0 ) int -> zero-ref "field V50._length (fldOffset=0x4)" P-INDEP ;* V74 tmp72 [V74 ] ( 0, 0 ) byref -> zero-ref single-def "field V51._reference (fldOffset=0x0)" P-INDEP ;* V75 tmp73 [V75 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x4)" P-INDEP
-; V76 tmp74 [V76,T28] ( 3, 0.44) ref -> r0 single-def "arr expr" -; V77 tmp75 [V77,T37] ( 2, 0 ) ref -> r5 single-def "argument with side effect" -; V78 tmp76 [V78,T38] ( 2, 0 ) ref -> r2 single-def "argument with side effect" -; V79 cse0 [V79,T32] ( 3, 0.22) int -> r0 "CSE - conservative" -; V80 cse1 [V80,T19] ( 5, 1.75) int -> [sp+0x10] spill-single-def "CSE - moderate"
+; V76 tmp74 [V76,T27] ( 3, 0.44) ref -> r0 single-def "arr expr" +; V77 tmp75 [V77,T36] ( 2, 0 ) ref -> r5 single-def "argument with side effect" +; V78 tmp76 [V78,T37] ( 2, 0 ) ref -> r2 single-def "argument with side effect" +; V79 cse0 [V79,T31] ( 3, 0.22) int -> r0 "CSE - conservative"
; ; Lcl frame size = 52 @@ -114,7 +113,7 @@ G_M61043_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre mov r5, r0 ; gcrRegs +[r5] cmp r5, 0
- beq G_M61043_IG25
+ beq G_M61043_IG24
movw r0, 0xd1ff ; gcrRegs -[r0] movt r0, 0xd1ff @@ -153,7 +152,7 @@ G_M61043_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre ldr r8, [r0] ; gcrRegs +[r8] cmp r8, 0
- beq G_M61043_IG23
+ beq G_M61043_IG22
;; size=126 bbWeight=1 PerfScore 43.00 G_M61043_IG03: ; bbWeight=1, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0010 {r4}, byref, isz ; byrRegs -[r0] @@ -186,7 +185,7 @@ G_M61043_IG05: ; bbWeight=1, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0010 {r ldr r1, [sp+0x24] // [V38 tmp36] ldr r0, [sp+0x20] // [V52 tmp50] cmp r1, r0
- bne G_M61043_IG26
+ bne G_M61043_IG25
lsls r1, r7, 3 adds r1, 8 add r2, r8, r1 @@ -215,7 +214,7 @@ G_M61043_IG06: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, ; gcrRegs +[r8] ldrb r0, [r8+0x5D] cmp r0, 0
- bne G_M61043_IG30
+ bne G_M61043_IG29
;; size=22 bbWeight=1 PerfScore 6.00 G_M61043_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref ; gcrRegs -[r5-r6 r8] @@ -232,7 +231,7 @@ G_M61043_IG09: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=016 ; gcrRegs +[r0] ldr r1, [r0+0x04] cmp r7, r1
- bhs G_M61043_IG24
+ bhs SHORT G_M61043_IG23
adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0] @@ -241,13 +240,11 @@ G_M61043_IG09: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=016 ; gcrRegs +[r3] cmp r3, 0 beq SHORT G_M61043_IG12
- ;; size=20 bbWeight=0.07 PerfScore 0.66
+ ;; size=18 bbWeight=0.07 PerfScore 0.66
G_M61043_IG10: ; bbWeight=0.07, gcrefRegs=0168 {r3 r5 r6 r8}, byrefRegs=0010 {r4}, byref, isz ; byrRegs -[r0] ldr r10, [r3+0x04] ; gcrRegs +[r10]
- str r10, [sp+0x0C] // [V54 tmp52] - ; GC ptr vars +{V54}
movw r0, 0xd1ff movt r0, 0xd1ff movw r1, 0xd1ff @@ -261,14 +258,13 @@ G_M61043_IG10: ; bbWeight=0.07, gcrefRegs=0168 {r3 r5 r6 r8}, byrefRegs=0 str r2, [r0+0x9F4] uxth r0, r3 cmp r0, 0
- bne G_M61043_IG28 - ;; size=48 bbWeight=0.07 PerfScore 1.02
+ bne G_M61043_IG27 + ;; size=44 bbWeight=0.07 PerfScore 0.95
G_M61043_IG11: ; bbWeight=0, gcrefRegs=0560 {r5 r6 r8 r10}, byrefRegs=0010 {r4}, byref, isz
- b SHORT G_M61043_IG27
+ b SHORT G_M61043_IG26
;; size=2 bbWeight=0 PerfScore 0.00
-G_M61043_IG12: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0010 {r4}, gcvars, byref, isz
+G_M61043_IG12: ; bbWeight=0.00, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs -[r10]
- ; GC ptr vars -{V54}
mov r0, r6 ; gcrRegs +[r0] mov r1, r7 @@ -281,52 +277,51 @@ G_M61043_IG12: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=016 ; gcrRegs +[r3] b SHORT G_M61043_IG10 ;; size=20 bbWeight=0.00 PerfScore 0.03
-G_M61043_IG13: ; bbWeight=0.58, gcVars=0000000004000000 {V54}, gcrefRegs=0560 {r5 r6 r8 r10}, byrefRegs=0010 {r4}, gcvars, byref, isz
+G_M61043_IG13: ; bbWeight=0.58, gcrefRegs=0560 {r5 r6 r8 r10}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs -[r0 r3] +[r10]
- ; GC ptr vars +{V26 V54} - cmp r3, r1 - bhs SHORT G_M61043_IG24
+ ldr r0, [r10+0x04] + cmp r3, r0 + bhs SHORT G_M61043_IG23
add r0, r10, 8 ; byrRegs +[r0] str r3, [sp+0x1C] // [V55 tmp53]
- lsl lr, r3, 2 - ldr lr, [r0+lr] - ; gcrRegs +[lr] - str lr, [sp+0x08] // [V64 tmp62] - ; GC ptr vars +{V64} - ldrsb r0, [lr] - ; byrRegs -[r0] - mov r12, 0 - str r12, [sp+0x14] // [V63 tmp61] - mov r0, lr - ; gcrRegs +[r0] - movw r10, 0xd1ff - ; gcrRegs -[r10] - movt r10, 0xd1ff - ; GC ptr vars -{V26} - blx r10 // <unknown method> - ; gcrRegs -[r0 lr] - ; gcr arg pop 0 - ldr r10, [sp+0x08] // [V64 tmp62] - ; gcrRegs +[r10] - ldr r1, [r10+0x04]
+ lsls r1, r3, 2 + ldr r1, [r0+r1]
; gcrRegs +[r1]
- ldr r2, [r10+0x0C]
+ str r1, [sp+0x0C] // [V64 tmp62] + ; GC ptr vars +{V64} + ldrsb r0, [r1] + ; byrRegs -[r0] + mov lr, 0 + str lr, [sp+0x14] // [V63 tmp61] + mov r0, r1 + ; gcrRegs +[r0] + movw r12, 0xd1ff + movt r12, 0xd1ff + blx r12 // <unknown method> + ; gcrRegs -[r0-r1] + ; gcr arg pop 0 + ldr r2, [sp+0x0C] // [V64 tmp62] + ; gcrRegs +[r2] + ldr r1, [r2+0x04] + ; gcrRegs +[r1] + ldr r3, [r2+0x0C] + str r3, [sp+0x10] // [V66 tmp64]
ldr r0, [r1+0x04]
- cmp r0, r2
+ cmp r0, r3
...

-18 (-3.18%) : 185864.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)

@@ -9,74 +9,71 @@ ; 8 inlinees with PGO data; 20 single block inlinees; 16 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 8, 3 ) ref -> r4 class-hnd single-def <System.String> -; V01 arg1 [V01,T01] ( 8, 2 ) ref -> r5 class-hnd single-def <System.String> -; V02 arg2 [V02,T02] ( 8, 2 ) ref -> r6 class-hnd single-def <System.String> -; V03 arg3 [V03,T03] ( 8, 2 ) ref -> r7 class-hnd single-def <System.String>
+; V00 arg0 [V00,T00] ( 13, 3 ) ref -> r4 class-hnd single-def <System.String> +; V01 arg1 [V01,T01] ( 12, 2 ) ref -> r5 class-hnd single-def <System.String> +; V02 arg2 [V02,T02] ( 12, 2 ) ref -> r6 class-hnd single-def <System.String> +; V03 arg3 [V03,T03] ( 11, 2 ) ref -> r7 class-hnd single-def <System.String>
;* V04 loc0 [V04 ] ( 0, 0 ) long -> zero-ref
-; V05 loc1 [V05,T06] ( 8, 0 ) ref -> [sp+0x04] class-hnd exact spill-single-def <System.String>
+; V05 loc1 [V05,T06] ( 5, 0 ) ref -> r8 class-hnd exact single-def <System.String>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V07 tmp1 [V07,T04] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp"
-; V08 tmp2 [V08,T12] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp" -; V09 tmp3 [V09,T13] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp" -; V10 tmp4 [V10,T14] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp"
+; V08 tmp2 [V08,T09] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp" +; V09 tmp3 [V09,T10] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp" +; V10 tmp4 [V10,T11] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp"
;* V11 tmp5 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp6 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp7 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp8 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp9 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V16 tmp10 [V16,T20] ( 2, 0 ) byref -> r1 single-def "Inlining Arg" -; V17 tmp11 [V17,T21] ( 2, 0 ) byref -> lr single-def "Inlining Arg" -; V18 tmp12 [V18,T29] ( 2, 0 ) int -> r2 "Inlining Arg"
+; V16 tmp10 [V16,T17] ( 2, 0 ) byref -> r0 single-def "Inlining Arg" +; V17 tmp11 [V17,T18] ( 2, 0 ) byref -> r1 single-def "Inlining Arg" +; V18 tmp12 [V18,T26] ( 2, 0 ) int -> r2 "Inlining Arg"
;* V19 tmp13 [V19 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V20 tmp14 [V20,T30] ( 2, 0 ) int -> r0 "Inlining Arg"
+; V20 tmp14 [V20,T27] ( 2, 0 ) int -> r0 "Inlining Arg"
;* V21 tmp15 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp16 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V23 tmp17 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp18 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V25 tmp19 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V26 tmp20 [V26,T22] ( 2, 0 ) byref -> r1 single-def "Inlining Arg" -; V27 tmp21 [V27,T23] ( 2, 0 ) byref -> lr single-def "Inlining Arg" -; V28 tmp22 [V28,T31] ( 2, 0 ) int -> r2 "Inlining Arg"
+; V26 tmp20 [V26,T19] ( 2, 0 ) byref -> r0 single-def "Inlining Arg" +; V27 tmp21 [V27,T20] ( 2, 0 ) byref -> r1 single-def "Inlining Arg" +; V28 tmp22 [V28,T28] ( 2, 0 ) int -> r2 "Inlining Arg"
;* V29 tmp23 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V30 tmp24 [V30,T15] ( 3, 0 ) int -> r5 "Inlining Arg"
+; V30 tmp24 [V30,T12] ( 3, 0 ) int -> r5 "Inlining Arg"
;* V31 tmp25 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V32 tmp26 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp27 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp28 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V35 tmp29 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V36 tmp30 [V36,T24] ( 2, 0 ) byref -> r0 single-def "Inlining Arg" -; V37 tmp31 [V37,T25] ( 2, 0 ) byref -> r1 single-def "Inlining Arg" -; V38 tmp32 [V38,T32] ( 2, 0 ) int -> r2 "Inlining Arg"
+; V36 tmp30 [V36,T21] ( 2, 0 ) byref -> r0 single-def "Inlining Arg" +; V37 tmp31 [V37,T22] ( 2, 0 ) byref -> r1 single-def "Inlining Arg" +; V38 tmp32 [V38,T29] ( 2, 0 ) int -> r2 "Inlining Arg"
;* V39 tmp33 [V39 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V40 tmp34 [V40,T16] ( 3, 0 ) int -> r4 "Inlining Arg"
+; V40 tmp34 [V40,T13] ( 3, 0 ) int -> r4 "Inlining Arg"
;* V41 tmp35 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V42 tmp36 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V43 tmp37 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V44 tmp38 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V45 tmp39 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V46 tmp40 [V46,T26] ( 2, 0 ) byref -> r0 single-def "Inlining Arg" -; V47 tmp41 [V47,T27] ( 2, 0 ) byref -> r1 single-def "Inlining Arg" -; V48 tmp42 [V48,T33] ( 2, 0 ) int -> r5 "Inlining Arg"
+; V46 tmp40 [V46,T23] ( 2, 0 ) byref -> r0 single-def "Inlining Arg" +; V47 tmp41 [V47,T24] ( 2, 0 ) byref -> r1 single-def "Inlining Arg" +; V48 tmp42 [V48,T30] ( 2, 0 ) int -> r2 "Inlining Arg"
;* V49 tmp43 [V49 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V50 tmp44 [V50,T28] ( 2, 0 ) ref -> r0 single-def "Single return block return value" -; V51 cse0 [V51,T17] ( 3, 0 ) int -> r4 "CSE - moderate" -; V52 cse1 [V52,T18] ( 3, 0 ) int -> r4 "CSE - moderate" -; V53 cse2 [V53,T07] ( 7, 0 ) int -> r8 "CSE - moderate" -; V54 cse3 [V54,T08] ( 6, 0 ) int -> r9 "CSE - moderate" -; V55 cse4 [V55,T09] ( 6, 0 ) int -> r10 "CSE - conservative" -; V56 cse5 [V56,T10] ( 5, 0 ) int -> [sp+0x0C] "CSE - conservative" -; V57 cse6 [V57,T11] ( 5, 0 ) int -> [sp+0x08] spill-single-def "CSE - moderate" -; V58 cse7 [V58,T05] ( 15, 0 ) ref -> r1 multi-def "CSE - aggressive" -; V59 rat0 [V59,T19] ( 3, 0 ) int -> r0 "field V04.lo (fldOffset=0x0)" P-INDEP -; V60 rat1 [V60,T34] ( 2, 0 ) int -> r2 "field V04.hi (fldOffset=0x4)" P-INDEP
+; V50 tmp44 [V50,T25] ( 2, 0 ) ref -> r0 single-def "Single return block return value" +; V51 cse0 [V51,T14] ( 3, 0 ) int -> r4 "CSE - moderate" +; V52 cse1 [V52,T15] ( 3, 0 ) int -> [sp+0x04] spill-single-def "CSE - moderate" +; V53 cse2 [V53,T08] ( 5, 0 ) int -> r9 "CSE - moderate" +; V54 cse3 [V54,T07] ( 5, 0 ) byref -> r10 "CSE - moderate" +; V55 cse4 [V55,T05] ( 15, 0 ) ref -> r1 multi-def "CSE - aggressive" +; V56 rat0 [V56,T16] ( 3, 0 ) int -> r3 "field V04.lo (fldOffset=0x0)" P-INDEP +; V57 rat1 [V57,T31] ( 2, 0 ) int -> r2 "field V04.hi (fldOffset=0x4)" P-INDEP
;
-; Lcl frame size = 20
+; Lcl frame size = 12
G_M26691_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 20 - add r11, sp, 48
+ sub sp, 12 + add r11, sp, 40
mov r4, r0 ; gcrRegs +[r4] mov r5, r1 @@ -108,21 +105,21 @@ G_M26691_IG04: ; bbWeight=0, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {} ldr r3, [r3] ;; size=16 bbWeight=0 PerfScore 0.00 G_M26691_IG05: ; bbWeight=0, epilog, nogc, extend
- add sp, 20
+ add sp, 12
pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} bx r3 // <unknown method> ; gcr arg pop 0 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M26691_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M26691_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0-r2] +[r4] cmp r5, 0 beq SHORT G_M26691_IG09
- ldr r9, [r5+0x04] - cmp r9, 0
+ ldr r0, [r5+0x04] + cmp r0, 0
beq SHORT G_M26691_IG07 movs r0, 0 b SHORT G_M26691_IG08
- ;; size=18 bbWeight=0 PerfScore 0.00
+ ;; size=14 bbWeight=0 PerfScore 0.00
G_M26691_IG07: ; bbWeight=0, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref movs r0, 1 ;; size=2 bbWeight=0 PerfScore 0.00 @@ -143,21 +140,21 @@ G_M26691_IG09: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000 {} ldr r3, [r3] ;; size=16 bbWeight=0 PerfScore 0.00 G_M26691_IG10: ; bbWeight=0, epilog, nogc, extend
- add sp, 20
+ add sp, 12
pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} bx r3 // <unknown method> ; gcr arg pop 0 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M26691_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M26691_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0-r2] +[r5] cmp r6, 0 beq SHORT G_M26691_IG14
- ldr r10, [r6+0x04] - cmp r10, 0
+ ldr r0, [r6+0x04] + cmp r0, 0
beq SHORT G_M26691_IG12 movs r0, 0 b SHORT G_M26691_IG13
- ;; size=18 bbWeight=0 PerfScore 0.00
+ ;; size=14 bbWeight=0 PerfScore 0.00
G_M26691_IG12: ; bbWeight=0, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref movs r0, 1 ;; size=2 bbWeight=0 PerfScore 0.00 @@ -178,17 +175,17 @@ G_M26691_IG14: ; bbWeight=0, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {} ldr r3, [r3] ;; size=16 bbWeight=0 PerfScore 0.00 G_M26691_IG15: ; bbWeight=0, epilog, nogc, extend
- add sp, 20
+ add sp, 12
pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} bx r3 // <unknown method> ; gcr arg pop 0 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M26691_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M26691_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0-r2] +[r6] cmp r7, 0 beq SHORT G_M26691_IG19
- ldr r3, [r7+0x04] - cmp r3, 0
+ ldr r0, [r7+0x04] + cmp r0, 0
beq SHORT G_M26691_IG17 movs r0, 0 b SHORT G_M26691_IG18 @@ -213,30 +210,33 @@ G_M26691_IG19: ; bbWeight=0, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {} ldr r3, [r3] ;; size=16 bbWeight=0 PerfScore 0.00 G_M26691_IG20: ; bbWeight=0, epilog, nogc, extend
- add sp, 20
+ add sp, 12
pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} bx r3 // <unknown method> ; gcr arg pop 0 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M26691_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref
+G_M26691_IG21: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0-r2] +[r7]
+ ldr r3, [r4+0x04]
movs r2, 0
- movs r1, 0 - adds r0, r9, r8 - adcs r2, r1 - ;; size=10 bbWeight=0 PerfScore 0.00
+ ldr r1, [r5+0x04] + movs r0, 0 + adds r3, r3, r1 + adcs r2, r0 + ldr r1, [r6+0x04] + ;; size=14 bbWeight=0 PerfScore 0.00
G_M26691_IG22: ; bbWeight=0, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref
- adds r0, r0, r10 - adcs r2, r1
+ adds r3, r3, r1 + adcs r2, r0 + ldr r1, [r7+0x04]
;; size=6 bbWeight=0 PerfScore 0.00 G_M26691_IG23: ; bbWeight=0, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref
- str r3, [sp+0x0C] - adds r0, r0, r3 - adcs r2, r1 - ;; size=6 bbWeight=0 PerfScore 0.00
+ adds r3, r3, r1 + adcs r2, r0 + ;; size=4 bbWeight=0 PerfScore 0.00
G_M26691_IG24: ; bbWeight=0, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- cmp r0, 0x80000000 - sbcs r2, r1
+ cmp r3, 0x80000000 + sbcs r2, r0
blt SHORT G_M26691_IG25 movw r3, 0xd1ff movt r3, 0xd1ff @@ -248,14 +248,15 @@ G_M26691_IG24: ; bbWeight=0, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 ;; size=22 bbWeight=0 PerfScore 0.00 G_M26691_IG25: ; bbWeight=0, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r4-r7]
- movw r2, 0xd1ff - movt r2, 0xd1ff - blx r2 // <unknown method>
+ mov r0, r3 + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // <unknown method>
; gcrRegs +[r0] ; gcr arg pop 0
- str r0, [sp+0x04] - ; GC ptr vars +{V05} - cmp r0, 0
+ mov r8, r0
...

-28 (-3.05%) : 403253.dasm - System.Security.Cryptography.CryptoPool:Return(ubyte[],int) (Tier1)

@@ -22,21 +22,21 @@ ; V10 tmp7 [V10,T06] ( 5, 4.02) ref -> r9 ;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolThreadLocalArray[]> ; V12 tmp9 [V12,T16] ( 4, 2 ) ubyte -> r10 "Inline stloc first use temp"
-; V13 tmp10 [V13,T22] ( 3, 1.04) ubyte -> [sp+0x2C] "Inline stloc first use temp"
+; V13 tmp10 [V13,T23] ( 3, 1.04) ubyte -> [sp+0x24] "Inline stloc first use temp"
; V14 tmp11 [V14,T15] ( 4, 2 ) ref -> r5 class-hnd exact single-def "Inline stloc first use temp" <System.Buffers.ArrayPoolEventSource>
-; V15 tmp12 [V15,T43] ( 2, 0 ) int -> r9 "impAppendStmt" -; V16 tmp13 [V16,T44] ( 2, 0 ) int -> [sp+0x28] spill-single-def "impAppendStmt" -; V17 tmp14 [V17,T45] ( 2, 0 ) int -> r4 "impAppendStmt" -; V18 tmp15 [V18,T46] ( 2, 0 ) int -> r6 "impAppendStmt"
+; V15 tmp12 [V15,T42] ( 2, 0 ) int -> r9 "impAppendStmt" +; V16 tmp13 [V16,T43] ( 2, 0 ) int -> [sp+0x20] spill-single-def "impAppendStmt" +; V17 tmp14 [V17,T44] ( 2, 0 ) int -> r4 "impAppendStmt" +; V18 tmp15 [V18,T45] ( 2, 0 ) int -> r6 "impAppendStmt"
;* V19 tmp16 [V19 ] ( 0, 0 ) ref -> zero-ref single-def ;* V20 tmp17 [V20 ] ( 0, 0 ) int -> zero-ref ;* V21 tmp18 [V21 ] ( 0, 0 ) int -> zero-ref
-; V22 tmp19 [V22,T47] ( 2, 0 ) int -> r3
+; V22 tmp19 [V22,T46] ( 2, 0 ) int -> r3
;* V23 tmp20 [V23 ] ( 0, 0 ) ref -> zero-ref single-def ;* V24 tmp21 [V24 ] ( 0, 0 ) int -> zero-ref ;* V25 tmp22 [V25 ] ( 0, 0 ) int -> zero-ref ;* V26 tmp23 [V26 ] ( 0, 0 ) int -> zero-ref
-; V27 tmp24 [V27,T38] ( 3, 0 ) int -> r0
+; V27 tmp24 [V27,T37] ( 3, 0 ) int -> r0
;* V28 tmp25 [V28 ] ( 0, 0 ) ref -> zero-ref single-def ;* V29 tmp26 [V29 ] ( 0, 0 ) int -> zero-ref ;* V30 tmp27 [V30 ] ( 0, 0 ) int -> zero-ref @@ -47,62 +47,61 @@ ;* V35 tmp32 [V35 ] ( 0, 0 ) int -> zero-ref ;* V36 tmp33 [V36 ] ( 0, 0 ) int -> zero-ref ;* V37 tmp34 [V37 ] ( 0, 0 ) int -> zero-ref
-; V38 tmp35 [V38,T39] ( 3, 0 ) int -> r1
+; V38 tmp35 [V38,T38] ( 3, 0 ) int -> r1
; V39 tmp36 [V39,T10] ( 2, 4 ) int -> r5 "impAppendStmt" ; V40 tmp37 [V40,T07] ( 4, 4 ) byref -> r2 single-def "Inline stloc first use temp" ; V41 tmp38 [V41,T13] ( 3, 2.14) ref -> r5 class-hnd single-def "Inline stloc first use temp" <System.Array> ;* V42 tmp39 [V42 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Buffers.SharedArrayPoolThreadLocalArray>
-; V43 tmp40 [V43,T33] ( 2, 0.14) ref -> r3 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions> -; V44 tmp41 [V44,T34] ( 4, 0.12) ref -> r3
+; V43 tmp40 [V43,T32] ( 2, 0.14) ref -> r3 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions> +; V44 tmp41 [V44,T33] ( 4, 0.12) ref -> r3
;* V45 tmp42 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions>
-; V46 tmp43 [V46,T37] ( 3, 0 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V46 tmp43 [V46,T36] ( 3, 0 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V47 tmp44 [V47 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V48 tmp45 [V48 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V49 tmp46 [V49,T00] ( 17, 34 ) int -> r0 "Inlining Arg" ;* V50 tmp47 [V50 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]> ;* V51 tmp48 [V51 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V52 tmp49 [V52 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-; V53 tmp50 [V53,T12] ( 3, 3 ) int -> [sp+0x24] spill-single-def "Inline stloc first use temp" -; V54 tmp51 [V54,T35] ( 3, 0.11) ubyte -> r3 "Inline return value spill temp" -; V55 tmp52 [V55,T30] ( 3, 0.32) ref -> [sp+0x10] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> -; V56 tmp53 [V56,T20] ( 7, 1.59) int -> [sp+0x20] "Inline stloc first use temp" -; V57 tmp54 [V57,T27] ( 4, 0.87) int -> [sp+0x1C] "Inline stloc first use temp" -; V58 tmp55 [V58,T21] ( 2, 1.15) int -> r9 "dup spill"
+; V53 tmp50 [V53,T12] ( 3, 3 ) int -> [sp+0x1C] spill-single-def "Inline stloc first use temp" +; V54 tmp51 [V54,T34] ( 3, 0.11) ubyte -> r3 "Inline return value spill temp" +; V55 tmp52 [V55,T21] ( 6, 1.19) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V56 tmp53 [V56,T20] ( 7, 1.59) int -> [sp+0x18] "Inline stloc first use temp" +; V57 tmp54 [V57,T27] ( 4, 0.87) int -> [sp+0x14] "Inline stloc first use temp" +; V58 tmp55 [V58,T22] ( 2, 1.15) int -> r3 "dup spill"
;* V59 tmp56 [V59 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V60 tmp57 [V60,T40] ( 3, 0 ) int -> r0 "Inline return value spill temp" -; V61 tmp58 [V61,T31] ( 4, 0.22) int -> r3 "dup spill"
+; V60 tmp57 [V60,T39] ( 3, 0 ) int -> r0 "Inline return value spill temp" +; V61 tmp58 [V61,T30] ( 4, 0.22) int -> r3 "dup spill"
;* V62 tmp59 [V62 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V63 tmp60 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V64 tmp61 [V64,T29] ( 3, 0.72) ubyte -> [sp+0x18] "Inline stloc first use temp" -; V65 tmp62 [V65,T05] ( 8, 4.04) ref -> [sp+0x0C] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V64 tmp61 [V64,T29] ( 3, 0.72) ubyte -> [sp+0x10] "Inline stloc first use temp" +; V65 tmp62 [V65,T05] ( 8, 4.04) ref -> [sp+0x08] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
; V66 tmp63 [V66,T28] ( 3, 0.72) ref -> r1 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V67 tmp64 [V67,T23] ( 5, 1.01) int -> r2 "Inline stloc first use temp" -; V68 tmp65 [V68,T48] ( 2, 0 ) int -> r0 "Inlining Arg"
+; V67 tmp64 [V67,T24] ( 5, 1.01) int -> [sp+0x0C] spill-single-def "Inline stloc first use temp" +; V68 tmp65 [V68,T47] ( 2, 0 ) int -> r0 "Inlining Arg"
;* V69 tmp66 [V69 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP ;* V70 tmp67 [V70 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x4)" P-INDEP ; V71 tmp68 [V71,T17] ( 2, 2 ) byref -> r0 single-def "field V07._reference (fldOffset=0x0)" P-INDEP ; V72 tmp69 [V72,T19] ( 2, 2 ) int -> r1 "field V07._length (fldOffset=0x4)" P-INDEP
-;* V73 tmp70 [V73,T24] ( 0, 0 ) ref -> zero-ref single-def "field V42.Array (fldOffset=0x0)" P-INDEP -;* V74 tmp71 [V74,T25] ( 0, 0 ) int -> zero-ref "field V42.MillisecondsTimeStamp (fldOffset=0x4)" P-INDEP
+;* V73 tmp70 [V73,T25] ( 0, 0 ) ref -> zero-ref single-def "field V42.Array (fldOffset=0x0)" P-INDEP +;* V74 tmp71 [V74,T26] ( 0, 0 ) int -> zero-ref "field V42.MillisecondsTimeStamp (fldOffset=0x4)" P-INDEP
;* V75 tmp72 [V75 ] ( 0, 0 ) byref -> zero-ref "field V50._reference (fldOffset=0x0)" P-INDEP ;* V76 tmp73 [V76 ] ( 0, 0 ) int -> zero-ref "field V50._length (fldOffset=0x4)" P-INDEP ; V77 tmp74 [V77,T18] ( 2, 2 ) byref -> r1 single-def "field V51._reference (fldOffset=0x0)" P-INDEP ;* V78 tmp75 [V78 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x4)" P-INDEP ;* V79 tmp76 [V79 ] ( 0, 0 ) byref -> zero-ref single-def "field V52._reference (fldOffset=0x0)" P-INDEP ;* V80 tmp77 [V80 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x4)" P-INDEP
-; V81 tmp78 [V81,T32] ( 3, 0.22) ref -> r0 single-def "arr expr" -; V82 tmp79 [V82,T41] ( 2, 0 ) ref -> r4 single-def "argument with side effect" -; V83 tmp80 [V83,T42] ( 2, 0 ) ref -> r2 single-def "argument with side effect" -; V84 cse0 [V84,T36] ( 3, 0.11) int -> r0 "CSE - conservative" -; V85 cse1 [V85,T26] ( 5, 0.87) int -> [sp+0x14] spill-single-def "CSE - conservative" -; V86 cse2 [V86,T03] ( 8, 5 ) int -> r6 multi-def "CSE - aggressive"
+; V81 tmp78 [V81,T31] ( 3, 0.22) ref -> r0 single-def "arr expr" +; V82 tmp79 [V82,T40] ( 2, 0 ) ref -> r4 single-def "argument with side effect" +; V83 tmp80 [V83,T41] ( 2, 0 ) ref -> r2 single-def "argument with side effect" +; V84 cse0 [V84,T35] ( 3, 0.11) int -> r0 "CSE - conservative" +; V85 cse1 [V85,T03] ( 8, 5 ) int -> r6 multi-def "CSE - aggressive"
;
-; Lcl frame size = 52
+; Lcl frame size = 44
G_M44985_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 52 - add r11, sp, 80
+ sub sp, 44 + add r11, sp, 72
mov r4, r0 ; gcrRegs +[r4] ;; size=12 bbWeight=1 PerfScore 4.00 @@ -121,10 +120,10 @@ G_M44985_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre cmp r1, 0 beq SHORT G_M44985_IG05 cmp r4, 0
- beq G_M44985_IG28
+ beq G_M44985_IG27
ldr r6, [r4+0x04] cmp r6, r1
- blo G_M44985_IG28
+ blo G_M44985_IG27
add r0, r4, 8 ; byrRegs +[r0] movw r3, 0xd1ff @@ -141,7 +140,7 @@ G_M44985_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ; gcrRegs +[r7] ldrsb r0, [r7] cmp r4, 0
- beq G_M44985_IG29
+ beq G_M44985_IG28
ldr r6, [r4+0x04] subs r0, r6, 1 orr r0, r0, 15 @@ -174,26 +173,26 @@ G_M44985_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ldr r9, [r0] ; gcrRegs +[r9] cmp r9, 0
- beq G_M44985_IG26
+ beq G_M44985_IG25
;; size=108 bbWeight=1 PerfScore 36.00 G_M44985_IG06: ; bbWeight=1, gcrefRegs=0290 {r4 r7 r9}, byrefRegs=0000 {}, byref, isz ; byrRegs -[r0] mov r10, 0 movs r3, 1
- str r3, [sp+0x2C] // [V13 tmp10]
+ str r3, [sp+0x24] // [V13 tmp10]
ldr r0, [r9+0x04] cmp r0, r8 bls SHORT G_M44985_IG10 mov r10, 1 cmp r5, 0
- bne G_M44985_IG30
+ bne G_M44985_IG29
;; size=26 bbWeight=1 PerfScore 9.00 G_M44985_IG07: ; bbWeight=1, gcrefRegs=0290 {r4 r7 r9}, byrefRegs=0000 {}, byref, isz mov r5, r6 and r0, r8, 31 movs r2, 16 lsls r2, r0
- str r2, [sp+0x24] // [V53 tmp50]
+ str r2, [sp+0x1C] // [V53 tmp50]
cmp r2, 0 bge SHORT G_M44985_IG08 movs r0, 0 @@ -208,9 +207,9 @@ G_M44985_IG09: ; bbWeight=1, gcrefRegs=0290 {r4 r7 r9}, byrefRegs=0000 {} ldr r1, [r1] blx r1 // <unknown method> ; gcr arg pop 0
- ldr r1, [sp+0x24] // [V53 tmp50]
+ ldr r1, [sp+0x1C] // [V53 tmp50]
cmp r5, r1
- bne G_M44985_IG32
+ bne G_M44985_IG31
lsl r1, r8, 3 adds r1, 8 add r2, r9, r1 @@ -229,7 +228,7 @@ G_M44985_IG09: ; bbWeight=1, gcrefRegs=0290 {r4 r7 r9}, byrefRegs=0000 {} movs r0, 0 str r0, [r2+0x04] cmp r5, 0
- bne SHORT G_M44985_IG21
+ bne SHORT G_M44985_IG20
;; size=54 bbWeight=1 PerfScore 20.00 G_M44985_IG10: ; bbWeight=1, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r5] @@ -240,58 +239,58 @@ G_M44985_IG10: ; bbWeight=1, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, b ; gcrRegs +[r5] ldrb r2, [r5+0x5D] cmp r2, 0
- bne G_M44985_IG31
+ bne G_M44985_IG30
;; size=20 bbWeight=1 PerfScore 6.00 G_M44985_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[r4-r5 r7]
- add sp, 52
+ add sp, 44
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00
-G_M44985_IG12: ; bbWeight=0.29, gcVars=0000000040000000 {V55}, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M44985_IG12: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4-r5 r7 r9]
- ; GC ptr vars +{V55} - cmp r3, r1 - bhs G_M44985_IG27
+ ldr r0, [r9+0x04] + cmp r3, r0 + bhs SHORT G_M44985_IG26
add r0, r9, 8 ; byrRegs +[r0]
- str r3, [sp+0x20] // [V56 tmp53] - lsl lr, r3, 2 - ldr lr, [r0+lr] - ; gcrRegs +[lr] - str lr, [sp+0x0C] // [V65 tmp62] - ; GC ptr vars +{V65} - ldrsb r0, [lr] - ; byrRegs -[r0] - mov r12, 0 - str r12, [sp+0x18] // [V64 tmp61] - mov r0, lr - ; gcrRegs +[r0] - movw r9, 0xd1ff - ; gcrRegs -[r9] - movt r9, 0xd1ff - blx r9 // <unknown method> - ; gcrRegs -[r0 lr] - ; gcr arg pop 0 - ldr r9, [sp+0x0C] // [V65 tmp62] - ; gcrRegs +[r9] - ldr r1, [r9+0x04]
+ str r3, [sp+0x18] // [V56 tmp53] + lsls r1, r3, 2 + ldr r1, [r0+r1]
; gcrRegs +[r1]
- ldr r2, [r9+0x0C]
+ str r1, [sp+0x08] // [V65 tmp62] + ; GC ptr vars +{V65} + ldrsb r0, [r1] + ; byrRegs -[r0] + mov lr, 0 + str lr, [sp+0x10] // [V64 tmp61] + mov r0, r1 + ; gcrRegs +[r0]
...

+6 (+4.05%) : 186626.dasm - Microsoft.CodeAnalysis.MetadataHelpers:IsValidMetadataIdentifier(System.String):ubyte (Tier1)

@@ -9,79 +9,84 @@ ; 2 inlinees with PGO data; 9 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 6, 4 ) ref -> r0 class-hnd single-def <System.String>
+; V00 arg0 [V00,T03] ( 11, 17 ) ref -> r3 class-hnd single-def <System.String>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T06] ( 2, 0 ) ubyte -> r1 "Inline return value spill temp" -;* V03 tmp2 [V03,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V02 tmp1 [V02,T05] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp" +;* V03 tmp2 [V03,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V04 tmp3 [V04,T01] ( 8, 40 ) int -> registers "Inline stloc first use temp" ; V05 tmp4 [V05,T00] ( 3, 48 ) int -> r4 "impSpillLclRefs"
-; V06 tmp5 [V06,T02] ( 3, 20 ) ushort -> lr "Inline stloc first use temp"
+; V06 tmp5 [V06,T02] ( 3, 20 ) ushort -> r1 "Inline stloc first use temp"
;* V07 tmp6 [V07 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V08 tmp7 [V08 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V09 tmp8 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V10 cse0 [V10,T04] ( 6, 13 ) int -> r2 "CSE - aggressive" -; V11 cse1 [V11,T03] ( 5, 14 ) byref -> registers hoist multi-def "CSE - aggressive"
+; V10 cse0 [V10,T04] ( 5, 14 ) byref -> r0 hoist multi-def "CSE - aggressive"
; ; Lcl frame size = 4 G_M17259_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r3,r4,r11,lr} add r11, sp, 8
- ;; size=8 bbWeight=1 PerfScore 2.00 -G_M17259_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r0] - cmp r0, 0
+ mov r3, r0 + ; gcrRegs +[r3] + ;; size=10 bbWeight=1 PerfScore 3.00 +G_M17259_IG02: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz + cmp r3, 0
bne SHORT G_M17259_IG13 b SHORT G_M17259_IG11 ;; size=6 bbWeight=1 PerfScore 3.00
-G_M17259_IG03: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - cmp r1, 0
+G_M17259_IG03: ; bbWeight=0, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz + cmp r0, 0
bne SHORT G_M17259_IG11 movs r4, 0
- cmp r2, 0
+ ldr r0, [r3+0x04] + cmp r0, 0
ble SHORT G_M17259_IG08
- add r3, r0, 8 - ; byrRegs +[r3] - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M17259_IG04: ; bbWeight=8, gcrefRegs=0001 {r0}, byrefRegs=0008 {r3}, byref, isz - adds r1, r4, 1 - lsl lr, r4, 1 - ldrh lr, [r3+lr] - sub r12, lr, 0xd800 - movw r4, 0xd1ff - cmp r12, r4
+ ldr r0, [r3+0x04] + add r0, r3, 8 + ; byrRegs +[r0] + ;; size=18 bbWeight=0 PerfScore 0.00 +G_M17259_IG04: ; bbWeight=8, gcrefRegs=0008 {r3}, byrefRegs=0001 {r0}, byref, isz + adds r2, r4, 1 + lsls r1, r4, 1 + ldrh r1, [r0+r1] + sub lr, r1, 0xd800 + movw r12, 0xd1ff + cmp lr, r12
bhi SHORT G_M17259_IG06
- ;; size=22 bbWeight=8 PerfScore 56.00 -G_M17259_IG05: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0008 {r3}, byref, isz - cmp r2, r1
+ ;; size=18 bbWeight=8 PerfScore 56.00 +G_M17259_IG05: ; bbWeight=4, gcrefRegs=0008 {r3}, byrefRegs=0001 {r0}, byref, isz + ldr r1, [r3+0x04] + cmp r1, r2
ble SHORT G_M17259_IG11
- lsl lr, r1, 1 - ldrh lr, [r3+lr] - sub lr, lr, 0xdc00 - movw r12, 0xd1ff - cmp lr, r12
+ lsls r1, r2, 1 + ldrh r1, [r0+r1] + sub r1, r1, 0xdc00 + movw lr, 0xd1ff + cmp r1, lr
bhi SHORT G_M17259_IG11
- adds r1, r1, 1
+ adds r2, r2, 1
b SHORT G_M17259_IG07
- ;; size=28 bbWeight=4 PerfScore 40.00 -G_M17259_IG06: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0008 {r3}, byref, isz - sub lr, lr, 0xdc00 - movw r12, 0xd1ff - cmp lr, r12
+ ;; size=26 bbWeight=4 PerfScore 44.00 +G_M17259_IG06: ; bbWeight=4, gcrefRegs=0008 {r3}, byrefRegs=0001 {r0}, byref, isz + sub r1, r1, 0xdc00 + movw lr, 0xd1ff + cmp r1, lr
bls SHORT G_M17259_IG11 ;; size=12 bbWeight=4 PerfScore 16.00
-G_M17259_IG07: ; bbWeight=8, gcrefRegs=0001 {r0}, byrefRegs=0008 {r3}, byref, isz - cmp r2, r1 - mov r4, r1
+G_M17259_IG07: ; bbWeight=8, gcrefRegs=0008 {r3}, byrefRegs=0001 {r0}, byref, isz + ldr r1, [r3+0x04] + cmp r1, r2 + mov r4, r2
bgt SHORT G_M17259_IG04
- ;; size=6 bbWeight=8 PerfScore 24.00 -G_M17259_IG08: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[r3] - adds r0, 8 - ; gcrRegs -[r0]
+ ;; size=8 bbWeight=8 PerfScore 32.00 +G_M17259_IG08: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r0] + add r0, r3, 8
; byrRegs +[r0]
+ ldr r2, [r3+0x04]
movs r1, 0 movw r3, 0xd1ff
+ ; gcrRegs -[r3]
movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method> @@ -91,7 +96,7 @@ G_M17259_IG08: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byre beq SHORT G_M17259_IG09 movs r0, 0 b SHORT G_M17259_IG10
- ;; size=26 bbWeight=1 PerfScore 10.00
+ ;; size=30 bbWeight=1 PerfScore 11.00
G_M17259_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movs r0, 1 ;; size=2 bbWeight=1 PerfScore 1.00 @@ -104,22 +109,22 @@ G_M17259_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref G_M17259_IG12: ; bbWeight=0, epilog, nogc, extend pop {r3,r4,r11,pc} ;; size=4 bbWeight=0 PerfScore 0.00
-G_M17259_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r0] - ldr r2, [r0+0x04] - cmp r2, 0
+G_M17259_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r3] + ldr r0, [r3+0x04] + cmp r0, 0
beq SHORT G_M17259_IG14
- movs r1, 0
+ movs r0, 0
b SHORT G_M17259_IG15 ;; size=10 bbWeight=0 PerfScore 0.00
-G_M17259_IG14: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref - movs r1, 1
+G_M17259_IG14: ; bbWeight=0, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref + movs r0, 1
;; size=2 bbWeight=0 PerfScore 0.00
-G_M17259_IG15: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M17259_IG15: ; bbWeight=0, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz
b SHORT G_M17259_IG03 ;; size=2 bbWeight=0 PerfScore 0.00
-; Total bytes of code 148, prolog size 8, PerfScore 153.00, instruction count 56, allocated bytes for code 148 (MethodHash=a5b6bc94) for method Microsoft.CodeAnalysis.MetadataHelpers:IsValidMetadataIdentifier(System.String):ubyte (Tier1)
+Total bytes of code 154, prolog size 10, PerfScore 167.00, instruction count 62, allocated bytes for code 154 (MethodHash=a5b6bc94) for method Microsoft.CodeAnalysis.MetadataHelpers:IsValidMetadataIdentifier(System.String):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -131,7 +136,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 74 (0x0004a) Actual length = 148 (0x000094)
+ Function Length : 77 (0x0004d) Actual length = 154 (0x00009a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+6 (+4.05%) : 185663.dasm - Microsoft.CodeAnalysis.MetadataHelpers:IsValidMetadataIdentifier(System.String):ubyte (Tier1)

@@ -9,79 +9,84 @@ ; 2 inlinees with PGO data; 9 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 6, 4 ) ref -> r0 class-hnd single-def <System.String>
+; V00 arg0 [V00,T03] ( 11, 17 ) ref -> r3 class-hnd single-def <System.String>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T06] ( 2, 0 ) ubyte -> r1 "Inline return value spill temp" -;* V03 tmp2 [V03,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V02 tmp1 [V02,T05] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp" +;* V03 tmp2 [V03,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V04 tmp3 [V04,T01] ( 8, 40 ) int -> registers "Inline stloc first use temp" ; V05 tmp4 [V05,T00] ( 3, 48 ) int -> r4 "impSpillLclRefs"
-; V06 tmp5 [V06,T02] ( 3, 20 ) ushort -> lr "Inline stloc first use temp"
+; V06 tmp5 [V06,T02] ( 3, 20 ) ushort -> r1 "Inline stloc first use temp"
;* V07 tmp6 [V07 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V08 tmp7 [V08 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V09 tmp8 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V10 cse0 [V10,T04] ( 6, 13 ) int -> r2 "CSE - aggressive" -; V11 cse1 [V11,T03] ( 5, 14 ) byref -> registers hoist multi-def "CSE - aggressive"
+; V10 cse0 [V10,T04] ( 5, 14 ) byref -> r0 hoist multi-def "CSE - aggressive"
; ; Lcl frame size = 4 G_M17259_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r3,r4,r11,lr} add r11, sp, 8
- ;; size=8 bbWeight=1 PerfScore 2.00 -G_M17259_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r0] - cmp r0, 0
+ mov r3, r0 + ; gcrRegs +[r3] + ;; size=10 bbWeight=1 PerfScore 3.00 +G_M17259_IG02: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz + cmp r3, 0
bne SHORT G_M17259_IG13 b SHORT G_M17259_IG11 ;; size=6 bbWeight=1 PerfScore 3.00
-G_M17259_IG03: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - cmp r1, 0
+G_M17259_IG03: ; bbWeight=0, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz + cmp r0, 0
bne SHORT G_M17259_IG11 movs r4, 0
- cmp r2, 0
+ ldr r0, [r3+0x04] + cmp r0, 0
ble SHORT G_M17259_IG08
- add r3, r0, 8 - ; byrRegs +[r3] - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M17259_IG04: ; bbWeight=8, gcrefRegs=0001 {r0}, byrefRegs=0008 {r3}, byref, isz - adds r1, r4, 1 - lsl lr, r4, 1 - ldrh lr, [r3+lr] - sub r12, lr, 0xd800 - movw r4, 0xd1ff - cmp r12, r4
+ ldr r0, [r3+0x04] + add r0, r3, 8 + ; byrRegs +[r0] + ;; size=18 bbWeight=0 PerfScore 0.00 +G_M17259_IG04: ; bbWeight=8, gcrefRegs=0008 {r3}, byrefRegs=0001 {r0}, byref, isz + adds r2, r4, 1 + lsls r1, r4, 1 + ldrh r1, [r0+r1] + sub lr, r1, 0xd800 + movw r12, 0xd1ff + cmp lr, r12
bhi SHORT G_M17259_IG06
- ;; size=22 bbWeight=8 PerfScore 56.00 -G_M17259_IG05: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0008 {r3}, byref, isz - cmp r2, r1
+ ;; size=18 bbWeight=8 PerfScore 56.00 +G_M17259_IG05: ; bbWeight=4, gcrefRegs=0008 {r3}, byrefRegs=0001 {r0}, byref, isz + ldr r1, [r3+0x04] + cmp r1, r2
ble SHORT G_M17259_IG11
- lsl lr, r1, 1 - ldrh lr, [r3+lr] - sub lr, lr, 0xdc00 - movw r12, 0xd1ff - cmp lr, r12
+ lsls r1, r2, 1 + ldrh r1, [r0+r1] + sub r1, r1, 0xdc00 + movw lr, 0xd1ff + cmp r1, lr
bhi SHORT G_M17259_IG11
- adds r1, r1, 1
+ adds r2, r2, 1
b SHORT G_M17259_IG07
- ;; size=28 bbWeight=4 PerfScore 40.00 -G_M17259_IG06: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0008 {r3}, byref, isz - sub lr, lr, 0xdc00 - movw r12, 0xd1ff - cmp lr, r12
+ ;; size=26 bbWeight=4 PerfScore 44.00 +G_M17259_IG06: ; bbWeight=4, gcrefRegs=0008 {r3}, byrefRegs=0001 {r0}, byref, isz + sub r1, r1, 0xdc00 + movw lr, 0xd1ff + cmp r1, lr
bls SHORT G_M17259_IG11 ;; size=12 bbWeight=4 PerfScore 16.00
-G_M17259_IG07: ; bbWeight=8, gcrefRegs=0001 {r0}, byrefRegs=0008 {r3}, byref, isz - cmp r2, r1 - mov r4, r1
+G_M17259_IG07: ; bbWeight=8, gcrefRegs=0008 {r3}, byrefRegs=0001 {r0}, byref, isz + ldr r1, [r3+0x04] + cmp r1, r2 + mov r4, r2
bgt SHORT G_M17259_IG04
- ;; size=6 bbWeight=8 PerfScore 24.00 -G_M17259_IG08: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[r3] - adds r0, 8 - ; gcrRegs -[r0]
+ ;; size=8 bbWeight=8 PerfScore 32.00 +G_M17259_IG08: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r0] + add r0, r3, 8
; byrRegs +[r0]
+ ldr r2, [r3+0x04]
movs r1, 0 movw r3, 0xd1ff
+ ; gcrRegs -[r3]
movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method> @@ -91,7 +96,7 @@ G_M17259_IG08: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byre beq SHORT G_M17259_IG09 movs r0, 0 b SHORT G_M17259_IG10
- ;; size=26 bbWeight=1 PerfScore 10.00
+ ;; size=30 bbWeight=1 PerfScore 11.00
G_M17259_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movs r0, 1 ;; size=2 bbWeight=1 PerfScore 1.00 @@ -104,22 +109,22 @@ G_M17259_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref G_M17259_IG12: ; bbWeight=0, epilog, nogc, extend pop {r3,r4,r11,pc} ;; size=4 bbWeight=0 PerfScore 0.00
-G_M17259_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r0] - ldr r2, [r0+0x04] - cmp r2, 0
+G_M17259_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r3] + ldr r0, [r3+0x04] + cmp r0, 0
beq SHORT G_M17259_IG14
- movs r1, 0
+ movs r0, 0
b SHORT G_M17259_IG15 ;; size=10 bbWeight=0 PerfScore 0.00
-G_M17259_IG14: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref - movs r1, 1
+G_M17259_IG14: ; bbWeight=0, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref + movs r0, 1
;; size=2 bbWeight=0 PerfScore 0.00
-G_M17259_IG15: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M17259_IG15: ; bbWeight=0, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz
b SHORT G_M17259_IG03 ;; size=2 bbWeight=0 PerfScore 0.00
-; Total bytes of code 148, prolog size 8, PerfScore 153.00, instruction count 56, allocated bytes for code 148 (MethodHash=a5b6bc94) for method Microsoft.CodeAnalysis.MetadataHelpers:IsValidMetadataIdentifier(System.String):ubyte (Tier1)
+Total bytes of code 154, prolog size 10, PerfScore 167.00, instruction count 62, allocated bytes for code 154 (MethodHash=a5b6bc94) for method Microsoft.CodeAnalysis.MetadataHelpers:IsValidMetadataIdentifier(System.String):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -131,7 +136,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 74 (0x0004a) Actual length = 148 (0x000094)
+ Function Length : 77 (0x0004d) Actual length = 154 (0x00009a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+7.55%) : 180482.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsPreprocessorContextualKeyword(ushort):ubyte (Tier1)

@@ -12,8 +12,7 @@ ; V00 arg0 [V00,T01] ( 3, 3 ) ushort -> r0 single-def ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V02 tmp1 [V02,T02] ( 3, 1.50) ubyte -> r0 "Inline return value spill temp"
-; V03 cse0 [V03,T03] ( 3, 0 ) int -> r2 "CSE - conservative" -; V04 cse1 [V04,T00] ( 8, 5 ) int -> r3 "CSE - aggressive"
+; V03 cse0 [V03,T00] ( 9, 5 ) int -> r3 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -71,15 +70,18 @@ G_M59682_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref adds r2, r3, r2 cmp r2, 1 bls SHORT G_M59682_IG03
- movw r1, 0xd1ff - cmp r3, r1
+ movw r2, 0xd1ff + cmp r3, r2
beq SHORT G_M59682_IG03
- cmp r2, 3
+ movw r2, 0xd1ff + sxth r2, r2 + adds r3, r3, r2 + cmp r3, 3
bls SHORT G_M59682_IG06 b SHORT G_M59682_IG07
- ;; size=26 bbWeight=0 PerfScore 0.00
+ ;; size=34 bbWeight=0 PerfScore 0.00
-; Total bytes of code 106, prolog size 6, PerfScore 24.00, instruction count 43, allocated bytes for code 106 (MethodHash=791516dd) for method Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsPreprocessorContextualKeyword(ushort):ubyte (Tier1)
+Total bytes of code 114, prolog size 6, PerfScore 24.00, instruction count 46, allocated bytes for code 114 (MethodHash=791516dd) for method Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsPreprocessorContextualKeyword(ushort):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -91,7 +93,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 53 (0x00035) Actual length = 106 (0x00006a)
+ Function Length : 57 (0x00039) Actual length = 114 (0x000072)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

librariestestsnotieredcompilation.run.linux.arm.Release.mch

-24 (-2.99%) : 12380.dasm - System.Buffers.SharedArrayPool1[System.Collections.Immutable.ImmutableArray1[System.Canon]]:Return(System.Collections.Immutable.ImmutableArray`1[System.Canon][],ubyte):this (FullOpts)

@@ -10,31 +10,31 @@ ; ; V00 this [V00,T09] ( 8, 5.50) ref -> r5 this class-hnd single-def <System.Buffers.SharedArrayPool`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]> ; V01 arg1 [V01,T08] ( 8, 6 ) ref -> r4 class-hnd single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon][]>
-; V02 arg2 [V02,T12] ( 3, 2.50) ubyte -> r6 single-def
+; V02 arg2 [V02,T11] ( 3, 2.50) ubyte -> r6 single-def
; V03 loc0 [V03,T10] ( 8, 5 ) int -> r8 ;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V05 loc2 [V05,T20] ( 4, 2.50) ubyte -> [sp+0x28] -; V06 loc3 [V06,T23] ( 3, 2 ) ubyte -> [sp+0x24] -; V07 loc4 [V07,T16] ( 4, 3 ) ref -> r9 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource> -; V08 loc5 [V08,T21] ( 4, 2 ) byref -> r2 single-def -; V09 loc6 [V09,T18] ( 3, 3 ) ref -> r6 class-hnd single-def <System.Array>
+; V05 loc2 [V05,T19] ( 4, 2.50) ubyte -> r10 +; V06 loc3 [V06,T22] ( 3, 2 ) ubyte -> [sp+0x28] +; V07 loc4 [V07,T15] ( 4, 3 ) ref -> r9 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource> +; V08 loc5 [V08,T20] ( 4, 2 ) byref -> r2 single-def +; V09 loc6 [V09,T17] ( 3, 3 ) ref -> r6 class-hnd single-def <System.Array>
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Buffers.SharedArrayPoolPartitions> ; V11 OutArgs [V11 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T15] ( 2, 4 ) ref -> r9 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]> -; V13 tmp2 [V13,T14] ( 5, 4 ) ref -> r9 -; V14 tmp3 [V14,T25] ( 2, 2 ) int -> r6 "impAppendStmt" -; V15 tmp4 [V15,T26] ( 2, 2 ) int -> [sp+0x20] spill-single-def "impAppendStmt" -; V16 tmp5 [V16,T27] ( 2, 2 ) int -> r6 "impAppendStmt" -; V17 tmp6 [V17,T28] ( 2, 2 ) int -> r7 "impAppendStmt"
+; V12 tmp1 [V12,T14] ( 2, 4 ) ref -> r9 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]> +; V13 tmp2 [V13,T13] ( 5, 4 ) ref -> r9 +; V14 tmp3 [V14,T24] ( 2, 2 ) int -> r6 "impAppendStmt" +; V15 tmp4 [V15,T25] ( 2, 2 ) int -> [sp+0x24] spill-single-def "impAppendStmt" +; V16 tmp5 [V16,T26] ( 2, 2 ) int -> r6 "impAppendStmt" +; V17 tmp6 [V17,T27] ( 2, 2 ) int -> r7 "impAppendStmt"
;* V18 tmp7 [V18 ] ( 0, 0 ) ref -> zero-ref single-def ;* V19 tmp8 [V19 ] ( 0, 0 ) int -> zero-ref ;* V20 tmp9 [V20 ] ( 0, 0 ) int -> zero-ref
-; V21 tmp10 [V21,T36] ( 2, 1 ) int -> r3
+; V21 tmp10 [V21,T35] ( 2, 1 ) int -> r3
;* V22 tmp11 [V22 ] ( 0, 0 ) ref -> zero-ref single-def ;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref ;* V24 tmp13 [V24 ] ( 0, 0 ) int -> zero-ref ;* V25 tmp14 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp15 [V26,T31] ( 3, 1.50) int -> r0
+; V26 tmp15 [V26,T30] ( 3, 1.50) int -> r0
;* V27 tmp16 [V27 ] ( 0, 0 ) ref -> zero-ref single-def ;* V28 tmp17 [V28 ] ( 0, 0 ) int -> zero-ref ;* V29 tmp18 [V29 ] ( 0, 0 ) int -> zero-ref @@ -45,40 +45,39 @@ ;* V34 tmp23 [V34 ] ( 0, 0 ) int -> zero-ref ;* V35 tmp24 [V35 ] ( 0, 0 ) int -> zero-ref ;* V36 tmp25 [V36 ] ( 0, 0 ) int -> zero-ref
-; V37 tmp26 [V37,T32] ( 3, 1.50) int -> r1 -; V38 tmp27 [V38,T29] ( 2, 2 ) int -> r6 "impAppendStmt"
+; V37 tmp26 [V37,T31] ( 3, 1.50) int -> r1 +; V38 tmp27 [V38,T28] ( 2, 2 ) int -> r6 "impAppendStmt"
;* V39 tmp28 [V39 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Buffers.SharedArrayPoolThreadLocalArray>
-; V40 tmp29 [V40,T24] ( 2, 2 ) ref -> r3 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions> -; V41 tmp30 [V41,T22] ( 4, 2 ) ref -> r3 -; V42 tmp31 [V42,T39] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V40 tmp29 [V40,T23] ( 2, 2 ) ref -> r3 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions> +; V41 tmp30 [V41,T21] ( 4, 2 ) ref -> r3 +; V42 tmp31 [V42,T38] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V43 tmp32 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V44 tmp33 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V45 tmp34 [V45,T33] ( 3, 1.50) int -> [sp+0x1C] spill-single-def "Inline stloc first use temp"
+; V45 tmp34 [V45,T32] ( 3, 1.50) int -> [sp+0x20] spill-single-def "Inline stloc first use temp"
;* V46 tmp35 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V47 tmp36 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V48 tmp37 [V48,T34] ( 3, 1.50) ubyte -> r6 "Inline return value spill temp" -; V49 tmp38 [V49,T11] ( 3, 4.50) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V50 tmp39 [V50,T01] ( 7, 22 ) int -> [sp+0x18] "Inline stloc first use temp" -; V51 tmp40 [V51,T05] ( 4, 12 ) int -> [sp+0x14] "Inline stloc first use temp" -; V52 tmp41 [V52,T02] ( 2, 16 ) int -> r10 "dup spill"
+; V48 tmp37 [V48,T33] ( 3, 1.50) ubyte -> r6 "Inline return value spill temp" +; V49 tmp38 [V49,T02] ( 6, 16.50) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V50 tmp39 [V50,T01] ( 7, 22 ) int -> [sp+0x1C] "Inline stloc first use temp" +; V51 tmp40 [V51,T05] ( 4, 12 ) int -> [sp+0x18] "Inline stloc first use temp" +; V52 tmp41 [V52,T03] ( 2, 16 ) int -> r3 "dup spill"
;* V53 tmp42 [V53 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V54 tmp43 [V54,T40] ( 3, 0 ) int -> r0 "Inline return value spill temp" -; V55 tmp44 [V55,T17] ( 4, 3 ) int -> r3 "dup spill"
+; V54 tmp43 [V54,T39] ( 3, 0 ) int -> r0 "Inline return value spill temp" +; V55 tmp44 [V55,T16] ( 4, 3 ) int -> r3 "dup spill"
;* V56 tmp45 [V56 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V57 tmp46 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V58 tmp47 [V58,T07] ( 3, 10 ) ubyte -> [sp+0x10] "Inline stloc first use temp" -; V59 tmp48 [V59,T00] ( 8, 56 ) ref -> [sp+0x08] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V58 tmp47 [V58,T07] ( 3, 10 ) ubyte -> [sp+0x14] "Inline stloc first use temp" +; V59 tmp48 [V59,T00] ( 8, 56 ) ref -> [sp+0x0C] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
; V60 tmp49 [V60,T06] ( 3, 10 ) ref -> r1 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V61 tmp50 [V61,T03] ( 5, 14 ) int -> r2 "Inline stloc first use temp" -; V62 tmp51 [V62,T30] ( 2, 2 ) int -> r0 "Inlining Arg" -;* V63 tmp52 [V63,T37] ( 0, 0 ) ref -> zero-ref single-def "field V39.Array (fldOffset=0x0)" P-INDEP -;* V64 tmp53 [V64,T38] ( 0, 0 ) int -> zero-ref "field V39.MillisecondsTimeStamp (fldOffset=0x4)" P-INDEP -; V65 tmp54 [V65,T19] ( 3, 3 ) ref -> r0 single-def "arr expr" -; V66 tmp55 [V66,T41] ( 2, 0 ) ref -> r8 single-def "argument with side effect" -; V67 tmp56 [V67,T42] ( 2, 0 ) ref -> r2 single-def "argument with side effect" -; V68 cse0 [V68,T35] ( 3, 1.50) int -> r0 "CSE - conservative" -; V69 cse1 [V69,T04] ( 5, 12 ) int -> [sp+0x0C] spill-single-def "CSE - aggressive" -; V70 cse2 [V70,T13] ( 6, 4 ) int -> r7 "CSE - moderate"
+; V61 tmp50 [V61,T04] ( 5, 14 ) int -> [sp+0x10] spill-single-def "Inline stloc first use temp" +; V62 tmp51 [V62,T29] ( 2, 2 ) int -> r0 "Inlining Arg" +;* V63 tmp52 [V63,T36] ( 0, 0 ) ref -> zero-ref single-def "field V39.Array (fldOffset=0x0)" P-INDEP +;* V64 tmp53 [V64,T37] ( 0, 0 ) int -> zero-ref "field V39.MillisecondsTimeStamp (fldOffset=0x4)" P-INDEP +; V65 tmp54 [V65,T18] ( 3, 3 ) ref -> r0 single-def "arr expr" +; V66 tmp55 [V66,T40] ( 2, 0 ) ref -> r8 single-def "argument with side effect" +; V67 tmp56 [V67,T41] ( 2, 0 ) ref -> r2 single-def "argument with side effect" +; V68 cse0 [V68,T34] ( 3, 1.50) int -> r0 "CSE - conservative" +; V69 cse1 [V69,T12] ( 6, 4 ) int -> r7 "CSE - moderate"
; ; Lcl frame size = 52 @@ -133,7 +132,7 @@ G_M7055_IG04: ; bbWeight=1, gcrefRegs=0230 {r4 r5 r9}, byrefRegs=0000 {}, ; gcrRegs -[r0] mov r10, 0 movs r3, 1
- str r3, [sp+0x24] // [V06 loc3]
+ str r3, [sp+0x28] // [V06 loc3]
ldr r0, [r9+0x04] cmp r0, r8 bls G_M7055_IG21 @@ -157,7 +156,7 @@ G_M7055_IG06: ; bbWeight=0.50, gcrefRegs=0230 {r4 r5 r9}, byrefRegs=0000 and r0, r8, 31 movs r1, 16 lsl r2, r1, r0
- str r2, [sp+0x1C] // [V45 tmp34]
+ str r2, [sp+0x20] // [V45 tmp34]
cmp r2, 0 bge SHORT G_M7055_IG07 movw r0, 0xd1ff @@ -171,7 +170,7 @@ G_M7055_IG06: ; bbWeight=0.50, gcrefRegs=0230 {r4 r5 r9}, byrefRegs=0000 ; gcr arg pop 0 ;; size=48 bbWeight=0.50 PerfScore 7.50 G_M7055_IG07: ; bbWeight=0.50, gcrefRegs=0230 {r4 r5 r9}, byrefRegs=0000 {}, byref, isz
- ldr r2, [sp+0x1C] // [V45 tmp34]
+ ldr r2, [sp+0x20] // [V45 tmp34]
cmp r6, r2 bne G_M7055_IG30 lsl r1, r8, 3 @@ -258,55 +257,55 @@ G_M7055_IG11: ; bbWeight=0, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 ; gcr arg pop 0 mov r3, r0 movs r2, 0
- str r2, [sp+0x14] // [V51 tmp40] - ldr r1, [r9+0x04] - str r1, [sp+0x0C] // [V69 cse1] - cmp r1, 0 - str r10, [sp+0x28] // [V05 loc2]
+ str r2, [sp+0x18] // [V51 tmp40] + ldr r0, [r9+0x04] + cmp r0, 0
ble SHORT G_M7055_IG18
- ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=26 bbWeight=0 PerfScore 0.00
G_M7055_IG12: ; bbWeight=4, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz
- cmp r3, r1
+ ldr r0, [r9+0x04] + cmp r3, r0
bhs G_M7055_IG28 add r0, r9, 8 ; byrRegs +[r0]
- str r3, [sp+0x18] // [V50 tmp39] - lsl lr, r3, 2 - ldr lr, [r0+lr] - ; gcrRegs +[lr] - str lr, [sp+0x08] // [V59 tmp48] - ; GC ptr vars +{V59} - ldrsb r0, [lr] - ; byrRegs -[r0] - mov r12, 0 - str r12, [sp+0x10] // [V58 tmp47] - mov r0, lr - ; gcrRegs +[r0] - movw r10, 0xd1ff - movt r10, 0xd1ff - blx r10 // <unknown method> - ; gcrRegs -[r0 lr] - ; gcr arg pop 0 - ldr r10, [sp+0x08] // [V59 tmp48] - ; gcrRegs +[r10] - ldr r1, [r10+0x04]
+ str r3, [sp+0x1C] // [V50 tmp39] + lsls r1, r3, 2 + ldr r1, [r0+r1]
; gcrRegs +[r1]
- ldr r2, [r10+0x0C]
+ str r1, [sp+0x0C] // [V59 tmp48] + ; GC ptr vars +{V59} + ldrsb r0, [r1] + ; byrRegs -[r0] + mov lr, 0 + str lr, [sp+0x14] // [V58 tmp47] + mov r0, r1 + ; gcrRegs +[r0] + movw r12, 0xd1ff + movt r12, 0xd1ff + blx r12 // <unknown method> + ; gcrRegs -[r0-r1] + ; gcr arg pop 0 + ldr r2, [sp+0x0C] // [V59 tmp48] + ; gcrRegs +[r2] + ldr r1, [r2+0x04] + ; gcrRegs +[r1] + ldr r3, [r2+0x0C] + str r3, [sp+0x10] // [V61 tmp50]
ldr r0, [r1+0x04]
- cmp r0, r2
+ cmp r0, r3
bls SHORT G_M7055_IG15
- ;; size=66 bbWeight=4 PerfScore 80.00 -G_M7055_IG13: ; bbWeight=2, gcrefRegs=0672 {r1 r4 r5 r6 r9 r10}, byrefRegs=0000 {}, byref, isz - cmp r2, 0
+ ;; size=60 bbWeight=4 PerfScore 88.00 +G_M7055_IG13: ; bbWeight=2, gcrefRegs=0276 {r1 r2 r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz + cmp r3, 0
bne SHORT G_M7055_IG14 movs r0, 0
- str r0, [r10+0x10] - ;; size=10 bbWeight=2 PerfScore 8.00 -G_M7055_IG14: ; bbWeight=2, gcrefRegs=0672 {r1 r4 r5 r6 r9 r10}, byrefRegs=0000 {}, byref
+ str r0, [r2+0x10] + ;; size=8 bbWeight=2 PerfScore 8.00 +G_M7055_IG14: ; bbWeight=2, gcrefRegs=0276 {r1 r2 r4 r5 r6 r9}, byrefRegs=0000 {}, byref
adds r1, 8 ; gcrRegs -[r1] ; byrRegs +[r1]
- lsls r0, r2, 2
+ lsls r0, r3, 2
adds r0, r1, r0 ; byrRegs +[r0] mov r1, r6 @@ -317,40 +316,42 @@ G_M7055_IG14: ; bbWeight=2, gcrefRegs=0672 {r1 r4 r5 r6 r9 r10}, byrefReg blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0]
- adds r0, r2, 1 - str r0, [r10+0x0C] - mov r12, 1 - str r12, [sp+0x10] // [V58 tmp47] - ;; size=32 bbWeight=2 PerfScore 22.00 -G_M7055_IG15: ; bbWeight=4, gcrefRegs=0670 {r4 r5 r6 r9 r10}, byrefRegs=0000 {}, byref, isz - mov r0, r10
+ ldr r1, [sp+0x10] // [V61 tmp50] + adds r0, r1, 1 + str r0, [r2+0x0C] + mov lr, 1 + str lr, [sp+0x14] // [V58 tmp47] + ;; size=32 bbWeight=2 PerfScore 24.00 +G_M7055_IG15: ; bbWeight=4, gcrefRegs=0274 {r2 r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz + mov r0, r2
; gcrRegs +[r0] ...

-24 (-2.95%) : 16305.dasm - System.Buffers.SharedArrayPool`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:Return(Microsoft.CodeAnalysis.Testing.DiagnosticResult[],ubyte):this (FullOpts)

@@ -10,31 +10,31 @@ ; ; V00 this [V00,T09] ( 8, 5 ) ref -> r5 this class-hnd single-def <System.Buffers.SharedArrayPool`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]> ; V01 arg1 [V01,T08] ( 8, 6 ) ref -> r4 class-hnd single-def <Microsoft.CodeAnalysis.Testing.DiagnosticResult[]>
-; V02 arg2 [V02,T12] ( 3, 2.50) ubyte -> r6 single-def
+; V02 arg2 [V02,T11] ( 3, 2.50) ubyte -> r6 single-def
; V03 loc0 [V03,T10] ( 8, 5 ) int -> r8 ;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V05 loc2 [V05,T20] ( 4, 2.50) ubyte -> [sp+0x2C] -; V06 loc3 [V06,T23] ( 3, 2 ) ubyte -> [sp+0x28] -; V07 loc4 [V07,T16] ( 4, 3 ) ref -> r9 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource> -; V08 loc5 [V08,T21] ( 4, 2 ) byref -> r2 single-def -; V09 loc6 [V09,T18] ( 3, 3 ) ref -> r6 class-hnd single-def <System.Array>
+; V05 loc2 [V05,T19] ( 4, 2.50) ubyte -> r10 +; V06 loc3 [V06,T22] ( 3, 2 ) ubyte -> [sp+0x24] +; V07 loc4 [V07,T15] ( 4, 3 ) ref -> r9 class-hnd exact single-def <System.Buffers.ArrayPoolEventSource> +; V08 loc5 [V08,T20] ( 4, 2 ) byref -> r2 single-def +; V09 loc6 [V09,T17] ( 3, 3 ) ref -> r6 class-hnd single-def <System.Array>
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Buffers.SharedArrayPoolPartitions> ; V11 OutArgs [V11 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T15] ( 2, 4 ) ref -> r9 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]> -; V13 tmp2 [V13,T14] ( 5, 4 ) ref -> r9 -; V14 tmp3 [V14,T25] ( 2, 2 ) int -> r6 "impAppendStmt" -; V15 tmp4 [V15,T26] ( 2, 2 ) int -> [sp+0x24] spill-single-def "impAppendStmt" -; V16 tmp5 [V16,T27] ( 2, 2 ) int -> r6 "impAppendStmt" -; V17 tmp6 [V17,T28] ( 2, 2 ) int -> r7 "impAppendStmt"
+; V12 tmp1 [V12,T14] ( 2, 4 ) ref -> r9 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]> +; V13 tmp2 [V13,T13] ( 5, 4 ) ref -> r9 +; V14 tmp3 [V14,T24] ( 2, 2 ) int -> r6 "impAppendStmt" +; V15 tmp4 [V15,T25] ( 2, 2 ) int -> [sp+0x20] spill-single-def "impAppendStmt" +; V16 tmp5 [V16,T26] ( 2, 2 ) int -> r6 "impAppendStmt" +; V17 tmp6 [V17,T27] ( 2, 2 ) int -> r7 "impAppendStmt"
;* V18 tmp7 [V18 ] ( 0, 0 ) ref -> zero-ref single-def ;* V19 tmp8 [V19 ] ( 0, 0 ) int -> zero-ref ;* V20 tmp9 [V20 ] ( 0, 0 ) int -> zero-ref
-; V21 tmp10 [V21,T36] ( 2, 1 ) int -> r3
+; V21 tmp10 [V21,T35] ( 2, 1 ) int -> r3
;* V22 tmp11 [V22 ] ( 0, 0 ) ref -> zero-ref single-def ;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref ;* V24 tmp13 [V24 ] ( 0, 0 ) int -> zero-ref ;* V25 tmp14 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp15 [V26,T31] ( 3, 1.50) int -> r0
+; V26 tmp15 [V26,T30] ( 3, 1.50) int -> r0
;* V27 tmp16 [V27 ] ( 0, 0 ) ref -> zero-ref single-def ;* V28 tmp17 [V28 ] ( 0, 0 ) int -> zero-ref ;* V29 tmp18 [V29 ] ( 0, 0 ) int -> zero-ref @@ -45,47 +45,46 @@ ;* V34 tmp23 [V34 ] ( 0, 0 ) int -> zero-ref ;* V35 tmp24 [V35 ] ( 0, 0 ) int -> zero-ref ;* V36 tmp25 [V36 ] ( 0, 0 ) int -> zero-ref
-; V37 tmp26 [V37,T32] ( 3, 1.50) int -> r1 -; V38 tmp27 [V38,T29] ( 2, 2 ) int -> r6 "impAppendStmt"
+; V37 tmp26 [V37,T31] ( 3, 1.50) int -> r1 +; V38 tmp27 [V38,T28] ( 2, 2 ) int -> r6 "impAppendStmt"
;* V39 tmp28 [V39 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Buffers.SharedArrayPoolThreadLocalArray>
-; V40 tmp29 [V40,T24] ( 2, 2 ) ref -> r3 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions> -; V41 tmp30 [V41,T22] ( 4, 2 ) ref -> r3 -; V42 tmp31 [V42,T39] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V40 tmp29 [V40,T23] ( 2, 2 ) ref -> r3 class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions> +; V41 tmp30 [V41,T21] ( 4, 2 ) ref -> r3 +; V42 tmp31 [V42,T38] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V43 tmp32 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V44 tmp33 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V45 tmp34 [V45,T33] ( 3, 1.50) int -> [sp+0x20] spill-single-def "Inline stloc first use temp"
+; V45 tmp34 [V45,T32] ( 3, 1.50) int -> [sp+0x1C] spill-single-def "Inline stloc first use temp"
;* V46 tmp35 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V47 tmp36 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V48 tmp37 [V48,T34] ( 3, 1.50) ubyte -> r6 "Inline return value spill temp" -; V49 tmp38 [V49,T11] ( 3, 4.50) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V50 tmp39 [V50,T01] ( 7, 22 ) int -> [sp+0x1C] "Inline stloc first use temp" -; V51 tmp40 [V51,T05] ( 4, 12 ) int -> [sp+0x18] "Inline stloc first use temp" -; V52 tmp41 [V52,T02] ( 2, 16 ) int -> r10 "dup spill"
+; V48 tmp37 [V48,T33] ( 3, 1.50) ubyte -> r6 "Inline return value spill temp" +; V49 tmp38 [V49,T02] ( 6, 16.50) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V50 tmp39 [V50,T01] ( 7, 22 ) int -> [sp+0x18] "Inline stloc first use temp" +; V51 tmp40 [V51,T05] ( 4, 12 ) int -> [sp+0x14] "Inline stloc first use temp" +; V52 tmp41 [V52,T03] ( 2, 16 ) int -> r3 "dup spill"
;* V53 tmp42 [V53 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V54 tmp43 [V54,T40] ( 3, 0 ) int -> r0 "Inline return value spill temp" -; V55 tmp44 [V55,T17] ( 4, 3 ) int -> r3 "dup spill"
+; V54 tmp43 [V54,T39] ( 3, 0 ) int -> r0 "Inline return value spill temp" +; V55 tmp44 [V55,T16] ( 4, 3 ) int -> r3 "dup spill"
;* V56 tmp45 [V56 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V57 tmp46 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V58 tmp47 [V58,T07] ( 3, 10 ) ubyte -> [sp+0x14] "Inline stloc first use temp" -; V59 tmp48 [V59,T00] ( 8, 56 ) ref -> [sp+0x0C] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V58 tmp47 [V58,T07] ( 3, 10 ) ubyte -> [sp+0x10] "Inline stloc first use temp" +; V59 tmp48 [V59,T00] ( 8, 56 ) ref -> [sp+0x08] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
; V60 tmp49 [V60,T06] ( 3, 10 ) ref -> r1 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V61 tmp50 [V61,T03] ( 5, 14 ) int -> r2 "Inline stloc first use temp" -; V62 tmp51 [V62,T30] ( 2, 2 ) int -> r0 "Inlining Arg" -;* V63 tmp52 [V63,T37] ( 0, 0 ) ref -> zero-ref single-def "field V39.Array (fldOffset=0x0)" P-INDEP -;* V64 tmp53 [V64,T38] ( 0, 0 ) int -> zero-ref "field V39.MillisecondsTimeStamp (fldOffset=0x4)" P-INDEP -; V65 tmp54 [V65,T19] ( 3, 3 ) ref -> r0 single-def "arr expr" -; V66 tmp55 [V66,T41] ( 2, 0 ) ref -> r5 single-def "argument with side effect" -; V67 tmp56 [V67,T42] ( 2, 0 ) ref -> r2 single-def "argument with side effect" -; V68 cse0 [V68,T35] ( 3, 1.50) int -> r0 "CSE - conservative" -; V69 cse1 [V69,T04] ( 5, 12 ) int -> [sp+0x10] spill-single-def "CSE - aggressive" -; V70 cse2 [V70,T13] ( 6, 4 ) int -> r7 "CSE - moderate"
+; V61 tmp50 [V61,T04] ( 5, 14 ) int -> [sp+0x0C] spill-single-def "Inline stloc first use temp" +; V62 tmp51 [V62,T29] ( 2, 2 ) int -> r0 "Inlining Arg" +;* V63 tmp52 [V63,T36] ( 0, 0 ) ref -> zero-ref single-def "field V39.Array (fldOffset=0x0)" P-INDEP +;* V64 tmp53 [V64,T37] ( 0, 0 ) int -> zero-ref "field V39.MillisecondsTimeStamp (fldOffset=0x4)" P-INDEP +; V65 tmp54 [V65,T18] ( 3, 3 ) ref -> r0 single-def "arr expr" +; V66 tmp55 [V66,T40] ( 2, 0 ) ref -> r5 single-def "argument with side effect" +; V67 tmp56 [V67,T41] ( 2, 0 ) ref -> r2 single-def "argument with side effect" +; V68 cse0 [V68,T34] ( 3, 1.50) int -> r0 "CSE - conservative" +; V69 cse1 [V69,T12] ( 6, 4 ) int -> r7 "CSE - moderate"
;
-; Lcl frame size = 52
+; Lcl frame size = 44
G_M10319_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 52 - add r11, sp, 80
+ sub sp, 44 + add r11, sp, 72
mov r5, r0 ; gcrRegs +[r5] mov r4, r1 @@ -134,7 +133,7 @@ G_M10319_IG04: ; bbWeight=1, gcrefRegs=0230 {r4 r5 r9}, byrefRegs=0000 {} ; gcrRegs -[r0] mov r10, 0 movs r3, 1
- str r3, [sp+0x28] // [V06 loc3]
+ str r3, [sp+0x24] // [V06 loc3]
ldr r0, [r9+0x04] cmp r0, r8 bls G_M10319_IG21 @@ -158,7 +157,7 @@ G_M10319_IG06: ; bbWeight=0.50, gcrefRegs=0230 {r4 r5 r9}, byrefRegs=0000 and r0, r8, 31 movs r1, 16 lsl r2, r1, r0
- str r2, [sp+0x20] // [V45 tmp34]
+ str r2, [sp+0x1C] // [V45 tmp34]
cmp r2, 0 bge SHORT G_M10319_IG07 movw r0, 0xd1ff @@ -172,7 +171,7 @@ G_M10319_IG06: ; bbWeight=0.50, gcrefRegs=0230 {r4 r5 r9}, byrefRegs=0000 ; gcr arg pop 0 ;; size=48 bbWeight=0.50 PerfScore 7.50 G_M10319_IG07: ; bbWeight=0.50, gcrefRegs=0230 {r4 r5 r9}, byrefRegs=0000 {}, byref, isz
- ldr r2, [sp+0x20] // [V45 tmp34]
+ ldr r2, [sp+0x1C] // [V45 tmp34]
cmp r6, r2 bne G_M10319_IG30 lsl r1, r8, 3 @@ -259,55 +258,55 @@ G_M10319_IG11: ; bbWeight=0, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 ; gcr arg pop 0 mov r3, r0 movs r2, 0
- str r2, [sp+0x18] // [V51 tmp40] - ldr r1, [r9+0x04] - str r1, [sp+0x10] // [V69 cse1] - cmp r1, 0 - str r10, [sp+0x2C] // [V05 loc2]
+ str r2, [sp+0x14] // [V51 tmp40] + ldr r0, [r9+0x04] + cmp r0, 0
ble SHORT G_M10319_IG18
- ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=26 bbWeight=0 PerfScore 0.00
G_M10319_IG12: ; bbWeight=4, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz
- cmp r3, r1
+ ldr r0, [r9+0x04] + cmp r3, r0
bhs G_M10319_IG28 add r0, r9, 8 ; byrRegs +[r0]
- str r3, [sp+0x1C] // [V50 tmp39] - lsl lr, r3, 2 - ldr lr, [r0+lr] - ; gcrRegs +[lr] - str lr, [sp+0x0C] // [V59 tmp48] - ; GC ptr vars +{V59} - ldrsb r0, [lr] - ; byrRegs -[r0] - mov r12, 0 - str r12, [sp+0x14] // [V58 tmp47] - mov r0, lr - ; gcrRegs +[r0] - movw r10, 0xd1ff - movt r10, 0xd1ff - blx r10 // <unknown method> - ; gcrRegs -[r0 lr] - ; gcr arg pop 0 - ldr r10, [sp+0x0C] // [V59 tmp48] - ; gcrRegs +[r10] - ldr r1, [r10+0x04]
+ str r3, [sp+0x18] // [V50 tmp39] + lsls r1, r3, 2 + ldr r1, [r0+r1]
; gcrRegs +[r1]
- ldr r2, [r10+0x0C]
+ str r1, [sp+0x08] // [V59 tmp48] + ; GC ptr vars +{V59} + ldrsb r0, [r1] + ; byrRegs -[r0] + mov lr, 0 + str lr, [sp+0x10] // [V58 tmp47] + mov r0, r1 + ; gcrRegs +[r0] + movw r12, 0xd1ff + movt r12, 0xd1ff + blx r12 // <unknown method> + ; gcrRegs -[r0-r1] + ; gcr arg pop 0 + ldr r2, [sp+0x08] // [V59 tmp48] + ; gcrRegs +[r2] + ldr r1, [r2+0x04] + ; gcrRegs +[r1] + ldr r3, [r2+0x0C] + str r3, [sp+0x0C] // [V61 tmp50]
ldr r0, [r1+0x04]
- cmp r0, r2
+ cmp r0, r3
bls SHORT G_M10319_IG15
- ;; size=66 bbWeight=4 PerfScore 80.00 -G_M10319_IG13: ; bbWeight=2, gcrefRegs=0672 {r1 r4 r5 r6 r9 r10}, byrefRegs=0000 {}, byref, isz - cmp r2, 0
+ ;; size=60 bbWeight=4 PerfScore 88.00 +G_M10319_IG13: ; bbWeight=2, gcrefRegs=0276 {r1 r2 r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz + cmp r3, 0
bne SHORT G_M10319_IG14 movs r0, 0
- str r0, [r10+0x10] - ;; size=10 bbWeight=2 PerfScore 8.00 -G_M10319_IG14: ; bbWeight=2, gcrefRegs=0672 {r1 r4 r5 r6 r9 r10}, byrefRegs=0000 {}, byref
+ str r0, [r2+0x10] + ;; size=8 bbWeight=2 PerfScore 8.00 +G_M10319_IG14: ; bbWeight=2, gcrefRegs=0276 {r1 r2 r4 r5 r6 r9}, byrefRegs=0000 {}, byref
adds r1, 8 ; gcrRegs -[r1] ; byrRegs +[r1]
- lsls r0, r2, 2
+ lsls r0, r3, 2
adds r0, r1, r0 ; byrRegs +[r0] mov r1, r6 @@ -318,40 +317,42 @@ G_M10319_IG14: ; bbWeight=2, gcrefRegs=0672 {r1 r4 r5 r6 r9 r10}, byrefRe blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0]
- adds r0, r2, 1 - str r0, [r10+0x0C] - mov r12, 1 - str r12, [sp+0x14] // [V58 tmp47] - ;; size=32 bbWeight=2 PerfScore 22.00 -G_M10319_IG15: ; bbWeight=4, gcrefRegs=0670 {r4 r5 r6 r9 r10}, byrefRegs=0000 {}, byref, isz
...

-2 (-2.27%) : 144291.dasm - System.SpanTests.ReadOnlySpanTests+<>cDisplayClass21_0:b9():this (FullOpts)

@@ -35,24 +35,24 @@ ;* V24 tmp23 [V24 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V25 tmp24 [V25 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V26 tmp25 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
-;* V27 tmp26 [V27,T06] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V28 tmp27 [V28,T03] ( 2, 2 ) int -> r3 "Inline stloc first use temp"
+;* V27 tmp26 [V27,T05] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V28 tmp27 [V28,T03] ( 3, 3 ) int -> r1 "Inline stloc first use temp"
;* V29 tmp28 [V29 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V30 tmp29 [V30 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V31 tmp30 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V32 tmp31 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp32 [V33 ] ( 0, 0 ) int -> zero-ref "field V02._value (fldOffset=0x0)" P-INDEP
-;* V34 tmp33 [V34,T07] ( 0, 0 ) int -> zero-ref "field V04._value (fldOffset=0x0)" P-INDEP
+;* V34 tmp33 [V34,T06] ( 0, 0 ) int -> zero-ref "field V04._value (fldOffset=0x0)" P-INDEP
;* V35 tmp34 [V35 ] ( 0, 0 ) int -> zero-ref "field V05._value (fldOffset=0x0)" P-INDEP ;* V36 tmp35 [V36 ] ( 0, 0 ) int -> zero-ref "field V06.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V37 tmp36 [V37,T08] ( 0, 0 ) int -> zero-ref "field V06.<End>k__BackingField (fldOffset=0x4)" P-INDEP
+;* V37 tmp36 [V37,T07] ( 0, 0 ) int -> zero-ref "field V06.<End>k__BackingField (fldOffset=0x4)" P-INDEP
;* V38 tmp37 [V38 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP ;* V39 tmp38 [V39 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x4)" P-INDEP ;* V40 tmp39 [V40 ] ( 0, 0 ) int -> zero-ref "field V08._value (fldOffset=0x0)" P-INDEP ;* V41 tmp40 [V41 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP ;* V42 tmp41 [V42 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x4)" P-INDEP ;* V43 tmp42 [V43 ] ( 0, 0 ) int -> zero-ref "field V10.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V44 tmp43 [V44,T09] ( 0, 0 ) int -> zero-ref "field V10.<End>k__BackingField (fldOffset=0x4)" P-INDEP
+;* V44 tmp43 [V44,T08] ( 0, 0 ) int -> zero-ref "field V10.<End>k__BackingField (fldOffset=0x4)" P-INDEP
;* V45 tmp44 [V45 ] ( 0, 0 ) int -> zero-ref "field V11.Item1 (fldOffset=0x0)" P-INDEP ;* V46 tmp45 [V46 ] ( 0, 0 ) int -> zero-ref "field V11.Item2 (fldOffset=0x4)" P-INDEP ;* V47 tmp46 [V47 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP @@ -67,8 +67,7 @@ ;* V56 tmp55 [V56 ] ( 0, 0 ) int -> zero-ref "field V21._value (fldOffset=0x0)" P-INDEP ;* V57 tmp56 [V57 ] ( 0, 0 ) int -> zero-ref "field V22._value (fldOffset=0x0)" P-INDEP ;* V58 tmp57 [V58 ] ( 0, 0 ) int -> zero-ref "field V26.Item1 (fldOffset=0x0)" P-INDEP
-; V59 tmp58 [V59,T05] ( 2, 2 ) int -> r1 "field V26.Item2 (fldOffset=0x4)" P-INDEP -; V60 cse0 [V60,T04] ( 3, 3 ) int -> r1 "CSE - moderate"
+; V59 tmp58 [V59,T04] ( 2, 2 ) int -> r1 "field V26.Item2 (fldOffset=0x4)" P-INDEP
; ; Lcl frame size = 0 @@ -84,12 +83,11 @@ G_M60991_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byre ldr r0, [r0+0x04] ; gcrRegs -[r0] mov r1, r0
- mov r3, r1 - cmp r3, r0
+ cmp r1, r0
bhi SHORT G_M60991_IG06 cmp r1, 0 bge SHORT G_M60991_IG04
- ;; size=20 bbWeight=1 PerfScore 10.00
+ ;; size=18 bbWeight=1 PerfScore 9.00
G_M60991_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r0, 0xd1ff movt r0, 0xd1ff @@ -119,7 +117,7 @@ G_M60991_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 88, prolog size 6, PerfScore 17.00, instruction count 32, allocated bytes for code 88 (MethodHash=49eb11c0) for method System.SpanTests.ReadOnlySpanTests+<>c__DisplayClass21_0:<StringAsSpanNullNonZeroStartAndLength>b__9():this (FullOpts)
+Total bytes of code 86, prolog size 6, PerfScore 16.00, instruction count 31, allocated bytes for code 86 (MethodHash=49eb11c0) for method System.SpanTests.ReadOnlySpanTests+<>c__DisplayClass21_0:<StringAsSpanNullNonZeroStartAndLength>b__9():this (FullOpts)
; ============================================================ Unwind Info: @@ -131,7 +129,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 44 (0x0002c) Actual length = 88 (0x000058)
+ Function Length : 43 (0x0002b) Actual length = 86 (0x000056)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+16 (+2.02%) : 12348.dasm - System.Buffers.SharedArrayPool1[System.Collections.Immutable.ImmutableArray1[System.Canon]]:Rent(int):System.Collections.Immutable.ImmutableArray`1[System.Canon][]:this (FullOpts)

@@ -13,15 +13,15 @@ ; V02 loc0 [V02,T15] ( 8, 4.50) ref -> r6 class-hnd exact single-def <<unknown class>> ; V03 loc1 [V03,T10] ( 14, 7 ) ref -> r8 class-hnd <System.Collections.Immutable.ImmutableArray`1[System.__Canon][]> ; V04 loc2 [V04,T14] ( 9, 5 ) int -> r7
-; V05 loc3 [V05,T17] ( 5, 3.50) ref -> r0 class-hnd exact single-def <<unknown class>> -; V06 loc4 [V06,T36] ( 3, 1.50) ref -> r0 class-hnd exact single-def <<unknown class>> -; V07 loc5 [V07,T37] ( 3, 1.50) ref -> r0 class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions> -; V08 loc6 [V08,T39] ( 3, 1.50) int -> r9
+; V05 loc3 [V05,T16] ( 5, 3.50) ref -> r0 class-hnd exact single-def <<unknown class>> +; V06 loc4 [V06,T35] ( 3, 1.50) ref -> r0 class-hnd exact single-def <<unknown class>> +; V07 loc5 [V07,T36] ( 3, 1.50) ref -> r0 class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions> +; V08 loc6 [V08,T38] ( 3, 1.50) int -> r9
; V09 OutArgs [V09 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V10 tmp1 [V10 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V11 tmp2 [V11,T25] ( 2, 2 ) int -> r5 "impAppendStmt" -; V12 tmp3 [V12,T26] ( 2, 2 ) int -> r5 "impAppendStmt" -; V13 tmp4 [V13,T27] ( 2, 2 ) int -> r3 "impAppendStmt"
+; V11 tmp2 [V11,T24] ( 2, 2 ) int -> r5 "impAppendStmt" +; V12 tmp3 [V12,T25] ( 2, 2 ) int -> r5 "impAppendStmt" +; V13 tmp4 [V13,T26] ( 2, 2 ) int -> r3 "impAppendStmt"
;* V14 tmp5 [V14 ] ( 0, 0 ) ref -> zero-ref single-def ;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref ;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref @@ -32,56 +32,55 @@ ;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref ;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref ;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref
-; V24 tmp15 [V24,T40] ( 3, 1.50) int -> r0
+; V24 tmp15 [V24,T39] ( 3, 1.50) int -> r0
;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V26 tmp17 [V26,T28] ( 2, 2 ) int -> r5 "impAppendStmt" -; V27 tmp18 [V27,T29] ( 2, 2 ) int -> r9 "impAppendStmt" -; V28 tmp19 [V28,T30] ( 2, 2 ) int -> r5 "impAppendStmt" -; V29 tmp20 [V29,T31] ( 2, 2 ) int -> r9 "impAppendStmt"
+; V26 tmp17 [V26,T27] ( 2, 2 ) int -> r5 "impAppendStmt" +; V27 tmp18 [V27,T28] ( 2, 2 ) int -> r9 "impAppendStmt" +; V28 tmp19 [V28,T29] ( 2, 2 ) int -> r5 "impAppendStmt" +; V29 tmp20 [V29,T30] ( 2, 2 ) int -> r9 "impAppendStmt"
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V31 tmp22 [V31,T38] ( 3, 1.50) ref -> r8 class-hnd "Inline return value spill temp" <System.Array> -; V32 tmp23 [V32,T16] ( 3, 4.50) ref -> r8 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V31 tmp22 [V31,T37] ( 3, 1.50) ref -> r8 class-hnd "Inline return value spill temp" <System.Array> +; V32 tmp23 [V32,T02] ( 6, 16.50) ref -> r8 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
; V33 tmp24 [V33,T01] ( 7, 22 ) int -> r5 "Inline stloc first use temp" ; V34 tmp25 [V34,T04] ( 4, 12 ) int -> r9 "Inline stloc first use temp" ;* V35 tmp26 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Array> ;* V36 tmp27 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Array>
-; V37 tmp28 [V37,T02] ( 2, 16 ) int -> r5 "dup spill"
+; V37 tmp28 [V37,T03] ( 2, 16 ) int -> r5 "dup spill"
;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V39 tmp30 [V39,T46] ( 3, 0 ) int -> r0 "Inline return value spill temp" -; V40 tmp31 [V40,T18] ( 4, 3 ) int -> r9 "dup spill"
+; V39 tmp30 [V39,T45] ( 3, 0 ) int -> r0 "Inline return value spill temp" +; V40 tmp31 [V40,T17] ( 4, 3 ) int -> r9 "dup spill"
;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V42 tmp33 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
-; V43 tmp34 [V43,T06] ( 4, 10.50) ref -> [sp+0x10] class-hnd "Inline stloc first use temp" <System.Array> -; V44 tmp35 [V44,T00] ( 7, 52 ) ref -> [sp+0x0C] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V43 tmp34 [V43,T06] ( 4, 10.50) ref -> [sp+0x08] class-hnd "Inline stloc first use temp" <System.Array> +; V44 tmp35 [V44,T00] ( 7, 52 ) ref -> r10 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
; V45 tmp36 [V45,T07] ( 3, 10 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V46 tmp37 [V46,T05] ( 4, 12 ) int -> r2 "Inline stloc first use temp" -; V47 tmp38 [V47,T41] ( 3, 1.50) int -> r5 "Inline stloc first use temp" -; V48 tmp39 [V48,T47] ( 2, 0 ) ref -> r1 single-def "argument with side effect" -; V49 tmp40 [V49,T32] ( 2, 2 ) int -> r0 "argument with side effect" -; V50 tmp41 [V50,T33] ( 2, 2 ) int -> r3 "argument with side effect" -; V51 tmp42 [V51,T34] ( 2, 2 ) int -> r3 "argument with side effect" -; V52 tmp43 [V52,T35] ( 2, 2 ) int -> r3 "argument with side effect" -; V53 cse0 [V53,T42] ( 3, 1.50) int -> r0 "CSE - conservative" -; V54 cse1 [V54,T43] ( 3, 1.50) int -> r3 "CSE - conservative" -; V55 cse2 [V55,T44] ( 2, 1 ) int -> r1 "CSE - conservative" -; V56 cse3 [V56,T03] ( 5, 12 ) int -> r10 "CSE - aggressive" -; V57 cse4 [V57,T09] ( 2, 8 ) int -> r1 "CSE - aggressive" -; V58 cse5 [V58,T12] ( 3, 6 ) byref -> r0 "CSE - moderate" -; V59 cse6 [V59,T13] ( 3, 6 ) int -> r1 "CSE - moderate" -; V60 cse7 [V60,T45] ( 2, 1 ) int -> r3 "CSE - conservative" -; V61 rat0 [V61,T21] ( 3, 2.20) int -> r0 "Spilling to split statement for tree" -; V62 rat1 [V62,T23] ( 3, 2 ) int -> r1 "runtime lookup" -; V63 rat2 [V63,T19] ( 3, 2.80) int -> r1 "fgMakeTemp is creating a new local variable" -; V64 rat3 [V64,T22] ( 3, 2.20) int -> r0 "Spilling to split statement for tree" -; V65 rat4 [V65,T24] ( 3, 2 ) int -> r0 "runtime lookup" -; V66 rat5 [V66,T20] ( 3, 2.80) int -> r3 "fgMakeTemp is creating a new local variable"
+; V46 tmp37 [V46,T05] ( 4, 12 ) int -> r3 "Inline stloc first use temp" +; V47 tmp38 [V47,T40] ( 3, 1.50) int -> r5 "Inline stloc first use temp" +; V48 tmp39 [V48,T46] ( 2, 0 ) ref -> r1 single-def "argument with side effect" +; V49 tmp40 [V49,T31] ( 2, 2 ) int -> r0 "argument with side effect" +; V50 tmp41 [V50,T32] ( 2, 2 ) int -> r3 "argument with side effect" +; V51 tmp42 [V51,T33] ( 2, 2 ) int -> r3 "argument with side effect" +; V52 tmp43 [V52,T34] ( 2, 2 ) int -> r3 "argument with side effect" +; V53 cse0 [V53,T41] ( 3, 1.50) int -> r0 "CSE - conservative" +; V54 cse1 [V54,T42] ( 3, 1.50) int -> r3 "CSE - conservative" +; V55 cse2 [V55,T43] ( 2, 1 ) int -> r1 "CSE - conservative" +; V56 cse3 [V56,T09] ( 2, 8 ) int -> r2 "CSE - aggressive" +; V57 cse4 [V57,T12] ( 3, 6 ) byref -> r0 "CSE - moderate" +; V58 cse5 [V58,T13] ( 3, 6 ) int -> r2 "CSE - moderate" +; V59 cse6 [V59,T44] ( 2, 1 ) int -> r3 "CSE - moderate" +; V60 rat0 [V60,T20] ( 3, 2.20) int -> r0 "Spilling to split statement for tree" +; V61 rat1 [V61,T22] ( 3, 2 ) int -> r1 "runtime lookup" +; V62 rat2 [V62,T18] ( 3, 2.80) int -> r1 "fgMakeTemp is creating a new local variable" +; V63 rat3 [V63,T21] ( 3, 2.20) int -> r0 "Spilling to split statement for tree" +; V64 rat4 [V64,T23] ( 3, 2 ) int -> r0 "runtime lookup" +; V65 rat5 [V65,T19] ( 3, 2.80) int -> r3 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 28
+; Lcl frame size = 20
G_M15442_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 28 - add r11, sp, 56
+ sub sp, 20 + add r11, sp, 48
str r0, [r11-0x24] mov r4, r0 ; gcrRegs +[r4] @@ -162,7 +161,7 @@ G_M15442_IG04: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {} ; gcrRegs +[r0] ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M15442_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add sp, 28
+ add sp, 20
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=0.50 PerfScore 1.00 G_M15442_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, gcvars, byref, isz @@ -217,103 +216,100 @@ G_M15442_IG09: ; bbWeight=0, gcrefRegs=0150 {r4 r6 r8}, byrefRegs=0000 {} ; gcr arg pop 0 mov r5, r0 mov r9, 0
- ldr r10, [r8+0x04] - cmp r10, 0
+ ldr r0, [r8+0x04] + cmp r0, 0
ble SHORT G_M15442_IG15
- ;; size=28 bbWeight=0 PerfScore 0.00
+ ;; size=26 bbWeight=0 PerfScore 0.00
G_M15442_IG10: ; bbWeight=4, gcrefRegs=0150 {r4 r6 r8}, byrefRegs=0000 {}, byref, isz
- cmp r5, r10
+ ldr r0, [r8+0x04] + cmp r5, r0
bhs G_M15442_IG33 add r0, r8, 8 ; byrRegs +[r0] lsls r3, r5, 2
- ldr r3, [r0+r3] - ; gcrRegs +[r3] - str r3, [sp+0x0C] - ; GC ptr vars +{V44} - ldrsb r0, [r3]
+ ldr r10, [r0+r3] + ; gcrRegs +[r10] + ldrsb r0, [r10]
; byrRegs -[r0]
- movs r2, 0 - str r2, [sp+0x10] // [V43 tmp34]
+ movs r3, 0 + str r3, [sp+0x08] // [V43 tmp34]
; GC ptr vars +{V43}
- mov r0, r3
+ mov r0, r10
; gcrRegs +[r0]
- movw r1, 0xd1ff - movt r1, 0xd1ff - blx r1 // <unknown method> - ; gcrRegs -[r0 r3]
+ movw r2, 0xd1ff + movt r2, 0xd1ff + blx r2 // <unknown method> + ; gcrRegs -[r0]
; gcr arg pop 0
- ldr r3, [sp+0x0C] // [V44 tmp35] - ; gcrRegs +[r3] - ldr r0, [r3+0x04]
+ ldr r0, [r10+0x04]
; gcrRegs +[r0]
- ldr r2, [r3+0x0C] - subs r2, r2, 1 - ldr r1, [r0+0x04] - cmp r1, r2
+ ldr r3, [r10+0x0C] + subs r3, r3, 1 + ldr r2, [r0+0x04] + cmp r2, r3
bls SHORT G_M15442_IG12
- ;; size=50 bbWeight=4 PerfScore 80.00 -G_M15442_IG11: ; bbWeight=2, gcVars=0000000000000001 {V44}, gcrefRegs=0159 {r0 r3 r4 r6 r8}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=56 bbWeight=4 PerfScore 76.00 +G_M15442_IG11: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0551 {r0 r4 r6 r8 r10}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V43} adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0]
- lsls r1, r2, 2 - ldr lr, [r0+r1] - ; gcrRegs +[lr] - str lr, [sp+0x10] // [V43 tmp34]
+ lsls r2, r3, 2 + ldr r1, [r0+r2] + ; gcrRegs +[r1] + str r1, [sp+0x08] // [V43 tmp34]
; GC ptr vars +{V43}
- mov r12, 0 - str r12, [r0+r1] - str r2, [r3+0x0C] - ;; size=22 bbWeight=2 PerfScore 14.00 -G_M15442_IG12: ; bbWeight=4, gcVars=0000000000000041 {V43 V44}, gcrefRegs=0158 {r3 r4 r6 r8}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[lr]
+ mov lr, 0 + str lr, [r0+r2] + str r3, [r10+0x0C] + ;; size=20 bbWeight=2 PerfScore 14.00 +G_M15442_IG12: ; bbWeight=4, gcVars=0000000000000040 {V43}, gcrefRegs=0550 {r4 r6 r8 r10}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r1]
; byrRegs -[r0]
- mov r0, r3
+ mov r0, r10
; gcrRegs +[r0] movw r3, 0xd1ff
- ; gcrRegs -[r3]
movt r3, 0xd1ff
- ; GC ptr vars -{V44}
blx r3 // <unknown method>
- ; gcrRegs -[r0]
+ ; gcrRegs -[r0 r10]
; gcr arg pop 0
- ldr r0, [sp+0x10] // [V43 tmp34] - ; gcrRegs +[r0] - cmp r0, 0
+ ldr r10, [sp+0x08] // [V43 tmp34] + ; gcrRegs +[r10] + cmp r10, 0
bne SHORT G_M15442_IG16 adds r5, r5, 1
- cmp r10, r5
+ ldr r0, [r8+0x04] + cmp r0, r5
bne SHORT G_M15442_IG14
- ;; size=24 bbWeight=4 PerfScore 40.00
+ ;; size=32 bbWeight=4 PerfScore 44.00
G_M15442_IG13: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0150 {r4 r6 r8}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0]
+ ; gcrRegs -[r10]
; GC ptr vars -{V43} movs r5, 0 ;; size=2 bbWeight=2 PerfScore 2.00 G_M15442_IG14: ; bbWeight=4, gcrefRegs=0150 {r4 r6 r8}, byrefRegs=0000 {}, byref, isz add r9, r9, 1
- cmp r10, r9
+ ldr r0, [r8+0x04] + cmp r0, r9
bgt SHORT G_M15442_IG10 ...

+16 (+2.19%) : 16303.dasm - System.Buffers.SharedArrayPool`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:Rent(int):Microsoft.CodeAnalysis.Testing.DiagnosticResult[]:this (FullOpts)

@@ -13,14 +13,14 @@ ; V02 loc0 [V02,T15] ( 8, 4.50) ref -> r6 class-hnd exact single-def <<unknown class>> ; V03 loc1 [V03,T11] ( 13, 6.50) ref -> r8 class-hnd <Microsoft.CodeAnalysis.Testing.DiagnosticResult[]> ; V04 loc2 [V04,T14] ( 9, 5 ) int -> r7
-; V05 loc3 [V05,T17] ( 5, 3.50) ref -> r0 class-hnd exact single-def <<unknown class>> -; V06 loc4 [V06,T29] ( 3, 1.50) ref -> r0 class-hnd exact single-def <<unknown class>> -; V07 loc5 [V07,T30] ( 3, 1.50) ref -> r0 class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions> -; V08 loc6 [V08,T32] ( 3, 1.50) int -> r9
+; V05 loc3 [V05,T16] ( 5, 3.50) ref -> r0 class-hnd exact single-def <<unknown class>> +; V06 loc4 [V06,T28] ( 3, 1.50) ref -> r0 class-hnd exact single-def <<unknown class>> +; V07 loc5 [V07,T29] ( 3, 1.50) ref -> r0 class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions> +; V08 loc6 [V08,T31] ( 3, 1.50) int -> r9
; V09 OutArgs [V09 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T19] ( 2, 2 ) int -> r5 "impAppendStmt" -; V11 tmp2 [V11,T20] ( 2, 2 ) int -> r5 "impAppendStmt" -; V12 tmp3 [V12,T21] ( 2, 2 ) int -> r3 "impAppendStmt"
+; V10 tmp1 [V10,T18] ( 2, 2 ) int -> r5 "impAppendStmt" +; V11 tmp2 [V11,T19] ( 2, 2 ) int -> r5 "impAppendStmt" +; V12 tmp3 [V12,T20] ( 2, 2 ) int -> r3 "impAppendStmt"
;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref single-def ;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref ;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref @@ -31,46 +31,45 @@ ;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref ;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref ;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-; V23 tmp14 [V23,T33] ( 3, 1.50) int -> r0
+; V23 tmp14 [V23,T32] ( 3, 1.50) int -> r0
;* V24 tmp15 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <Microsoft.CodeAnalysis.Testing.DiagnosticResult[]>
-; V25 tmp16 [V25,T22] ( 2, 2 ) int -> r5 "impAppendStmt" -; V26 tmp17 [V26,T23] ( 2, 2 ) int -> r9 "impAppendStmt"
+; V25 tmp16 [V25,T21] ( 2, 2 ) int -> r5 "impAppendStmt" +; V26 tmp17 [V26,T22] ( 2, 2 ) int -> r9 "impAppendStmt"
;* V27 tmp18 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <Microsoft.CodeAnalysis.Testing.DiagnosticResult[]>
-; V28 tmp19 [V28,T24] ( 2, 2 ) int -> r5 "impAppendStmt" -; V29 tmp20 [V29,T25] ( 2, 2 ) int -> r9 "impAppendStmt"
+; V28 tmp19 [V28,T23] ( 2, 2 ) int -> r5 "impAppendStmt" +; V29 tmp20 [V29,T24] ( 2, 2 ) int -> r9 "impAppendStmt"
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V31 tmp22 [V31,T31] ( 3, 1.50) ref -> r8 class-hnd "Inline return value spill temp" <System.Array> -; V32 tmp23 [V32,T16] ( 3, 4.50) ref -> r8 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V31 tmp22 [V31,T30] ( 3, 1.50) ref -> r8 class-hnd "Inline return value spill temp" <System.Array> +; V32 tmp23 [V32,T02] ( 6, 16.50) ref -> r8 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
; V33 tmp24 [V33,T01] ( 7, 22 ) int -> r5 "Inline stloc first use temp" ; V34 tmp25 [V34,T04] ( 4, 12 ) int -> r9 "Inline stloc first use temp" ;* V35 tmp26 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Array> ;* V36 tmp27 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Array>
-; V37 tmp28 [V37,T02] ( 2, 16 ) int -> r5 "dup spill"
+; V37 tmp28 [V37,T03] ( 2, 16 ) int -> r5 "dup spill"
;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V39 tmp30 [V39,T39] ( 3, 0 ) int -> r0 "Inline return value spill temp" -; V40 tmp31 [V40,T18] ( 4, 3 ) int -> r9 "dup spill"
+; V39 tmp30 [V39,T38] ( 3, 0 ) int -> r0 "Inline return value spill temp" +; V40 tmp31 [V40,T17] ( 4, 3 ) int -> r9 "dup spill"
;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V42 tmp33 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array> ; V43 tmp34 [V43,T06] ( 4, 10.50) ref -> [sp+0x0C] class-hnd "Inline stloc first use temp" <System.Array>
-; V44 tmp35 [V44,T00] ( 7, 52 ) ref -> [sp+0x08] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+; V44 tmp35 [V44,T00] ( 7, 52 ) ref -> r10 class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
; V45 tmp36 [V45,T07] ( 3, 10 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V46 tmp37 [V46,T05] ( 4, 12 ) int -> r2 "Inline stloc first use temp" -; V47 tmp38 [V47,T34] ( 3, 1.50) int -> r5 "Inline stloc first use temp"
+; V46 tmp37 [V46,T05] ( 4, 12 ) int -> r3 "Inline stloc first use temp" +; V47 tmp38 [V47,T33] ( 3, 1.50) int -> r5 "Inline stloc first use temp"
;* V48 tmp39 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.Testing.DiagnosticResult[]> ;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V50 tmp41 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <Microsoft.CodeAnalysis.Testing.DiagnosticResult[]>
-; V51 tmp42 [V51,T40] ( 2, 0 ) ref -> r1 single-def "argument with side effect" -; V52 tmp43 [V52,T26] ( 2, 2 ) int -> r3 "argument with side effect" -; V53 tmp44 [V53,T27] ( 2, 2 ) int -> r3 "argument with side effect" -; V54 tmp45 [V54,T28] ( 2, 2 ) int -> r3 "argument with side effect" -; V55 cse0 [V55,T35] ( 3, 1.50) int -> r0 "CSE - moderate" -; V56 cse1 [V56,T36] ( 3, 1.50) int -> r3 "CSE - moderate" -; V57 cse2 [V57,T37] ( 2, 1 ) int -> r1 "CSE - moderate" -; V58 cse3 [V58,T03] ( 5, 12 ) int -> r10 "CSE - aggressive" -; V59 cse4 [V59,T08] ( 2, 8 ) int -> r1 "CSE - aggressive" -; V60 cse5 [V60,T12] ( 3, 6 ) byref -> r0 "CSE - moderate" -; V61 cse6 [V61,T13] ( 3, 6 ) int -> r1 "CSE - moderate" -; V62 cse7 [V62,T38] ( 2, 1 ) int -> r3 "CSE - moderate"
+; V51 tmp42 [V51,T39] ( 2, 0 ) ref -> r1 single-def "argument with side effect" +; V52 tmp43 [V52,T25] ( 2, 2 ) int -> r3 "argument with side effect" +; V53 tmp44 [V53,T26] ( 2, 2 ) int -> r3 "argument with side effect" +; V54 tmp45 [V54,T27] ( 2, 2 ) int -> r3 "argument with side effect" +; V55 cse0 [V55,T34] ( 3, 1.50) int -> r0 "CSE - moderate" +; V56 cse1 [V56,T35] ( 3, 1.50) int -> r3 "CSE - moderate" +; V57 cse2 [V57,T36] ( 2, 1 ) int -> r1 "CSE - moderate" +; V58 cse3 [V58,T08] ( 2, 8 ) int -> r2 "CSE - aggressive" +; V59 cse4 [V59,T12] ( 3, 6 ) byref -> r0 "CSE - moderate" +; V60 cse5 [V60,T13] ( 3, 6 ) int -> r2 "CSE - moderate" +; V61 cse6 [V61,T37] ( 2, 1 ) int -> r3 "CSE - moderate"
; ; Lcl frame size = 20 @@ -215,103 +214,100 @@ G_M8946_IG09: ; bbWeight=0, gcrefRegs=0150 {r4 r6 r8}, byrefRegs=0000 {}, ; gcr arg pop 0 mov r5, r0 mov r9, 0
- ldr r10, [r8+0x04] - cmp r10, 0
+ ldr r0, [r8+0x04] + cmp r0, 0
ble SHORT G_M8946_IG15
- ;; size=28 bbWeight=0 PerfScore 0.00
+ ;; size=26 bbWeight=0 PerfScore 0.00
G_M8946_IG10: ; bbWeight=4, gcrefRegs=0150 {r4 r6 r8}, byrefRegs=0000 {}, byref, isz
- cmp r5, r10
+ ldr r0, [r8+0x04] + cmp r5, r0
bhs G_M8946_IG27 add r0, r8, 8 ; byrRegs +[r0] lsls r3, r5, 2
- ldr r3, [r0+r3] - ; gcrRegs +[r3] - str r3, [sp+0x08] - ; GC ptr vars +{V44} - ldrsb r0, [r3]
+ ldr r10, [r0+r3] + ; gcrRegs +[r10] + ldrsb r0, [r10]
; byrRegs -[r0]
- movs r2, 0 - str r2, [sp+0x0C] // [V43 tmp34]
+ movs r3, 0 + str r3, [sp+0x0C] // [V43 tmp34]
; GC ptr vars +{V43}
- mov r0, r3
+ mov r0, r10
; gcrRegs +[r0]
- movw r1, 0xd1ff - movt r1, 0xd1ff - blx r1 // <unknown method> - ; gcrRegs -[r0 r3]
+ movw r2, 0xd1ff + movt r2, 0xd1ff + blx r2 // <unknown method> + ; gcrRegs -[r0]
; gcr arg pop 0
- ldr r3, [sp+0x08] // [V44 tmp35] - ; gcrRegs +[r3] - ldr r0, [r3+0x04]
+ ldr r0, [r10+0x04]
; gcrRegs +[r0]
- ldr r2, [r3+0x0C] - subs r2, r2, 1 - ldr r1, [r0+0x04] - cmp r1, r2
+ ldr r3, [r10+0x0C] + subs r3, r3, 1 + ldr r2, [r0+0x04] + cmp r2, r3
bls SHORT G_M8946_IG12
- ;; size=50 bbWeight=4 PerfScore 80.00 -G_M8946_IG11: ; bbWeight=2, gcVars=0000000000000001 {V44}, gcrefRegs=0159 {r0 r3 r4 r6 r8}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=56 bbWeight=4 PerfScore 76.00 +G_M8946_IG11: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0551 {r0 r4 r6 r8 r10}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V43} adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0]
- lsls r1, r2, 2 - ldr lr, [r0+r1] - ; gcrRegs +[lr] - str lr, [sp+0x0C] // [V43 tmp34]
+ lsls r2, r3, 2 + ldr r1, [r0+r2] + ; gcrRegs +[r1] + str r1, [sp+0x0C] // [V43 tmp34]
; GC ptr vars +{V43}
- mov r12, 0 - str r12, [r0+r1] - str r2, [r3+0x0C] - ;; size=22 bbWeight=2 PerfScore 14.00 -G_M8946_IG12: ; bbWeight=4, gcVars=0000000000000041 {V43 V44}, gcrefRegs=0158 {r3 r4 r6 r8}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[lr]
+ mov lr, 0 + str lr, [r0+r2] + str r3, [r10+0x0C] + ;; size=20 bbWeight=2 PerfScore 14.00 +G_M8946_IG12: ; bbWeight=4, gcVars=0000000000000040 {V43}, gcrefRegs=0550 {r4 r6 r8 r10}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r1]
; byrRegs -[r0]
- mov r0, r3
+ mov r0, r10
; gcrRegs +[r0] movw r3, 0xd1ff
- ; gcrRegs -[r3]
movt r3, 0xd1ff
- ; GC ptr vars -{V44}
blx r3 // <unknown method>
- ; gcrRegs -[r0]
+ ; gcrRegs -[r0 r10]
; gcr arg pop 0
- ldr r0, [sp+0x0C] // [V43 tmp34] - ; gcrRegs +[r0] - cmp r0, 0
+ ldr r10, [sp+0x0C] // [V43 tmp34] + ; gcrRegs +[r10] + cmp r10, 0
bne SHORT G_M8946_IG16 adds r5, r5, 1
- cmp r10, r5
+ ldr r0, [r8+0x04] + cmp r0, r5
bne SHORT G_M8946_IG14
- ;; size=24 bbWeight=4 PerfScore 40.00
+ ;; size=32 bbWeight=4 PerfScore 44.00
G_M8946_IG13: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0150 {r4 r6 r8}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0]
+ ; gcrRegs -[r10]
; GC ptr vars -{V43} movs r5, 0 ;; size=2 bbWeight=2 PerfScore 2.00 G_M8946_IG14: ; bbWeight=4, gcrefRegs=0150 {r4 r6 r8}, byrefRegs=0000 {}, byref, isz add r9, r9, 1
- cmp r10, r9
+ ldr r0, [r8+0x04] + cmp r0, r9
bgt SHORT G_M8946_IG10
- ;; size=8 bbWeight=4 PerfScore 12.00
+ ;; size=12 bbWeight=4 PerfScore 16.00
G_M8946_IG15: ; bbWeight=0.50, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r8] mov r8, 0 b SHORT G_M8946_IG17 ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M8946_IG16: ; bbWeight=0.50, gcrefRegs=0051 {r0 r4 r6}, byrefRegs=0000 {}, byref - ; gcrRegs +[r0] - mov r8, r0
+G_M8946_IG16: ; bbWeight=0.50, gcrefRegs=0450 {r4 r6 r10}, byrefRegs=0000 {}, byref + ; gcrRegs +[r10] + mov r8, r10
; gcrRegs +[r8] ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M8946_IG17: ; bbWeight=0.50, gcrefRegs=0150 {r4 r6 r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0]
+ ; gcrRegs -[r10]
cmp r8, 0 beq SHORT G_M8946_IG18 ldrb r0, [r6+0x5D] cmp r0, 0
- beq SHORT G_M8946_IG04
+ beq G_M8946_IG04
mov r0, r8 ; gcrRegs +[r0] movw r3, 0xd1ff @@ -341,7 +337,7 @@ G_M8946_IG17: ; bbWeight=0.50, gcrefRegs=0150 {r4 r6 r8}, byrefRegs=0000 ; gcrRegs -[r0 r6] ; gcr arg pop 0 b SHORT G_M8946_IG04 ...

+24 (+2.23%) : 101383.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)

@@ -20,56 +20,56 @@ ; V09 loc6 [V09,T03] ( 7, 17 ) int -> r9 ; V10 loc7 [V10,T08] ( 3, 12 ) ref -> r2 class-hnd <System.Xml.XmlDictionaryString> ;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T25] ( 3, 0 ) ref -> r4 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> -; V13 tmp2 [V13,T26] ( 3, 0 ) ref -> r10 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
+; V12 tmp1 [V12,T24] ( 3, 0 ) ref -> r4 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException> +; V13 tmp2 [V13,T25] ( 3, 0 ) ref -> r10 class-hnd exact "NewObj constructor temp" <System.ArgumentNullException>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V16 tmp5 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V17 tmp6 [V17,T21] ( 4, 0 ) int -> r0 "Inlining Arg"
+; V17 tmp6 [V17,T20] ( 4, 0 ) int -> r0 "Inlining Arg"
;* V18 tmp7 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V19 tmp8 [V19,T27] ( 3, 0 ) int -> r5 "Inlining Arg" -; V20 tmp9 [V20,T31] ( 2, 0 ) byref -> r4 "Inlining Arg"
+; V19 tmp8 [V19,T26] ( 3, 0 ) int -> r5 "Inlining Arg" +; V20 tmp9 [V20,T30] ( 2, 0 ) byref -> r4 "Inlining Arg"
;* V21 tmp10 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V22 tmp11 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V23 tmp12 [V23,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V23 tmp12 [V23,T40] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V24 tmp13 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V25 tmp14 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V26 tmp15 [V26,T32] ( 2, 0 ) byref -> r1 "Inlining Arg"
+; V26 tmp15 [V26,T31] ( 2, 0 ) byref -> r1 "Inlining Arg"
;* V27 tmp16 [V27 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V28 tmp17 [V28,T22] ( 4, 0 ) int -> r0 "Inlining Arg"
+; V28 tmp17 [V28,T21] ( 4, 0 ) int -> r0 "Inlining Arg"
;* V29 tmp18 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V30 tmp19 [V30,T28] ( 3, 0 ) int -> r8 "Inlining Arg" -; V31 tmp20 [V31,T33] ( 2, 0 ) byref -> r7 "Inlining Arg"
+; V30 tmp19 [V30,T27] ( 3, 0 ) int -> r8 "Inlining Arg" +; V31 tmp20 [V31,T32] ( 2, 0 ) byref -> r7 "Inlining Arg"
;* V32 tmp21 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp22 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V34 tmp23 [V34,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V34 tmp23 [V34,T41] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V35 tmp24 [V35 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V36 tmp25 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V37 tmp26 [V37,T34] ( 2, 0 ) byref -> r1 "Inlining Arg"
+; V37 tmp26 [V37,T33] ( 2, 0 ) byref -> r1 "Inlining Arg"
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode> ;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.XmlBaseReader+Namespace> ;* V40 tmp29 [V40 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V41 tmp30 [V41,T23] ( 4, 0 ) int -> r0 "Inlining Arg"
+; V41 tmp30 [V41,T22] ( 4, 0 ) int -> r0 "Inlining Arg"
;* V42 tmp31 [V42 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V43 tmp32 [V43,T29] ( 3, 0 ) int -> r5 "Inlining Arg" -; V44 tmp33 [V44,T35] ( 2, 0 ) byref -> r4 "Inlining Arg"
+; V43 tmp32 [V43,T28] ( 3, 0 ) int -> r5 "Inlining Arg" +; V44 tmp33 [V44,T34] ( 2, 0 ) byref -> r4 "Inlining Arg"
;* V45 tmp34 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V46 tmp35 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V47 tmp36 [V47,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V47 tmp36 [V47,T42] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V48 tmp37 [V48 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V49 tmp38 [V49 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V50 tmp39 [V50,T36] ( 2, 0 ) byref -> r1 "Inlining Arg"
+; V50 tmp39 [V50,T35] ( 2, 0 ) byref -> r1 "Inlining Arg"
;* V51 tmp40 [V51 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V52 tmp41 [V52,T24] ( 4, 0 ) int -> r4 "Inlining Arg"
+; V52 tmp41 [V52,T23] ( 4, 0 ) int -> r4 "Inlining Arg"
;* V53 tmp42 [V53 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V54 tmp43 [V54,T30] ( 3, 0 ) int -> r4 "Inlining Arg" -; V55 tmp44 [V55,T37] ( 2, 0 ) byref -> r5 "Inlining Arg"
+; V54 tmp43 [V54,T29] ( 3, 0 ) int -> r4 "Inlining Arg" +; V55 tmp44 [V55,T36] ( 2, 0 ) byref -> r5 "Inlining Arg"
;* V56 tmp45 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp46 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V58 tmp47 [V58,T44] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V58 tmp47 [V58,T43] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V59 tmp48 [V59 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V60 tmp49 [V60 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V61 tmp50 [V61,T38] ( 2, 0 ) byref -> r1 "Inlining Arg"
+; V61 tmp50 [V61,T37] ( 2, 0 ) byref -> r1 "Inlining Arg"
; V62 tmp51 [V62,T12] ( 3, 8 ) ubyte -> r6 "Inline return value spill temp" ; V63 tmp52 [V63,T06] ( 4, 12 ) int -> r10 "Inline stloc first use temp" ; V64 tmp53 [V64,T00] ( 6, 25.46) ref -> r8 class-hnd exact "Inlining Arg" <System.String> @@ -106,12 +106,11 @@ ;* V95 tmp84 [V95 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-INDEP ;* V96 tmp85 [V96 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x4)" P-INDEP ; V97 tmp86 [V97,T09] ( 3, 12 ) ref -> r2 "arr expr"
-; V98 tmp87 [V98,T39] ( 2, 0 ) ref -> r1 "argument with side effect" -; V99 tmp88 [V99,T40] ( 2, 0 ) ref -> r1 "argument with side effect"
+; V98 tmp87 [V98,T38] ( 2, 0 ) ref -> r1 "argument with side effect" +; V99 tmp88 [V99,T39] ( 2, 0 ) ref -> r1 "argument with side effect"
; V100 cse0 [V100,T18] ( 3, 3 ) ref -> r0 "CSE - moderate" ; V101 cse1 [V101,T11] ( 6, 10 ) int -> r7 multi-def "CSE - aggressive" ; V102 cse2 [V102,T05] ( 4, 12.50) byref -> r8 hoist multi-def "CSE - aggressive"
-; V103 cse3 [V103,T20] ( 12, 0 ) ref -> r1 multi-def "CSE - moderate"
; ; Lcl frame size = 28 @@ -396,17 +395,16 @@ G_M45430_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, subs r5, r1, r0 cmp r5, 0 bge SHORT G_M45430_IG29
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0]
; gcr arg pop 0
- ;; size=64 bbWeight=0 PerfScore 0.00
+ ;; size=70 bbWeight=0 PerfScore 0.00
G_M45430_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz cmp r5, 11 blo SHORT G_M45430_IG30 @@ -458,17 +456,16 @@ G_M45430_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub r8, r1, r0 cmp r8, 0 bge SHORT G_M45430_IG32
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0]
; gcr arg pop 0
- ;; size=66 bbWeight=0 PerfScore 0.00
+ ;; size=72 bbWeight=0 PerfScore 0.00
G_M45430_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref, isz cmp r8, 0 beq SHORT G_M45430_IG33 @@ -568,17 +565,16 @@ G_M45430_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, subs r5, r1, r0 cmp r5, 0 bge SHORT G_M45430_IG37
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0]
; gcr arg pop 0
- ;; size=62 bbWeight=0 PerfScore 0.00
+ ;; size=68 bbWeight=0 PerfScore 0.00
G_M45430_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz cmp r5, 11 blo SHORT G_M45430_IG38 @@ -640,17 +636,16 @@ G_M45430_IG41: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, subs r4, r0, r4 cmp r4, 0 bge SHORT G_M45430_IG42
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0]
; gcr arg pop 0
- ;; size=36 bbWeight=0 PerfScore 0.00
+ ;; size=42 bbWeight=0 PerfScore 0.00
G_M45430_IG42: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz cmp r4, 0 beq SHORT G_M45430_IG43 @@ -717,7 +712,7 @@ G_M45430_IG44: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=64 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1074, prolog size 28, PerfScore 239.60, instruction count 391, allocated bytes for code 1074 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
+Total bytes of code 1098, prolog size 28, PerfScore 239.60, instruction count 395, allocated bytes for code 1098 (MethodHash=03734e89) for method System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
; ============================================================ Unwind Info: @@ -729,7 +724,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 537 (0x00219) Actual length = 1074 (0x000432)
+ Function Length : 549 (0x00225) Actual length = 1098 (0x00044a)
---- 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 23 12 10 1 -72 +264
benchmarks.run_tiered.linux.arm.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.linux.arm.checked.mch 68 14 43 11 -76 +480
libraries.crossgen2.linux.arm.checked.mch 0 0 0 0 -0 +0
libraries.pmi.linux.arm.checked.mch 10 2 8 0 -26 +112
libraries_tests.run.linux.arm.Release.mch 373 212 112 49 -4,018 +1,154
librariestestsnotieredcompilation.run.linux.arm.Release.mch 21 15 6 0 -78 +72
realworld.run.linux.arm.checked.mch 0 0 0 0 -0 +0
495 255 179 61 -4,270 +2,082

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm.checked.mch 46,284 5,344 40,940 1,208 (2.54%) 1,208 (2.54%)
benchmarks.run_pgo.linux.arm.checked.mch 155,308 54,949 100,359 3,309 (2.09%) 3,311 (2.09%)
benchmarks.run_tiered.linux.arm.checked.mch 81,825 45,099 36,726 1,122 (1.35%) 1,123 (1.35%)
coreclr_tests.run.linux.arm.checked.mch 471,775 258,996 212,779 7,543 (1.57%) 7,545 (1.57%)
libraries.crossgen2.linux.arm.checked.mch 193,690 14 193,676 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm.checked.mch 270,794 6 270,788 7,827 (2.81%) 7,831 (2.81%)
libraries_tests.run.linux.arm.Release.mch 707,755 441,682 266,073 18,888 (2.60%) 18,891 (2.60%)
librariestestsnotieredcompilation.run.linux.arm.Release.mch 273,847 21,565 252,282 33,279 (10.84%) 33,281 (10.84%)
realworld.run.linux.arm.checked.mch 36,398 157 36,241 1,412 (3.73%) 1,412 (3.73%)
2,237,676 827,812 1,409,864 74,588 (3.23%) 74,602 (3.23%)

jit-analyze output

benchmarks.run_pgo.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: 61255640 (overridden on cmd)
Total bytes of diff: 61255832 (overridden on cmd)
Total bytes of delta: 192 (0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -5144 : 140901.dasm (-100.00 % of base)
       -5088 : 146801.dasm (-100.00 % of base)
       -4350 : 115014.dasm (-100.00 % of base)
       -4320 : 114259.dasm (-100.00 % of base)
       -3268 : 102581.dasm (-100.00 % of base)
       -3076 : 133361.dasm (-100.00 % of base)
       -2944 : 83952.dasm (-100.00 % of base)
       -1980 : 104283.dasm (-100.00 % of base)
       -1706 : 84195.dasm (-100.00 % of base)
       -1606 : 20486.dasm (-100.00 % of base)
       -1544 : 102582.dasm (-100.00 % of base)
       -1538 : 83953.dasm (-100.00 % of base)
       -1408 : 92247.dasm (-100.00 % of base)
       -1366 : 158458.dasm (-100.00 % of base)
       -1228 : 123535.dasm (-100.00 % of base)
        -838 : 101228.dasm (-100.00 % of base)
        -802 : 83959.dasm (-100.00 % of base)
        -702 : 83818.dasm (-100.00 % of base)
        -702 : 101217.dasm (-100.00 % of base)
        -472 : 92599.dasm (-100.00 % of base)

23 total files with Code Size differences (23 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -5144 (-100.00 % of base) : 140901.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__48:MoveNext():this (Tier1)
       -5088 (-100.00 % of base) : 146801.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__48:MoveNext():this (Tier1)
       -4350 (-100.00 % of base) : 115014.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__37:MoveNext():this (Tier1)
       -4320 (-100.00 % of base) : 114259.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__37:MoveNext():this (Tier1)
       -3268 (-100.00 % of base) : 102581.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,System.Reflection.Metadata.TypeDefinitionHandle,System.String,ushort,byref):this (Tier1)
       -3076 (-100.00 % of base) : 133361.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint],System.Span`1[uint]) (Tier1)
       -2944 (-100.00 % of base) : 83952.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,System.Reflection.Metadata.TypeDefinitionHandle,System.String,ushort,byref):this (Tier1)
       -1980 (-100.00 % of base) : 104283.dasm - System.Security.Cryptography.X509Certificates.X500NameEncoder:AppendOid(byref,System.String) (Tier1)
       -1706 (-100.00 % of base) : 84195.dasm - Microsoft.CodeAnalysis.ModuleExtensions:ShouldImportMethod(Microsoft.CodeAnalysis.PEModule,System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.Metadata.MethodDefinitionHandle,ubyte):ubyte (Tier1)
       -1606 (-100.00 % of base) : 20486.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)
       -1544 (-100.00 % of base) : 102582.dasm - Microsoft.CodeAnalysis.PEModule:GetTypeDefNameOrThrow(System.Reflection.Metadata.TypeDefinitionHandle):System.String:this (Tier1)
       -1538 (-100.00 % of base) : 83953.dasm - Microsoft.CodeAnalysis.PEModule:GetTypeDefNameOrThrow(System.Reflection.Metadata.TypeDefinitionHandle):System.String:this (Tier1)
       -1408 (-100.00 % of base) : 92247.dasm - Microsoft.Cci.ReferenceIndexerBase:VisitTypeDefinitionNoMembers(Microsoft.Cci.ITypeDefinition):this (Tier1)
       -1366 (-100.00 % of base) : 158458.dasm - System.Security.Cryptography.ECCurve:CreateFromValueAndName(System.String,System.String):System.Security.Cryptography.ECCurve (Tier1)
       -1228 (-100.00 % of base) : 123535.dasm - System.IO.File+<InternalWriteAllLinesAsync>d__100:MoveNext():this (Tier0-FullOpts)
        -838 (-100.00 % of base) : 101228.dasm - System.Reflection.Metadata.Ecma335.StringHeap:GetNonVirtualString(System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.MetadataStringDecoder,ubyte[]):System.String:this (Tier1)
        -802 (-100.00 % of base) : 83959.dasm - System.Reflection.Metadata.Ecma335.StringHeap:GetNonVirtualString(System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.MetadataStringDecoder,ubyte[]):System.String:this (Tier1)
        -702 (-100.00 % of base) : 83818.dasm - System.Reflection.Internal.EncodingHelper:DecodeUtf8(uint,int,ubyte[],System.Reflection.Metadata.MetadataStringDecoder):System.String (Tier1)
        -702 (-100.00 % of base) : 101217.dasm - System.Reflection.Internal.EncodingHelper:DecodeUtf8(uint,int,ubyte[],System.Reflection.Metadata.MetadataStringDecoder):System.String (Tier1)
        -472 (-100.00 % of base) : 92599.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:VisitBlock(Microsoft.CodeAnalysis.CSharp.BoundBlock):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)

Top method improvements (percentages):
       -1408 (-100.00 % of base) : 92247.dasm - Microsoft.Cci.ReferenceIndexerBase:VisitTypeDefinitionNoMembers(Microsoft.Cci.ITypeDefinition):this (Tier1)
        -472 (-100.00 % of base) : 92599.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:VisitBlock(Microsoft.CodeAnalysis.CSharp.BoundBlock):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
       -2944 (-100.00 % of base) : 83952.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,System.Reflection.Metadata.TypeDefinitionHandle,System.String,ushort,byref):this (Tier1)
       -3268 (-100.00 % of base) : 102581.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,System.Reflection.Metadata.TypeDefinitionHandle,System.String,ushort,byref):this (Tier1)
       -1706 (-100.00 % of base) : 84195.dasm - Microsoft.CodeAnalysis.ModuleExtensions:ShouldImportMethod(Microsoft.CodeAnalysis.PEModule,System.Reflection.Metadata.TypeDefinitionHandle,System.Reflection.Metadata.MethodDefinitionHandle,ubyte):ubyte (Tier1)
       -1544 (-100.00 % of base) : 102582.dasm - Microsoft.CodeAnalysis.PEModule:GetTypeDefNameOrThrow(System.Reflection.Metadata.TypeDefinitionHandle):System.String:this (Tier1)
       -1538 (-100.00 % of base) : 83953.dasm - Microsoft.CodeAnalysis.PEModule:GetTypeDefNameOrThrow(System.Reflection.Metadata.TypeDefinitionHandle):System.String:this (Tier1)
        -316 (-100.00 % of base) : 25081.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CanLockTheFile(int,int):ubyte:this (Tier1)
        -316 (-100.00 % of base) : 127590.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CanLockTheFile(int,int):ubyte:this (Tier1)
       -1228 (-100.00 % of base) : 123535.dasm - System.IO.File+<InternalWriteAllLinesAsync>d__100:MoveNext():this (Tier0-FullOpts)
       -4350 (-100.00 % of base) : 115014.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__37:MoveNext():this (Tier1)
       -4320 (-100.00 % of base) : 114259.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__37:MoveNext():this (Tier1)
       -5144 (-100.00 % of base) : 140901.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__48:MoveNext():this (Tier1)
       -5088 (-100.00 % of base) : 146801.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__48:MoveNext():this (Tier1)
       -3076 (-100.00 % of base) : 133361.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint],System.Span`1[uint]) (Tier1)
       -1606 (-100.00 % of base) : 20486.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)
        -702 (-100.00 % of base) : 83818.dasm - System.Reflection.Internal.EncodingHelper:DecodeUtf8(uint,int,ubyte[],System.Reflection.Metadata.MetadataStringDecoder):System.String (Tier1)
        -702 (-100.00 % of base) : 101217.dasm - System.Reflection.Internal.EncodingHelper:DecodeUtf8(uint,int,ubyte[],System.Reflection.Metadata.MetadataStringDecoder):System.String (Tier1)
        -802 (-100.00 % of base) : 83959.dasm - System.Reflection.Metadata.Ecma335.StringHeap:GetNonVirtualString(System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.MetadataStringDecoder,ubyte[]):System.String:this (Tier1)
        -838 (-100.00 % of base) : 101228.dasm - System.Reflection.Metadata.Ecma335.StringHeap:GetNonVirtualString(System.Reflection.Metadata.StringHandle,System.Reflection.Metadata.MetadataStringDecoder,ubyte[]):System.String:this (Tier1)

23 total methods with Code Size differences (23 improved, 0 regressed).


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: 321788912 (overridden on cmd)
Total bytes of diff: 321789316 (overridden on cmd)
Total bytes of delta: 404 (0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -2394 : 141427.dasm (-100.00 % of base)
       -1676 : 83760.dasm (-100.00 % of base)
       -1150 : 167383.dasm (-100.00 % of base)
       -1110 : 1669.dasm (-100.00 % of base)
       -1106 : 1609.dasm (-100.00 % of base)
       -1106 : 1662.dasm (-100.00 % of base)
       -1074 : 150145.dasm (-100.00 % of base)
       -1074 : 381963.dasm (-100.00 % of base)
       -1050 : 136960.dasm (-100.00 % of base)
       -1048 : 153710.dasm (-100.00 % of base)
       -1036 : 1278.dasm (-100.00 % of base)
       -1014 : 1667.dasm (-100.00 % of base)
        -900 : 138009.dasm (-100.00 % of base)
        -890 : 303315.dasm (-100.00 % of base)
        -882 : 304982.dasm (-100.00 % of base)
        -832 : 31402.dasm (-100.00 % of base)
        -828 : 156330.dasm (-100.00 % of base)
        -826 : 171117.dasm (-100.00 % of base)
        -824 : 275213.dasm (-100.00 % of base)
        -824 : 276783.dasm (-100.00 % of base)

53 total files with Code Size differences (53 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -2394 (-100.00 % of base) : 141427.dasm - Microsoft.CodeAnalysis.CSharp.MergedNamespaceDeclaration:MakeChildren():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.MergedNamespaceOrTypeDeclaration]:this (Tier0-FullOpts)
       -1676 (-100.00 % of base) : 83760.dasm - System.DefaultBinder:FindMostSpecific(System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.ReadOnlySpan`1[System.Reflection.ParameterInfo],int[],System.Type,System.Type[],System.Object[]):int (Tier1)
       -1150 (-100.00 % of base) : 167383.dasm - System.Reflection.AssemblyNameFormatter:AppendQuoted(byref,System.String) (Instrumented Tier1)
       -1110 (-100.00 % of base) : 1669.dasm - System.Buffers.SharedArrayPool`1[ushort]:Return(ushort[],ubyte):this (Instrumented Tier1)
       -1106 (-100.00 % of base) : 1662.dasm - System.Buffers.SharedArrayPool`1[int]:Return(int[],ubyte):this (Instrumented Tier1)
       -1106 (-100.00 % of base) : 1609.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Return(ubyte[],ubyte):this (Instrumented Tier1)
       -1074 (-100.00 % of base) : 381963.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
       -1074 (-100.00 % of base) : 150145.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (Tier0-FullOpts)
       -1050 (-100.00 % of base) : 136960.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Rent(int):System.__Canon[]:this (Instrumented Tier1)
       -1048 (-100.00 % of base) : 153710.dasm - System.Buffers.SharedArrayPool`1[int]:Rent(int):int[]:this (Instrumented Tier1)
       -1036 (-100.00 % of base) : 1278.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this (Instrumented Tier1)
       -1014 (-100.00 % of base) : 1667.dasm - System.Buffers.SharedArrayPool`1[ushort]:Rent(int):ushort[]:this (Instrumented Tier1)
        -900 (-100.00 % of base) : 138009.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Return(ubyte[],ubyte):this (Tier1)
        -890 (-100.00 % of base) : 303315.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Return(ubyte[],ubyte):this (Tier1)
        -882 (-100.00 % of base) : 304982.dasm - System.Buffers.SharedArrayPool`1[ushort]:Return(ushort[],ubyte):this (Tier1)
        -832 (-100.00 % of base) : 31402.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Return(ubyte[],ubyte):this (Tier1)
        -828 (-100.00 % of base) : 156330.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Return(ubyte[],ubyte):this (Tier1)
        -826 (-100.00 % of base) : 171117.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Return(ubyte[],ubyte):this (Tier1)
        -824 (-100.00 % of base) : 275213.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Return(ubyte[],ubyte):this (Tier1)
        -824 (-100.00 % of base) : 276783.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Return(ubyte[],ubyte):this (Tier1)

Top method improvements (percentages):
        -336 (-100.00 % of base) : 309352.dasm - ILCompiler.ReadyToRunCompilerContext:ComputeHasGCStaticBase(Internal.TypeSystem.FieldDesc):ubyte:this (Tier1)
        -564 (-100.00 % of base) : 312466.dasm - Internal.JitInterface.CorInfoImpl:TryReadRvaFieldData(Internal.TypeSystem.FieldDesc,uint,int,int):ubyte (Tier1)
        -554 (-100.00 % of base) : 310528.dasm - Internal.JitInterface.CorInfoImpl:TryReadRvaFieldData(Internal.TypeSystem.FieldDesc,uint,int,int):ubyte (Tier1)
        -276 (-100.00 % of base) : 201968.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorBooleanBinaryOpTest__LessThanOrEqualAnySingle:RunBasicScenario_UnsafeRead():this (FullOpts)
       -2394 (-100.00 % of base) : 141427.dasm - Microsoft.CodeAnalysis.CSharp.MergedNamespaceDeclaration:MakeChildren():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.MergedNamespaceOrTypeDeclaration]:this (Tier0-FullOpts)
        -424 (-100.00 % of base) : 143234.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol+<>c:<.ctor>b__17_1(Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte:this (Tier1)
        -756 (-100.00 % of base) : 375656.dasm - System.Buffers.SharedArrayPool`1[float]:Rent(int):float[]:this (FullOpts)
        -812 (-100.00 % of base) : 375660.dasm - System.Buffers.SharedArrayPool`1[float]:Return(float[],ubyte):this (FullOpts)
       -1048 (-100.00 % of base) : 153710.dasm - System.Buffers.SharedArrayPool`1[int]:Rent(int):int[]:this (Instrumented Tier1)
       -1106 (-100.00 % of base) : 1662.dasm - System.Buffers.SharedArrayPool`1[int]:Return(int[],ubyte):this (Instrumented Tier1)
       -1050 (-100.00 % of base) : 136960.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Rent(int):System.__Canon[]:this (Instrumented Tier1)
       -1036 (-100.00 % of base) : 1278.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this (Instrumented Tier1)
        -776 (-100.00 % of base) : 158289.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this (Tier1)
        -780 (-100.00 % of base) : 171116.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this (Tier1)
        -780 (-100.00 % of base) : 184681.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this (Tier1)
        -790 (-100.00 % of base) : 192377.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this (Tier1)
        -774 (-100.00 % of base) : 313198.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this (Tier1)
        -776 (-100.00 % of base) : 158963.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this (Tier1)
        -790 (-100.00 % of base) : 178542.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this (Tier1)
        -774 (-100.00 % of base) : 209881.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this (Tier1)


libraries.pmi.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: 49610860 (overridden on cmd)
Total bytes of diff: 49610946 (overridden on cmd)
Total bytes of delta: 86 (0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -1130 : 161631.dasm (-100.00 % of base)
       -1074 : 161632.dasm (-100.00 % of base)
        -836 : 4785.dasm (-100.00 % of base)
        -792 : 4784.dasm (-100.00 % of base)
        -586 : 162334.dasm (-100.00 % of base)
        -576 : 162333.dasm (-100.00 % of base)
        -502 : 162350.dasm (-100.00 % of base)
        -494 : 162349.dasm (-100.00 % of base)
        -268 : 4791.dasm (-100.00 % of base)
        -242 : 4792.dasm (-100.00 % of base)

10 total files with Code Size differences (10 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -1130 (-100.00 % of base) : 161631.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.String[],System.String):int:this (FullOpts)
       -1074 (-100.00 % of base) : 161632.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
        -836 (-100.00 % of base) : 4785.dasm - System.Buffers.SharedArrayPool`1[short]:Return(short[],ubyte):this (FullOpts)
        -792 (-100.00 % of base) : 4784.dasm - System.Buffers.SharedArrayPool`1[short]:Rent(int):short[]:this (FullOpts)
        -586 (-100.00 % of base) : 162334.dasm - System.Xml.XmlDictionaryReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
        -576 (-100.00 % of base) : 162333.dasm - System.Xml.XmlDictionaryReader:IndexOfLocalName(System.String[],System.String):int:this (FullOpts)
        -502 (-100.00 % of base) : 162350.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.Xml.XmlDictionaryString[],byref):System.String:this (FullOpts)
        -494 (-100.00 % of base) : 162349.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.String[],byref):System.String:this (FullOpts)
        -268 (-100.00 % of base) : 4791.dasm - System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):ubyte:this (FullOpts)
        -242 (-100.00 % of base) : 4792.dasm - System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (FullOpts)

Top method improvements (percentages):
        -792 (-100.00 % of base) : 4784.dasm - System.Buffers.SharedArrayPool`1[short]:Rent(int):short[]:this (FullOpts)
        -836 (-100.00 % of base) : 4785.dasm - System.Buffers.SharedArrayPool`1[short]:Return(short[],ubyte):this (FullOpts)
        -242 (-100.00 % of base) : 4792.dasm - System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (FullOpts)
        -268 (-100.00 % of base) : 4791.dasm - System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):ubyte:this (FullOpts)
       -1130 (-100.00 % of base) : 161631.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.String[],System.String):int:this (FullOpts)
       -1074 (-100.00 % of base) : 161632.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
        -576 (-100.00 % of base) : 162333.dasm - System.Xml.XmlDictionaryReader:IndexOfLocalName(System.String[],System.String):int:this (FullOpts)
        -586 (-100.00 % of base) : 162334.dasm - System.Xml.XmlDictionaryReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
        -494 (-100.00 % of base) : 162349.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.String[],byref):System.String:this (FullOpts)
        -502 (-100.00 % of base) : 162350.dasm - System.Xml.XmlDictionaryReader:ReadContentAsString(System.Xml.XmlDictionaryString[],byref):System.String:this (FullOpts)

10 total methods with Code Size differences (10 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: 242758250 (overridden on cmd)
Total bytes of diff: 242755386 (overridden on cmd)
Total bytes of delta: -2864 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -7516 : 663017.dasm (-100.00 % of base)
       -3832 : 450008.dasm (-100.00 % of base)
       -3316 : 450046.dasm (-100.00 % of base)
       -2898 : 671381.dasm (-100.00 % of base)
       -2852 : 285078.dasm (-100.00 % of base)
       -2426 : 607247.dasm (-100.00 % of base)
       -2424 : 607132.dasm (-100.00 % of base)
       -2422 : 607137.dasm (-100.00 % of base)
       -2422 : 607757.dasm (-100.00 % of base)
       -2418 : 607289.dasm (-100.00 % of base)
       -2418 : 607371.dasm (-100.00 % of base)
       -2418 : 607434.dasm (-100.00 % of base)
       -2418 : 607534.dasm (-100.00 % of base)
       -2410 : 607117.dasm (-100.00 % of base)
       -2410 : 607556.dasm (-100.00 % of base)
       -2408 : 605615.dasm (-100.00 % of base)
       -2394 : 451373.dasm (-100.00 % of base)
       -2374 : 607319.dasm (-100.00 % of base)
       -2372 : 607396.dasm (-100.00 % of base)
       -2372 : 607459.dasm (-100.00 % of base)

96 total files with Code Size differences (96 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -7516 (-100.00 % of base) : 663017.dasm - System.Text.RegularExpressions.Generator.RegexGenerator:EmitScan(System.CodeDom.Compiler.IndentedTextWriter,System.Text.RegularExpressions.Generator.RegexGenerator+RegexMethod):System.ValueTuple`2[ubyte,ubyte] (Tier1)
       -3832 (-100.00 % of base) : 450008.dasm - System.Xml.XmlSchemaTests.TC_SchemaSet_Add_Schema:v11():this (Tier0-FullOpts)
       -3316 (-100.00 % of base) : 450046.dasm - System.Xml.XmlSchemaTests.TC_SchemaSet_Add_Schema:v10():this (Tier0-FullOpts)
       -2898 (-100.00 % of base) : 671381.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceConstructorSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.Syntax.ConstructorDeclarationSyntax,int,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -2852 (-100.00 % of base) : 285078.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitUnliftedBinaryOp(int,System.Type,System.Type):this (Tier1)
       -2426 (-100.00 % of base) : 607247.dasm - System.Text.Json.JsonSerializer:ReadFromSpan[System.UInt128](System.ReadOnlySpan`1[ushort],System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.UInt128]):System.UInt128 (Tier1)
       -2424 (-100.00 % of base) : 607132.dasm - System.Text.Json.JsonSerializer:ReadFromSpan[System.Decimal](System.ReadOnlySpan`1[ushort],System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Decimal]):System.Decimal (Tier1)
       -2422 (-100.00 % of base) : 607757.dasm - System.Text.Json.JsonSerializer:ReadFromSpan[System.Nullable`1[long]](System.ReadOnlySpan`1[ushort],System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[long]]):System.Nullable`1[long] (Tier1)
       -2422 (-100.00 % of base) : 607137.dasm - System.Text.Json.JsonSerializer:ReadFromSpan[System.Nullable`1[ulong]](System.ReadOnlySpan`1[ushort],System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[ulong]]):System.Nullable`1[ulong] (Tier1)
       -2418 (-100.00 % of base) : 607289.dasm - System.Text.Json.JsonSerializer:ReadFromSpan[System.Nullable`1[double]](System.ReadOnlySpan`1[ushort],System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[double]]):System.Nullable`1[double] (Tier1)
       -2418 (-100.00 % of base) : 607371.dasm - System.Text.Json.JsonSerializer:ReadFromSpan[System.Nullable`1[System.Decimal]](System.ReadOnlySpan`1[ushort],System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[System.Decimal]]):System.Nullable`1[System.Decimal] (Tier1)
       -2418 (-100.00 % of base) : 607434.dasm - System.Text.Json.JsonSerializer:ReadFromSpan[System.Nullable`1[System.Int128]](System.ReadOnlySpan`1[ushort],System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[System.Int128]]):System.Nullable`1[System.Int128] (Tier1)
       -2418 (-100.00 % of base) : 607534.dasm - System.Text.Json.JsonSerializer:ReadFromSpan[System.Nullable`1[System.UInt128]](System.ReadOnlySpan`1[ushort],System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[System.UInt128]]):System.Nullable`1[System.UInt128] (Tier1)
       -2410 (-100.00 % of base) : 607556.dasm - System.Text.Json.JsonSerializer:ReadFromSpan[System.Nullable`1[int]](System.ReadOnlySpan`1[ushort],System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[int]]):System.Nullable`1[int] (Tier1)
       -2410 (-100.00 % of base) : 607117.dasm - System.Text.Json.JsonSerializer:ReadFromSpan[System.Nullable`1[uint]](System.ReadOnlySpan`1[ushort],System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[uint]]):System.Nullable`1[uint] (Tier1)
       -2408 (-100.00 % of base) : 605615.dasm - System.Text.Json.JsonSerializer:ReadFromSpanAsObject(System.ReadOnlySpan`1[ushort],System.Text.Json.Serialization.Metadata.JsonTypeInfo):System.Object (Tier1)
       -2394 (-100.00 % of base) : 451373.dasm - System.Xml.XmlSchemaTests.TC_SchemaSet_Reprocess:v51(System.Object,System.Object,System.Object,System.Object):this (Tier0-FullOpts)
       -2374 (-100.00 % of base) : 607319.dasm - System.Text.Json.JsonSerializer:ReadFromSpan[System.Half](System.ReadOnlySpan`1[ushort],System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Half]):System.Half (Tier1)
       -2372 (-100.00 % of base) : 594191.dasm - System.Text.Json.JsonSerializer:ReadFromSpan[System.__Canon](System.ReadOnlySpan`1[ushort],System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]):System.__Canon (Tier1)
       -2372 (-100.00 % of base) : 607459.dasm - System.Text.Json.JsonSerializer:ReadFromSpan[System.Nullable`1[byte]](System.ReadOnlySpan`1[ushort],System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[byte]]):System.Nullable`1[byte] (Tier1)

Top method improvements (percentages):
       -2270 (-100.00 % of base) : 445732.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
       -1404 (-100.00 % of base) : 400668.dasm - Interop+OpenSsl:Encrypt(Microsoft.Win32.SafeHandles.SafeSslHandle,System.ReadOnlySpan`1[ubyte],byref):int (Tier1)
       -1128 (-100.00 % of base) : 675994.dasm - Microsoft.CodeAnalysis.CSharp.CSharpDiagnosticFilter:Filter(Microsoft.CodeAnalysis.Diagnostic,int,int,int,System.Collections.Generic.IDictionary`2[System.String,int],Microsoft.CodeAnalysis.SyntaxTreeOptionsProvider,System.Threading.CancellationToken):Microsoft.CodeAnalysis.Diagnostic (Tier1)
        -426 (-100.00 % of base) : 185832.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol+<>c:<.ctor>b__17_1(Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte:this (Tier1)
        -176 (-100.00 % of base) : 89026.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (Tier1)
        -176 (-100.00 % of base) : 49769.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (Tier1)
       -2898 (-100.00 % of base) : 671381.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceConstructorSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.Syntax.ConstructorDeclarationSyntax,int,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
       -1912 (-100.00 % of base) : 64295.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceTypeParameterSymbolBase:ConstraintsNeedNullableAttribute():ubyte:this (Tier1)
        -106 (-100.00 % of base) : 180482.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsPreprocessorContextualKeyword(ushort):ubyte (Tier1)
        -148 (-100.00 % of base) : 186626.dasm - Microsoft.CodeAnalysis.MetadataHelpers:IsValidMetadataIdentifier(System.String):ubyte (Tier1)
        -148 (-100.00 % of base) : 185663.dasm - Microsoft.CodeAnalysis.MetadataHelpers:IsValidMetadataIdentifier(System.String):ubyte (Tier1)
       -1014 (-100.00 % of base) : 109733.dasm - System.Buffers.SharedArrayPool`1[int]:Rent(int):int[]:this (Instrumented Tier1)
        -748 (-100.00 % of base) : 657510.dasm - System.Buffers.SharedArrayPool`1[int]:Rent(int):int[]:this (Tier1)
       -1094 (-100.00 % of base) : 109734.dasm - System.Buffers.SharedArrayPool`1[int]:Return(int[],ubyte):this (Instrumented Tier1)
        -812 (-100.00 % of base) : 207738.dasm - System.Buffers.SharedArrayPool`1[int]:Return(int[],ubyte):this (Tier1)
        -820 (-100.00 % of base) : 657512.dasm - System.Buffers.SharedArrayPool`1[int]:Return(int[],ubyte):this (Tier1)
       -1038 (-100.00 % of base) : 368322.dasm - System.Buffers.SharedArrayPool`1[System.Buffers.AhoCorasickNode]:Rent(int):System.Buffers.AhoCorasickNode[]:this (Instrumented Tier1)
       -1060 (-100.00 % of base) : 368323.dasm - System.Buffers.SharedArrayPool`1[System.Buffers.AhoCorasickNode]:Return(System.Buffers.AhoCorasickNode[],ubyte):this (Instrumented Tier1)
       -1014 (-100.00 % of base) : 656621.dasm - System.Buffers.SharedArrayPool`1[System.ReadOnlyMemory`1[ushort]]:Rent(int):System.ReadOnlyMemory`1[ushort][]:this (Instrumented Tier1)
        -806 (-100.00 % of base) : 618928.dasm - System.Buffers.SharedArrayPool`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:Rent(int):System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon][]:this (Tier1)


librariestestsnotieredcompilation.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: 93199432 (overridden on cmd)
Total bytes of diff: 93199426 (overridden on cmd)
Total bytes of delta: -6 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -3414 : 302315.dasm (-100.00 % of base)
       -2664 : 99043.dasm (-100.00 % of base)
       -1954 : 304045.dasm (-100.00 % of base)
       -1890 : 299659.dasm (-100.00 % of base)
       -1848 : 299957.dasm (-100.00 % of base)
       -1840 : 24060.dasm (-100.00 % of base)
       -1840 : 24019.dasm (-100.00 % of base)
       -1578 : 143951.dasm (-100.00 % of base)
       -1362 : 300502.dasm (-100.00 % of base)
       -1322 : 300439.dasm (-100.00 % of base)
       -1282 : 196696.dasm (-100.00 % of base)
       -1234 : 198938.dasm (-100.00 % of base)
       -1074 : 101383.dasm (-100.00 % of base)
       -1056 : 301547.dasm (-100.00 % of base)
        -814 : 16305.dasm (-100.00 % of base)
        -804 : 12380.dasm (-100.00 % of base)
        -794 : 12348.dasm (-100.00 % of base)
        -730 : 16303.dasm (-100.00 % of base)
        -704 : 240198.dasm (-100.00 % of base)
        -124 : 81540.dasm (-100.00 % of base)

21 total files with Code Size differences (21 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -3414 (-100.00 % of base) : 302315.dasm - System.Threading.Tasks.Tests.Status.TaskStatusTest:RealRun():this (FullOpts)
       -2664 (-100.00 % of base) : 99043.dasm - System.Diagnostics.Tests.ProcessWaitingTests+<SingleProcess_TryWaitAsyncMultipleTimesBeforeCompleting>d__9:MoveNext():this (FullOpts)
       -1954 (-100.00 % of base) : 304045.dasm - System.Threading.Tests.TimerDisposeTests+<DisposeAsync_ThenDisposeWaitHandleReturnsFalse>d__8:MoveNext():this (FullOpts)
       -1890 (-100.00 % of base) : 299659.dasm - System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+<SetException_AfterOnCompleted_ResultAvailableAsynchronously>d__7:MoveNext():this (FullOpts)
       -1848 (-100.00 % of base) : 299957.dasm - System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+<SetResult_AfterOnCompleted_ResultAvailableAsynchronously>d__5:MoveNext():this (FullOpts)
       -1840 (-100.00 % of base) : 24019.dasm - System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+<SetException_AfterOnCompleted_ResultAvailableAsynchronously>d__7:MoveNext():this (FullOpts)
       -1840 (-100.00 % of base) : 24060.dasm - System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+<SetResult_AfterOnCompleted_ResultAvailableAsynchronously>d__5:MoveNext():this (FullOpts)
       -1578 (-100.00 % of base) : 143951.dasm - System.SpanTests.ReadOnlySpanTests:AsSpan_StartAndLength(System.String,int,int) (FullOpts)
       -1362 (-100.00 % of base) : 300502.dasm - System.Threading.Tasks.Tests.ParallelForEachAsyncTests+<Dop_NegativeTaskSchedulerLimitTreatedAsDefault_For>d__6:MoveNext():this (FullOpts)
       -1322 (-100.00 % of base) : 300439.dasm - System.Threading.Tasks.Tests.ParallelForEachAsyncTests+<Dop_WorkersCreatedRespectingLimit_For>d__2:MoveNext():this (FullOpts)
       -1282 (-100.00 % of base) : 196696.dasm - XmlDictionaryWriterTest:XmlBaseWriter_WriteString() (FullOpts)
       -1234 (-100.00 % of base) : 198938.dasm - XmlDictionaryWriterTest:XmlBaseWriter_WriteString() (FullOpts)
       -1074 (-100.00 % of base) : 101383.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
       -1056 (-100.00 % of base) : 301547.dasm - System.Threading.Tasks.Tests.CancelWait.TaskCancelWaitTest:RealRun():this (FullOpts)
        -814 (-100.00 % of base) : 16305.dasm - System.Buffers.SharedArrayPool`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:Return(Microsoft.CodeAnalysis.Testing.DiagnosticResult[],ubyte):this (FullOpts)
        -804 (-100.00 % of base) : 12380.dasm - System.Buffers.SharedArrayPool`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:Return(System.Collections.Immutable.ImmutableArray`1[System.__Canon][],ubyte):this (FullOpts)
        -794 (-100.00 % of base) : 12348.dasm - System.Buffers.SharedArrayPool`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:Rent(int):System.Collections.Immutable.ImmutableArray`1[System.__Canon][]:this (FullOpts)
        -730 (-100.00 % of base) : 16303.dasm - System.Buffers.SharedArrayPool`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:Rent(int):Microsoft.CodeAnalysis.Testing.DiagnosticResult[]:this (FullOpts)
        -704 (-100.00 % of base) : 240198.dasm - System.Text.Json.SourceGeneration.Tests.PropertyNameTests_Default+PropertyNameTestsContext_Default:QueueStringSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Collections.Generic.Queue`1[System.String]):this (FullOpts)
        -124 (-100.00 % of base) : 81540.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor1_ShouldSetErrorsPropertyToEmpty():this (FullOpts)

Top method improvements (percentages):
        -730 (-100.00 % of base) : 16303.dasm - System.Buffers.SharedArrayPool`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:Rent(int):Microsoft.CodeAnalysis.Testing.DiagnosticResult[]:this (FullOpts)
        -814 (-100.00 % of base) : 16305.dasm - System.Buffers.SharedArrayPool`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult]:Return(Microsoft.CodeAnalysis.Testing.DiagnosticResult[],ubyte):this (FullOpts)
        -794 (-100.00 % of base) : 12348.dasm - System.Buffers.SharedArrayPool`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:Rent(int):System.Collections.Immutable.ImmutableArray`1[System.__Canon][]:this (FullOpts)
        -804 (-100.00 % of base) : 12380.dasm - System.Buffers.SharedArrayPool`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:Return(System.Collections.Immutable.ImmutableArray`1[System.__Canon][],ubyte):this (FullOpts)
        -124 (-100.00 % of base) : 81540.dasm - System.ComponentModel.Composition.CompositionExceptionTests:Constructor1_ShouldSetErrorsPropertyToEmpty():this (FullOpts)
       -2664 (-100.00 % of base) : 99043.dasm - System.Diagnostics.Tests.ProcessWaitingTests+<SingleProcess_TryWaitAsyncMultipleTimesBeforeCompleting>d__9:MoveNext():this (FullOpts)
       -1578 (-100.00 % of base) : 143951.dasm - System.SpanTests.ReadOnlySpanTests:AsSpan_StartAndLength(System.String,int,int) (FullOpts)
         -88 (-100.00 % of base) : 144291.dasm - System.SpanTests.ReadOnlySpanTests+<>c__DisplayClass21_0:<StringAsSpanNullNonZeroStartAndLength>b__9():this (FullOpts)
        -704 (-100.00 % of base) : 240198.dasm - System.Text.Json.SourceGeneration.Tests.PropertyNameTests_Default+PropertyNameTestsContext_Default:QueueStringSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Collections.Generic.Queue`1[System.String]):this (FullOpts)
       -1890 (-100.00 % of base) : 299659.dasm - System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+<SetException_AfterOnCompleted_ResultAvailableAsynchronously>d__7:MoveNext():this (FullOpts)
       -1840 (-100.00 % of base) : 24019.dasm - System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+<SetException_AfterOnCompleted_ResultAvailableAsynchronously>d__7:MoveNext():this (FullOpts)
       -1840 (-100.00 % of base) : 24060.dasm - System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+<SetResult_AfterOnCompleted_ResultAvailableAsynchronously>d__5:MoveNext():this (FullOpts)
       -1848 (-100.00 % of base) : 299957.dasm - System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+<SetResult_AfterOnCompleted_ResultAvailableAsynchronously>d__5:MoveNext():this (FullOpts)
       -1056 (-100.00 % of base) : 301547.dasm - System.Threading.Tasks.Tests.CancelWait.TaskCancelWaitTest:RealRun():this (FullOpts)
       -1362 (-100.00 % of base) : 300502.dasm - System.Threading.Tasks.Tests.ParallelForEachAsyncTests+<Dop_NegativeTaskSchedulerLimitTreatedAsDefault_For>d__6:MoveNext():this (FullOpts)
       -1322 (-100.00 % of base) : 300439.dasm - System.Threading.Tasks.Tests.ParallelForEachAsyncTests+<Dop_WorkersCreatedRespectingLimit_For>d__2:MoveNext():this (FullOpts)
       -3414 (-100.00 % of base) : 302315.dasm - System.Threading.Tasks.Tests.Status.TaskStatusTest:RealRun():this (FullOpts)
       -1954 (-100.00 % of base) : 304045.dasm - System.Threading.Tests.TimerDisposeTests+<DisposeAsync_ThenDisposeWaitHandleReturnsFalse>d__8:MoveNext():this (FullOpts)
       -1074 (-100.00 % of base) : 101383.dasm - System.Xml.XmlBaseReader:IndexOfLocalName(System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString):int:this (FullOpts)
       -1282 (-100.00 % of base) : 196696.dasm - XmlDictionaryWriterTest:XmlBaseWriter_WriteString() (FullOpts)

21 total methods with Code Size differences (21 improved, 0 regressed).



windows x86

Diffs are based on 2,296,274 contexts (841,817 MinOpts, 1,454,457 FullOpts).

MISSED contexts: base: 5,093 (0.22%), diff: 5,096 (0.22%)

Overall (-79 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 45,222,512 -61
coreclr_tests.run.windows.x86.checked.mch 309,180,492 +163
libraries_tests.run.windows.x86.Release.mch 185,842,234 -161
librariestestsnotieredcompilation.run.windows.x86.Release.mch 102,197,516 -20

FullOpts (-79 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 38,593,022 -61
coreclr_tests.run.windows.x86.checked.mch 107,508,723 +163
libraries_tests.run.windows.x86.Release.mch 87,510,727 -161
librariestestsnotieredcompilation.run.windows.x86.Release.mch 93,527,724 -20

Example diffs

benchmarks.run_pgo.windows.x86.checked.mch

-40 (-2.73%) : 78739.dasm - Microsoft.Cci.MetadataWriter:WriteInstructions(System.Reflection.Metadata.Blob,System.Collections.Immutable.ImmutableArray`1[ubyte],byref,byref):this (Tier0-FullOpts)

@@ -8,31 +8,31 @@ ; 6 inlinees with PGO data; 53 single block inlinees; 17 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T07] ( 11, 32 ) ref -> [ebp-0x60] this class-hnd single-def <Microsoft.Cci.MetadataWriter> -; V01 arg1 [V01,T40] ( 3, 3 ) struct (12) [ebp+0x10] do-not-enreg[S] single-def <System.Reflection.Metadata.Blob>
+; V00 this [V00,T06] ( 11, 32 ) ref -> [ebp-0x54] this class-hnd single-def <Microsoft.Cci.MetadataWriter> +; V01 arg1 [V01,T39] ( 3, 3 ) struct (12) [ebp+0x10] do-not-enreg[S] single-def <System.Reflection.Metadata.Blob>
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[ubyte]>
-; V03 arg3 [V03,T10] ( 5, 26 ) byref -> [ebp-0x64] single-def -; V04 arg4 [V04,T27] ( 1, 8 ) byref -> [ebp+0x08] single-def
+; V03 arg3 [V03,T09] ( 5, 26 ) byref -> [ebp-0x58] single-def +; V04 arg4 [V04,T26] ( 1, 8 ) byref -> [ebp+0x08] single-def
; V05 loc0 [V05 ] ( 34,168 ) struct (16) [ebp-0x1C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.Metadata.BlobWriter> ; V06 loc1 [V06,T00] ( 47,265 ) int -> [ebp-0x20] ld-addr-op ;* V07 loc2 [V07 ] ( 0, 0 ) int -> zero-ref ;* V08 loc3 [V08 ] ( 0, 0 ) int -> zero-ref
-; V09 loc4 [V09,T13] ( 7, 14 ) int -> [ebp-0x24] spill-single-def -; V10 loc5 [V10,T14] ( 7, 14 ) int -> [ebp-0x28] -; V11 loc6 [V11,T29] ( 4, 6 ) ubyte -> [ebp-0x2C] spill-single-def -; V12 loc7 [V12,T06] ( 3, 40 ) int -> eax
+; V09 loc4 [V09,T12] ( 7, 14 ) int -> [ebp-0x24] spill-single-def +; V10 loc5 [V10,T13] ( 7, 14 ) int -> ecx +; V11 loc6 [V11,T28] ( 4, 6 ) ubyte -> [ebp-0x28] spill-single-def +; V12 loc7 [V12,T05] ( 3, 40 ) int -> edx
;* V13 loc8 [V13 ] ( 0, 0 ) struct ( 4) zero-ref <System.Reflection.Metadata.UserStringHandle>
-; V14 loc9 [V14 ] ( 3, 24 ) struct (16) [ebp-0x3C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.Metadata.ReservedBlob`1[System.Reflection.Metadata.UserStringHandle]>
+; V14 loc9 [V14 ] ( 3, 24 ) struct (16) [ebp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.Metadata.ReservedBlob`1[System.Reflection.Metadata.UserStringHandle]>
;* V15 tmp0 [V15 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V16 tmp1 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Reflection.Metadata.Handle>
-; V17 tmp2 [V17,T50] ( 3, 0 ) ref -> eax class-hnd exact "Single-def Box Helper" <<unknown class>> -; V18 tmp3 [V18,T21] ( 5, 10 ) byref -> esi
+; V17 tmp2 [V17,T49] ( 3, 0 ) ref -> eax class-hnd exact "Single-def Box Helper" <<unknown class>> +; V18 tmp3 [V18,T20] ( 5, 10 ) byref -> [ebp-0x5C] spill-single-def
;* V19 tmp4 [V19 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Reflection.Metadata.EntityHandle> ;* V20 tmp5 [V20 ] ( 0, 0 ) byref -> zero-ref
-; V21 tmp6 [V21,T30] ( 3, 6 ) int -> [ebp-0x40] -; V22 tmp7 [V22,T51] ( 3, 0 ) ref -> eax class-hnd exact "Single-def Box Helper" <<unknown class>>
+; V21 tmp6 [V21,T29] ( 3, 6 ) int -> [ebp-0x3C] +; V22 tmp7 [V22,T50] ( 3, 0 ) ref -> eax class-hnd exact "Single-def Box Helper" <<unknown class>>
;* V23 tmp8 [V23 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Reflection.Metadata.EntityHandle>
-; V24 tmp9 [V24,T17] ( 3, 12 ) ref -> [ebp-0x68] class-hnd spill-single-def "impAppendStmt" <Microsoft.Cci.DynamicAnalysisDataWriter>
+; V24 tmp9 [V24,T16] ( 3, 12 ) ref -> [ebp-0x60] class-hnd spill-single-def "impAppendStmt" <Microsoft.Cci.DynamicAnalysisDataWriter>
;* V25 tmp10 [V25 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Reflection.Metadata.EntityHandle> ;* V26 tmp11 [V26 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.Blob> ;* V27 tmp12 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <ubyte[]> @@ -45,51 +45,51 @@ ;* V34 tmp19 [V34 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ;* V35 tmp20 [V35 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" ;* V36 tmp21 [V36 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
-; V37 tmp22 [V37,T38] ( 7, 4.50) int -> [ebp-0x44] spill-single-def "Inline stloc first use temp"
+; V37 tmp22 [V37,T37] ( 7, 4.50) int -> [ebp-0x40] spill-single-def "Inline stloc first use temp"
;* V38 tmp23 [V38 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V39 tmp24 [V39 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
-; V40 tmp25 [V40,T28] ( 5, 7 ) ref -> edx class-hnd single-def "Inlining Arg" <ubyte[]>
+; V40 tmp25 [V40,T27] ( 5, 7 ) ref -> edx class-hnd single-def "Inlining Arg" <ubyte[]>
;* V41 tmp26 [V41 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V42 tmp27 [V42 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[ubyte]>
-; V43 tmp28 [V43,T41] ( 3, 3 ) int -> [ebp-0x48] spill-single-def "Inlining Arg" -; V44 tmp29 [V44,T42] ( 2, 2 ) byref -> [ebp-0x6C] spill-single-def "Inlining Arg"
+; V43 tmp28 [V43,T40] ( 3, 3 ) int -> [ebp-0x44] spill-single-def "Inlining Arg" +; V44 tmp29 [V44,T41] ( 2, 2 ) byref -> [ebp-0x64] spill-single-def "Inlining Arg"
;* V45 tmp30 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V46 tmp31 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V47 tmp32 [V47 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> ;* V48 tmp33 [V48 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V49 tmp34 [V49 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V50 tmp35 [V50 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V51 tmp36 [V51,T15] ( 6, 14 ) int -> [ebp-0x4C] "Inline return value spill temp"
+; V51 tmp36 [V51,T14] ( 6, 14 ) int -> [ebp-0x48] "Inline return value spill temp"
;* V52 tmp37 [V52 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[ubyte]>
-; V53 tmp38 [V53,T11] ( 8, 24 ) int -> ecx "Inline stloc first use temp" -; V54 tmp39 [V54,T16] ( 4, 12 ) ubyte -> ecx "Inline stloc first use temp"
+; V53 tmp38 [V53,T10] ( 8, 24 ) int -> ecx "Inline stloc first use temp" +; V54 tmp39 [V54,T15] ( 4, 12 ) ubyte -> edx "Inline stloc first use temp"
;* V55 tmp40 [V55 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
-; V56 tmp41 [V56,T19] ( 3, 12 ) int -> ecx "Span.get_Item index"
+; V56 tmp41 [V56,T18] ( 3, 12 ) int -> edx "Span.get_Item index"
;* V57 tmp42 [V57 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V58 tmp43 [V58 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V59 tmp44 [V59 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[ubyte]> ;* V60 tmp45 [V60 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V61 tmp46 [V61 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V62 tmp47 [V62 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V63 tmp48 [V63,T25] ( 2, 8 ) int -> edi "impAppendStmt"
+; V63 tmp48 [V63,T24] ( 2, 8 ) int -> edi "impAppendStmt"
;* V64 tmp49 [V64 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V65 tmp50 [V65 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V66 tmp51 [V66 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V67 tmp52 [V67,T12] ( 4, 16 ) int -> esi "Inlining Arg"
+; V67 tmp52 [V67,T11] ( 4, 16 ) int -> ecx "Inlining Arg"
;* V68 tmp53 [V68 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V69 tmp54 [V69,T22] ( 5, 10 ) int -> ecx "Inline stloc first use temp" -; V70 tmp55 [V70,T31] ( 3, 6 ) int -> ecx "Inline return value spill temp"
+; V69 tmp54 [V69,T21] ( 5, 10 ) int -> ecx "Inline stloc first use temp" +; V70 tmp55 [V70,T30] ( 3, 6 ) int -> ecx "Inline return value spill temp"
;* V71 tmp56 [V71 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-; V72 tmp57 [V72,T32] ( 3, 6 ) int -> eax "Inline return value spill temp"
+; V72 tmp57 [V72,T31] ( 3, 6 ) int -> eax "Inline return value spill temp"
;* V73 tmp58 [V73 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle> ;* V74 tmp59 [V74 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder> ;* V75 tmp60 [V75 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V76 tmp61 [V76 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>> ;* V77 tmp62 [V77 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V78 tmp63 [V78,T33] ( 3, 6 ) int -> ecx "Inline return value spill temp"
+; V78 tmp63 [V78,T32] ( 3, 6 ) int -> ecx "Inline return value spill temp"
;* V79 tmp64 [V79 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle> ;* V80 tmp65 [V80 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V81 tmp66 [V81,T23] ( 5, 10 ) int -> edi "Inline stloc first use temp"
+; V81 tmp66 [V81,T22] ( 5, 10 ) int -> edi "Inline stloc first use temp"
;* V82 tmp67 [V82 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> ;* V83 tmp68 [V83 ] ( 0, 0 ) byref -> zero-ref ;* V84 tmp69 [V84 ] ( 0, 0 ) byref -> zero-ref @@ -99,17 +99,17 @@ ;* V88 tmp73 [V88 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V89 tmp74 [V89 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V90 tmp75 [V90 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V91 tmp76 [V91,T05] ( 2, 64 ) int -> ecx "impAppendStmt"
+; V91 tmp76 [V91,T04] ( 2, 64 ) int -> edx "impAppendStmt"
;* V92 tmp77 [V92 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V93 tmp78 [V93 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V94 tmp79 [V94 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V95 tmp80 [V95 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.Handle> ;* V96 tmp81 [V96 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V97 tmp82 [V97,T09] ( 2, 32 ) int -> eax "Inline return value spill temp"
+; V97 tmp82 [V97,T08] ( 2, 32 ) int -> edx "Inline return value spill temp"
;* V98 tmp83 [V98 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.Handle> ;* V99 tmp84 [V99 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V100 tmp85 [V100,T04] ( 5, 80 ) int -> ecx "Inline stloc first use temp" -; V101 tmp86 [V101,T01] ( 3, 96 ) ref -> edi class-hnd "Inlining Arg" <ubyte[]>
+; V100 tmp85 [V100,T03] ( 5, 80 ) int -> ecx "Inline stloc first use temp" +; V101 tmp86 [V101,T02] ( 3, 96 ) ref -> edi class-hnd "Inlining Arg" <ubyte[]>
;* V102 tmp87 [V102 ] ( 0, 0 ) byref -> zero-ref ;* V103 tmp88 [V103 ] ( 0, 0 ) byref -> zero-ref ;* V104 tmp89 [V104 ] ( 0, 0 ) int -> zero-ref @@ -117,37 +117,37 @@ ;* V106 tmp91 [V106 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V107 tmp92 [V107 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V108 tmp93 [V108 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V109 tmp94 [V109,T26] ( 2, 8 ) int -> [ebp-0x50] spill-single-def "impAppendStmt"
+; V109 tmp94 [V109,T25] ( 2, 8 ) int -> edx "impAppendStmt"
;* V110 tmp95 [V110 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V111 tmp96 [V111 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V112 tmp97 [V112 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V113 tmp98 [V113,T03] ( 17, 89 ) ref -> ebx single-def "field V02.array (fldOffset=0x0)" P-INDEP
+; V113 tmp98 [V113,T01] ( 33,180 ) ref -> ebx single-def "field V02.array (fldOffset=0x0)" P-INDEP
; V114 tmp99 [V114 ] ( 6, 24 ) ref -> [ebp-0x1C] do-not-enreg[X] addr-exposed "field V05._buffer (fldOffset=0x0)" P-DEP ; V115 tmp100 [V115 ] ( 10, 45 ) int -> [ebp-0x18] do-not-enreg[X] addr-exposed "field V05._start (fldOffset=0x4)" P-DEP ; V116 tmp101 [V116 ] ( 9, 43 ) int -> [ebp-0x14] do-not-enreg[X] addr-exposed "field V05._end (fldOffset=0x8)" P-DEP ; V117 tmp102 [V117 ] ( 12, 62 ) int -> [ebp-0x10] do-not-enreg[X] addr-exposed "field V05._position (fldOffset=0xc)" P-DEP
-; V118 tmp103 [V118,T08] ( 3, 32 ) int -> eax "field V13._offset (fldOffset=0x0)" P-INDEP
+; V118 tmp103 [V118,T07] ( 3, 32 ) int -> edx "field V13._offset (fldOffset=0x0)" P-INDEP
;* V119 tmp104 [V119 ] ( 0, 0 ) int -> zero-ref "field V16._value (fldOffset=0x0)" P-INDEP ;* V120 tmp105 [V120 ] ( 0, 0 ) ubyte -> zero-ref "field V16._vType (fldOffset=0x4)" P-INDEP
-; V121 tmp106 [V121,T34] ( 3, 6 ) int -> eax "field V19._vToken (fldOffset=0x0)" P-INDEP -; V122 tmp107 [V122,T35] ( 3, 6 ) int -> eax "field V23._vToken (fldOffset=0x0)" P-INDEP -; V123 tmp108 [V123,T36] ( 3, 6 ) int -> eax "field V25._vToken (fldOffset=0x0)" P-INDEP -; V124 tmp109 [V124,T43] ( 2, 2 ) ref -> [ebp-0x70] spill-single-def "field V26.Buffer (fldOffset=0x0)" P-INDEP -; V125 tmp110 [V125,T39] ( 4, 4 ) int -> edx single-def "field V26.Start (fldOffset=0x4)" P-INDEP -; V126 tmp111 [V126,T44] ( 2, 2 ) int -> [ebp-0x54] spill-single-def "field V26.<Length>k__BackingField (fldOffset=0x8)" P-INDEP
+; V121 tmp106 [V121,T33] ( 3, 6 ) int -> eax "field V19._vToken (fldOffset=0x0)" P-INDEP +; V122 tmp107 [V122,T34] ( 3, 6 ) int -> eax "field V23._vToken (fldOffset=0x0)" P-INDEP +; V123 tmp108 [V123,T35] ( 3, 6 ) int -> eax "field V25._vToken (fldOffset=0x0)" P-INDEP +; V124 tmp109 [V124,T42] ( 2, 2 ) ref -> [ebp-0x68] spill-single-def "field V26.Buffer (fldOffset=0x0)" P-INDEP +; V125 tmp110 [V125,T38] ( 4, 4 ) int -> edx single-def "field V26.Start (fldOffset=0x4)" P-INDEP +; V126 tmp111 [V126,T43] ( 2, 2 ) int -> [ebp-0x4C] spill-single-def "field V26.<Length>k__BackingField (fldOffset=0x8)" P-INDEP
;* V127 tmp112 [V127 ] ( 0, 0 ) ref -> zero-ref single-def "field V30.array (fldOffset=0x0)" P-INDEP ;* V128 tmp113 [V128 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP ;* V129 tmp114 [V129 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x4)" P-INDEP
-; V130 tmp115 [V130,T45] ( 3, 1.75) byref -> [ebp-0x74] spill-single-def "field V32._reference (fldOffset=0x0)" P-INDEP -; V131 tmp116 [V131,T37] ( 6, 5.50) int -> [ebp-0x58] spill-single-def "field V32._length (fldOffset=0x4)" P-INDEP
+; V130 tmp115 [V130,T44] ( 3, 1.75) byref -> [ebp-0x6C] spill-single-def "field V32._reference (fldOffset=0x0)" P-INDEP +; V131 tmp116 [V131,T36] ( 6, 5.50) int -> [ebp-0x50] spill-single-def "field V32._length (fldOffset=0x4)" P-INDEP
;* V132 tmp117 [V132 ] ( 0, 0 ) byref -> zero-ref single-def "field V34._reference (fldOffset=0x0)" P-INDEP ;* V133 tmp118 [V133 ] ( 0, 0 ) int -> zero-ref single-def "field V34._length (fldOffset=0x4)" P-INDEP ;* V134 tmp119 [V134 ] ( 0, 0 ) byref -> zero-ref "field V36._reference (fldOffset=0x0)" P-INDEP ;* V135 tmp120 [V135 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x4)" P-INDEP
-; V136 tmp121 [V136,T47] ( 4, 1.25) byref -> [ebp-0x78] "field V39._reference (fldOffset=0x0)" P-INDEP -; V137 tmp122 [V137,T46] ( 3, 1.50) int -> edx "field V39._length (fldOffset=0x4)" P-INDEP -; V138 tmp123 [V138,T48] ( 2, 1 ) byref -> eax single-def "field V41._reference (fldOffset=0x0)" P-INDEP -; V139 tmp124 [V139,T49] ( 2, 1 ) int -> edx single-def "field V41._length (fldOffset=0x4)" P-INDEP
+; V136 tmp121 [V136,T46] ( 4, 1.25) byref -> [ebp-0x70] "field V39._reference (fldOffset=0x0)" P-INDEP +; V137 tmp122 [V137,T45] ( 3, 1.50) int -> edx "field V39._length (fldOffset=0x4)" P-INDEP +; V138 tmp123 [V138,T47] ( 2, 1 ) byref -> ecx single-def "field V41._reference (fldOffset=0x0)" P-INDEP +; V139 tmp124 [V139,T48] ( 2, 1 ) int -> edx single-def "field V41._length (fldOffset=0x4)" P-INDEP
;* V140 tmp125 [V140 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP ;* V141 tmp126 [V141 ] ( 0, 0 ) int -> zero-ref single-def "field V42._length (fldOffset=0x4)" P-INDEP ;* V142 tmp127 [V142 ] ( 0, 0 ) byref -> zero-ref single-def "field V47._reference (fldOffset=0x0)" P-INDEP @@ -169,13 +169,12 @@ ;* V158 tmp143 [V158 ] ( 0, 0 ) int -> zero-ref "field V98._value (fldOffset=0x0)" P-INDEP ;* V159 tmp144 [V159 ] ( 0, 0 ) ubyte -> zero-ref "field V98._vType (fldOffset=0x4)" P-INDEP ;* V160 tmp145 [V160 ] ( 0, 0 ) ref -> zero-ref "field V105.array (fldOffset=0x0)" P-INDEP
-; V161 tmp146 [V161,T24] ( 2, 8 ) ref -> edx "argument with side effect" -; V162 tmp147 [V162,T18] ( 3, 12 ) ref -> ecx "arr expr" -; V163 cse0 [V163,T02] ( 18, 93 ) int -> [ebp-0x5C] spill-single-def "CSE - aggressive" -; V164 rat0 [V164,T20] ( 3, 12 ) int -> ecx "ReplaceWithLclVar is creating a new local variable" -; TEMP_01 int -> [ebp-0x7C]
+; V161 tmp146 [V161,T23] ( 2, 8 ) ref -> edx "argument with side effect" +; V162 tmp147 [V162,T17] ( 3, 12 ) ref -> edx "arr expr" +; V163 rat0 [V163,T19] ( 3, 12 ) int -> ecx "ReplaceWithLclVar is creating a new local variable" +; TEMP_01 int -> [ebp-0x74]
;
-; Lcl frame size = 112
+; Lcl frame size = 104
G_M4677_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -183,320 +182,313 @@ G_M4677_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push edi push esi push ebx
- sub esp, 112
+ sub esp, 104
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [ebp-0x3C], ymm4 - vmovdqu xmmword ptr [ebp-0x1C], xmm4 - mov gword ptr [ebp-0x60], ecx - ; GC ptr vars +{V00} - mov bword ptr [ebp-0x64], edx
+ vmovdqu ymmword ptr [ebp-0x38], ymm4 + xor eax, eax + mov dword ptr [ebp-0x18], eax + mov dword ptr [ebp-0x14], eax + mov dword ptr [ebp-0x10], eax + mov bword ptr [ebp-0x58], edx
; GC ptr vars +{V03}
+ mov esi, ecx + ; gcrRegs +[esi]
mov ebx, gword ptr [ebp+0x0C] ; gcrRegs +[ebx]
- ;; size=32 bbWeight=1 PerfScore 11.83 -G_M4677_IG02: ; bbWeight=1, gcVars=0000000000000480 {V00 V03}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=37 bbWeight=1 PerfScore 12.33 +G_M4677_IG02: ; bbWeight=1, gcVars=0000000000000200 {V03}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
mov ecx, gword ptr [ebp+0x10] ; gcrRegs +[ecx]
- mov gword ptr [ebp-0x70], ecx
+ mov gword ptr [ebp-0x68], ecx
; GC ptr vars +{V124} mov edx, dword ptr [ebp+0x14] mov ecx, dword ptr [ebp+0x18] ; gcrRegs -[ecx]
- mov dword ptr [ebp-0x54], ecx - mov ecx, gword ptr [ebp-0x70]
+ mov dword ptr [ebp-0x4C], ecx + mov ecx, gword ptr [ebp-0x68]
; gcrRegs +[ecx] mov gword ptr [ebp-0x1C], ecx mov dword ptr [ebp-0x18], edx mov dword ptr [ebp-0x10], edx ...

-19 (-1.42%) : 14435.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)

@@ -8,35 +8,35 @@ ; 3 inlinees with PGO data; 11 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T13] ( 16, 23 ) ref -> [ebp-0x68] this class-hnd single-def <System.Reflection.Emit.RuntimeMethodBuilder>
+; V00 this [V00,T13] ( 16, 23 ) ref -> [ebp-0x64] this class-hnd single-def <System.Reflection.Emit.RuntimeMethodBuilder>
; V01 arg1 [V01,T24] ( 9, 4 ) ref -> edi class-hnd single-def <System.Reflection.Emit.RuntimeILGenerator>
-; V02 loc0 [V02,T21] ( 6, 12 ) ref -> [ebp-0x6C] class-hnd exact spill-single-def <System.Reflection.Emit.__ExceptionInfo[]>
+; V02 loc0 [V02,T21] ( 7, 16 ) ref -> [ebp-0x68] class-hnd exact spill-single-def <System.Reflection.Emit.__ExceptionInfo[]>
; V03 loc1 [V03,T10] ( 9, 33 ) int -> [ebp-0x10]
-; V04 loc2 [V04,T14] ( 9, 24.16) ref -> [ebp-0x70] class-hnd spill-single-def <int[]> -; V05 loc3 [V05,T15] ( 9, 24.16) ref -> [ebp-0x74] class-hnd spill-single-def <int[]> -; V06 loc4 [V06,T16] ( 9, 24.16) ref -> [ebp-0x78] class-hnd spill-single-def <int[]> -; V07 loc5 [V07,T17] ( 6, 24.16) ref -> [ebp-0x7C] class-hnd spill-single-def <System.Type[]> -; V08 loc6 [V08,T18] ( 6, 24.16) ref -> [ebp-0x80] class-hnd spill-single-def <int[]>
+; V04 loc2 [V04,T14] ( 9, 24.16) ref -> [ebp-0x6C] class-hnd spill-single-def <int[]> +; V05 loc3 [V05,T15] ( 9, 24.16) ref -> [ebp-0x70] class-hnd spill-single-def <int[]> +; V06 loc4 [V06,T16] ( 9, 24.16) ref -> [ebp-0x74] class-hnd spill-single-def <int[]> +; V07 loc5 [V07,T17] ( 6, 24.16) ref -> [ebp-0x78] class-hnd spill-single-def <System.Type[]> +; V08 loc6 [V08,T18] ( 6, 24.16) ref -> [ebp-0x7C] class-hnd spill-single-def <int[]>
; V09 loc7 [V09,T09] ( 9, 34 ) int -> [ebp-0x14] spill-single-def ; V10 loc8 [V10,T20] ( 5, 20 ) int -> [ebp-0x18] spill-single-def ; V11 loc9 [V11,T22] ( 3, 12 ) int -> [ebp-0x1C] spill-single-def
-; V12 loc10 [V12,T23] ( 3, 9 ) ref -> [ebp-0x84] class-hnd exact spill-single-def <<unknown class>> -; V13 loc11 [V13,T33] ( 3, 0 ) int -> eax
+; V12 loc10 [V12,T23] ( 3, 9 ) ref -> [ebp-0x80] class-hnd exact spill-single-def <<unknown class>> +; V13 loc11 [V13,T32] ( 3, 0 ) int -> eax
; V14 loc12 [V14,T19] ( 7, 24 ) int -> [ebp-0x20] ; V15 loc13 [V15,T00] ( 31,132.80) int -> edi ; V16 loc14 [V16,T06] ( 8, 40 ) int -> [ebp-0x24] ;* V17 loc15 [V17 ] ( 0, 0 ) int -> zero-ref ; V18 tmp0 [V18,T01] ( 8, 64 ) int -> ebx "impSpillLclRefs"
-; V19 tmp1 [V19,T04] ( 6, 48 ) ref -> [ebp-0x88] class-hnd exact "impAppendStmt" <<unknown class>>
+; V19 tmp1 [V19,T04] ( 6, 48 ) ref -> [ebp-0x84] class-hnd exact "impAppendStmt" <<unknown class>>
; V20 tmp2 [V20 ] ( 6, 48 ) struct (28) [ebp-0x40] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Reflection.Emit.ExceptionHandler> ; V21 tmp3 [V21,T02] ( 8, 64 ) int -> ebx "impSpillLclRefs" ; V22 tmp4 [V22 ] ( 6, 48 ) struct (28) [ebp-0x5C] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Reflection.Emit.ExceptionHandler>
-; V23 tmp5 [V23,T05] ( 6, 48 ) ref -> [ebp-0x8C] class-hnd exact "impAppendStmt" <<unknown class>> -; V24 tmp6 [V24,T30] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V25 tmp7 [V25,T31] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V26 tmp8 [V26,T32] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V23 tmp5 [V23,T05] ( 6, 48 ) ref -> [ebp-0x88] class-hnd exact "impAppendStmt" <<unknown class>> +; V24 tmp6 [V24,T29] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V25 tmp7 [V25,T30] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V26 tmp8 [V26,T31] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V27 tmp9 [V27,T25] ( 5, 4.00) ref -> ecx class-hnd single-def "Inlining Arg" <System.Reflection.MethodInfo>
-; V28 tmp10 [V28,T29] ( 2, 0 ) ubyte -> eax "Inline return value spill temp"
+; V28 tmp10 [V28,T28] ( 2, 0 ) ubyte -> eax "Inline return value spill temp"
;* V29 tmp11 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.MethodInfo> ;* V30 tmp12 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V31 tmp13 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo> @@ -49,17 +49,16 @@ ;* V38 tmp20 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo> ; V39 tmp21 [V39,T11] ( 4, 32 ) ref -> edx class-hnd exact "Inlining Arg" <System.Reflection.Emit.__ExceptionInfo> ; V40 tmp22 [V40,T12] ( 4, 32 ) ref -> eax "argument with side effect"
-; V41 tmp23 [V41,T34] ( 2, 0 ) ref -> edx single-def "argument with side effect" -; V42 tmp24 [V42,T35] ( 2, 0 ) ref -> edx single-def "argument with side effect" -; V43 tmp25 [V43,T36] ( 2, 0 ) ref -> edx single-def "argument with side effect" -; V44 cse0 [V44,T27] ( 5, 0.64) int -> [ebp-0x60] spill-single-def "CSE - conservative" -; V45 cse1 [V45,T28] ( 3, 0.40) ref -> eax "CSE - conservative"
+; V41 tmp23 [V41,T33] ( 2, 0 ) ref -> edx single-def "argument with side effect" +; V42 tmp24 [V42,T34] ( 2, 0 ) ref -> edx single-def "argument with side effect" +; V43 tmp25 [V43,T35] ( 2, 0 ) ref -> edx single-def "argument with side effect" +; V44 cse0 [V44,T26] ( 5, 0.64) int -> [ebp-0x60] spill-single-def "CSE - conservative" +; V45 cse1 [V45,T27] ( 3, 0.40) ref -> eax "CSE - conservative"
; V46 cse2 [V46,T08] ( 9, 36 ) ref -> edx "CSE - moderate" ; V47 cse3 [V47,T03] ( 5, 63.36) int -> eax "CSE - moderate" ; V48 cse4 [V48,T07] ( 3, 39.60) ref -> eax "CSE - moderate"
-; V49 cse5 [V49,T26] ( 3, 4 ) int -> [ebp-0x64] spill-single-def "CSE - conservative"
;
-; Lcl frame size = 128
+; Lcl frame size = 124
G_M41336_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -67,20 +66,20 @@ G_M41336_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 128
+ sub esp, 124
vzeroupper mov esi, ecx ; gcrRegs +[esi] mov edi, edx ; gcrRegs +[edi]
- ;; size=19 bbWeight=1 PerfScore 6.00
+ ;; size=16 bbWeight=1 PerfScore 6.00
G_M41336_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref test edi, edi
- je G_M41336_IG42
+ je G_M41336_IG41
xor ebx, ebx mov eax, gword ptr [esi+0x08] ; gcrRegs +[eax]
- mov gword ptr [ebp-0x84], eax
+ mov gword ptr [ebp-0x80], eax
; GC ptr vars +{V12} mov ecx, gword ptr [esi+0x0C] ; gcrRegs +[ecx] @@ -88,8 +87,8 @@ G_M41336_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 call [System.Reflection.Emit.RuntimeTypeBuilder:ThrowIfCreated():this] ; gcrRegs -[eax ecx] cmp byte ptr [esi+0x58], 0
- jne G_M41336_IG43 - ;; size=40 bbWeight=1 PerfScore 16.50
+ jne G_M41336_IG42 + ;; size=37 bbWeight=1 PerfScore 16.50
G_M41336_IG03: ; bbWeight=1.00, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [edi+0x28] ; gcrRegs +[ecx] @@ -186,7 +185,7 @@ G_M41336_IG07: ; bbWeight=0, gcVars=0000000000800000 {V12}, gcrefRegs=000 ; gcrRegs -[ecx edi] +[eax] mov edi, eax ; gcrRegs +[edi]
- mov gword ptr [ebp-0x6C], edi
+ mov gword ptr [ebp-0x68], edi
; GC ptr vars +{V02} mov ecx, edi ; gcrRegs +[ecx] @@ -199,7 +198,7 @@ G_M41336_IG07: ; bbWeight=0, gcVars=0000000000800000 {V12}, gcrefRegs=000 mov ecx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[eax]
- mov gword ptr [ebp-0x68], esi
+ mov gword ptr [ebp-0x64], esi
; GC ptr vars +{V00} lea edx, bword ptr [esi+0x24] ; byrRegs +[edx] @@ -207,29 +206,27 @@ G_M41336_IG07: ; bbWeight=0, gcVars=0000000000800000 {V12}, gcrefRegs=000 ; gcrRegs -[eax esi] ; byrRegs -[edx] xor eax, eax
- mov ecx, dword ptr [edi+0x04] - mov dword ptr [ebp-0x64], ecx - test ecx, ecx - jle G_M41336_IG41 - ;; size=100 bbWeight=0 PerfScore 0.00
+ cmp dword ptr [edi+0x04], 0 + jle G_M41336_IG40 + ;; size=96 bbWeight=0 PerfScore 0.00
G_M41336_IG08: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref mov dword ptr [ebp-0x20], eax mov edx, gword ptr [edi+4*eax+0x08] ; gcrRegs +[edx] mov ecx, gword ptr [edx+0x04] ; gcrRegs +[ecx]
- mov gword ptr [ebp-0x70], ecx
+ mov gword ptr [ebp-0x6C], ecx
; GC ptr vars +{V04} mov edi, gword ptr [edx+0x08]
- mov gword ptr [ebp-0x74], edi
+ mov gword ptr [ebp-0x70], edi
; GC ptr vars +{V05} mov esi, gword ptr [edx+0x0C] ; gcrRegs +[esi]
- mov gword ptr [ebp-0x78], esi
+ mov gword ptr [ebp-0x74], esi
; GC ptr vars +{V06} mov eax, gword ptr [edx+0x14] ; gcrRegs +[eax]
- mov gword ptr [ebp-0x7C], eax
+ mov gword ptr [ebp-0x78], eax
; GC ptr vars +{V07} mov esi, dword ptr [edx+0x24] ; gcrRegs -[esi] @@ -240,7 +237,7 @@ G_M41336_IG08: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 mov edi, dword ptr [edx+0x1C] mov dword ptr [ebp-0x1C], edi mov edx, gword ptr [edx+0x10]
- mov gword ptr [ebp-0x80], edx
+ mov gword ptr [ebp-0x7C], edx
; GC ptr vars +{V08} xor edi, edi test esi, esi @@ -253,9 +250,9 @@ G_M41336_IG09: ; bbWeight=2, gcVars=0000000000A7E000 {V00 V02 V04 V05 V06 je G_M41336_IG22 test ecx, ecx je G_M41336_IG21
- cmp gword ptr [ebp-0x74], 0
+ cmp gword ptr [ebp-0x70], 0
je G_M41336_IG20
- cmp gword ptr [ebp-0x78], 0
+ cmp gword ptr [ebp-0x74], 0
je G_M41336_IG19 cmp dword ptr [eax+0x04], esi jl G_M41336_IG18 @@ -263,10 +260,10 @@ G_M41336_IG09: ; bbWeight=2, gcVars=0000000000A7E000 {V00 V02 V04 V05 V06 jl SHORT G_M41336_IG17 cmp dword ptr [ecx+0x04], esi jl SHORT G_M41336_IG16
- mov ecx, gword ptr [ebp-0x74]
+ mov ecx, gword ptr [ebp-0x70]
cmp dword ptr [ecx+0x04], esi jl SHORT G_M41336_IG15
- mov ecx, gword ptr [ebp-0x78]
+ mov ecx, gword ptr [ebp-0x74]
cmp dword ptr [ecx+0x04], esi jl SHORT G_M41336_IG14 ;; size=79 bbWeight=2 PerfScore 63.50 @@ -281,15 +278,15 @@ G_M41336_IG11: ; bbWeight=7.92, gcrefRegs=00000001 {eax}, byrefRegs=00000 push 0 mov edx, eax ; gcrRegs +[edx]
- mov ecx, gword ptr [ebp-0x84]
+ mov ecx, gword ptr [ebp-0x80]
; gcrRegs +[ecx] cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[eax ecx edx] mov ecx, eax
- ;; size=20 bbWeight=7.92 PerfScore 67.32
+ ;; size=17 bbWeight=7.92 PerfScore 67.32
G_M41336_IG12: ; bbWeight=15.84, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov edx, gword ptr [ebp-0x80]
+ mov edx, gword ptr [ebp-0x7C]
; gcrRegs +[edx] mov eax, dword ptr [edx+4*edi+0x08] cmp eax, 4 @@ -302,32 +299,32 @@ G_M41336_IG12: ; bbWeight=15.84, gcrefRegs=00000000 {}, byrefRegs=0000000 jmp esi ;; size=35 bbWeight=15.84 PerfScore 158.40 G_M41336_IG13: ; bbWeight=7.92, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov edx, gword ptr [ebp-0x80]
+ mov edx, gword ptr [ebp-0x7C]
; gcrRegs +[edx] mov esi, dword ptr [ebp-0x14] jmp G_M41336_IG26 ;; size=11 bbWeight=7.92 PerfScore 31.68 G_M41336_IG14: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref ; gcrRegs -[edx] +[eax]
- mov edx, gword ptr [ebp-0x80]
+ mov edx, gword ptr [ebp-0x7C]
; gcrRegs +[edx] jmp G_M41336_IG28 ;; size=8 bbWeight=1 PerfScore 3.00 G_M41336_IG15: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref ; gcrRegs -[edx]
- mov edx, gword ptr [ebp-0x80]
+ mov edx, gword ptr [ebp-0x7C]
; gcrRegs +[edx] jmp G_M41336_IG28 ;; size=8 bbWeight=1 PerfScore 3.00 G_M41336_IG16: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref ; gcrRegs -[edx]
- mov edx, gword ptr [ebp-0x80]
+ mov edx, gword ptr [ebp-0x7C]
; gcrRegs +[edx] jmp G_M41336_IG28 ;; size=8 bbWeight=1 PerfScore 3.00 ...

-3 (-0.89%) : 75115.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol+<>c:<.ctor>b_171(Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte:this (Tier1)

@@ -10,41 +10,40 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol+<>c>
-; V01 arg1 [V01,T07] ( 4, 2 ) struct (20) [ebp+0x08] do-not-enreg[S] ld-addr-op single-def <Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]> -; V02 tmp0 [V02,T15] ( 2, 0 ) ref -> ecx class-hnd single-def "dup spill" <<unknown class>>
+; V01 arg1 [V01,T06] ( 4, 2 ) struct (20) [ebp+0x08] do-not-enreg[S] ld-addr-op single-def <Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]> +; V02 tmp0 [V02,T14] ( 2, 0 ) ref -> ecx class-hnd single-def "dup spill" <<unknown class>>
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 4) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]]>
-; V04 tmp2 [V04,T12] ( 4, 0 ) ref -> ecx -; V05 tmp3 [V05,T13] ( 4, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V06 tmp4 [V06,T09] ( 2, 0 ) ubyte -> ecx "Inline return value spill temp"
+; V04 tmp2 [V04,T11] ( 4, 0 ) ref -> ecx +; V05 tmp3 [V05,T12] ( 4, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V06 tmp4 [V06,T08] ( 2, 0 ) ubyte -> ecx "Inline return value spill temp"
;* V07 tmp5 [V07 ] ( 0, 0 ) struct ( 4) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]]>
-; V08 tmp6 [V08,T04] ( 3, 3 ) ubyte -> eax "Inline return value spill temp"
+; V08 tmp6 [V08,T03] ( 3, 3 ) ubyte -> eax "Inline return value spill temp"
;* V09 tmp7 [V09 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]]>
-; V10 tmp8 [V10,T16] ( 2, 0 ) ref -> ebx class-hnd single-def "dup spill" <<unknown class>>
+; V10 tmp8 [V10,T15] ( 2, 0 ) ref -> edi class-hnd single-def "dup spill" <<unknown class>>
;* V11 tmp9 [V11 ] ( 0, 0 ) struct ( 4) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]]> ;* V12 tmp10 [V12 ] ( 0, 0 ) struct ( 4) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]]>
-; V13 tmp11 [V13,T01] ( 6, 16 ) ref -> ebx -; V14 tmp12 [V14,T11] ( 5, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V15 tmp13 [V15,T10] ( 2, 0 ) ubyte -> ecx "Inline return value spill temp"
+; V13 tmp11 [V13,T01] ( 6, 16 ) ref -> edi +; V14 tmp12 [V14,T10] ( 5, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V15 tmp13 [V15,T09] ( 2, 0 ) ubyte -> ecx "Inline return value spill temp"
;* V16 tmp14 [V16 ] ( 0, 0 ) struct ( 4) zero-ref "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]]>
-; V17 tmp15 [V17,T14] ( 3, 0 ) ref -> eax class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V18 tmp16 [V18,T05] ( 3, 3 ) ubyte -> eax "Inline return value spill temp"
+; V17 tmp15 [V17,T13] ( 3, 0 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V18 tmp16 [V18,T04] ( 3, 3 ) ubyte -> eax "Inline return value spill temp"
;* V19 tmp17 [V19 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]]>
-; V20 tmp18 [V20,T03] ( 2, 8 ) ref -> esi class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V21 tmp19 [V21,T00] ( 5, 32 ) int -> [ebp-0x10] "Inline stloc first use temp"
+; V20 tmp18 [V20,T02] ( 4, 16 ) ref -> esi class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V21 tmp19 [V21,T00] ( 5, 32 ) int -> ebx "Inline stloc first use temp"
;* V22 tmp20 [V22 ] ( 0, 0 ) struct ( 8) zero-ref "Inline stloc first use temp" <Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]>
-; V23 tmp21 [V23,T17] ( 2, 0 ) ref -> esi single-def "field V03.array (fldOffset=0x0)" P-INDEP -; V24 tmp22 [V24,T08] ( 3, 2 ) ref -> ecx single-def "field V07.array (fldOffset=0x0)" P-INDEP -; V25 tmp23 [V25,T06] ( 6, 2 ) ref -> esi single-def "field V09.array (fldOffset=0x0)" P-INDEP
+; V23 tmp21 [V23,T16] ( 2, 0 ) ref -> esi single-def "field V03.array (fldOffset=0x0)" P-INDEP +; V24 tmp22 [V24,T07] ( 3, 2 ) ref -> ecx single-def "field V07.array (fldOffset=0x0)" P-INDEP +; V25 tmp23 [V25,T05] ( 7, 2 ) ref -> esi single-def "field V09.array (fldOffset=0x0)" P-INDEP
;* V26 tmp24 [V26 ] ( 0, 0 ) ref -> zero-ref single-def "field V11.array (fldOffset=0x0)" P-INDEP ;* V27 tmp25 [V27 ] ( 0, 0 ) ref -> zero-ref single-def "field V12.array (fldOffset=0x0)" P-INDEP ;* V28 tmp26 [V28 ] ( 0, 0 ) ref -> zero-ref single-def "field V16.array (fldOffset=0x0)" P-INDEP ;* V29 tmp27 [V29 ] ( 0, 0 ) ref -> zero-ref single-def "field V19.array (fldOffset=0x0)" P-INDEP ;* V30 tmp28 [V30 ] ( 0, 0 ) ref -> zero-ref "field V22.Modifier (fldOffset=0x0)" P-INDEP ;* V31 tmp29 [V31 ] ( 0, 0 ) ubyte -> zero-ref "field V22.IsOptional (fldOffset=0x4)" P-INDEP
-;* V32 cse0 [V32,T18] ( 0, 0 ) int -> zero-ref "CSE - moderate" -; V33 cse1 [V33,T02] ( 4, 8 ) int -> edi "CSE - aggressive"
+;* V32 cse0 [V32,T17] ( 0, 0 ) int -> zero-ref "CSE - moderate"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M10801_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -52,8 +51,7 @@ G_M10801_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- push eax - ;; size=7 bbWeight=1 PerfScore 5.25
+ ;; size=6 bbWeight=1 PerfScore 4.25
G_M10801_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [ebp+0x14] ; gcrRegs +[ecx] @@ -72,36 +70,33 @@ G_M10801_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} xor eax, eax ;; size=2 bbWeight=1 PerfScore 0.25 G_M10801_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
- pop ecx
pop ebx pop esi pop edi pop ebp ret 20
- ;; size=8 bbWeight=1 PerfScore 4.50 -G_M10801_IG06: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[ebx esi] - mov dword ptr [ebp-0x10], edx - lea ecx, [8*edx]
+ ;; size=7 bbWeight=1 PerfScore 4.00 +G_M10801_IG06: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[esi edi] + lea ecx, [8*ebx]
add ecx, 8 add ecx, esi ; byrRegs +[ecx] push dword ptr [ecx+0x04] push gword ptr [ecx]
- mov ecx, gword ptr [ebx+0x04]
+ mov ecx, gword ptr [edi+0x04]
; gcrRegs +[ecx] ; byrRegs -[ecx]
- call [ebx+0x0C]<unknown method>
+ call [edi+0x0C]<unknown method>
; gcrRegs -[ecx] test eax, eax jne SHORT G_M10801_IG08
- mov edx, dword ptr [ebp-0x10] - inc edx - cmp edi, edx
+ inc ebx + cmp dword ptr [esi+0x04], ebx
jg SHORT G_M10801_IG06
- ;; size=38 bbWeight=8 PerfScore 118.00
+ ;; size=33 bbWeight=8 PerfScore 124.00
G_M10801_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ebx esi]
+ ; gcrRegs -[esi edi]
xor eax, eax jmp SHORT G_M10801_IG09 ;; size=4 bbWeight=1 PerfScore 2.25 @@ -157,75 +152,75 @@ G_M10801_IG11: ; bbWeight=0, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000 je G_M10801_IG04 ;; size=31 bbWeight=0 PerfScore 0.00 G_M10801_IG12: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, dword ptr [esi+0x04]
xor ecx, ecx
- test edi, edi
+ cmp dword ptr [esi+0x04], 0
sete cl test ecx, ecx jne G_M10801_IG04 mov ecx, 0xD1FFAB1E mov edx, 104 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
- mov ebx, gword ptr [D1FFAB1EH] ; static handle - ; gcrRegs +[ebx] - test ebx, ebx
+ mov edi, gword ptr [D1FFAB1EH] ; static handle + ; gcrRegs +[edi] + test edi, edi
jne SHORT G_M10801_IG14 mov ecx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST
- ; gcrRegs -[ebx] +[eax] - mov ebx, eax
+ ; gcrRegs -[edi] +[eax] + mov edi, eax + ; gcrRegs +[edi] + mov ebx, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[ebx]
- mov eax, gword ptr [D1FFAB1EH] ; static handle - test eax, eax
+ test ebx, ebx
jne SHORT G_M10801_IG13 call [System.MulticastDelegate:ThrowNullThisInDelegateToInstance()]
- ; gcrRegs -[eax ebx esi]
+ ; gcrRegs -[eax ebx esi edi]
int3 ;; size=71 bbWeight=0 PerfScore 0.00
-G_M10801_IG13: ; bbWeight=0, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref - ; gcrRegs +[eax ebx esi] - lea edx, bword ptr [ebx+0x04]
+G_M10801_IG13: ; bbWeight=0, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref + ; gcrRegs +[ebx esi edi] + lea edx, bword ptr [edi+0x04]
; byrRegs +[edx]
- call CORINFO_HELP_ASSIGN_REF_EAX - ; gcrRegs -[eax] - ; byrRegs -[edx] - mov dword ptr [ebx+0x0C], 0xD1FFAB1E - mov edx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
call CORINFO_HELP_ASSIGN_REF_EBX
+ ; gcrRegs -[ebx] + ; byrRegs -[edx] + mov dword ptr [edi+0x0C], 0xD1FFAB1E + mov edx, 0xD1FFAB1E ; data for <unknown class>:<unknown field> + call CORINFO_HELP_ASSIGN_REF_EDI
;; size=25 bbWeight=0 PerfScore 0.00
-G_M10801_IG14: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - test ebx, ebx
+G_M10801_IG14: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + mov ecx, dword ptr [esi+0x04] + test edi, edi
jne SHORT G_M10801_IG15 mov ecx, 939 mov edx, 0xD1FFAB1E call CORINFO_HELP_STRCNS
- ; gcrRegs -[ebx esi] +[eax]
+ ; gcrRegs -[esi edi] +[eax]
mov ecx, eax ; gcrRegs +[ecx] call [System.Collections.Immutable.Requires:FailArgumentNullException(System.String)] ; gcrRegs -[eax ecx] int3
- ;; size=28 bbWeight=0 PerfScore 0.00 -G_M10801_IG15: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref - ; gcrRegs +[ebx esi] - xor edx, edx - test edi, edi
+ ;; size=31 bbWeight=0 PerfScore 0.00 +G_M10801_IG15: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref + ; gcrRegs +[esi edi] + xor ebx, ebx + cmp dword ptr [esi+0x04], 0
jle G_M10801_IG07 jmp G_M10801_IG06
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=17 bbWeight=0 PerfScore 0.00
G_M10801_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx esi]
+ ; gcrRegs -[esi edi]
mov eax, 1 ;; size=5 bbWeight=0 PerfScore 0.00 G_M10801_IG17: ; bbWeight=0, epilog, nogc, extend
- pop ecx
pop ebx pop esi pop edi pop ebp ret 20
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 337, prolog size 7, PerfScore 137.00, instruction count 108, allocated bytes for code 337 (MethodHash=b48cd5ce) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol+<>c:<.ctor>b__17_1(Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte:this (Tier1)
+Total bytes of code 334, prolog size 6, PerfScore 141.50, instruction count 103, allocated bytes for code 334 (MethodHash=b48cd5ce) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol+<>c:<.ctor>b__17_1(Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte:this (Tier1)
; ============================================================

-14 (-0.41%) : 106617.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan1[uint],System.ReadOnlySpan1[uint],System.Span`1[uint]) (Tier1)

@@ -9,31 +9,31 @@ ; 13 inlinees with PGO data; 41 single block inlinees; 15 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T85] ( 2, 2.00) struct ( 8) [ebp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> -; V01 arg1 [V01,T86] ( 2, 2.00) struct ( 8) [ebp+0x10] do-not-enreg[S] single-def <System.ReadOnlySpan`1[uint]> -; V02 arg2 [V02,T87] ( 2, 2.00) struct ( 8) [ebp+0x08] do-not-enreg[S] single-def <System.Span`1[uint]> -; V03 loc0 [V03,T43] ( 14, 8.97) ref -> [ebp-0x120] class-hnd <uint[]>
+; V00 arg0 [V00,T83] ( 2, 2.00) struct ( 8) [ebp+0x18] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[uint]> +; V01 arg1 [V01,T84] ( 2, 2.00) struct ( 8) [ebp+0x10] do-not-enreg[S] single-def <System.ReadOnlySpan`1[uint]> +; V02 arg2 [V02,T85] ( 2, 2.00) struct ( 8) [ebp+0x08] do-not-enreg[S] single-def <System.Span`1[uint]> +; V03 loc0 [V03,T43] ( 14, 8.97) ref -> [ebp-0x118] class-hnd <uint[]>
;* V04 loc1 [V04 ] ( 0, 0 ) struct ( 8) zero-ref <System.Span`1[uint]> ;* V05 loc2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Span`1[uint]> ;* V06 loc3 [V06 ] ( 0, 0 ) struct ( 8) zero-ref <System.Span`1[uint]> ; V07 tmp0 [V07,T45] ( 3, 6.00) ref -> edi class-hnd exact single-def "spilling ret_expr" <System.Buffers.SharedArrayPool`1[uint]> ;* V08 tmp1 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <uint[]>
-; V09 tmp2 [V09,T62] ( 2, 4.00) ref -> ebx class-hnd exact single-def "spilling ret_expr" <System.Buffers.SharedArrayPool`1[uint]>
+; V09 tmp2 [V09,T60] ( 2, 4.00) ref -> ebx class-hnd exact single-def "spilling ret_expr" <System.Buffers.SharedArrayPool`1[uint]>
;* V10 tmp3 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V11 tmp4 [V11,T78] ( 3, 2.00) ref -> edi "guarded devirt return temp" -; V12 tmp5 [V12,T77] ( 7, 2.00) ref -> registers class-hnd exact single-def "guarded devirt this exact temp" <System.Buffers.SharedArrayPool`1[uint]> -; V13 tmp6 [V13,T82] ( 8, 2.00) ref -> ebx class-hnd exact single-def "guarded devirt this exact temp" <System.Buffers.SharedArrayPool`1[uint]> -; V14 tmp7 [V14,T98] ( 2, 0.00) int -> ebx "Inlining Arg" -; V15 tmp8 [V15,T69] ( 8, 3.00) ref -> [ebp-0x124] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.ArrayPoolEventSource>
+; V11 tmp4 [V11,T76] ( 3, 2.00) ref -> edi "guarded devirt return temp" +; V12 tmp5 [V12,T75] ( 7, 2.00) ref -> registers class-hnd exact single-def "guarded devirt this exact temp" <System.Buffers.SharedArrayPool`1[uint]> +; V13 tmp6 [V13,T80] ( 8, 2.00) ref -> ebx class-hnd exact single-def "guarded devirt this exact temp" <System.Buffers.SharedArrayPool`1[uint]> +; V14 tmp7 [V14,T96] ( 2, 0.00) int -> ebx "Inlining Arg" +; V15 tmp8 [V15,T67] ( 8, 3.00) ref -> [ebp-0x11C] class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.ArrayPoolEventSource>
; V16 tmp9 [V16,T54] ( 6, 4.00) int -> [ebp-0x14] "Inlining Arg" ; V17 tmp10 [V17,T47] ( 10, 5.00) int -> [ebp-0x18] spill-single-def "Inline stloc first use temp" ; V18 tmp11 [V18,T49] ( 5, 5.00) ref -> ecx class-hnd exact single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V19 tmp12 [V19,T101] ( 3, 0.00) ref -> ecx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> -; V20 tmp13 [V20,T48] ( 14, 5.00) ref -> [ebp-0x128] class-hnd "Inline stloc first use temp" <uint[]> -; V21 tmp14 [V21,T124] ( 3, 0 ) int -> [ebp-0x1C] spill-single-def "Inline stloc first use temp" -; V22 tmp15 [V22,T138] ( 2, 0 ) int -> ecx "impAppendStmt" -; V23 tmp16 [V23,T139] ( 2, 0 ) int -> [ebp-0x20] spill-single-def "impAppendStmt" -; V24 tmp17 [V24,T140] ( 2, 0 ) int -> [ebp-0x24] spill-single-def "impAppendStmt"
+; V19 tmp12 [V19,T99] ( 3, 0.00) ref -> ecx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> +; V20 tmp13 [V20,T48] ( 14, 5.00) ref -> [ebp-0x120] class-hnd "Inline stloc first use temp" <uint[]> +; V21 tmp14 [V21,T122] ( 3, 0 ) int -> [ebp-0x1C] spill-single-def "Inline stloc first use temp" +; V22 tmp15 [V22,T136] ( 2, 0 ) int -> ecx "impAppendStmt" +; V23 tmp16 [V23,T137] ( 2, 0 ) int -> [ebp-0x20] spill-single-def "impAppendStmt" +; V24 tmp17 [V24,T138] ( 2, 0 ) int -> [ebp-0x24] spill-single-def "impAppendStmt"
;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref single-def ;* V26 tmp19 [V26 ] ( 0, 0 ) int -> zero-ref ;* V27 tmp20 [V27 ] ( 0, 0 ) int -> zero-ref @@ -44,33 +44,33 @@ ;* V32 tmp25 [V32 ] ( 0, 0 ) int -> zero-ref ;* V33 tmp26 [V33 ] ( 0, 0 ) int -> zero-ref ;* V34 tmp27 [V34 ] ( 0, 0 ) int -> zero-ref
-; V35 tmp28 [V35,T141] ( 2, 0 ) int -> edx -; V36 tmp29 [V36,T102] ( 3, 0.00) ref -> eax class-hnd exact single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions>
+; V35 tmp28 [V35,T139] ( 2, 0 ) int -> edx +; V36 tmp29 [V36,T100] ( 3, 0.00) ref -> eax class-hnd exact single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions>
;* V37 tmp30 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <uint[]>
-; V38 tmp31 [V38,T142] ( 2, 0 ) int -> [ebp-0x28] spill-single-def "impAppendStmt" -; V39 tmp32 [V39,T143] ( 2, 0 ) int -> ecx "impAppendStmt"
+; V38 tmp31 [V38,T140] ( 2, 0 ) int -> [ebp-0x28] spill-single-def "impAppendStmt" +; V39 tmp32 [V39,T141] ( 2, 0 ) int -> ecx "impAppendStmt"
;* V40 tmp33 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <uint[]> ; V41 tmp34 [V41,T55] ( 2, 4.00) int -> [ebp-0x2C] spill-single-def "impAppendStmt" ; V42 tmp35 [V42,T56] ( 2, 4.00) int -> ecx "impAppendStmt" ;* V43 tmp36 [V43 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V44 tmp37 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V45 tmp38 [V45,T120] ( 3, 0 ) ref -> eax class-hnd "Inline return value spill temp" <System.Array> -; V46 tmp39 [V46,T109] ( 5, 0 ) ref -> [ebp-0x12C] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> -; V47 tmp40 [V47,T107] ( 7, 0 ) int -> [ebp-0x30] "Inline stloc first use temp" -; V48 tmp41 [V48,T116] ( 4, 0 ) int -> [ebp-0x34] "Inline stloc first use temp"
+; V45 tmp38 [V45,T118] ( 3, 0 ) ref -> eax class-hnd "Inline return value spill temp" <System.Array> +; V46 tmp39 [V46,T107] ( 5, 0 ) ref -> [ebp-0x124] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> +; V47 tmp40 [V47,T105] ( 7, 0 ) int -> [ebp-0x30] "Inline stloc first use temp" +; V48 tmp41 [V48,T114] ( 4, 0 ) int -> [ebp-0x34] "Inline stloc first use temp"
;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <System.Array> ;* V50 tmp43 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Array>
-; V51 tmp44 [V51,T144] ( 2, 0 ) int -> eax "dup spill" -; V52 tmp45 [V52,T125] ( 3, 0 ) int -> [ebp-0x38] "Inline return value spill temp" -; V53 tmp46 [V53,T126] ( 3, 0 ) int -> edx "Inline return value spill temp" -; V54 tmp47 [V54,T117] ( 4, 0 ) int -> [ebp-0x3C] spill-single-def "dup spill"
+; V51 tmp44 [V51,T142] ( 2, 0 ) int -> eax "dup spill" +; V52 tmp45 [V52,T123] ( 3, 0 ) int -> [ebp-0x38] "Inline return value spill temp" +; V53 tmp46 [V53,T124] ( 3, 0 ) int -> edx "Inline return value spill temp" +; V54 tmp47 [V54,T115] ( 4, 0 ) int -> [ebp-0x3C] spill-single-def "dup spill"
;* V55 tmp48 [V55 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V56 tmp49 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Array>
-; V57 tmp50 [V57,T113] ( 4, 0 ) ref -> [ebp-0x130] class-hnd "Inline stloc first use temp" <System.Array> -; V58 tmp51 [V58,T106] ( 7, 0 ) ref -> [ebp-0x134] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition> -; V59 tmp52 [V59,T114] ( 4, 0 ) ref -> ecx class-hnd "Inline stloc first use temp" <<unknown class>> -; V60 tmp53 [V60,T111] ( 5, 0 ) int -> edx "Inline stloc first use temp" -; V61 tmp54 [V61,T103] ( 3, 0.00) int -> [ebp-0x40] spill-single-def "Inline stloc first use temp"
+; V57 tmp50 [V57,T111] ( 4, 0 ) ref -> [ebp-0x128] class-hnd "Inline stloc first use temp" <System.Array> +; V58 tmp51 [V58,T104] ( 7, 0 ) ref -> [ebp-0x12C] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition> +; V59 tmp52 [V59,T112] ( 4, 0 ) ref -> ecx class-hnd "Inline stloc first use temp" <<unknown class>> +; V60 tmp53 [V60,T109] ( 5, 0 ) int -> edx "Inline stloc first use temp" +; V61 tmp54 [V61,T101] ( 3, 0.00) int -> [ebp-0x40] spill-single-def "Inline stloc first use temp"
;* V62 tmp55 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <uint[]> ;* V63 tmp56 [V63 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V64 tmp57 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <uint[]> @@ -82,20 +82,20 @@ ;* V70 tmp63 [V70 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V71 tmp64 [V71 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]> ;* V72 tmp65 [V72 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V73 tmp66 [V73,T63] ( 2, 4.00) byref -> edx single-def "Inlining Arg"
+; V73 tmp66 [V73,T61] ( 2, 4.00) byref -> edx single-def "Inlining Arg"
;* V74 tmp67 [V74 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V75 tmp68 [V75 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]> ; V76 tmp69 [V76,T46] ( 3, 6.00) int -> edi "Span.get_Item index" ; V77 tmp70 [V77,T35] ( 6, 13.00) int -> [ebp-0x44] "Inline stloc first use temp"
-; V78 tmp71 [V78,T65] ( 2, 4.00) int -> ecx "Span.get_Item index"
+; V78 tmp71 [V78,T63] ( 2, 4.00) int -> ecx "Span.get_Item index"
; V79 tmp72 [V79,T50] ( 5, 5.00) int -> [ebp-0x48]
-; V80 tmp73 [V80,T72] ( 3, 3.00) int -> [ebp-0x4C] "Inline stloc first use temp"
+; V80 tmp73 [V80,T70] ( 3, 3.00) int -> [ebp-0x4C] "Inline stloc first use temp"
; V81 tmp74 [V81,T30] ( 8, 21.00) int -> [ebp-0x50] spill-single-def "Inline stloc first use temp" ; V82 tmp75 [V82,T41] ( 5, 11.00) int -> [ebp-0x54] spill-single-def "Inline stloc first use temp" ;* V83 tmp76 [V83 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]> ; V84 tmp77 [V84,T05] ( 17,101.00) int -> [ebp-0x58] "Inline stloc first use temp"
-; V85 tmp78 [V85,T28] ( 7, 24.00) int -> [ebp-0x5C] spill-single-def "Inline stloc first use temp" -; V86 tmp79 [V86,T33] ( 3, 16.00) int -> ecx
+; V85 tmp78 [V85,T22] ( 9, 32.00) int -> [ebp-0x5C] spill-single-def "Inline stloc first use temp" +; V86 tmp79 [V86,T33] ( 3, 16.00) int -> ebx
; V87 tmp80 [V87,T31] ( 3, 20.00) int -> [ebp-0x60] spill-single-def "Inline stloc first use temp" ;* V88 tmp81 [V88 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ; V89 tmp82 [V89,T29] ( 5, 24.00) int -> [ebp-0x64] @@ -107,15 +107,15 @@ ;* V95 tmp88 [V95 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[uint]> ; V96 tmp89 [V96,T38] ( 3, 12.00) int -> [ebp-0x74] ;* V97 tmp90 [V97 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V98 tmp91 [V98,T66] ( 2, 4.00) int -> edi "Span.get_Item index" -; V99 tmp92 [V99,T73] ( 3, 3.00) int -> [ebp-0x78]
+; V98 tmp91 [V98,T64] ( 2, 4.00) int -> edi "Span.get_Item index" +; V99 tmp92 [V99,T71] ( 3, 3.00) int -> [ebp-0x78]
;* V100 tmp93 [V100 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V101 tmp94 [V101,T145] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V101 tmp94 [V101,T143] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V102 tmp95 [V102 ] ( 1, 1.00) long -> [ebp-0x80] multireg-ret "Inline stloc first use temp" ; V103 tmp96 [V103 ] ( 1, 1.00) long -> [ebp-0x88] multireg-ret "Inline stloc first use temp" ;* V104 tmp97 [V104 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V105 tmp98 [V105,T127] ( 3, 0 ) int -> [ebp-0x8C] spill-single-def "Inlining Arg" -; V106 tmp99 [V106,T134] ( 2, 0 ) byref -> [ebp-0x138] spill-single-def "Inlining Arg"
+; V105 tmp98 [V105,T125] ( 3, 0 ) int -> [ebp-0x8C] spill-single-def "Inlining Arg" +; V106 tmp99 [V106,T132] ( 2, 0 ) byref -> [ebp-0x130] spill-single-def "Inlining Arg"
;* V107 tmp100 [V107 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V108 tmp101 [V108 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V109 tmp102 [V109 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" @@ -127,7 +127,7 @@ ; V115 tmp108 [V115,T06] ( 3, 96.00) byref -> edi "Inline stloc first use temp" ;* V116 tmp109 [V116 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]> ; V117 tmp110 [V117,T32] ( 3, 18.00) int -> [ebp-0x94] spill-single-def "Inlining Arg"
-; V118 tmp111 [V118,T42] ( 2, 10.00) byref -> [ebp-0x13C] spill-single-def "Inlining Arg"
+; V118 tmp111 [V118,T42] ( 2, 10.00) byref -> [ebp-0x134] spill-single-def "Inlining Arg"
;* V119 tmp112 [V119 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V120 tmp113 [V120 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V121 tmp114 [V121 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" @@ -138,25 +138,25 @@ ; V126 tmp119 [V126,T07] ( 3, 96.00) byref -> ebx "Inline stloc first use temp" ;* V127 tmp120 [V127 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ; V128 tmp121 [V128,T53] ( 9, 4.95) int -> esi "Inline stloc first use temp"
-; V129 tmp122 [V129,T64] ( 2, 4.00) ref -> eax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]> -; V130 tmp123 [V130,T52] ( 6, 4.97) ref -> [ebp-0x140]
+; V129 tmp122 [V129,T62] ( 2, 4.00) ref -> eax class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolThreadLocalArray[]> +; V130 tmp123 [V130,T52] ( 6, 4.97) ref -> [ebp-0x138]
;* V131 tmp124 [V131 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-; V132 tmp125 [V132,T90] ( 4, 1.98) ubyte -> [ebp-0x98] "Inline stloc first use temp" -; V133 tmp126 [V133,T93] ( 3, 1 ) ubyte -> [ebp-0x9C] "Inline stloc first use temp" -; V134 tmp127 [V134,T83] ( 4, 2 ) ref -> [ebp-0x144] class-hnd exact single-def "Inline stloc first use temp" <System.Buffers.ArrayPoolEventSource> -; V135 tmp128 [V135,T146] ( 2, 0 ) int -> [ebp-0xA0] spill-single-def "impAppendStmt" -; V136 tmp129 [V136,T147] ( 2, 0 ) int -> [ebp-0xA4] spill-single-def "impAppendStmt" -; V137 tmp130 [V137,T148] ( 2, 0 ) int -> [ebp-0xA8] spill-single-def "impAppendStmt" -; V138 tmp131 [V138,T149] ( 2, 0 ) int -> edi "impAppendStmt"
+; V132 tmp125 [V132,T88] ( 4, 1.98) ubyte -> [ebp-0x98] "Inline stloc first use temp" +; V133 tmp126 [V133,T91] ( 3, 1 ) ubyte -> [ebp-0x9C] "Inline stloc first use temp" +; V134 tmp127 [V134,T81] ( 4, 2 ) ref -> [ebp-0x13C] class-hnd exact single-def "Inline stloc first use temp" <System.Buffers.ArrayPoolEventSource> +; V135 tmp128 [V135,T144] ( 2, 0 ) int -> [ebp-0xA0] spill-single-def "impAppendStmt" +; V136 tmp129 [V136,T145] ( 2, 0 ) int -> [ebp-0xA4] spill-single-def "impAppendStmt" +; V137 tmp130 [V137,T146] ( 2, 0 ) int -> [ebp-0xA8] spill-single-def "impAppendStmt" +; V138 tmp131 [V138,T147] ( 2, 0 ) int -> edi "impAppendStmt"
;* V139 tmp132 [V139 ] ( 0, 0 ) ref -> zero-ref single-def ;* V140 tmp133 [V140 ] ( 0, 0 ) int -> zero-ref ;* V141 tmp134 [V141 ] ( 0, 0 ) int -> zero-ref
-; V142 tmp135 [V142,T150] ( 2, 0 ) int -> eax
+; V142 tmp135 [V142,T148] ( 2, 0 ) int -> eax
;* V143 tmp136 [V143 ] ( 0, 0 ) ref -> zero-ref single-def ;* V144 tmp137 [V144 ] ( 0, 0 ) int -> zero-ref ;* V145 tmp138 [V145 ] ( 0, 0 ) int -> zero-ref ;* V146 tmp139 [V146 ] ( 0, 0 ) int -> zero-ref
-; V147 tmp140 [V147,T128] ( 3, 0 ) int -> ecx
+; V147 tmp140 [V147,T126] ( 3, 0 ) int -> ecx
;* V148 tmp141 [V148 ] ( 0, 0 ) ref -> zero-ref single-def ;* V149 tmp142 [V149 ] ( 0, 0 ) int -> zero-ref ;* V150 tmp143 [V150 ] ( 0, 0 ) int -> zero-ref @@ -167,110 +167,108 @@ ;* V155 tmp148 [V155 ] ( 0, 0 ) int -> zero-ref ;* V156 tmp149 [V156 ] ( 0, 0 ) int -> zero-ref ;* V157 tmp150 [V157 ] ( 0, 0 ) int -> zero-ref
-; V158 tmp151 [V158,T129] ( 3, 0 ) int -> edx -; V159 tmp152 [V159,T68] ( 2, 3.94) int -> [ebp-0xAC] spill-single-def "impAppendStmt" -; V160 tmp153 [V160,T67] ( 4, 3.94) byref -> ecx single-def "Inline stloc first use temp" -; V161 tmp154 [V161,T91] ( 3, 1.97) ref -> [ebp-0x148] class-hnd single-def "Inline stloc first use temp" <System.Array>
+; V158 tmp151 [V158,T127] ( 3, 0 ) int -> edx +; V159 tmp152 [V159,T66] ( 2, 3.94) int -> [ebp-0xAC] spill-single-def "impAppendStmt" +; V160 tmp153 [V160,T65] ( 4, 3.94) byref -> ecx single-def "Inline stloc first use temp" +; V161 tmp154 [V161,T89] ( 3, 1.97) ref -> [ebp-0x140] class-hnd single-def "Inline stloc first use temp" <System.Array>
;* V162 tmp155 [V162 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Buffers.SharedArrayPoolThreadLocalArray>
-; V163 tmp156 [V163,T135] ( 2, 0 ) ref -> ecx class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions> -; V164 tmp157 [V164,T115] ( 4, 0 ) ref -> ecx
+; V163 tmp156 [V163,T133] ( 2, 0 ) ref -> ecx class-hnd exact single-def "dup spill" <System.Buffers.SharedArrayPoolPartitions> +; V164 tmp157 [V164,T113] ( 4, 0 ) ref -> ecx
;* V165 tmp158 [V165 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions>
-; V166 tmp159 [V166,T121] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V166 tmp159 [V166,T119] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V167 tmp160 [V167 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V168 tmp161 [V168 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V169 tmp162 [V169 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V170 tmp163 [V170,T74] ( 3, 2.95) int -> [ebp-0xB0] spill-single-def "Inline stloc first use temp"
+; V170 tmp163 [V170,T72] ( 3, 2.95) int -> [ebp-0xB0] spill-single-def "Inline stloc first use temp"
;* V171 tmp164 [V171 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V172 tmp165 [V172 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V173 tmp166 [V173,T130] ( 3, 0 ) ubyte -> ecx "Inline return value spill temp" -; V174 tmp167 [V174,T110] ( 5, 0 ) ref -> [ebp-0x14C] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> -; V175 tmp168 [V175,T108] ( 7, 0 ) int -> [ebp-0xB4] "Inline stloc first use temp" -; V176 tmp169 [V176,T118] ( 4, 0 ) int -> [ebp-0xB8] "Inline stloc first use temp" -; V177 tmp170 [V177,T151] ( 2, 0 ) int -> eax "dup spill" -; V178 tmp171 [V178,T131] ( 3, 0 ) int -> [ebp-0xBC] "Inline return value spill temp" -; V179 tmp172 [V179,T132] ( 3, 0 ) int -> edx "Inline return value spill temp" -; V180 tmp173 [V180,T119] ( 4, 0 ) int -> [ebp-0xC0] spill-single-def "dup spill"
+; V173 tmp166 [V173,T128] ( 3, 0 ) ubyte -> ecx "Inline return value spill temp" +; V174 tmp167 [V174,T108] ( 5, 0 ) ref -> [ebp-0x144] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> +; V175 tmp168 [V175,T106] ( 7, 0 ) int -> [ebp-0xB4] "Inline stloc first use temp" +; V176 tmp169 [V176,T116] ( 4, 0 ) int -> [ebp-0xB8] "Inline stloc first use temp" +; V177 tmp170 [V177,T149] ( 2, 0 ) int -> eax "dup spill" +; V178 tmp171 [V178,T129] ( 3, 0 ) int -> [ebp-0xBC] "Inline return value spill temp" +; V179 tmp172 [V179,T130] ( 3, 0 ) int -> edx "Inline return value spill temp" +; V180 tmp173 [V180,T117] ( 4, 0 ) int -> [ebp-0xC0] spill-single-def "dup spill"
;* V181 tmp174 [V181 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V182 tmp175 [V182 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V183 tmp176 [V183,T133] ( 3, 0 ) ubyte -> [ebp-0xC4] "Inline stloc first use temp" -; V184 tmp177 [V184,T105] ( 8, 0 ) ref -> [ebp-0x150] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition> -; V185 tmp178 [V185,T122] ( 3, 0 ) ref -> edx class-hnd "Inline stloc first use temp" <<unknown class>> -; V186 tmp179 [V186,T112] ( 5, 0 ) int -> [ebp-0xC8] spill-single-def "Inline stloc first use temp" -; V187 tmp180 [V187,T152] ( 2, 0 ) int -> eax "Inlining Arg"
+; V183 tmp176 [V183,T131] ( 3, 0 ) ubyte -> [ebp-0xC4] "Inline stloc first use temp" +; V184 tmp177 [V184,T103] ( 8, 0 ) ref -> [ebp-0x148] class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition> +; V185 tmp178 [V185,T120] ( 3, 0 ) ref -> edx class-hnd "Inline stloc first use temp" <<unknown class>> +; V186 tmp179 [V186,T110] ( 5, 0 ) int -> [ebp-0xC8] spill-single-def "Inline stloc first use temp" +; V187 tmp180 [V187,T150] ( 2, 0 ) int -> eax "Inlining Arg"
;* V188 tmp181 [V188 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP ;* V189 tmp182 [V189 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x4)" P-INDEP
-; V190 tmp183 [V190,T75] ( 3, 2.00) byref -> ebx "field V05._reference (fldOffset=0x0)" P-INDEP
...

+0 (0.00%) : 89589.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:Populate(System.String,int,int):System.Canon[]:this (Tier1)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 6, 4 ) ref -> edi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-; V01 arg1 [V01,T00] ( 8, 4 ) ref -> esi class-hnd single-def <System.String>
+; V01 arg1 [V01,T00] ( 10, 4 ) ref -> esi class-hnd single-def <System.String>
; V02 arg2 [V02,T02] ( 4, 2 ) int -> ebx single-def ; V03 arg3 [V03,T05] ( 4, 1 ) int -> [ebp+0x08] single-def ; V04 loc0 [V04 ] ( 5, 3 ) ref -> [ebp-0x14] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon[]> @@ -21,13 +21,13 @@ ;* V09 loc5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>> ;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref ; V11 loc7 [V11 ] ( 3, 0 ) byref -> [ebp-0x20] do-not-enreg[P] must-init pinned
-; V12 loc8 [V12,T17] ( 2, 0 ) int -> ecx
+; V12 loc8 [V12,T16] ( 2, 0 ) int -> ecx
; V13 tmp0 [V13,T06] ( 7, 0 ) int -> [ebp-0x24] spill-single-def
-; V14 tmp1 [V14,T12] ( 3, 0 ) ref -> [ebp-0x3C] class-hnd exact spill-single-def "spilling ret_expr" <System.Text.UTF8Encoding+UTF8EncodingSealed>
+; V14 tmp1 [V14,T11] ( 3, 0 ) ref -> [ebp-0x3C] class-hnd exact spill-single-def "spilling ret_expr" <System.Text.UTF8Encoding+UTF8EncodingSealed>
; V15 tmp2 [V15,T08] ( 6, 0 ) int -> [ebp-0x28] spill-single-def "guarded devirt return temp" ;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Text.UTF8Encoding+UTF8EncodingSealed> ; V17 tmp4 [V17,T03] ( 2, 0 ) ubyte -> ecx "Inline return value spill temp"
-;* V18 tmp5 [V18,T23] ( 0, 0 ) int -> zero-ref
+;* V18 tmp5 [V18,T22] ( 0, 0 ) int -> zero-ref
;* V19 tmp6 [V19 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V20 tmp7 [V20,T09] ( 5, 0 ) int -> [ebp-0x2C] "Inline stloc first use temp" ;* V21 tmp8 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -39,18 +39,17 @@ ;* V27 tmp14 [V27 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V28 tmp15 [V28,T10] ( 4, 0 ) int -> ecx "Inline stloc first use temp" ;* V29 tmp16 [V29 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V30 tmp17 [V30,T18] ( 2, 0 ) int -> ecx "Cast away GC" -; V31 tmp18 [V31,T13] ( 3, 0 ) ref -> eax single-def "arr expr" -; V32 tmp19 [V32,T19] ( 2, 0 ) int -> ecx "Cast away GC" -;* V33 tmp20 [V33,T22] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" -; V34 tmp21 [V34,T20] ( 2, 0 ) int -> edx "argument with side effect"
+; V30 tmp17 [V30,T17] ( 2, 0 ) int -> ecx "Cast away GC" +; V31 tmp18 [V31,T12] ( 3, 0 ) ref -> eax single-def "arr expr" +; V32 tmp19 [V32,T18] ( 2, 0 ) int -> ecx "Cast away GC" +;* V33 tmp20 [V33,T21] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V34 tmp21 [V34,T19] ( 2, 0 ) int -> edx "argument with side effect"
; V35 GsCookie [V35 ] ( 1, 1 ) int -> [ebp-0x40] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V36 LocAllocSP [V36,T04] ( 1, 1 ) int -> [ebp-0x10] "LocAllocSPvar"
-; V37 cse0 [V37,T11] ( 4, 0 ) int -> eax "CSE - conservative" -; V38 rat0 [V38,T14] ( 3, 0 ) int -> eax "field V29.lo (fldOffset=0x0)" P-INDEP -; V39 rat1 [V39,T21] ( 2, 0 ) int -> edx "field V29.hi (fldOffset=0x4)" P-INDEP -; V40 rat2 [V40,T15] ( 3, 0 ) int -> eax "ReplaceWithLclVar is creating a new local variable" -; V41 rat3 [V41,T16] ( 3, 0 ) int -> eax "ReplaceWithLclVar is creating a new local variable"
+; V37 rat0 [V37,T13] ( 3, 0 ) int -> eax "field V29.lo (fldOffset=0x0)" P-INDEP +; V38 rat1 [V38,T20] ( 2, 0 ) int -> edx "field V29.hi (fldOffset=0x4)" P-INDEP +; V39 rat2 [V39,T14] ( 3, 0 ) int -> eax "ReplaceWithLclVar is creating a new local variable" +; V40 rat3 [V40,T15] ( 3, 0 ) int -> eax "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 56 @@ -121,50 +120,49 @@ G_M22299_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b ;; size=5 bbWeight=0 PerfScore 0.00 G_M22299_IG07: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[esi edi]
- mov eax, dword ptr [esi+0x04]
xor ecx, ecx
- test eax, eax
+ cmp dword ptr [esi+0x04], 0
sete cl test ecx, ecx jne SHORT G_M22299_IG03 cmp dword ptr [ebp+0x08], 1 jne SHORT G_M22299_IG08
- test eax, eax - je SHORT G_M22299_IG06
+ cmp dword ptr [esi+0x04], 0 + jbe SHORT G_M22299_IG06
cmp word ptr [esi+0x08], 46 je SHORT G_M22299_IG08 cmp word ptr [esi+0x08], 42 jne SHORT G_M22299_IG03
- ;; size=38 bbWeight=0 PerfScore 0.00
+ ;; size=39 bbWeight=0 PerfScore 0.00
G_M22299_IG08: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x18], eax
+ mov edx, dword ptr [esi+0x04] + mov dword ptr [ebp-0x18], edx
lea ecx, bword ptr [esi+0x08] ; byrRegs +[ecx] mov bword ptr [ebp-0x1C], ecx mov ecx, bword ptr [ebp-0x1C] mov dword ptr [ebp-0x24], ecx
- mov edx, gword ptr [D1FFAB1EH] ; static handle - ; gcrRegs +[edx] - mov gword ptr [ebp-0x3C], edx
+ mov eax, gword ptr [D1FFAB1EH] ; static handle + ; gcrRegs +[eax] + mov gword ptr [ebp-0x3C], eax
; GC ptr vars +{V14}
- cmp byte ptr [edx], dl
+ cmp byte ptr [eax], al
test ecx, ecx jne SHORT G_M22299_IG09 mov ecx, 14 ; byrRegs -[ecx] ; GC ptr vars -{V14} call [System.ThrowHelper:ThrowArgumentNullException(int)]
- ; gcrRegs -[edx esi edi]
+ ; gcrRegs -[eax esi edi]
int3
- ;; size=42 bbWeight=0 PerfScore 0.00 -G_M22299_IG09: ; bbWeight=0, gcVars=00001000 {V14}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=44 bbWeight=0 PerfScore 0.00 +G_M22299_IG09: ; bbWeight=0, gcVars=00000800 {V14}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi edi]
- ; GC ptr vars +{V12 V14}
+ ; GC ptr vars +{V14}
lea eax, [ebp-0x34] push eax lea eax, [ebp-0x38] push eax
- mov edx, dword ptr [ebp-0x18]
call [<unknown method>] sub eax, dword ptr [ebp-0x24] mov ecx, eax @@ -188,14 +186,14 @@ G_M22299_IG09: ; bbWeight=0, gcVars=00001000 {V14}, gcrefRegs=000000C0 {e mov ecx, gword ptr [ebp-0x3C] ; gcrRegs +[ecx] mov edx, dword ptr [ebp-0x24]
- ; GC ptr vars -{V12 V14}
+ ; GC ptr vars -{V14}
call [<unknown method>] ; gcrRegs -[ecx] add eax, dword ptr [ebp-0x2C] mov dword ptr [ebp-0x2C], eax mov edx, dword ptr [ebp-0x18] jns SHORT G_M22299_IG11
- ;; size=87 bbWeight=0 PerfScore 0.00
+ ;; size=84 bbWeight=0 PerfScore 0.00
G_M22299_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[esi edi] call [System.Text.Encoding:ThrowConversionOverflow()] @@ -277,6 +275,6 @@ G_M22299_IG15: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 jmp G_M22299_IG04 ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 431, prolog size 30, PerfScore 37.25, instruction count 155, allocated bytes for code 431 (MethodHash=98ada8e4) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
+Total bytes of code 431, prolog size 30, PerfScore 37.25, instruction count 154, allocated bytes for code 431 (MethodHash=98ada8e4) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
; ============================================================

+15 (+0.41%) : 82042.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:AddSynthesizedReturnTypeAttributes(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,byref):this (Tier1)

@@ -9,180 +9,180 @@ ; 48 inlinees with PGO data; 80 single block inlinees; 11 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T15] ( 32, 13 ) ref -> ebx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol> -; V01 arg1 [V01,T59] ( 9, 2.67) ref -> [ebp-0xBC] class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder> -; V02 arg2 [V02,T108] ( 7, 1.42) byref -> [ebp+0x08] single-def
+; V00 this [V00,T16] ( 32, 13 ) ref -> ebx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol> +; V01 arg1 [V01,T58] ( 9, 2.67) ref -> [ebp-0xB8] class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder> +; V02 arg2 [V02,T107] ( 7, 1.42) byref -> [ebp+0x08] single-def
;* V03 loc0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.CSharpCompilation> ; V04 loc1 [V04 ] ( 19, 7 ) struct (12) [ebp-0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations> ;* V05 loc2 [V05 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]> ;* V06 tmp0 [V06 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Nullable`1[ubyte]> ;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag> ;* V08 tmp2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag>
-; V09 tmp3 [V09,T149] ( 2, 0 ) ref -> [ebp-0xC0] class-hnd spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> -; V10 tmp4 [V10,T167] ( 2, 0 ) int -> [ebp-0x1C] spill-single-def "non-inline candidate call"
+; V09 tmp3 [V09,T148] ( 2, 0 ) ref -> [ebp-0xBC] class-hnd spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> +; V10 tmp4 [V10,T166] ( 2, 0 ) int -> [ebp-0x1C] spill-single-def "non-inline candidate call"
;* V11 tmp5 [V11 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V12 tmp6 [V12,T41] ( 17, 6.50) ref -> [ebp-0xC4] "guarded devirt return temp"
+; V12 tmp6 [V12,T40] ( 17, 6.50) ref -> [ebp-0xC0] "guarded devirt return temp"
;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolSimple> ;* V14 tmp8 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolSimple> ; V15 tmp9 [V15 ] ( 5, 0 ) struct ( 4) [ebp-0x20] do-not-enreg[SB] must-init "guarded devirt return temp" <System.Nullable`1[ubyte]> ;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedInstanceConstructor>
-; V17 tmp11 [V17,T84] ( 2, 2 ) int -> eax "guarded devirt return temp"
+; V17 tmp11 [V17,T83] ( 2, 2 ) int -> eax "guarded devirt return temp"
;* V18 tmp12 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedInstanceConstructor>
-; V19 tmp13 [V19,T93] ( 3, 2 ) ref -> ecx class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> -; V20 tmp14 [V20,T42] ( 5, 6 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+Extensions>
+; V19 tmp13 [V19,T92] ( 3, 2 ) ref -> ecx class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> +; V20 tmp14 [V20,T41] ( 5, 6 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+Extensions>
;* V21 tmp15 [V21 ] ( 0, 0 ) ref -> zero-ref single-def
-; V22 tmp16 [V22,T94] ( 3, 2 ) ref -> ecx "guarded devirt return temp"
+; V22 tmp16 [V22,T93] ( 3, 2 ) ref -> ecx "guarded devirt return temp"
;* V23 tmp17 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+NonLazyType>
-; V24 tmp18 [V24,T64] ( 2, 4 ) ref -> ecx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V24 tmp18 [V24,T63] ( 2, 4 ) ref -> ecx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V25 tmp19 [V25 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V26 tmp20 [V26,T65] ( 2, 4 ) ref -> edx class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V27 tmp21 [V27,T111] ( 3, 1 ) ref -> [ebp-0xC8] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> -; V28 tmp22 [V28,T43] ( 5, 6 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+Extensions>
+; V26 tmp20 [V26,T64] ( 2, 4 ) ref -> edx class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V27 tmp21 [V27,T110] ( 3, 1 ) ref -> [ebp-0xC4] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> +; V28 tmp22 [V28,T42] ( 5, 6 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+Extensions>
;* V29 tmp23 [V29 ] ( 0, 0 ) ref -> zero-ref single-def
-; V30 tmp24 [V30,T95] ( 3, 2 ) ref -> registers "guarded devirt return temp"
+; V30 tmp24 [V30,T94] ( 3, 2 ) ref -> registers "guarded devirt return temp"
;* V31 tmp25 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+NonLazyType>
-; V32 tmp26 [V32,T66] ( 2, 4 ) ref -> edi class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> -; V33 tmp27 [V33,T113] ( 2, 0 ) ubyte -> eax "Inline return value spill temp" -; V34 tmp28 [V34,T101] ( 2, 2 ) ubyte -> ecx "Inline return value spill temp" -; V35 tmp29 [V35,T31] ( 4, 8 ) ref -> [ebp-0xCC] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol> -; V36 tmp30 [V36,T102] ( 3, 2 ) ubyte -> ecx "Inline return value spill temp"
+; V32 tmp26 [V32,T65] ( 2, 4 ) ref -> edi class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> +; V33 tmp27 [V33,T112] ( 2, 0 ) ubyte -> eax "Inline return value spill temp" +; V34 tmp28 [V34,T100] ( 2, 2 ) ubyte -> ecx "Inline return value spill temp" +; V35 tmp29 [V35,T31] ( 4, 8 ) ref -> [ebp-0xC8] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol> +; V36 tmp30 [V36,T101] ( 3, 2 ) ubyte -> ecx "Inline return value spill temp"
;* V37 tmp31 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
-; V38 tmp32 [V38,T103] ( 3, 2 ) int -> eax "guarded devirt return temp"
+; V38 tmp32 [V38,T102] ( 3, 2 ) int -> eax "guarded devirt return temp"
;* V39 tmp33 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
-; V40 tmp34 [V40,T76] ( 2, 2 ) int -> eax "guarded devirt return temp"
+; V40 tmp34 [V40,T75] ( 2, 2 ) int -> eax "guarded devirt return temp"
;* V41 tmp35 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
-; V42 tmp36 [V42,T29] ( 8, 8 ) ref -> [ebp-0xD0] class-hnd spill-single-def "spilling ret_expr" <Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol>
+; V42 tmp36 [V42,T29] ( 8, 8 ) ref -> [ebp-0xCC] class-hnd spill-single-def "spilling ret_expr" <Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol>
; V43 tmp37 [V43,T28] ( 11, 8 ) ref -> edi "guarded devirt return temp" ;* V44 tmp38 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEAssemblySymbol> ; V45 tmp39 [V45 ] ( 3, 0 ) struct (68) [ebp-0x64] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.MetadataTypeName> ;* V46 tmp40 [V46 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ModuleSymbol]>
-; V47 tmp41 [V47,T131] ( 4, 0 ) ref -> [ebp-0xD4] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.ModuleSymbol> -; V48 tmp42 [V48,T126] ( 6, 0 ) ref -> [ebp-0xD8] class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol> -; V49 tmp43 [V49,T140] ( 3, 0 ) ref -> [ebp-0xDC] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.MissingMetadataTypeSymbol+TopLevel> -; V50 tmp44 [V50,T96] ( 3, 2 ) ref -> eax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbol> -; V51 tmp45 [V51,T61] ( 3, 4 ) ref -> edx class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation> -; V52 tmp46 [V52,T114] ( 2, 0 ) ubyte -> eax "Inline return value spill temp"
+; V47 tmp41 [V47,T130] ( 4, 0 ) ref -> [ebp-0xD0] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.ModuleSymbol> +; V48 tmp42 [V48,T125] ( 6, 0 ) ref -> [ebp-0xD4] class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol> +; V49 tmp43 [V49,T139] ( 3, 0 ) ref -> [ebp-0xD8] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.MissingMetadataTypeSymbol+TopLevel> +; V50 tmp44 [V50,T95] ( 3, 2 ) ref -> eax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbol> +; V51 tmp45 [V51,T60] ( 3, 4 ) ref -> edx class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation> +; V52 tmp46 [V52,T113] ( 2, 0 ) ubyte -> eax "Inline return value spill temp"
;* V53 tmp47 [V53 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V54 tmp48 [V54,T141] ( 3, 0 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.SmallDictionary`2[int,ubyte]>
+; V54 tmp48 [V54,T140] ( 3, 0 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.SmallDictionary`2[int,ubyte]>
;* V55 tmp49 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V56 tmp50 [V56 ] ( 1, 0 ) ubyte -> [ebp-0x68] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ;* V57 tmp51 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling ret_expr" <Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol>
-; V58 tmp52 [V58,T97] ( 3, 2 ) ref -> ecx class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> -; V59 tmp53 [V59,T44] ( 5, 6 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+Extensions>
+; V58 tmp52 [V58,T96] ( 3, 2 ) ref -> ecx class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> +; V59 tmp53 [V59,T43] ( 5, 6 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+Extensions>
;* V60 tmp54 [V60 ] ( 0, 0 ) ref -> zero-ref single-def
-; V61 tmp55 [V61,T98] ( 3, 2 ) ref -> ecx "guarded devirt return temp"
+; V61 tmp55 [V61,T97] ( 3, 2 ) ref -> ecx "guarded devirt return temp"
;* V62 tmp56 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+NonLazyType>
-; V63 tmp57 [V63,T67] ( 2, 4 ) ref -> ecx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> -; V64 tmp58 [V64,T137] ( 2, 0 ) ubyte -> ecx "Inline return value spill temp"
+; V63 tmp57 [V63,T66] ( 2, 4 ) ref -> ecx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> +; V64 tmp58 [V64,T136] ( 2, 0 ) ubyte -> ecx "Inline return value spill temp"
;* V65 tmp59 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbol>
-; V66 tmp60 [V66,T60] ( 6, 4 ) ref -> edi class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.ModuleSymbol>
+; V66 tmp60 [V66,T59] ( 6, 4 ) ref -> edi class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.ModuleSymbol>
; V67 tmp61 [V67 ] ( 2, 0 ) ubyte -> [ebp-0x6C] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ;* V68 tmp62 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolSimple>
-; V69 tmp63 [V69,T89] ( 6, 2 ) ref -> ecx class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol> -; V70 tmp64 [V70,T112] ( 3, 1 ) ref -> edi "guarded devirt return temp"
+; V69 tmp63 [V69,T88] ( 6, 2 ) ref -> ecx class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol> +; V70 tmp64 [V70,T111] ( 3, 1 ) ref -> edi "guarded devirt return temp"
;* V71 tmp65 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol>
-; V72 tmp66 [V72,T68] ( 2, 4 ) ref -> ecx class-hnd exact single-def "spilling ret_expr" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V72 tmp66 [V72,T67] ( 2, 4 ) ref -> ecx class-hnd exact single-def "spilling ret_expr" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
;* V73 tmp67 [V73 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ModuleSymbol]> ;* V74 tmp68 [V74 ] ( 0, 0 ) struct ( 4) zero-ref single-def "guarded devirt return temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ModuleSymbol]> ;* V75 tmp69 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
-; V76 tmp70 [V76,T110] ( 3, 0 ) ubyte -> edx "Inline return value spill temp" -; V77 tmp71 [V77,T45] ( 4, 6 ) ref -> ecx class-hnd single-def "Inlining Arg" <System.__Canon> -; V78 tmp72 [V78,T132] ( 4, 0 ) ref -> edi class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V76 tmp70 [V76,T109] ( 3, 0 ) ubyte -> edx "Inline return value spill temp" +; V77 tmp71 [V77,T44] ( 4, 6 ) ref -> ecx class-hnd single-def "Inlining Arg" <System.__Canon> +; V78 tmp72 [V78,T131] ( 4, 0 ) ref -> edi class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
;* V79 tmp73 [V79 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Nullable`1[ubyte]>
-; V80 tmp74 [V80,T127] ( 6, 0 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
+; V80 tmp74 [V80,T126] ( 6, 0 ) ref -> ecx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
;* V81 tmp75 [V81 ] ( 0, 0 ) ref -> zero-ref single-def ;* V82 tmp76 [V82 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[ubyte]> ; V83 tmp77 [V83 ] ( 3, 0 ) struct ( 4) [ebp-0x70] do-not-enreg[SB] must-init "guarded devirt return temp" <System.Nullable`1[ubyte]> ;* V84 tmp78 [V84 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceModuleSymbol> ;* V85 tmp79 [V85 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[ubyte]>
-; V86 tmp80 [V86,T83] ( 4, 2.57) ref -> ebx class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData> -; V87 tmp81 [V87,T150] ( 2, 0 ) ref -> [ebp-0xE0] class-hnd spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.ModuleSymbol>
+; V86 tmp80 [V86,T82] ( 4, 2.57) ref -> ebx class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData> +; V87 tmp81 [V87,T149] ( 2, 0 ) ref -> [ebp-0xDC] class-hnd spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.ModuleSymbol>
; V88 tmp82 [V88,T22] ( 9, 10.95) ref -> ebx class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]> ;* V89 tmp83 [V89 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations> ;* V90 tmp84 [V90 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Nullable`1[ubyte]>
-; V91 tmp85 [V91,T130] ( 5, 0 ) ref -> edi class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
+; V91 tmp85 [V91,T129] ( 5, 0 ) ref -> edi class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
;* V92 tmp86 [V92 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]>
-; V93 tmp87 [V93,T151] ( 2, 0 ) ref -> [ebp-0xE4] class-hnd spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol>
+; V93 tmp87 [V93,T150] ( 2, 0 ) ref -> [ebp-0xE0] class-hnd spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol>
; V94 tmp88 [V94 ] ( 2, 0 ) struct (12) [ebp-0x7C] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V95 tmp89 [V95,T152] ( 2, 0 ) ref -> [ebp-0xE8] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.ArrayTypeSymbol> -; V96 tmp90 [V96,T153] ( 2, 0 ) ref -> edx class-hnd single-def "dup spill" <<unknown class>>
+; V95 tmp89 [V95,T151] ( 2, 0 ) ref -> [ebp-0xE4] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.ArrayTypeSymbol> +; V96 tmp90 [V96,T152] ( 2, 0 ) ref -> edx class-hnd single-def "dup spill" <<unknown class>>
;* V97 tmp91 [V97 ] ( 0, 0 ) ref -> zero-ref single-def
-; V98 tmp92 [V98,T133] ( 4, 0 ) ref -> edx
+; V98 tmp92 [V98,T132] ( 4, 0 ) ref -> edx
;* V99 tmp93 [V99 ] ( 0, 0 ) struct ( 4) zero-ref single-def "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant]> ; V100 tmp94 [V100 ] ( 2, 0 ) struct (12) [ebp-0x88] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.TypedConstant> ;* V101 tmp95 [V101 ] ( 0, 0 ) struct ( 4) zero-ref single-def "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant]>
-; V102 tmp96 [V102,T92] ( 4, 2 ) ref -> [ebp-0xEC] class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData> -; V103 tmp97 [V103,T134] ( 4, 0 ) ref -> [ebp-0xF0] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V104 tmp98 [V104,T135] ( 4, 0 ) ref -> ebx "guarded devirt return temp"
+; V102 tmp96 [V102,T91] ( 4, 2 ) ref -> [ebp-0xE8] class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAttributeData> +; V103 tmp97 [V103,T133] ( 4, 0 ) ref -> [ebp-0xEC] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V104 tmp98 [V104,T134] ( 4, 0 ) ref -> ebx "guarded devirt return temp"
;* V105 tmp99 [V105 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedInstanceConstructor>
-; V106 tmp100 [V106,T128] ( 6, 0 ) ref -> [ebp-0xF4] class-hnd spill-single-def "Inlining Arg" <System.__Canon> -; V107 tmp101 [V107,T154] ( 2, 0 ) ref -> edx class-hnd exact single-def "spilling ret_expr" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V106 tmp100 [V106,T127] ( 6, 0 ) ref -> [ebp-0xF0] class-hnd spill-single-def "Inlining Arg" <System.__Canon> +; V107 tmp101 [V107,T153] ( 2, 0 ) ref -> edx class-hnd exact single-def "spilling ret_expr" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
;* V108 tmp102 [V108 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ModuleSymbol]> ;* V109 tmp103 [V109 ] ( 0, 0 ) struct ( 4) zero-ref single-def "guarded devirt return temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ModuleSymbol]> ;* V110 tmp104 [V110 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
-; V111 tmp105 [V111,T129] ( 6, 0 ) ref -> ebx class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol> -; V112 tmp106 [V112,T142] ( 3, 0 ) ref -> ebx "guarded devirt return temp"
+; V111 tmp105 [V111,T128] ( 6, 0 ) ref -> ebx class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol> +; V112 tmp106 [V112,T141] ( 3, 0 ) ref -> ebx "guarded devirt return temp"
;* V113 tmp107 [V113 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol> ;* V114 tmp108 [V114 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]>
-; V115 tmp109 [V115,T91] ( 5, 2 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V116 tmp110 [V116,T90] ( 6, 2 ) ref -> [ebp-0xF8] class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]>
+; V115 tmp109 [V115,T90] ( 5, 2 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V116 tmp110 [V116,T89] ( 6, 2 ) ref -> [ebp-0xF4] class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]>
;* V117 tmp111 [V117 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]>
-; V118 tmp112 [V118,T143] ( 3, 0 ) byref -> eax single-def "impAppendStmt"
+; V118 tmp112 [V118,T142] ( 3, 0 ) byref -> eax single-def "impAppendStmt"
;* V119 tmp113 [V119 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]>
-; V120 tmp114 [V120,T71] ( 3, 3 ) ref -> ecx class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]> -; V121 tmp115 [V121,T20] ( 4, 12 ) ref -> [ebp-0xFC] class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V120 tmp114 [V120,T70] ( 3, 3 ) ref -> registers class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]> +; V121 tmp115 [V121,T15] ( 5, 20 ) ref -> [ebp-0xF8] class-hnd single-def "Inline stloc first use temp" <<unknown class>>
; V122 tmp116 [V122,T05] ( 6, 36 ) int -> [ebp-0x8C] "Inline stloc first use temp"
-; V123 tmp117 [V123,T11] ( 5, 25 ) ref -> [ebp-0x100] class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]>
+; V123 tmp117 [V123,T11] ( 5, 25 ) ref -> [ebp-0xFC] class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]>
;* V124 tmp118 [V124 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]>
-; V125 tmp119 [V125,T12] ( 3, 24 ) byref -> [ebp-0x104] "impAppendStmt" -;* V126 tmp120 [V126,T33] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]>
+; V125 tmp119 [V125,T12] ( 3, 24 ) byref -> [ebp-0x100] "impAppendStmt" +;* V126 tmp120 [V126,T32] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]>
;* V127 tmp121 [V127 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations> ; V128 tmp122 [V128,T04] ( 17, 50 ) ref -> edi class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> ; V129 tmp123 [V129,T06] ( 3, 36 ) int -> ecx "fgMakeTemp is creating a new local variable" ; V130 tmp124 [V130,T03] ( 5, 56 ) ref -> edi class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.ArrayTypeSymbol> ; V131 tmp125 [V131,T21] ( 3, 12 ) ubyte -> [ebp-0x90] spill-single-def "Inline stloc first use temp"
-; V132 tmp126 [V132,T16] ( 4, 13 ) ubyte -> [ebp-0x94] "Inline stloc first use temp" -; V133 tmp127 [V133,T99] ( 3, 2 ) ref -> edi class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V132 tmp126 [V132,T17] ( 4, 13 ) ubyte -> [ebp-0x94] "Inline stloc first use temp" +; V133 tmp127 [V133,T98] ( 3, 2 ) ref -> edi class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V134 tmp128 [V134 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+Extensions> ;* V135 tmp129 [V135 ] ( 0, 0 ) ref -> zero-ref
-; V136 tmp130 [V136,T100] ( 3, 2 ) ref -> edi "guarded devirt return temp"
+; V136 tmp130 [V136,T99] ( 3, 2 ) ref -> edi "guarded devirt return temp"
;* V137 tmp131 [V137 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+NonLazyType> ;* V138 tmp132 [V138 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-; V139 tmp133 [V139,T17] ( 3, 13 ) ubyte -> eax "Inline return value spill temp" -; V140 tmp134 [V140,T46] ( 3, 6 ) ref -> eax class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol> -; V141 tmp135 [V141,T78] ( 4, 2.67) int -> eax "guarded devirt return temp"
+; V139 tmp133 [V139,T18] ( 3, 13 ) ubyte -> eax "Inline return value spill temp" +; V140 tmp134 [V140,T45] ( 3, 6 ) ref -> eax class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol> +; V141 tmp135 [V141,T77] ( 4, 2.67) int -> eax "guarded devirt return temp"
;* V142 tmp136 [V142 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolNonGeneric>
-;* V143 tmp137 [V143,T57] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V144 tmp138 [V144,T00] ( 6,164 ) ref -> [ebp-0x108] class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
+;* V143 tmp137 [V143,T56] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V144 tmp138 [V144,T00] ( 6,164 ) ref -> [ebp-0x104] class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
;* V145 tmp139 [V145 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
-; V146 tmp140 [V146,T79] ( 3, 2.67) ubyte -> eax "Inline stloc first use temp" -; V147 tmp141 [V147,T07] ( 8, 34 ) ref -> [ebp-0x10C] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
+; V146 tmp140 [V146,T78] ( 3, 2.67) ubyte -> eax "Inline stloc first use temp" +; V147 tmp141 [V147,T07] ( 8, 34 ) ref -> [ebp-0x108] class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
; V148 tmp142 [V148,T24] ( 5, 10.29) int -> [ebp-0x98] spill-single-def "Inline stloc first use temp" ;* V149 tmp143 [V149 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V150 tmp144 [V150,T53] ( 8, 5.50) int -> [ebp-0x9C] "Inline return value spill temp" -; V151 tmp145 [V151,T54] ( 3, 5.43) int -> esi "Inlining Arg" -; V152 tmp146 [V152,T30] ( 5, 8 ) byref -> [ebp-0x110] spill-single-def "Inlining Arg" -; V153 tmp147 [V153,T55] ( 5, 5 ) ref -> esi class-hnd "Inline stloc first use temp" <<unknown class>> -; V154 tmp148 [V154,T72] ( 3, 3 ) ref -> [ebp-0x114] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> -; V155 tmp149 [V155,T62] ( 3, 4 ) byref -> ecx "impAppendStmt" -; V156 tmp150 [V156,T63] ( 3, 4 ) byref -> edx "impAppendStmt" -; V157 tmp151 [V157,T85] ( 4, 2.50) int -> esi "Inline return value spill temp" -; V158 tmp152 [V158,T56] ( 3, 5 ) int -> esi "Inlining Arg"
+; V150 tmp144 [V150,T52] ( 8, 5.50) int -> [ebp-0x9C] "Inline return value spill temp" +; V151 tmp145 [V151,T53] ( 3, 5.43) int -> esi "Inlining Arg" +; V152 tmp146 [V152,T30] ( 5, 8 ) byref -> [ebp-0x10C] spill-single-def "Inlining Arg" +; V153 tmp147 [V153,T54] ( 5, 5 ) ref -> esi class-hnd "Inline stloc first use temp" <<unknown class>> +; V154 tmp148 [V154,T71] ( 3, 3 ) ref -> [ebp-0x110] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> +; V155 tmp149 [V155,T61] ( 3, 4 ) byref -> ecx "impAppendStmt" +; V156 tmp150 [V156,T62] ( 3, 4 ) byref -> edx "impAppendStmt" +; V157 tmp151 [V157,T84] ( 4, 2.50) int -> esi "Inline return value spill temp" +; V158 tmp152 [V158,T55] ( 3, 5 ) int -> esi "Inlining Arg"
;* V159 tmp153 [V159 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V160 tmp154 [V160 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]> ;* V161 tmp155 [V161 ] ( 0, 0 ) struct ( 4) zero-ref "Inline return value spill temp" <System.Nullable`1[ubyte]> ...

coreclr_tests.run.windows.x86.checked.mch

-33 (-18.75%) : 517553.dasm - AA:reset() (FullOpts)

@@ -2,7 +2,7 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible ; No matching PGO data ; 0 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data @@ -10,19 +10,18 @@ ; ; V00 tmp0 [V00,T00] ( 3, 6 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <AA> ; V01 tmp1 [V01,T04] ( 2, 4 ) ref -> edi class-hnd single-def "impAppendStmt" <<unknown class>>
-; V02 tmp2 [V02,T01] ( 3, 6 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <AA> -; V03 tmp3 [V03,T05] ( 2, 4 ) ref -> esi class-hnd single-def "impAppendStmt" <<unknown class>>
+; V02 tmp2 [V02,T01] ( 3, 6 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <AA> +; V03 tmp3 [V03,T05] ( 2, 4 ) ref -> edi class-hnd single-def "impAppendStmt" <<unknown class>>
; V04 tmp4 [V04,T02] ( 3, 6 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <QQ> ; V05 tmp5 [V05,T03] ( 3, 6 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <QQ>
+;* V06 cse0 [V06,T06] ( 0, 0 ) int -> zero-ref "CSE - unknown"
; ; Lcl frame size = 0 G_M27028_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp
push edi push esi
- ;; size=5 bbWeight=1 PerfScore 3.25
+ ;; size=2 bbWeight=1 PerfScore 2.00
G_M27028_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, 0xD1FFAB1E ; AA call CORINFO_HELP_NEWSFAST @@ -30,15 +29,16 @@ G_M27028_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov esi, eax ; gcrRegs +[esi] test byte ptr [D1FFAB1EH], 1 ; global ptr
- je SHORT G_M27028_IG06
+ je SHORT G_M27028_IG05
;; size=21 bbWeight=1 PerfScore 5.50
-G_M27028_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M27028_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] mov edi, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[edi] mov ecx, 0xD1FFAB1E ; QQ call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax]
+ ; gcr arg pop 0
mov dword ptr [eax+0x04], 1 lea edx, bword ptr [esi+0x0C] ; byrRegs +[edx] @@ -46,60 +46,52 @@ G_M27028_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs -[eax] ; byrRegs -[edx] push esi
+ ; gcr arg push 0
mov ecx, edi ; gcrRegs +[ecx] mov edx, 100 call CORINFO_HELP_ARRADDR_ST ; gcrRegs -[ecx esi edi]
+ ; gcr arg pop 1
mov ecx, 0xD1FFAB1E ; AA call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax]
- mov edi, eax - ; gcrRegs +[edi] - test byte ptr [D1FFAB1EH], 1 ; global ptr - je SHORT G_M27028_IG07 - ;; size=65 bbWeight=1 PerfScore 13.75 -G_M27028_IG04: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax] - mov esi, gword ptr [D1FFAB1EH] ; static handle
+ mov esi, eax
; gcrRegs +[esi]
+ mov edi, gword ptr [D1FFAB1EH] ; static handle + ; gcrRegs +[edi]
mov ecx, 0xD1FFAB1E ; QQ call CORINFO_HELP_NEWSFAST
- ; gcrRegs +[eax]
+ ; gcr arg pop 0
mov dword ptr [eax+0x04], 2
- lea edx, bword ptr [edi+0x0C]
+ lea edx, bword ptr [esi+0x0C]
; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_EAX ; gcrRegs -[eax] ; byrRegs -[edx]
- push edi - mov ecx, esi
+ push esi + ; gcr arg push 0 + mov ecx, edi
; gcrRegs +[ecx] mov edx, 100 call CORINFO_HELP_ARRADDR_ST ; gcrRegs -[ecx esi edi]
- ;; size=44 bbWeight=1 PerfScore 8.25 -G_M27028_IG05: ; bbWeight=1, epilog, nogc, extend
+ ; gcr arg pop 1 + ;; size=100 bbWeight=1 PerfScore 18.00 +G_M27028_IG04: ; bbWeight=1, epilog, nogc, extend
pop esi pop edi
- pop ebp
ret
- ;; size=4 bbWeight=1 PerfScore 2.50 -G_M27028_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=3 bbWeight=1 PerfScore 2.00 +G_M27028_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi] mov ecx, 0xD1FFAB1E mov edx, 1 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- jmp G_M27028_IG03 - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M27028_IG07: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[esi] +[edi] - mov ecx, 0xD1FFAB1E - mov edx, 1 - call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE - jmp SHORT G_M27028_IG04
+ ; gcr arg pop 0 + jmp SHORT G_M27028_IG03
;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 5, PerfScore 33.25, instruction count 46, allocated bytes for code 176 (MethodHash=b512966b) for method AA:reset() (FullOpts)
+Total bytes of code 143, prolog size 2, PerfScore 27.50, instruction count 37, allocated bytes for code 143 (MethodHash=b512966b) for method AA:reset() (FullOpts)
; ============================================================

-13 (-6.16%) : 281383.dasm - System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)

@@ -8,18 +8,17 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 10, 3.65) ref -> ebx this class-hnd single-def <System.RuntimeType>
+; V00 this [V00,T04] ( 10, 3.65) ref -> ebx this class-hnd single-def <System.RuntimeType>
; V01 arg1 [V01,T02] ( 11, 11.33) ref -> esi class-hnd single-def <System.Type>
-; V02 loc0 [V02,T07] ( 4, 0.60) ref -> ecx class-hnd exact <System.RuntimeType> -; V03 loc1 [V03,T04] ( 3, 5.60) ref -> edi class-hnd single-def <System.Type[]>
+; V02 loc0 [V02,T06] ( 4, 0.60) ref -> ecx class-hnd exact <System.RuntimeType> +; V03 loc1 [V03,T03] ( 4, 10 ) ref -> edi class-hnd single-def <System.Type[]>
; V04 loc2 [V04,T01] ( 5, 18.80) int -> ebx
-; V05 tmp0 [V05,T06] ( 2, 0.96) ref -> ecx single-def "CASTCLASS eval op1"
+; V05 tmp0 [V05,T05] ( 2, 0.96) ref -> ecx single-def "CASTCLASS eval op1"
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-; V07 tmp2 [V07,T08] ( 3, 0 ) int -> eax "Single return block return value"
+; V07 tmp2 [V07,T07] ( 3, 0 ) int -> eax "Single return block return value"
; V08 tmp3 [V08,T00] ( 3, 33.60) ref -> ecx "argument with side effect"
-; V09 cse0 [V09,T05] ( 3, 4.40) int -> [ebp-0x10] "CSE - moderate"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M35267_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -27,12 +26,11 @@ G_M35267_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- push eax
mov ebx, ecx ; gcrRegs +[ebx] mov esi, edx ; gcrRegs +[esi]
- ;; size=11 bbWeight=1 PerfScore 5.75
+ ;; size=10 bbWeight=1 PerfScore 4.75
G_M35267_IG02: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz test esi, esi je SHORT G_M35267_IG12 @@ -46,13 +44,12 @@ G_M35267_IG04: ; bbWeight=2.36, gcrefRegs=00000000 {}, byrefRegs=00000000 mov eax, 1 ;; size=5 bbWeight=2.36 PerfScore 0.59 G_M35267_IG05: ; bbWeight=2.36, epilog, nogc, extend
- pop ecx
pop ebx pop esi pop edi pop ebp ret
- ;; size=6 bbWeight=2.36 PerfScore 8.26
+ ;; size=5 bbWeight=2.36 PerfScore 7.08
G_M35267_IG06: ; bbWeight=5.60, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs +[esi edi] mov ecx, gword ptr [edi+4*ebx+0x08] @@ -67,12 +64,10 @@ G_M35267_IG06: ; bbWeight=5.60, gcVars=00000000 {}, gcrefRegs=000000C0 {e je SHORT G_M35267_IG12 ;; size=18 bbWeight=5.60 PerfScore 58.80 G_M35267_IG07: ; bbWeight=4.40, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov edx, dword ptr [ebp-0x10]
inc ebx
- cmp edx, ebx - mov dword ptr [ebp-0x10], edx - jg SHORT G_M35267_IG06 - ;; size=11 bbWeight=4.40 PerfScore 15.40
+ cmp ebx, dword ptr [edi+0x04] + jl SHORT G_M35267_IG06 + ;; size=6 bbWeight=4.40 PerfScore 18.70
G_M35267_IG08: ; bbWeight=2.36, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[esi edi] jmp SHORT G_M35267_IG04 @@ -110,24 +105,22 @@ G_M35267_IG12: ; bbWeight=30.24, gcrefRegs=00000000 {}, byrefRegs=0000000 xor eax, eax ;; size=2 bbWeight=30.24 PerfScore 7.56 G_M35267_IG13: ; bbWeight=30.24, epilog, nogc, extend
- pop ecx
pop ebx pop esi pop edi pop ebp ret
- ;; size=6 bbWeight=30.24 PerfScore 105.84
+ ;; size=5 bbWeight=30.24 PerfScore 90.72
G_M35267_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref movzx eax, al ;; size=3 bbWeight=0 PerfScore 0.00 G_M35267_IG15: ; bbWeight=0, epilog, nogc, extend
- pop ecx
pop ebx pop esi pop edi pop ebp ret
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=0 PerfScore 0.00
G_M35267_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000000A {ecx ebx}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs +[ecx ebx] mov edx, ebx @@ -178,13 +171,11 @@ G_M35267_IG18: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000 mov edi, eax ; gcrRegs +[edi] xor ebx, ebx
- mov edx, dword ptr [edi+0x04] - test edx, edx - mov dword ptr [ebp-0x10], edx
+ cmp dword ptr [edi+0x04], 0
jle G_M35267_IG04 jmp G_M35267_IG06
- ;; size=44 bbWeight=0 PerfScore 0.00
+ ;; size=40 bbWeight=0 PerfScore 0.00
-; Total bytes of code 211, prolog size 7, PerfScore 215.66, instruction count 92, allocated bytes for code 211 (MethodHash=dbae763c) for method System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
+Total bytes of code 198, prolog size 6, PerfScore 201.66, instruction count 84, allocated bytes for code 198 (MethodHash=dbae763c) for method System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
; ============================================================

-1 (-0.08%) : 498009.dasm - DynamicObjects.M:createObject():System.Object (FullOpts)

@@ -12,53 +12,53 @@ ; V01 loc1 [V01,T28] ( 3, 3 ) ref -> eax class-hnd single-def <System.Reflection.Emit.AssemblyBuilder> ; V02 loc2 [V02,T29] ( 3, 3 ) ref -> eax class-hnd single-def <System.Reflection.Emit.ModuleBuilder> ; V03 loc3 [V03,T04] ( 11, 8.68) ref -> esi class-hnd single-def <System.Reflection.Emit.TypeBuilder>
-; V04 loc4 [V04,T30] ( 3, 3 ) ref -> [ebp-0x18] class-hnd spill-single-def <System.Reflection.Emit.FieldBuilder> -; V05 loc5 [V05,T07] ( 11, 7.92) ref -> [ebp-0x1C] class-hnd spill-single-def <System.Reflection.Emit.PropertyBuilder>
+; V04 loc4 [V04,T30] ( 3, 3 ) ref -> [ebp-0x14] class-hnd spill-single-def <System.Reflection.Emit.FieldBuilder> +; V05 loc5 [V05,T05] ( 12, 8 ) ref -> [ebp-0x18] class-hnd spill-single-def <System.Reflection.Emit.PropertyBuilder>
;* V06 loc6 [V06 ] ( 0, 0 ) int -> zero-ref single-def
-; V07 loc7 [V07,T09] ( 12, 6 ) ref -> [ebp-0x20] class-hnd spill-single-def <System.Reflection.Emit.MethodBuilder>
+; V07 loc7 [V07,T09] ( 12, 6 ) ref -> [ebp-0x1C] class-hnd spill-single-def <System.Reflection.Emit.MethodBuilder>
;* V08 loc8 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Reflection.Emit.ILGenerator> ; V09 loc9 [V09,T18] ( 12, 4.92) ref -> edi class-hnd single-def <System.Reflection.Emit.MethodBuilder> ;* V10 loc10 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Reflection.Emit.ILGenerator>
-;* V11 loc11 [V11,T40] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
+;* V11 loc11 [V11,T39] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
;* V12 loc12 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Reflection.Emit.CustomAttributeBuilder>
-;* V13 loc13 [V13,T41] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
+;* V13 loc13 [V13,T40] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>>
;* V14 loc14 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Reflection.Emit.CustomAttributeBuilder> ;* V15 loc15 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Type> ; V16 tmp0 [V16,T03] ( 5, 10 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <System.Reflection.AssemblyName> ; V17 tmp1 [V17,T00] ( 6, 12 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <System.Version> ; V18 tmp2 [V18,T11] ( 3, 6 ) ref -> eax class-hnd exact single-def "dup spill" <System.Type[]> ;* V19 tmp3 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V20 tmp4 [V20,T12] ( 3, 6 ) ref -> [ebp-0x24] class-hnd exact spill-single-def "dup spill" <System.Reflection.PropertyInfo[]>
+; V20 tmp4 [V20,T12] ( 3, 6 ) ref -> [ebp-0x20] class-hnd exact spill-single-def "dup spill" <System.Reflection.PropertyInfo[]>
; V21 tmp5 [V21,T21] ( 2, 4 ) ref -> edi class-hnd single-def "impAppendStmt" <System.Reflection.ConstructorInfo>
-; V22 tmp6 [V22,T22] ( 2, 4 ) ref -> [ebp-0x28] class-hnd exact spill-single-def "impAppendStmt" <System.Object[]>
+; V22 tmp6 [V22,T22] ( 2, 4 ) ref -> [ebp-0x24] class-hnd exact spill-single-def "impAppendStmt" <System.Object[]>
; V23 tmp7 [V23,T23] ( 2, 4 ) ref -> eax class-hnd single-def "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
-; V24 tmp8 [V24,T13] ( 3, 6 ) ref -> [ebp-0x2C] class-hnd exact spill-single-def "dup spill" <System.Object[]> -; V25 tmp9 [V25,T14] ( 3, 6 ) ref -> [ebp-0x30] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.CustomAttributeBuilder> -; V26 tmp10 [V26,T05] ( 4, 8 ) ref -> [ebp-0x34] class-hnd exact spill-single-def "dup spill" <System.Reflection.PropertyInfo[]>
+; V24 tmp8 [V24,T13] ( 3, 6 ) ref -> [ebp-0x28] class-hnd exact spill-single-def "dup spill" <System.Object[]> +; V25 tmp9 [V25,T14] ( 3, 6 ) ref -> [ebp-0x2C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.CustomAttributeBuilder> +; V26 tmp10 [V26,T06] ( 4, 8 ) ref -> [ebp-0x30] class-hnd exact spill-single-def "dup spill" <System.Reflection.PropertyInfo[]>
; V27 tmp11 [V27,T24] ( 2, 4 ) ref -> edi class-hnd single-def "impAppendStmt" <System.Reflection.ConstructorInfo>
-; V28 tmp12 [V28,T25] ( 2, 4 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "impAppendStmt" <System.Object[]>
+; V28 tmp12 [V28,T25] ( 2, 4 ) ref -> [ebp-0x34] class-hnd exact spill-single-def "impAppendStmt" <System.Object[]>
; V29 tmp13 [V29,T26] ( 2, 4 ) ref -> eax class-hnd single-def "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo> ; V30 tmp14 [V30,T27] ( 2, 4 ) ref -> eax class-hnd single-def "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
-; V31 tmp15 [V31,T06] ( 4, 8 ) ref -> [ebp-0x3C] class-hnd exact spill-single-def "dup spill" <System.Object[]>
+; V31 tmp15 [V31,T07] ( 4, 8 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "dup spill" <System.Object[]>
;* V32 tmp16 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V33 tmp17 [V33,T15] ( 3, 6 ) ref -> [ebp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.CustomAttributeBuilder>
+; V33 tmp17 [V33,T15] ( 3, 6 ) ref -> [ebp-0x3C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.CustomAttributeBuilder>
;* V34 tmp18 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V35 tmp19 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V36 tmp20 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V37 tmp21 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V38 tmp22 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V39 tmp23 [V39,T10] ( 7, 6 ) ref -> [ebp-0x44] "guarded devirt return temp"
+; V39 tmp23 [V39,T10] ( 7, 6 ) ref -> [ebp-0x40] "guarded devirt return temp"
;* V40 tmp24 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Reflection.Emit.RuntimeMethodBuilder>
-; V41 tmp25 [V41,T36] ( 2, 2 ) ref -> edx class-hnd single-def "dup spill" <System.Reflection.Emit.RuntimeILGenerator>
+; V41 tmp25 [V41,T35] ( 2, 2 ) ref -> edx class-hnd single-def "dup spill" <System.Reflection.Emit.RuntimeILGenerator>
; V42 tmp26 [V42,T32] ( 4, 2.25) ref -> edx
-; V43 tmp27 [V43,T34] ( 4, 2 ) ref -> [ebp-0x48] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.RuntimeILGenerator>
+; V43 tmp27 [V43,T33] ( 4, 2 ) ref -> [ebp-0x44] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.RuntimeILGenerator>
;* V44 tmp28 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.RuntimeILGenerator> ;* V45 tmp29 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V46 tmp30 [V46,T08] ( 8, 6.50) ref -> ebx "guarded devirt return temp" ;* V47 tmp31 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Reflection.Emit.RuntimeMethodBuilder>
-; V48 tmp32 [V48,T37] ( 2, 2 ) ref -> ebx class-hnd single-def "dup spill" <System.Reflection.Emit.RuntimeILGenerator> -; V49 tmp33 [V49,T38] ( 4, 1.75) ref -> ebx -; V50 tmp34 [V50,T35] ( 4, 2 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Emit.RuntimeILGenerator>
+; V48 tmp32 [V48,T36] ( 2, 2 ) ref -> ebx class-hnd single-def "dup spill" <System.Reflection.Emit.RuntimeILGenerator> +; V49 tmp33 [V49,T37] ( 4, 1.75) ref -> ebx +; V50 tmp34 [V50,T34] ( 4, 2 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Emit.RuntimeILGenerator>
;* V51 tmp35 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.RuntimeILGenerator> ;* V52 tmp36 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Reflection.Emit.RuntimePropertyBuilder> ;* V53 tmp37 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Reflection.Emit.RuntimePropertyBuilder> @@ -70,7 +70,7 @@ ;* V59 tmp43 [V59,T02] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V60 tmp44 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type> ;* V61 tmp45 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>>
-; V62 tmp46 [V62,T39] ( 3, 1.50) ref -> eax "guarded devirt return temp"
+; V62 tmp46 [V62,T38] ( 3, 1.50) ref -> eax "guarded devirt return temp"
;* V63 tmp47 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.Emit.RuntimeTypeBuilder> ;* V64 tmp48 [V64 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V65 tmp49 [V65 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" @@ -84,17 +84,16 @@ ;* V73 tmp57 [V73 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V74 tmp58 [V74 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V75 tmp59 [V75 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V76 cse0 [V76,T42] ( 0, 0 ) int -> zero-ref "CSE - moderate" -;* V77 cse1 [V77,T43] ( 0, 0 ) int -> zero-ref "CSE - conservative" -;* V78 cse2 [V78,T44] ( 0, 0 ) int -> zero-ref "CSE - conservative"
+;* V76 cse0 [V76,T41] ( 0, 0 ) int -> zero-ref "CSE - moderate" +;* V77 cse1 [V77,T42] ( 0, 0 ) int -> zero-ref "CSE - conservative" +;* V78 cse2 [V78,T43] ( 0, 0 ) int -> zero-ref "CSE - conservative"
; V79 cse3 [V79,T19] ( 4, 4 ) int -> ebx "CSE - conservative" ; V80 cse4 [V80,T20] ( 4, 4 ) int -> [ebp-0x10] spill-single-def "CSE - conservative" ; V81 cse5 [V81,T31] ( 3, 3 ) int -> edi "CSE - conservative"
-; V82 cse6 [V82,T33] ( 3, 2.08) int -> [ebp-0x14] spill-single-def "CSE - conservative" -; TEMP_02 ref -> [ebp-0x4C] -; TEMP_01 int -> [ebp-0x50]
+; TEMP_02 ref -> [ebp-0x48] +; TEMP_01 int -> [ebp-0x4C]
;
-; Lcl frame size = 68
+; Lcl frame size = 64
G_M60100_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -102,9 +101,9 @@ G_M60100_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 68
+ sub esp, 64
xor eax, eax
- mov dword ptr [ebp-0x4C], eax
+ mov dword ptr [ebp-0x48], eax
;; size=14 bbWeight=1 PerfScore 5.75 G_M60100_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, 0xD1FFAB1E ; System.Reflection.AssemblyName @@ -180,7 +179,7 @@ G_M60100_IG04: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=0000 call [eax+0x18]<unknown method> ; gcrRegs -[ecx edx] +[eax] ; gcr arg pop 3
- mov gword ptr [ebp-0x18], eax
+ mov gword ptr [ebp-0x14], eax
; GC ptr vars +{V04} push 0x1000 push 0 @@ -206,7 +205,7 @@ G_M60100_IG04: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=0000 call [ebx+0x14]<unknown method> ; gcrRegs -[ecx edx] +[eax] ; gcr arg pop 6
- mov gword ptr [ebp-0x1C], eax
+ mov gword ptr [ebp-0x18], eax
; GC ptr vars +{V05} push 0x886 push 1 @@ -229,23 +228,23 @@ G_M60100_IG04: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=0000 call [ebx+0x04]<unknown method> ; gcrRegs -[ecx edx] ; gcr arg pop 6
- mov gword ptr [ebp-0x20], eax
+ mov gword ptr [ebp-0x1C], eax
; GC ptr vars +{V07} cmp dword ptr [eax], 0xD1FFAB1E ;; size=184 bbWeight=1 PerfScore 70.75 G_M60100_IG05: ; bbWeight=1, extend jne G_M60100_IG25 ;; size=6 bbWeight=1 PerfScore 1.00
-G_M60100_IG06: ; bbWeight=0.50, gcVars=0000000040000280 {V04 V05 V07}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M60100_IG06: ; bbWeight=0.50, gcVars=0000000040000220 {V04 V05 V07}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
mov ecx, eax ; gcrRegs +[ecx] call [System.Reflection.Emit.RuntimeMethodBuilder:ThrowIfGeneric():this] ; gcrRegs -[eax ecx]
- mov ecx, gword ptr [ebp-0x20]
+ mov ecx, gword ptr [ebp-0x1C]
; gcrRegs +[ecx] call [System.Reflection.Emit.RuntimeMethodBuilder:ThrowIfShouldNotHaveBody():this] ; gcrRegs -[ecx]
- mov eax, gword ptr [ebp-0x20]
+ mov eax, gword ptr [ebp-0x1C]
; gcrRegs +[eax] mov edx, gword ptr [eax+0x1C] ; gcrRegs +[edx] @@ -259,19 +258,19 @@ G_M60100_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; gcrRegs +[eax] mov edx, eax ; gcrRegs +[edx]
- mov gword ptr [ebp-0x48], edx
+ mov gword ptr [ebp-0x44], edx
; GC ptr vars +{V43} push 64 mov ecx, edx ; gcrRegs +[ecx]
- mov edx, gword ptr [ebp-0x20]
+ mov edx, gword ptr [ebp-0x1C]
call [System.Reflection.Emit.RuntimeILGenerator:.ctor(System.Reflection.MethodInfo,int):this] ; gcrRegs -[eax ecx edx]
- mov eax, gword ptr [ebp-0x20]
+ mov eax, gword ptr [ebp-0x1C]
; gcrRegs +[eax] lea edx, bword ptr [eax+0x1C] ; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x48]
+ mov ecx, gword ptr [ebp-0x44]
; gcrRegs +[ecx] call CORINFO_HELP_ASSIGN_REF_ECX ; gcrRegs -[eax] @@ -279,7 +278,7 @@ G_M60100_IG07: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov edx, ecx ; gcrRegs +[edx] ;; size=44 bbWeight=0.25 PerfScore 2.88
-G_M60100_IG08: ; bbWeight=1, gcVars=0000000040000280 {V04 V05 V07}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M60100_IG08: ; bbWeight=1, gcVars=0000000040000220 {V04 V05 V07}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx] ; GC ptr vars -{V43} test byte ptr [D1FFAB1EH], 1 ; global ptr @@ -291,7 +290,7 @@ G_M60100_IG09: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=0000 push dword ptr [ecx] mov ecx, edx ; gcrRegs +[ecx]
- mov gword ptr [ebp-0x44], edx
+ mov gword ptr [ebp-0x40], edx
; GC ptr vars +{V39} mov edi, dword ptr [edx] mov edi, dword ptr [edi+0x2C] @@ -300,11 +299,11 @@ G_M60100_IG09: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=0000 mov ecx, 0xD1FFAB1E ; data for <unknown class>:<unknown field> push dword ptr [ecx+0x04] push dword ptr [ecx]
- mov ecx, gword ptr [ebp-0x44]
+ mov ecx, gword ptr [ebp-0x40]
; gcrRegs +[ecx]
- mov edx, gword ptr [ebp-0x18]
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
- mov gword ptr [ebp-0x44], ecx
+ mov gword ptr [ebp-0x40], ecx
mov eax, dword ptr [ecx] mov eax, dword ptr [eax+0x34] call [eax+0x10]<unknown method> @@ -312,7 +311,7 @@ G_M60100_IG09: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=0000 mov ecx, 0xD1FFAB1E ; data for <unknown class>:<unknown field> push dword ptr [ecx+0x04] push dword ptr [ecx]
- mov ecx, gword ptr [ebp-0x44]
+ mov ecx, gword ptr [ebp-0x40]
; gcrRegs +[ecx] ; GC ptr vars -{V39} call [edi+0x10]<unknown method> @@ -406,7 +405,7 @@ G_M60100_IG12: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs= push dword ptr [ecx] mov ecx, ebx ; gcrRegs +[ecx]
- mov edx, gword ptr [ebp-0x18]
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx] mov eax, dword ptr [ebx] mov eax, dword ptr [eax+0x34] @@ -422,7 +421,7 @@ G_M60100_IG12: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs= ; gcrRegs -[ebx] call [ebx+0x10]<unknown method> ; gcrRegs -[ecx]
- mov ebx, gword ptr [ebp-0x1C]
+ mov ebx, gword ptr [ebp-0x18]
; gcrRegs +[ebx] cmp dword ptr [ebx], 0xD1FFAB1E jne SHORT G_M60100_IG15 @@ -431,13 +430,13 @@ G_M60100_IG13: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe push 2 ...

+2 (+0.35%) : 342492.dasm - System.String:Concat(System.String,System.String,System.String):System.String (Tier1)

@@ -9,71 +9,68 @@ ; 12 inlinees with PGO data; 25 single block inlinees; 15 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 8, 3 ) ref -> esi class-hnd single-def <System.String> -; V01 arg1 [V01,T01] ( 7, 2 ) ref -> [ebp-0x24] class-hnd single-def <System.String> -; V02 arg2 [V02,T06] ( 7, 0 ) ref -> [ebp+0x08] class-hnd single-def <System.String>
+; V00 arg0 [V00,T00] ( 17, 3 ) ref -> esi class-hnd single-def <System.String> +; V01 arg1 [V01,T01] ( 11, 2 ) ref -> edi class-hnd single-def <System.String> +; V02 arg2 [V02,T03] ( 13, 0 ) ref -> [ebp+0x08] class-hnd single-def <System.String>
;* V03 loc0 [V03 ] ( 0, 0 ) long -> zero-ref
-; V04 loc1 [V04,T05] ( 9, 0 ) ref -> [ebp-0x28] class-hnd exact spill-single-def <System.String>
+; V04 loc1 [V04,T04] ( 9, 0 ) ref -> [ebp-0x14] class-hnd exact spill-single-def <System.String>
; V05 tmp0 [V05,T02] ( 2, 0 ) ubyte -> ecx "Inline return value spill temp"
-; V06 tmp1 [V06,T12] ( 2, 0 ) ubyte -> ecx "Inline return value spill temp" -; V07 tmp2 [V07,T11] ( 3, 0 ) ref -> eax class-hnd "Inline return value spill temp" <System.String> -; V08 tmp3 [V08,T10] ( 4, 0 ) int -> [ebp-0x10] spill-single-def "Inline stloc first use temp" -; V09 tmp4 [V09,T13] ( 3, 0 ) int -> ecx "Inline stloc first use temp" -; V10 tmp5 [V10,T07] ( 7, 0 ) ref -> [ebp-0x2C] class-hnd exact spill-single-def "Inline stloc first use temp" <System.String> -;* V11 tmp6 [V11,T34] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V06 tmp1 [V06,T09] ( 2, 0 ) ubyte -> ecx "Inline return value spill temp" +; V07 tmp2 [V07,T08] ( 3, 0 ) ref -> registers class-hnd "Inline return value spill temp" <System.String> +; V08 tmp3 [V08,T07] ( 4, 0 ) int -> edi "Inline stloc first use temp" +; V09 tmp4 [V09,T10] ( 3, 0 ) int -> ecx "Inline stloc first use temp" +; V10 tmp5 [V10,T05] ( 7, 0 ) ref -> [ebp-0x18] class-hnd exact spill-single-def "Inline stloc first use temp" <System.String> +;* V11 tmp6 [V11,T31] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V13 tmp8 [V13,T14] ( 2, 0 ) ubyte -> ecx "Inline return value spill temp"
+; V13 tmp8 [V13,T11] ( 2, 0 ) ubyte -> ecx "Inline return value spill temp"
;* V14 tmp9 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V15 tmp10 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V16 tmp11 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp12 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp13 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V19 tmp14 [V19,T18] ( 2, 0 ) byref -> ecx single-def "Inlining Arg" -; V20 tmp15 [V20,T19] ( 2, 0 ) byref -> edx single-def "Inlining Arg" -;* V21 tmp16 [V21,T35] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V19 tmp14 [V19,T15] ( 2, 0 ) byref -> ecx single-def "Inlining Arg" +; V20 tmp15 [V20,T16] ( 2, 0 ) byref -> edx single-def "Inlining Arg" +;* V21 tmp16 [V21,T32] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V22 tmp17 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V23 tmp18 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp19 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V25 tmp20 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V26 tmp21 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V27 tmp22 [V27,T20] ( 2, 0 ) byref -> ecx single-def "Inlining Arg" -; V28 tmp23 [V28,T21] ( 2, 0 ) byref -> edx single-def "Inlining Arg" -; V29 tmp24 [V29,T28] ( 2, 0 ) int -> esi "Inlining Arg" -; V30 tmp25 [V30,T15] ( 2, 0 ) ubyte -> edx "Inline return value spill temp"
+; V27 tmp22 [V27,T17] ( 2, 0 ) byref -> ecx single-def "Inlining Arg" +; V28 tmp23 [V28,T18] ( 2, 0 ) byref -> edx single-def "Inlining Arg" +; V29 tmp24 [V29,T25] ( 2, 0 ) int -> ebx "Inlining Arg" +; V30 tmp25 [V30,T12] ( 2, 0 ) ubyte -> ecx "Inline return value spill temp"
;* V31 tmp26 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V32 tmp27 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V33 tmp28 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V34 tmp29 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V35 tmp30 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V36 tmp31 [V36,T22] ( 2, 0 ) byref -> ecx single-def "Inlining Arg" -; V37 tmp32 [V37,T23] ( 2, 0 ) byref -> edx single-def "Inlining Arg" -; V38 tmp33 [V38,T29] ( 2, 0 ) int -> esi "Inlining Arg" -; V39 tmp34 [V39,T30] ( 2, 0 ) int -> ecx "Inlining Arg"
+; V36 tmp31 [V36,T19] ( 2, 0 ) byref -> ecx single-def "Inlining Arg" +; V37 tmp32 [V37,T20] ( 2, 0 ) byref -> edx single-def "Inlining Arg" +; V38 tmp33 [V38,T26] ( 2, 0 ) int -> ebx "Inlining Arg" +; V39 tmp34 [V39,T27] ( 2, 0 ) int -> ecx "Inlining Arg"
;* V40 tmp35 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V41 tmp36 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V42 tmp37 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V43 tmp38 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V44 tmp39 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V45 tmp40 [V45,T24] ( 2, 0 ) byref -> edx single-def "Inlining Arg" -; V46 tmp41 [V46,T25] ( 2, 0 ) byref -> esi single-def "Inlining Arg" -; V47 tmp42 [V47,T31] ( 2, 0 ) int -> ebx "Inlining Arg" -; V48 tmp43 [V48,T16] ( 3, 0 ) int -> ebx "Inlining Arg"
+; V45 tmp40 [V45,T21] ( 2, 0 ) byref -> ecx single-def "Inlining Arg" +; V46 tmp41 [V46,T22] ( 2, 0 ) byref -> edx single-def "Inlining Arg" +; V47 tmp42 [V47,T28] ( 2, 0 ) int -> ebx "Inlining Arg" +; V48 tmp43 [V48,T13] ( 3, 0 ) int -> esi "Inlining Arg"
;* V49 tmp44 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V50 tmp45 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V51 tmp46 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V52 tmp47 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V53 tmp48 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V54 tmp49 [V54,T26] ( 2, 0 ) byref -> ecx single-def "Inlining Arg" -; V55 tmp50 [V55,T27] ( 2, 0 ) byref -> edx single-def "Inlining Arg" -; V56 tmp51 [V56,T32] ( 2, 0 ) int -> eax "Inlining Arg" -; V57 cse0 [V57,T08] ( 6, 0 ) int -> registers multi-def "CSE - moderate" -; V58 cse1 [V58,T03] ( 9, 0 ) int -> [ebp-0x14] "CSE - moderate" -; V59 cse2 [V59,T04] ( 10, 0 ) int -> [ebp-0x18] multi-def "CSE - conservative" -; V60 cse3 [V60,T09] ( 6, 0 ) int -> [ebp-0x1C] "CSE - conservative" -; V61 rat0 [V61,T17] ( 3, 0 ) int -> [ebp-0x20] "field V03.lo (fldOffset=0x0)" P-INDEP -; V62 rat1 [V62,T33] ( 2, 0 ) int -> ecx "field V03.hi (fldOffset=0x4)" P-INDEP
+; V54 tmp49 [V54,T23] ( 2, 0 ) byref -> ecx single-def "Inlining Arg" +; V55 tmp50 [V55,T24] ( 2, 0 ) byref -> edx single-def "Inlining Arg" +; V56 tmp51 [V56,T29] ( 2, 0 ) int -> eax "Inlining Arg" +; V57 cse0 [V57,T06] ( 6, 0 ) int -> [ebp-0x10] multi-def "CSE - moderate" +; V58 rat0 [V58,T14] ( 3, 0 ) int -> ecx "field V03.lo (fldOffset=0x0)" P-INDEP +; V59 rat1 [V59,T30] ( 2, 0 ) int -> eax "field V03.hi (fldOffset=0x4)" P-INDEP
;
-; Lcl frame size = 32
+; Lcl frame size = 12
G_M21105_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -81,7 +78,7 @@ G_M21105_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 32
+ sub esp, 12
mov esi, ecx ; gcrRegs +[esi] mov edi, edx @@ -89,7 +86,7 @@ G_M21105_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=13 bbWeight=1 PerfScore 5.00 G_M21105_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz test esi, esi
- jne G_M21105_IG25
+ jne G_M21105_IG26
jmp SHORT G_M21105_IG04 ;; size=10 bbWeight=1 PerfScore 3.25 G_M21105_IG03: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz @@ -117,43 +114,40 @@ G_M21105_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=000000 ; gcrRegs -[eax] +[esi edi] test edi, edi je SHORT G_M21105_IG07
- mov eax, dword ptr [edi+0x04]
xor ecx, ecx
- test eax, eax
+ cmp dword ptr [edi+0x04], 0
sete cl test ecx, ecx je G_M21105_IG14
- ;; size=22 bbWeight=0 PerfScore 0.00
+ ;; size=21 bbWeight=0 PerfScore 0.00
G_M21105_IG07: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[edi]
- mov edi, gword ptr [ebp+0x08] - ; gcrRegs +[edi] - test edi, edi
+ mov ecx, dword ptr [esi+0x04] + mov ebx, gword ptr [ebp+0x08] + ; gcrRegs +[ebx] + test ebx, ebx
je SHORT G_M21105_IG08
- mov eax, dword ptr [edi+0x04]
xor ecx, ecx
- test eax, eax
+ cmp dword ptr [ebx+0x04], 0
sete cl test ecx, ecx je SHORT G_M21105_IG09
- ;; size=21 bbWeight=0 PerfScore 0.00
+ ;; size=23 bbWeight=0 PerfScore 0.00
G_M21105_IG08: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edi]
+ ; gcrRegs -[ebx]
mov eax, esi ; gcrRegs +[eax] jmp G_M21105_IG13 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M21105_IG09: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax] +[edi] - mov edx, ebx - mov dword ptr [ebp-0x10], edx - mov dword ptr [ebp-0x18], eax - lea ecx, [eax+edx] - test ecx, ecx - jl G_M21105_IG18
+G_M21105_IG09: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax] +[ebx] + mov edi, dword ptr [esi+0x04] + mov ecx, edi + add ecx, dword ptr [ebx+0x04] + js G_M21105_IG18
call <unknown method> ; gcrRegs +[eax]
- mov gword ptr [ebp-0x2C], eax
+ mov gword ptr [ebp-0x18], eax
; GC ptr vars +{V10} test eax, eax jne SHORT G_M21105_IG10 @@ -163,40 +157,41 @@ G_M21105_IG09: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[eax ecx edx]
- ;; size=47 bbWeight=0 PerfScore 0.00 -G_M21105_IG10: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - mov eax, gword ptr [ebp-0x2C]
+ ;; size=42 bbWeight=0 PerfScore 0.00 +G_M21105_IG10: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + mov ecx, dword ptr [esi+0x04] + mov eax, gword ptr [ebp-0x18]
; gcrRegs +[eax]
- cmp dword ptr [eax+0x04], ebx - jge SHORT G_M21105_IG11
+ cmp ecx, dword ptr [eax+0x04] + jle SHORT G_M21105_IG11
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[eax ecx edx]
- ;; size=24 bbWeight=0 PerfScore 0.00 -G_M21105_IG11: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - mov eax, gword ptr [ebp-0x2C]
+ ;; size=27 bbWeight=0 PerfScore 0.00 +G_M21105_IG11: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + mov eax, gword ptr [ebp-0x18]
; gcrRegs +[eax] lea ecx, bword ptr [eax+0x08] ; byrRegs +[ecx] lea edx, bword ptr [esi+0x08] ; byrRegs +[edx]
- mov esi, dword ptr [ebp-0x10]
+ mov esi, dword ptr [esi+0x04]
; gcrRegs -[esi]
- lea ebx, [esi+esi] - push ebx
+ lea esi, [edi+edi] + push esi
call [<unknown method>] ; gcrRegs -[eax] ; byrRegs -[ecx edx]
- mov eax, gword ptr [ebp-0x2C]
+ mov ecx, dword ptr [ebx+0x04] + mov eax, gword ptr [ebp-0x18]
; gcrRegs +[eax]
- mov ecx, dword ptr [eax+0x04] - sub ecx, esi - mov esi, dword ptr [ebp-0x18] - cmp ecx, esi - jge SHORT G_M21105_IG12
+ mov edx, dword ptr [eax+0x04] + sub edx, edi + cmp ecx, edx + jle SHORT G_M21105_IG12
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E @@ -204,25 +199,27 @@ G_M21105_IG11: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 call [<unknown method>] ; gcrRegs -[eax ecx edx] ;; size=53 bbWeight=0 PerfScore 0.00
-G_M21105_IG12: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref - mov eax, gword ptr [ebp-0x2C]
+G_M21105_IG12: ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref + mov eax, gword ptr [ebp-0x18]
...

+5 (+1.71%) : 370780.dasm - ILCompiler.ReadyToRunCompilerContext:ComputeHasGCStaticBase(Internal.TypeSystem.FieldDesc):ubyte:this (Tier1)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <ILCompiler.ReadyToRunCompilerContext>
-; V01 arg1 [V01,T00] ( 11, 5.96) ref -> esi class-hnd single-def <Internal.TypeSystem.FieldDesc>
+; V01 arg1 [V01,T00] ( 12, 5.96) ref -> esi class-hnd single-def <Internal.TypeSystem.FieldDesc>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Internal.TypeSystem.TypeDesc> ;* V03 tmp0 [V03 ] ( 0, 0 ) int -> zero-ref "guarded devirt return temp" ;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaField> @@ -31,7 +31,6 @@ ;* V19 tmp16 [V19 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" ; V20 tmp17 [V20,T08] ( 5, 1.42) int -> ecx "Inline return value spill temp" ; V21 tmp18 [V21,T09] ( 3, 1.21) int -> ecx single-def "Inline stloc first use temp"
-; V22 cse0 [V22,T14] ( 3, 0 ) int -> edi "CSE - conservative"
; ; Lcl frame size = 0 @@ -192,8 +191,8 @@ G_M5978_IG24: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov ecx, esi ; gcrRegs +[ecx] mov eax, dword ptr [esi]
- mov edi, dword ptr [eax+0x30] - call [edi+0x0C]<unknown method>
+ mov eax, dword ptr [eax+0x30] + call [eax+0x0C]<unknown method>
; gcrRegs -[ecx] mov ecx, eax call [<unknown method>] @@ -212,13 +211,15 @@ G_M5978_IG26: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs -[eax edi] +[esi] mov ecx, esi ; gcrRegs +[ecx]
- call [edi]<unknown method>
+ mov eax, dword ptr [esi] + mov eax, dword ptr [eax+0x30] + call [eax]<unknown method>
; gcrRegs -[ecx esi] +[eax] mov edi, eax ; gcrRegs +[edi] jmp G_M5978_IG05
- ;; size=11 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 292, prolog size 5, PerfScore 37.43, instruction count 99, allocated bytes for code 292 (MethodHash=ac23e8a5) for method ILCompiler.ReadyToRunCompilerContext:ComputeHasGCStaticBase(Internal.TypeSystem.FieldDesc):ubyte:this (Tier1)
+Total bytes of code 297, prolog size 5, PerfScore 37.43, instruction count 101, allocated bytes for code 297 (MethodHash=ac23e8a5) for method ILCompiler.ReadyToRunCompilerContext:ComputeHasGCStaticBase(Internal.TypeSystem.FieldDesc):ubyte:this (Tier1)
; ============================================================

+21 (+4.69%) : 371910.dasm - Internal.JitInterface.CorInfoImpl:TryReadRvaFieldData(Internal.TypeSystem.FieldDesc,uint,int,int):ubyte (Tier1)

@@ -9,11 +9,11 @@ ; 11 inlinees with PGO data; 13 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 19, 9 ) ref -> esi class-hnd single-def <Internal.TypeSystem.FieldDesc>
+; V00 arg0 [V00,T00] ( 18, 9 ) ref -> esi class-hnd single-def <Internal.TypeSystem.FieldDesc>
; V01 arg1 [V01,T03] ( 4, 4 ) int -> ebx single-def ; V02 arg2 [V02,T02] ( 7, 7 ) int -> edi single-def ; V03 arg3 [V03,T05] ( 5, 5 ) int -> [ebp+0x08] single-def
-; V04 loc0 [V04,T12] ( 2, 2 ) ref -> ecx class-hnd exact <Internal.TypeSystem.Ecma.EcmaField>
+; V04 loc0 [V04,T13] ( 2, 2 ) ref -> ecx class-hnd exact <Internal.TypeSystem.Ecma.EcmaField>
;* V05 loc1 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]> ;* V06 loc2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]> ;* V07 tmp0 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Internal.TypeSystem.Ecma.EcmaField> @@ -22,23 +22,23 @@ ;* V10 tmp3 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaField> ;* V11 tmp4 [V11 ] ( 0, 0 ) int -> zero-ref "guarded devirt return temp" ;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaField>
-; V13 tmp6 [V13,T20] ( 2, 0 ) int -> eax "guarded devirt return temp"
+; V13 tmp6 [V13,T21] ( 2, 0 ) int -> eax "guarded devirt return temp"
;* V14 tmp7 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaField> ;* V15 tmp8 [V15,T22] ( 0, 0 ) int -> zero-ref "guarded devirt return temp" ;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Internal.TypeSystem.Ecma.EcmaField>
-; V17 tmp10 [V17,T14] ( 3, 2 ) int -> eax "Inline return value spill temp"
+; V17 tmp10 [V17,T15] ( 3, 2 ) int -> eax "Inline return value spill temp"
; V18 tmp11 [V18,T07] ( 3, 3 ) int -> eax single-def "Inline stloc first use temp" ;* V19 tmp12 [V19 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V20 tmp13 [V20,T15] ( 3, 2 ) int -> eax "Inline return value spill temp"
+; V20 tmp13 [V20,T16] ( 3, 2 ) int -> eax "Inline return value spill temp"
; V21 tmp14 [V21,T08] ( 3, 3 ) int -> eax single-def "Inline stloc first use temp" ;* V22 tmp15 [V22 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V23 tmp16 [V23,T16] ( 3, 2 ) int -> eax "Inline return value spill temp"
+; V23 tmp16 [V23,T17] ( 3, 2 ) int -> eax "Inline return value spill temp"
; V24 tmp17 [V24,T09] ( 3, 3 ) int -> eax single-def "Inline stloc first use temp" ;* V25 tmp18 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V26 tmp19 [V26,T17] ( 3, 2 ) int -> edx "Inline return value spill temp"
+; V26 tmp19 [V26,T18] ( 3, 2 ) int -> edx "Inline return value spill temp"
; V27 tmp20 [V27,T10] ( 3, 3 ) int -> edx single-def "Inline stloc first use temp" ;* V28 tmp21 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V29 tmp22 [V29,T18] ( 3, 2 ) int -> ecx "Inline return value spill temp"
+; V29 tmp22 [V29,T19] ( 3, 2 ) int -> ecx "Inline return value spill temp"
; V30 tmp23 [V30,T11] ( 3, 3 ) int -> ecx single-def "Inline stloc first use temp" ;* V31 tmp24 [V31 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V32 tmp25 [V32,T01] ( 4, 8 ) ref -> eax class-hnd single-def "Inlining Arg" <ubyte[]> @@ -53,17 +53,17 @@ ;* V41 tmp34 [V41 ] ( 0, 0 ) int -> zero-ref single-def "field V05._length (fldOffset=0x4)" P-INDEP ;* V42 tmp35 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP ;* V43 tmp36 [V43 ] ( 0, 0 ) int -> zero-ref single-def "field V06._length (fldOffset=0x4)" P-INDEP
-; V44 tmp37 [V44,T19] ( 2, 2 ) byref -> ecx single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V44 tmp37 [V44,T20] ( 2, 2 ) byref -> ecx single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V45 tmp38 [V45 ] ( 0, 0 ) int -> zero-ref single-def "field V08._length (fldOffset=0x4)" P-INDEP
-; V46 tmp39 [V46,T13] ( 3, 2 ) byref -> esi "field V33._reference (fldOffset=0x0)" P-INDEP
+; V46 tmp39 [V46,T14] ( 3, 2 ) byref -> esi "field V33._reference (fldOffset=0x0)" P-INDEP
; V47 tmp40 [V47,T04] ( 6, 5 ) int -> ecx "field V33._length (fldOffset=0x4)" P-INDEP ;* V48 tmp41 [V48 ] ( 0, 0 ) byref -> zero-ref single-def "field V34._reference (fldOffset=0x0)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref single-def "field V34._length (fldOffset=0x4)" P-INDEP ;* V50 tmp43 [V50 ] ( 0, 0 ) byref -> zero-ref single-def "field V36._reference (fldOffset=0x0)" P-INDEP ;* V51 tmp44 [V51 ] ( 0, 0 ) int -> zero-ref single-def "field V36._length (fldOffset=0x4)" P-INDEP
-; V52 cse0 [V52,T21] ( 5, 0 ) int -> edi "CSE - conservative"
+; V52 cse0 [V52,T12] ( 6, 2 ) int -> [ebp-0x10] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M10272_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -71,11 +71,12 @@ G_M10272_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
+ push eax
mov esi, ecx ; gcrRegs +[esi] mov ebx, edx mov edi, dword ptr [ebp+0x0C]
- ;; size=13 bbWeight=1 PerfScore 5.75
+ ;; size=14 bbWeight=1 PerfScore 6.75
G_M10272_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref xor ecx, ecx test ebx, ebx @@ -89,12 +90,14 @@ G_M10272_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 cmp dword ptr [ebp+0x08], 0 setge cl call [<unknown method>]
- cmp dword ptr [esi], 0xD1FFAB1E
+ mov eax, dword ptr [esi] + mov dword ptr [ebp-0x10], eax + cmp eax, 0xD1FFAB1E
jne G_M10272_IG14 mov eax, dword ptr [esi+0x18] and eax, 3 je G_M10272_IG13
- ;; size=65 bbWeight=1 PerfScore 22.50
+ ;; size=69 bbWeight=1 PerfScore 22.75
G_M10272_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref xor ecx, ecx test al, 2 @@ -173,22 +176,24 @@ G_M10272_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e mov eax, 1 ;; size=72 bbWeight=1 PerfScore 17.00 G_M10272_IG10: ; bbWeight=1, epilog, nogc, extend
+ pop ecx
pop ebx pop esi pop edi pop ebp ret 8
- ;; size=7 bbWeight=1 PerfScore 4.00
+ ;; size=8 bbWeight=1 PerfScore 4.50
G_M10272_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref xor eax, eax ;; size=2 bbWeight=0 PerfScore 0.00 G_M10272_IG12: ; bbWeight=0, epilog, nogc, extend
+ pop ecx
pop ebx pop esi pop edi pop ebp ret 8
- ;; size=7 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0 PerfScore 0.00
G_M10272_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs +[esi] mov ecx, esi @@ -201,14 +206,13 @@ G_M10272_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi} G_M10272_IG14: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz mov ecx, esi ; gcrRegs +[ecx]
- mov eax, dword ptr [esi] - mov edi, dword ptr [eax+0x30] - call [edi+0x0C]<unknown method>
+ mov edx, dword ptr [eax+0x30] + call [edx+0x0C]<unknown method>
; gcrRegs -[ecx] mov ecx, eax call [<unknown method>] jmp SHORT G_M10272_IG16
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=18 bbWeight=0 PerfScore 0.00
G_M10272_IG15: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref mov ecx, esi ; gcrRegs +[ecx] @@ -220,12 +224,14 @@ G_M10272_IG15: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 G_M10272_IG16: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz mov ecx, esi ; gcrRegs +[ecx]
- call [edi+0x18]<unknown method>
+ mov edi, dword ptr [ebp-0x10] + mov eax, dword ptr [edi+0x30] + call [eax+0x18]<unknown method>
; gcrRegs -[ecx] mov ecx, eax call [<unknown method>] jmp SHORT G_M10272_IG19
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=21 bbWeight=0 PerfScore 0.00
G_M10272_IG17: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref mov ecx, esi ; gcrRegs +[ecx] @@ -246,12 +252,13 @@ G_M10272_IG18: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 G_M10272_IG19: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz mov ecx, esi ; gcrRegs +[ecx]
- call [edi+0x14]<unknown method>
+ mov eax, dword ptr [edi+0x30] + call [eax+0x14]<unknown method>
; gcrRegs -[ecx] test eax, eax
- jne SHORT G_M10272_IG11
+ jne G_M10272_IG11
jmp SHORT G_M10272_IG21
- ;; size=11 bbWeight=0 PerfScore 0.00
+ ;; size=18 bbWeight=0 PerfScore 0.00
G_M10272_IG20: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref mov ecx, esi ; gcrRegs +[ecx] @@ -264,10 +271,11 @@ G_M10272_IG20: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 G_M10272_IG21: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref mov ecx, esi ; gcrRegs +[ecx]
- call [edi+0x10]<unknown method>
+ mov eax, dword ptr [edi+0x30] + call [eax+0x10]<unknown method>
; gcrRegs -[ecx esi] jmp G_M10272_IG11
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=13 bbWeight=0 PerfScore 0.00
G_M10272_IG22: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref xor esi, esi ; byrRegs +[esi] @@ -280,6 +288,6 @@ G_M10272_IG23: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 448, prolog size 6, PerfScore 82.00, instruction count 139, allocated bytes for code 448 (MethodHash=7063d7df) for method Internal.JitInterface.CorInfoImpl:TryReadRvaFieldData(Internal.TypeSystem.FieldDesc,uint,int,int):ubyte (Tier1)
+Total bytes of code 469, prolog size 7, PerfScore 83.75, instruction count 147, allocated bytes for code 469 (MethodHash=7063d7df) for method Internal.JitInterface.CorInfoImpl:TryReadRvaFieldData(Internal.TypeSystem.FieldDesc,uint,int,int):ubyte (Tier1)
; ============================================================

libraries_tests.run.windows.x86.Release.mch

-11 (-4.40%) : 72182.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:ConvertToKeyword(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken (Tier1)

@@ -9,16 +9,16 @@ ; 2 inlinees with PGO data; 18 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 22, 12.19) ref -> esi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> -; V01 loc0 [V01,T10] ( 3, 1.09) ref -> ebx class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V00 arg0 [V00,T00] ( 23, 12.46) ref -> esi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> +; V01 loc0 [V01,T09] ( 3, 1.09) ref -> ebx class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V02 loc1 [V02,T05] ( 4, 1.64) ref -> edx class-hnd single-def <Microsoft.CodeAnalysis.DiagnosticInfo[]> ;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode]> ; V04 tmp0 [V04,T01] ( 2, 4 ) int -> edi "impAppendStmt"
-; V05 tmp1 [V05,T13] ( 2, 0 ) ref -> edi class-hnd single-def "non-inline candidate call" <Microsoft.CodeAnalysis.GreenNode> -; V06 tmp2 [V06,T14] ( 2, 0 ) int -> ebx "impAppendStmt" -; V07 tmp3 [V07,T09] ( 4, 1.09) ref -> edi
+; V05 tmp1 [V05,T12] ( 2, 0 ) ref -> edi class-hnd single-def "non-inline candidate call" <Microsoft.CodeAnalysis.GreenNode> +; V06 tmp2 [V06,T13] ( 2, 0 ) int -> ebx "impAppendStmt" +; V07 tmp3 [V07,T08] ( 4, 1.09) ref -> edi
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.GreenNode>
-; V09 tmp5 [V09,T02] ( 3, 3.28) int -> [ebp-0x10] "impAppendStmt"
+; V09 tmp5 [V09,T02] ( 3, 3.28) int -> ebx "impAppendStmt"
; V10 tmp6 [V10,T03] ( 2, 2 ) int -> eax "guarded devirt return temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+SyntaxTokenWithTrivia> ;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+SyntaxIdentifierWithTrivia> @@ -26,21 +26,20 @@ ; V14 tmp10 [V14,T06] ( 3, 1.64) ref -> edi "guarded devirt return temp" ;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+SyntaxIdentifierWithTrivia> ;* V16 tmp12 [V16 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode]>
-; V17 tmp13 [V17,T07] ( 3, 1.37) ref -> edx "guarded devirt return temp"
+; V17 tmp13 [V17,T07] ( 3, 1.37) ref -> eax "guarded devirt return temp"
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+SyntaxIdentifierWithTrivia> ;* V19 tmp15 [V19 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> ;* V21 tmp17 [V21 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V22 tmp18 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> ;* V23 tmp19 [V23 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V24 tmp20 [V24,T12] ( 3, 0 ) ref -> [ebp-0x14] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia> -; V25 tmp21 [V25,T11] ( 4, 0 ) ref -> [ebp-0x18] "field V03._node (fldOffset=0x0)" P-INDEP
+; V24 tmp20 [V24,T11] ( 3, 0 ) ref -> [ebp-0x10] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia> +; V25 tmp21 [V25,T10] ( 4, 0 ) ref -> [ebp-0x14] "field V03._node (fldOffset=0x0)" P-INDEP
;* V26 tmp22 [V26 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._node (fldOffset=0x0)" P-INDEP ;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref single-def "field V16._node (fldOffset=0x0)" P-INDEP
-; V28 cse0 [V28,T08] ( 3, 1.37) int -> ebx "CSE - conservative" -; V29 cse1 [V29,T04] ( 2, 2 ) int -> edi "CSE - moderate"
+; V28 cse0 [V28,T04] ( 2, 2 ) int -> edi "CSE - moderate"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M12665_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -48,14 +47,14 @@ G_M12665_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 12
+ sub esp, 8
mov esi, ecx ; gcrRegs +[esi] ;; size=11 bbWeight=1 PerfScore 4.75 G_M12665_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz movzx edi, word ptr [esi+0x08] cmp dword ptr [esi], 0xD1FFAB1E
- je G_M12665_IG12
+ je SHORT G_M12665_IG12
mov ecx, esi ; gcrRegs +[ecx] mov eax, dword ptr [esi] @@ -64,7 +63,7 @@ G_M12665_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs -[ecx] cmp edi, eax je SHORT G_M12665_IG12
- ;; size=30 bbWeight=1 PerfScore 14.50
+ ;; size=26 bbWeight=1 PerfScore 14.50
G_M12665_IG03: ; bbWeight=0.55, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz test byte ptr [esi+0x0A], 32 je SHORT G_M12665_IG14 @@ -81,8 +80,8 @@ G_M12665_IG05: ; bbWeight=0.55, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov ecx, esi ; gcrRegs +[ecx] mov eax, dword ptr [esi]
- mov ebx, dword ptr [eax+0x3C] - call [ebx+0x10]<unknown method>
+ mov eax, dword ptr [eax+0x3C] + call [eax+0x10]<unknown method>
; gcrRegs -[ecx] +[eax] mov edi, eax ; gcrRegs +[edi] @@ -93,34 +92,31 @@ G_M12665_IG05: ; bbWeight=0.55, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov eax, dword ptr [eax+0x40] call [eax+0x08]Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:get_ContextualKind():ushort:this ; gcrRegs -[ecx]
+ mov ebx, eax
jmp SHORT G_M12665_IG07
- ;; size=24 bbWeight=0.55 PerfScore 9.15
+ ;; size=26 bbWeight=0.55 PerfScore 9.29
G_M12665_IG06: ; bbWeight=0.55, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- movzx eax, word ptr [esi+0x14] - mov dword ptr [ebp-0x10], eax - mov edx, gword ptr [esi+0x1C] - ; gcrRegs +[edx] - mov eax, dword ptr [ebp-0x10]
+ movzx ebx, word ptr [esi+0x14] + mov eax, gword ptr [esi+0x1C] + ; gcrRegs +[eax]
jmp SHORT G_M12665_IG08
- ;; size=15 bbWeight=0.55 PerfScore 4.37
+ ;; size=9 bbWeight=0.55 PerfScore 3.28
G_M12665_IG07: ; bbWeight=0.27, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edx] - mov dword ptr [ebp-0x10], eax
+ ; gcrRegs -[eax]
mov ecx, esi ; gcrRegs +[ecx]
- call [ebx+0x14]<unknown method>
+ mov eax, dword ptr [esi] + mov eax, dword ptr [eax+0x3C] + call [eax+0x14]<unknown method>
; gcrRegs -[ecx] +[eax]
- mov edx, eax - ; gcrRegs +[edx] - mov eax, dword ptr [ebp-0x10] - ; gcrRegs -[eax] - ;; size=13 bbWeight=0.27 PerfScore 1.50 -G_M12665_IG08: ; bbWeight=0.55, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref - push edx - mov ecx, eax
+ ;; size=10 bbWeight=0.27 PerfScore 1.98 +G_M12665_IG08: ; bbWeight=0.55, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref + push eax + mov ecx, ebx
mov edx, edi
+ ; gcrRegs +[edx]
call [<unknown method>]
- ; gcrRegs -[edx edi] +[eax]
+ ; gcrRegs -[edx edi]
mov edi, eax ; gcrRegs +[edi] ;; size=13 bbWeight=0.55 PerfScore 2.60 @@ -185,21 +181,21 @@ G_M12665_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi} ; gcrRegs +[ecx] call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:get_TrailingTrivia():Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode]:this] ; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x18], eax
+ mov gword ptr [ebp-0x14], eax
; GC ptr vars +{V25} mov ecx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x14], eax
+ mov gword ptr [ebp-0x10], eax
; GC ptr vars +{V24} push edi
- push gword ptr [ebp-0x18]
+ push gword ptr [ebp-0x14]
movzx edx, bx mov ecx, eax ; gcrRegs +[ecx] ; GC ptr vars -{V25} call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia:.ctor(ushort,Microsoft.CodeAnalysis.GreenNode,Microsoft.CodeAnalysis.GreenNode):this] ; gcrRegs -[eax ecx edi]
- mov edi, gword ptr [ebp-0x14]
+ mov edi, gword ptr [ebp-0x10]
; gcrRegs +[edi] jmp SHORT G_M12665_IG09 ;; size=66 bbWeight=0 PerfScore 0.00 @@ -216,6 +212,6 @@ G_M12665_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000084 {edx jmp SHORT G_M12665_IG10 ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 250, prolog size 9, PerfScore 52.10, instruction count 95, allocated bytes for code 250 (MethodHash=b5e6ce86) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:ConvertToKeyword(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken (Tier1)
+Total bytes of code 239, prolog size 9, PerfScore 51.62, instruction count 93, allocated bytes for code 239 (MethodHash=b5e6ce86) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:ConvertToKeyword(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken (Tier1)
; ============================================================

-7 (-2.85%) : 572960.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:ConvertToKeyword(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken (Tier1)

@@ -9,16 +9,16 @@ ; 2 inlinees with PGO data; 18 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 22, 9.77) ref -> esi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> -; V01 loc0 [V01,T10] ( 3, 0.61) ref -> ebx class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V00 arg0 [V00,T00] ( 23, 9.79) ref -> esi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> +; V01 loc0 [V01,T09] ( 3, 0.61) ref -> ebx class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V02 loc1 [V02,T05] ( 4, 0.92) ref -> edx class-hnd single-def <Microsoft.CodeAnalysis.DiagnosticInfo[]> ;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode]> ; V04 tmp0 [V04,T01] ( 2, 4 ) int -> edi "impAppendStmt"
-; V05 tmp1 [V05,T13] ( 2, 0 ) ref -> edi class-hnd single-def "non-inline candidate call" <Microsoft.CodeAnalysis.GreenNode> -; V06 tmp2 [V06,T14] ( 2, 0 ) int -> ebx "impAppendStmt" -; V07 tmp3 [V07,T09] ( 4, 0.61) ref -> edi
+; V05 tmp1 [V05,T12] ( 2, 0 ) ref -> edi class-hnd single-def "non-inline candidate call" <Microsoft.CodeAnalysis.GreenNode> +; V06 tmp2 [V06,T13] ( 2, 0 ) int -> ebx "impAppendStmt" +; V07 tmp3 [V07,T08] ( 4, 0.61) ref -> edi
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.GreenNode>
-; V09 tmp5 [V09,T04] ( 3, 1.83) int -> [ebp-0x10] "impAppendStmt"
+; V09 tmp5 [V09,T04] ( 3, 1.83) int -> ebx "impAppendStmt"
; V10 tmp6 [V10,T02] ( 2, 2 ) int -> eax "guarded devirt return temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+SyntaxTokenWithTrivia> ;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+SyntaxIdentifierWithTrivia> @@ -26,21 +26,20 @@ ; V14 tmp10 [V14,T06] ( 3, 0.92) ref -> edi "guarded devirt return temp" ;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+SyntaxIdentifierWithTrivia> ;* V16 tmp12 [V16 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode]>
-; V17 tmp13 [V17,T07] ( 3, 0.63) ref -> edx "guarded devirt return temp"
+; V17 tmp13 [V17,T07] ( 3, 0.63) ref -> eax "guarded devirt return temp"
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+SyntaxIdentifierWithTrivia> ;* V19 tmp15 [V19 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> ;* V21 tmp17 [V21 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V22 tmp18 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> ;* V23 tmp19 [V23 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V24 tmp20 [V24,T12] ( 3, 0 ) ref -> [ebp-0x14] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia> -; V25 tmp21 [V25,T11] ( 4, 0 ) ref -> [ebp-0x18] "field V03._node (fldOffset=0x0)" P-INDEP
+; V24 tmp20 [V24,T11] ( 3, 0 ) ref -> [ebp-0x10] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia> +; V25 tmp21 [V25,T10] ( 4, 0 ) ref -> [ebp-0x14] "field V03._node (fldOffset=0x0)" P-INDEP
;* V26 tmp22 [V26 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._node (fldOffset=0x0)" P-INDEP ;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref single-def "field V16._node (fldOffset=0x0)" P-INDEP
-; V28 cse0 [V28,T08] ( 3, 0.63) int -> ebx "CSE - conservative" -; V29 cse1 [V29,T03] ( 2, 2 ) int -> edi "CSE - aggressive"
+; V28 cse0 [V28,T03] ( 2, 2 ) int -> edi "CSE - aggressive"
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M12665_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -48,7 +47,7 @@ G_M12665_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 12
+ sub esp, 8
mov esi, ecx ; gcrRegs +[esi] ;; size=11 bbWeight=1 PerfScore 4.75 @@ -92,8 +91,8 @@ G_M12665_IG06: ; bbWeight=0.31, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov ecx, esi ; gcrRegs +[ecx] mov eax, dword ptr [esi]
- mov ebx, dword ptr [eax+0x3C] - call [ebx+0x10]<unknown method>
+ mov eax, dword ptr [eax+0x3C] + call [eax+0x10]<unknown method>
; gcrRegs -[ecx] +[eax] mov edi, eax ; gcrRegs +[edi] @@ -104,34 +103,31 @@ G_M12665_IG06: ; bbWeight=0.31, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov eax, dword ptr [eax+0x40] call [eax+0x08]Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:get_ContextualKind():ushort:this ; gcrRegs -[ecx]
+ mov ebx, eax
jmp SHORT G_M12665_IG08
- ;; size=24 bbWeight=0.31 PerfScore 5.11
+ ;; size=26 bbWeight=0.31 PerfScore 5.19
G_M12665_IG07: ; bbWeight=0.31, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- movzx eax, word ptr [esi+0x14] - mov dword ptr [ebp-0x10], eax - mov edx, gword ptr [esi+0x1C] - ; gcrRegs +[edx] - mov eax, dword ptr [ebp-0x10]
+ movzx ebx, word ptr [esi+0x14] + mov eax, gword ptr [esi+0x1C] + ; gcrRegs +[eax]
jmp SHORT G_M12665_IG09
- ;; size=15 bbWeight=0.31 PerfScore 2.44
+ ;; size=9 bbWeight=0.31 PerfScore 1.83
G_M12665_IG08: ; bbWeight=0.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edx] - mov dword ptr [ebp-0x10], eax
+ ; gcrRegs -[eax]
mov ecx, esi ; gcrRegs +[ecx]
- call [ebx+0x14]<unknown method>
+ mov eax, dword ptr [esi] + mov eax, dword ptr [eax+0x3C] + call [eax+0x14]<unknown method>
; gcrRegs -[ecx] +[eax]
- mov edx, eax - ; gcrRegs +[edx] - mov eax, dword ptr [ebp-0x10] - ; gcrRegs -[eax] - ;; size=13 bbWeight=0.02 PerfScore 0.12 -G_M12665_IG09: ; bbWeight=0.31, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref - push edx - mov ecx, eax
+ ;; size=10 bbWeight=0.02 PerfScore 0.15 +G_M12665_IG09: ; bbWeight=0.31, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref + push eax + mov ecx, ebx
mov edx, edi
+ ; gcrRegs +[edx]
call [<unknown method>]
- ; gcrRegs -[edx edi] +[eax]
+ ; gcrRegs -[edx edi]
mov edi, eax ; gcrRegs +[edi] ;; size=13 bbWeight=0.31 PerfScore 1.45 @@ -183,21 +179,21 @@ G_M12665_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi} ; gcrRegs +[ecx] call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:get_TrailingTrivia():Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode]:this] ; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x18], eax
+ mov gword ptr [ebp-0x14], eax
; GC ptr vars +{V25} mov ecx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x14], eax
+ mov gword ptr [ebp-0x10], eax
; GC ptr vars +{V24} push edi
- push gword ptr [ebp-0x18]
+ push gword ptr [ebp-0x14]
movzx edx, bx mov ecx, eax ; gcrRegs +[ecx] ; GC ptr vars -{V25} call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia:.ctor(ushort,Microsoft.CodeAnalysis.GreenNode,Microsoft.CodeAnalysis.GreenNode):this] ; gcrRegs -[eax ecx edi]
- mov edi, gword ptr [ebp-0x14]
+ mov edi, gword ptr [ebp-0x10]
; gcrRegs +[edi] jmp SHORT G_M12665_IG10 ;; size=66 bbWeight=0 PerfScore 0.00 @@ -214,6 +210,6 @@ G_M12665_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000084 {edx jmp SHORT G_M12665_IG11 ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 246, prolog size 9, PerfScore 38.54, instruction count 95, allocated bytes for code 246 (MethodHash=b5e6ce86) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:ConvertToKeyword(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken (Tier1)
+Total bytes of code 239, prolog size 9, PerfScore 38.04, instruction count 93, allocated bytes for code 239 (MethodHash=b5e6ce86) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:ConvertToKeyword(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken (Tier1)
; ============================================================

-7 (-2.27%) : 46706.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:ConvertToKeyword(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken (Tier1)

@@ -9,16 +9,16 @@ ; 3 inlinees with PGO data; 17 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 24, 13.21) ref -> esi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> -; V01 loc0 [V01,T09] ( 3, 1.49) ref -> ebx class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V00 arg0 [V00,T00] ( 25, 13.35) ref -> esi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> +; V01 loc0 [V01,T08] ( 3, 1.49) ref -> ebx class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.CodeAnalysis.DiagnosticInfo[]> ;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode]> ; V04 tmp0 [V04,T02] ( 2, 4 ) int -> edi "impAppendStmt"
-; V05 tmp1 [V05,T12] ( 2, 0 ) ref -> edi class-hnd single-def "non-inline candidate call" <Microsoft.CodeAnalysis.GreenNode> -; V06 tmp2 [V06,T13] ( 2, 0 ) int -> ebx "impAppendStmt" -; V07 tmp3 [V07,T08] ( 4, 1.49) ref -> edi
+; V05 tmp1 [V05,T11] ( 2, 0 ) ref -> edi class-hnd single-def "non-inline candidate call" <Microsoft.CodeAnalysis.GreenNode> +; V06 tmp2 [V06,T12] ( 2, 0 ) int -> ebx "impAppendStmt" +; V07 tmp3 [V07,T07] ( 4, 1.49) ref -> edi
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.GreenNode>
-; V09 tmp5 [V09,T01] ( 3, 4.48) int -> [ebp-0x10] "impAppendStmt"
+; V09 tmp5 [V09,T01] ( 3, 4.48) int -> ebx "impAppendStmt"
; V10 tmp6 [V10,T05] ( 3, 2 ) int -> ebx "guarded devirt return temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+SyntaxIdentifierWithTrivia> ;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+SyntaxIdentifierWithTrivia> @@ -26,22 +26,21 @@ ; V14 tmp10 [V14,T03] ( 3, 2.24) ref -> edi "guarded devirt return temp" ;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+SyntaxIdentifierWithTrivia> ;* V16 tmp12 [V16 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode]>
-; V17 tmp13 [V17,T06] ( 3, 1.63) ref -> edx "guarded devirt return temp"
+; V17 tmp13 [V17,T06] ( 3, 1.63) ref -> eax "guarded devirt return temp"
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+SyntaxIdentifierWithTrivia> ;* V19 tmp15 [V19 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> ;* V21 tmp17 [V21 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V22 tmp18 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode> ;* V23 tmp19 [V23 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V24 tmp20 [V24,T11] ( 3, 0 ) ref -> [ebp-0x18] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia>
+; V24 tmp20 [V24,T10] ( 3, 0 ) ref -> [ebp-0x14] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia>
; V25 tmp21 [V25,T04] ( 5, 2.23) ref -> edx class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.DiagnosticInfo[]>
-; V26 tmp22 [V26 ] ( 3, 0.75) ref -> [ebp-0x14] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.DiagnosticInfo[]> -; V27 tmp23 [V27,T10] ( 4, 0 ) ref -> [ebp-0x1C] "field V03._node (fldOffset=0x0)" P-INDEP
+; V26 tmp22 [V26 ] ( 3, 0.75) ref -> [ebp-0x10] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.DiagnosticInfo[]> +; V27 tmp23 [V27,T09] ( 4, 0 ) ref -> [ebp-0x18] "field V03._node (fldOffset=0x0)" P-INDEP
;* V28 tmp24 [V28 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._node (fldOffset=0x0)" P-INDEP ;* V29 tmp25 [V29 ] ( 0, 0 ) ref -> zero-ref single-def "field V16._node (fldOffset=0x0)" P-INDEP
-; V30 cse0 [V30,T07] ( 3, 1.63) int -> ebx "CSE - conservative"
;
-; Lcl frame size = 16
+; Lcl frame size = 12
G_M12665_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -49,9 +48,9 @@ G_M12665_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16
+ sub esp, 12
xor eax, eax
- mov dword ptr [ebp-0x14], eax
+ mov dword ptr [ebp-0x10], eax
mov esi, ecx ; gcrRegs +[esi] ;; size=16 bbWeight=1 PerfScore 6.00 @@ -91,8 +90,8 @@ G_M12665_IG07: ; bbWeight=0.75, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov ecx, esi ; gcrRegs +[ecx] mov eax, dword ptr [esi]
- mov ebx, dword ptr [eax+0x3C] - call [ebx+0x10]<unknown method>
+ mov eax, dword ptr [eax+0x3C] + call [eax+0x10]<unknown method>
; gcrRegs -[ecx] +[eax] mov edi, eax ; gcrRegs +[edi] @@ -103,34 +102,31 @@ G_M12665_IG07: ; bbWeight=0.75, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov eax, dword ptr [eax+0x40] call [eax+0x08]<unknown method> ; gcrRegs -[ecx]
+ mov ebx, eax
jmp SHORT G_M12665_IG09
- ;; size=24 bbWeight=0.75 PerfScore 12.50
+ ;; size=26 bbWeight=0.75 PerfScore 12.68
G_M12665_IG08: ; bbWeight=0.75, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- movzx eax, word ptr [esi+0x14] - mov dword ptr [ebp-0x10], eax - mov edx, gword ptr [esi+0x1C] - ; gcrRegs +[edx] - mov eax, dword ptr [ebp-0x10]
+ movzx ebx, word ptr [esi+0x14] + mov eax, gword ptr [esi+0x1C] + ; gcrRegs +[eax]
jmp SHORT G_M12665_IG10
- ;; size=15 bbWeight=0.75 PerfScore 5.97
+ ;; size=9 bbWeight=0.75 PerfScore 4.48
G_M12665_IG09: ; bbWeight=0.14, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edx] - mov dword ptr [ebp-0x10], eax
+ ; gcrRegs -[eax]
mov ecx, esi ; gcrRegs +[ecx]
- call [ebx+0x14]<unknown method>
+ mov eax, dword ptr [esi] + mov eax, dword ptr [eax+0x3C] + call [eax+0x14]<unknown method>
; gcrRegs -[ecx] +[eax]
- mov edx, eax - ; gcrRegs +[edx] - mov eax, dword ptr [ebp-0x10] - ; gcrRegs -[eax] - ;; size=13 bbWeight=0.14 PerfScore 0.78 -G_M12665_IG10: ; bbWeight=0.75, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref - push edx - mov ecx, eax
+ ;; size=10 bbWeight=0.14 PerfScore 1.03 +G_M12665_IG10: ; bbWeight=0.75, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref + push eax + mov ecx, ebx
mov edx, edi
+ ; gcrRegs +[edx]
call [<unknown method>]
- ; gcrRegs -[edx edi] +[eax]
+ ; gcrRegs -[edx edi]
mov edi, eax ; gcrRegs +[edi] ;; size=13 bbWeight=0.75 PerfScore 3.54 @@ -149,7 +145,7 @@ G_M12665_IG12: ; bbWeight=0.75, gcrefRegs=00000088 {ebx edi}, byrefRegs=0 G_M12665_IG13: ; bbWeight=0.75, gcrefRegs=0000008C {edx ebx edi}, byrefRegs=00000000 {}, byref, isz xor eax, eax ; gcrRegs +[eax]
- mov gword ptr [ebp-0x14], eax
+ mov gword ptr [ebp-0x10], eax
test edx, edx je SHORT G_M12665_IG15 ;; size=9 bbWeight=0.75 PerfScore 1.87 @@ -186,7 +182,7 @@ G_M12665_IG18: ; bbWeight=0.25, epilog, nogc, extend ;; size=8 bbWeight=0.25 PerfScore 0.89 G_M12665_IG19: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[eax] +[ebx edi]
- lea ecx, [ebp-0x14]
+ lea ecx, [ebp-0x10]
push ecx mov ecx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ecx] @@ -197,7 +193,7 @@ G_M12665_IG19: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=000000C8 {e ; gcrRegs -[ecx edx esi] test eax, eax je SHORT G_M12665_IG12
- mov edx, gword ptr [ebp-0x14]
+ mov edx, gword ptr [ebp-0x10]
; gcrRegs +[edx] jmp SHORT G_M12665_IG13 ;; size=29 bbWeight=0.00 PerfScore 0.00 @@ -221,21 +217,21 @@ G_M12665_IG20: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs +[ecx] call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:get_TrailingTrivia():Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode]:this] ; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x1C], eax
+ mov gword ptr [ebp-0x18], eax
; GC ptr vars +{V27} mov ecx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x18], eax
+ mov gword ptr [ebp-0x14], eax
; GC ptr vars +{V24} push edi
- push gword ptr [ebp-0x1C]
+ push gword ptr [ebp-0x18]
movzx edx, bx mov ecx, eax ; gcrRegs +[ecx] ; GC ptr vars -{V27} call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+MissingTokenWithTrivia:.ctor(ushort,Microsoft.CodeAnalysis.GreenNode,Microsoft.CodeAnalysis.GreenNode):this] ; gcrRegs -[eax ecx edi]
- mov edi, gword ptr [ebp-0x18]
+ mov edi, gword ptr [ebp-0x14]
; gcrRegs +[edi] jmp G_M12665_IG11 ;; size=69 bbWeight=0 PerfScore 0.00 @@ -252,6 +248,6 @@ G_M12665_IG21: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000084 {edx jmp G_M12665_IG15 ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 308, prolog size 14, PerfScore 61.57, instruction count 112, allocated bytes for code 308 (MethodHash=b5e6ce86) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:ConvertToKeyword(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken (Tier1)
+Total bytes of code 301, prolog size 14, PerfScore 60.51, instruction count 110, allocated bytes for code 301 (MethodHash=b5e6ce86) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:ConvertToKeyword(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken (Tier1)
; ============================================================

+6 (+1.02%) : 354509.dasm - Xunit.Assert+d__126:MoveNext():this (Tier1)

@@ -9,58 +9,57 @@ ; 8 inlinees with PGO data; 12 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 16, 4 ) byref -> [ebp-0x30] this EH-live single-def -; V01 loc0 [V01,T06] ( 3, 2 ) int -> esi single-def -; V02 loc1 [V02,T13] ( 5, 0.27) ref -> esi class-hnd <<unknown class>>
+; V00 this [V00,T03] ( 16, 4 ) byref -> [ebp-0x30] this EH-live single-def +; V01 loc0 [V01,T05] ( 3, 2 ) int -> esi single-def +; V02 loc1 [V02,T12] ( 5, 0.27) ref -> esi class-hnd <<unknown class>>
; V03 loc2 [V03 ] ( 6, 0 ) struct ( 4) [ebp-0x24] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.TaskAwaiter> ;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;* V05 loc4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ;* V06 tmp0 [V06 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V07 tmp1 [V07,T22] ( 2, 0 ) ref -> esi class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V08 tmp2 [V08,T23] ( 2, 0 ) ref -> edx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V09 tmp3 [V09,T03] ( 2, 4 ) ref -> eax class-hnd single-def "Inlining Arg" <<unknown class>> -; V10 tmp4 [V10,T18] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V11 tmp5 [V11,T24] ( 2, 0 ) ref -> edx class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
+; V07 tmp1 [V07,T21] ( 2, 0 ) ref -> esi class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V08 tmp2 [V08,T22] ( 2, 0 ) ref -> edx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V09 tmp3 [V09,T04] ( 2, 4 ) ref -> eax class-hnd single-def "Inlining Arg" <<unknown class>> +; V10 tmp4 [V10,T17] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V11 tmp5 [V11,T23] ( 2, 0 ) ref -> edx class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task>
;* V12 tmp6 [V12 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V13 tmp7 [V13 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V14 tmp8 [V14 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V16 tmp10 [V16,T19] ( 3, 0 ) ref -> edx class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task> -; V17 tmp11 [V17,T16] ( 4, 0 ) byref -> edi single-def "Inlining Arg" -; V18 tmp12 [V18,T20] ( 3, 0 ) ref -> ebx class-hnd "Inline return value spill temp" <<unknown class>>
+; V16 tmp10 [V16,T18] ( 3, 0 ) ref -> edx class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task> +; V17 tmp11 [V17,T15] ( 4, 0 ) byref -> edi single-def "Inlining Arg" +; V18 tmp12 [V18,T19] ( 3, 0 ) ref -> ebx class-hnd "Inline return value spill temp" <<unknown class>>
;* V19 tmp13 [V19 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <<unknown class>>
-; V20 tmp14 [V20,T17] ( 4, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V20 tmp14 [V20,T16] ( 4, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V21 tmp15 [V21 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> ;* V22 tmp16 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <<unknown class>> ;* V23 tmp17 [V23 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V24 tmp18 [V24,T04] ( 11, 2.64) ref -> edi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
+; V24 tmp18 [V24,T01] ( 13, 7.22) ref -> edi class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
;* V25 tmp19 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Threading.Tasks.TplEventSource> ;* V26 tmp20 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V27 tmp21 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V28 tmp22 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.Tasks.TplEventSource> ;* V29 tmp23 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V30 tmp24 [V30,T14] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -; V31 tmp25 [V31,T11] ( 3, 0.55) ref -> esi class-hnd exact single-def "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties> -; V32 tmp26 [V32,T12] ( 2, 0.50) ubyte -> ecx "Inline return value spill temp" -; V33 tmp27 [V33,T15] ( 5, 0 ) int -> [ebp-0x28] spill-single-def "Inline stloc first use temp" -; V34 tmp28 [V34,T10] ( 3, 0.76) ubyte -> ecx "Inline return value spill temp"
+;* V30 tmp24 [V30,T13] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +; V31 tmp25 [V31,T10] ( 3, 0.55) ref -> ebx class-hnd exact single-def "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties> +; V32 tmp26 [V32,T11] ( 2, 0.50) ubyte -> ecx "Inline return value spill temp" +; V33 tmp27 [V33,T14] ( 5, 0 ) int -> [ebp-0x28] spill-single-def "Inline stloc first use temp" +; V34 tmp28 [V34,T09] ( 3, 0.76) ubyte -> ecx "Inline return value spill temp"
; V35 tmp29 [V35,T00] ( 6, 10.08) int -> [ebp-0x2C] "Inline stloc first use temp"
-; V36 tmp30 [V36,T01] ( 3, 6.05) int -> eax "Inline stloc first use temp" -; V37 tmp31 [V37,T09] ( 3, 0.77) ref -> eax class-hnd single-def "Inline stloc first use temp" <System.Object> -; V38 tmp32 [V38,T07] ( 3, 1.64) byref -> ecx single-def "Inlining Arg" -; V39 tmp33 [V39,T08] ( 2, 1.10) ref -> edx class-hnd exact single-def "Inlining Arg" <System.Object>
+; V36 tmp30 [V36,T02] ( 3, 6.05) int -> eax "Inline stloc first use temp" +; V37 tmp31 [V37,T08] ( 3, 0.77) ref -> eax class-hnd single-def "Inline stloc first use temp" <System.Object> +; V38 tmp32 [V38,T06] ( 3, 1.64) byref -> ecx single-def "Inlining Arg" +; V39 tmp33 [V39,T07] ( 2, 1.10) ref -> edx class-hnd exact single-def "Inlining Arg" <System.Object>
; V40 tmp34 [V40 ] ( 6, 0 ) ref -> [ebp-0x24] do-not-enreg[X] addr-exposed "field V03.m_task (fldOffset=0x0)" P-DEP ;* V41 tmp35 [V41 ] ( 0, 0 ) ref -> zero-ref "field V21._source (fldOffset=0x0)" P-INDEP
-; V42 tmp36 [V42,T25] ( 2, 0 ) byref -> edx single-def "argument with side effect" -; V43 tmp37 [V43,T26] ( 2, 0 ) ref -> edx single-def "argument with side effect" -; V44 tmp38 [V44,T31] ( 2, 0 ) int -> edx "argument with side effect" -; V45 tmp39 [V45,T27] ( 2, 0 ) ref -> ebx single-def "argument with side effect" -; V46 tmp40 [V46,T28] ( 2, 0 ) ref -> ecx single-def "argument with side effect" -; V47 tmp41 [V47,T29] ( 2, 0 ) ref -> edx single-def "argument with side effect" -; V48 tmp42 [V48,T30] ( 2, 0 ) byref -> ecx single-def "argument with side effect"
+; V42 tmp36 [V42,T24] ( 2, 0 ) byref -> edx single-def "argument with side effect" +; V43 tmp37 [V43,T25] ( 2, 0 ) ref -> edx single-def "argument with side effect" +; V44 tmp38 [V44,T30] ( 2, 0 ) int -> edx "argument with side effect" +; V45 tmp39 [V45,T26] ( 2, 0 ) ref -> ebx single-def "argument with side effect" +; V46 tmp40 [V46,T27] ( 2, 0 ) ref -> ecx single-def "argument with side effect" +; V47 tmp41 [V47,T28] ( 2, 0 ) ref -> edx single-def "argument with side effect" +; V48 tmp42 [V48,T29] ( 2, 0 ) byref -> ecx single-def "argument with side effect"
; V49 EHSlots [V49 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
-; V50 cse0 [V50,T05] ( 4, 2.29) byref -> ebx "CSE - moderate" -; V51 rat0 [V51,T21] ( 3, 0 ) ref -> eax "delegate invoke call"
+; V50 rat0 [V50,T20] ( 3, 0 ) ref -> eax "delegate invoke call"
; ; Lcl frame size = 36 @@ -78,7 +77,7 @@ G_M47421_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov bword ptr [ebp-0x30], ecx ; GC ptr vars +{V00} ;; size=26 bbWeight=1 PerfScore 9.08
-G_M47421_IG02: ; bbWeight=1, gcVars=00000004 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, gcvars, byref
+G_M47421_IG02: ; bbWeight=1, gcVars=00000008 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, gcvars, byref
; byrRegs +[ecx] mov esi, dword ptr [ecx+0x04] ;; size=3 bbWeight=1 PerfScore 2.00 @@ -219,9 +218,9 @@ G_M47421_IG10: ; bbWeight=0, gcrefRegs=00000001 {eax}, byrefRegs=00000000 call CORINFO_HELP_ENDCATCH jmp G_M47421_IG22 ;; size=36 bbWeight=0 PerfScore 0.00
-G_M47421_IG11: ; bbWeight=0, gcVars=00000004 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M47421_IG11: ; bbWeight=0, gcVars=00000008 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[esi]
- ; GC ptr vars +{V00 V02}
+ ; GC ptr vars +{V00}
mov ecx, bword ptr [ebp-0x30] ; byrRegs +[ecx] mov dword ptr [ecx+0x04], -2 @@ -238,7 +237,7 @@ G_M47421_IG11: ; bbWeight=0, gcVars=00000004 {V00}, gcrefRegs=00000040 {e G_M47421_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref ; gcrRegs -[ebx] ; byrRegs -[ecx]
- ; GC ptr vars -{V00 V02}
+ ; GC ptr vars -{V00}
mov ecx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax] @@ -288,58 +287,64 @@ G_M47421_IG15: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 mov dword ptr [ebp-0x28], eax test eax, 0xD1FFAB1E jne G_M47421_IG24
- lea ebx, bword ptr [edi+0x1C] - ; byrRegs +[ebx] - mov edx, eax - or edx, 0xD1FFAB1E
+ lea edx, bword ptr [edi+0x1C] + ; byrRegs +[edx] + mov ecx, eax + or ecx, 0xD1FFAB1E
lock
- cmpxchg dword ptr [ebx], edx
+ cmpxchg dword ptr [edx], ecx
cmp eax, dword ptr [ebp-0x28] je SHORT G_M47421_IG20 mov eax, dword ptr [edi+0x1C] ;; size=40 bbWeight=0 PerfScore 0.00
-G_M47421_IG16: ; bbWeight=2.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M47421_IG16: ; bbWeight=2.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + ; byrRegs -[edx]
test eax, 0xD1FFAB1E jne SHORT G_M47421_IG17
- mov ecx, eax - or ecx, 0xD1FFAB1E
+ lea ecx, bword ptr [edi+0x1C] + ; byrRegs +[ecx] + mov edx, eax + or edx, 0xD1FFAB1E
mov dword ptr [ebp-0x2C], eax lock
- cmpxchg dword ptr [ebx], ecx
+ cmpxchg dword ptr [ecx], edx
mov ecx, dword ptr [ebp-0x2C]
+ ; byrRegs -[ecx]
cmp eax, ecx je SHORT G_M47421_IG18 mov ecx, eax jmp SHORT G_M47421_IG16
- ;; size=33 bbWeight=2.02 PerfScore 50.91 -G_M47421_IG17: ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz
+ ;; size=36 bbWeight=2.02 PerfScore 51.92 +G_M47421_IG17: ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
xor ecx, ecx jmp SHORT G_M47421_IG19 ;; size=4 bbWeight=0.25 PerfScore 0.57
-G_M47421_IG18: ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref
+G_M47421_IG18: ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, 1 ;; size=5 bbWeight=0.25 PerfScore 0.06
-G_M47421_IG19: ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M47421_IG19: ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
test ecx, ecx je SHORT G_M47421_IG24 ;; size=4 bbWeight=0.25 PerfScore 0.32
-G_M47421_IG20: ; bbWeight=0.27, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000008 {ebx}, byref, isz
+G_M47421_IG20: ; bbWeight=0.27, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
lea edx, bword ptr [edi+0x20] ; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_ESI ; gcrRegs -[esi] ; byrRegs -[edx]
- mov ecx, dword ptr [edi+0x1C] - or ecx, 0xD1FFAB1E - xchg dword ptr [ebx], ecx - mov esi, gword ptr [edi+0x14] - ; gcrRegs +[esi] - test esi, esi
+ lea ecx, bword ptr [edi+0x1C] + ; byrRegs +[ecx] + mov edx, dword ptr [edi+0x1C] + or edx, 0xD1FFAB1E + xchg dword ptr [ecx], edx + mov ebx, gword ptr [edi+0x14] + ; gcrRegs +[ebx] + test ebx, ebx
jne SHORT G_M47421_IG25
- ;; size=26 bbWeight=0.27 PerfScore 7.39
+ ;; size=29 bbWeight=0.27 PerfScore 7.53
G_M47421_IG21: ; bbWeight=0.27, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[esi] - ; byrRegs -[ebx]
+ ; gcrRegs -[ebx] + ; byrRegs -[ecx]
lea ecx, bword ptr [edi+0x10] ; byrRegs +[ecx] mov edx, gword ptr [D1FFAB1EH] ; static handle @@ -376,16 +381,16 @@ G_M47421_IG24: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} call [System.ThrowHelper:ThrowInvalidOperationException(int)] int3 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M47421_IG25: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[esi edi]
+G_M47421_IG25: ; bbWeight=0, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[ebx edi]
mov ecx, edi ; gcrRegs +[ecx] call [System.Threading.Tasks.Task:NotifyParentIfPotentiallyAttachedTask():this] ; gcrRegs -[ecx]
- mov ecx, esi
+ mov ecx, ebx
; gcrRegs +[ecx] call [System.Threading.Tasks.Task+ContingentProperties:SetCompleted():this]
- ; gcrRegs -[ecx esi]
+ ; gcrRegs -[ecx ebx]
jmp SHORT G_M47421_IG21 ;; size=18 bbWeight=0 PerfScore 0.00 G_M47421_IG26: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref @@ -394,7 +399,7 @@ G_M47421_IG26: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 590, prolog size 26, PerfScore 81.22, instruction count 180, allocated bytes for code 590 (MethodHash=6f7f46c2) for method Xunit.Assert+<RecordExceptionAsync>d__126:MoveNext():this (Tier1)
+Total bytes of code 596, prolog size 26, PerfScore 82.37, instruction count 182, allocated bytes for code 596 (MethodHash=6f7f46c2) for method Xunit.Assert+<RecordExceptionAsync>d__126:MoveNext():this (Tier1)
; ============================================================ *************** EH table for Xunit.Assert+<RecordExceptionAsync>d__126:MoveNext():this

+5 (+1.30%) : 508910.dasm - System.Linq.Expressions.Compiler.ILGen:CanEmitILConstant(System.Type):ubyte (Tier1)

@@ -9,7 +9,7 @@ ; 9 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 11, 6 ) ref -> esi class-hnd single-def <System.Type>
+; V00 arg0 [V00,T00] ( 12, 6 ) ref -> esi class-hnd single-def <System.Type>
; V01 loc0 [V01,T07] ( 3, 3 ) int -> edi ; V02 tmp0 [V02,T01] ( 13, 5 ) ref -> esi class-hnd "Inline return value spill temp" <System.Type> ; V03 tmp1 [V03,T18] ( 2, 0 ) ubyte -> ecx "Inline return value spill temp" @@ -44,9 +44,8 @@ ;* V32 tmp30 [V32 ] ( 0, 0 ) int -> zero-ref "field V06.m_asTAddr (fldOffset=0x0)" P-INDEP ; V33 tmp31 [V33,T09] ( 3, 3 ) int -> edi "field V09.m_asTAddr (fldOffset=0x0)" P-INDEP ; V34 tmp32 [V34,T21] ( 3, 0 ) ref -> eax single-def "arr expr"
-; V35 cse0 [V35,T22] ( 3, 0 ) int -> edi "CSE - conservative" -; V36 cse1 [V36,T10] ( 3, 3 ) int -> ecx "CSE - moderate" -; V37 cse2 [V37,T11] ( 3, 3 ) int -> ecx "CSE - moderate"
+; V35 cse0 [V35,T10] ( 3, 3 ) int -> ecx "CSE - moderate" +; V36 cse1 [V36,T11] ( 3, 3 ) int -> ecx "CSE - moderate"
; ; Lcl frame size = 0 @@ -167,8 +166,8 @@ G_M65409_IG13: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov ecx, esi ; gcrRegs +[ecx] mov eax, dword ptr [esi]
- mov edi, dword ptr [eax+0x40] - call [edi+0x0C]<unknown method>
+ mov eax, dword ptr [eax+0x40] + call [eax+0x0C]<unknown method>
; gcrRegs -[ecx] +[eax] xor ecx, ecx cmp eax, 0xD1FFAB1E @@ -177,15 +176,18 @@ G_M65409_IG13: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 je G_M65409_IG04 mov ecx, esi ; gcrRegs +[ecx]
- call [edi+0x14]<unknown method> - ; gcrRegs -[ecx esi]
+ mov eax, dword ptr [esi] + ; gcrRegs -[eax] + mov eax, dword ptr [eax+0x40] + call [eax+0x14]<unknown method> + ; gcrRegs -[ecx esi] +[eax]
cmp dword ptr [eax+0x04], 0 jbe SHORT G_M65409_IG10 mov esi, gword ptr [eax+0x08] ; gcrRegs +[esi] test esi, esi jne G_M65409_IG05
- ;; size=50 bbWeight=0 PerfScore 0.00
+ ;; size=55 bbWeight=0 PerfScore 0.00
G_M65409_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[eax esi] xor edi, edi @@ -255,6 +257,6 @@ G_M65409_IG20: ; bbWeight=0, epilog, nogc, extend ret ;; size=5 bbWeight=0 PerfScore 0.00
-; Total bytes of code 384, prolog size 6, PerfScore 56.50, instruction count 126, allocated bytes for code 384 (MethodHash=ab72007e) for method System.Linq.Expressions.Compiler.ILGen:CanEmitILConstant(System.Type):ubyte (Tier1)
+Total bytes of code 389, prolog size 6, PerfScore 56.50, instruction count 128, allocated bytes for code 389 (MethodHash=ab72007e) for method System.Linq.Expressions.Compiler.ILGen:CanEmitILConstant(System.Type):ubyte (Tier1)
; ============================================================

+6 (+6.06%) : 156381.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsPreprocessorContextualKeyword(ushort):ubyte (Tier1)

@@ -11,8 +11,7 @@ ; ; V00 arg0 [V00,T01] ( 3, 3 ) ushort -> ecx single-def ; V01 tmp0 [V01,T02] ( 3, 1.50) ubyte -> eax "Inline return value spill temp"
-; V02 cse0 [V02,T03] ( 3, 0 ) int -> eax "CSE - conservative" -; V03 cse1 [V03,T00] ( 8, 5 ) int -> edx "CSE - aggressive"
+; V02 cse0 [V02,T00] ( 9, 5 ) int -> edx "CSE - aggressive"
; ; Lcl frame size = 0 @@ -63,11 +62,12 @@ G_M59682_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b jbe SHORT G_M59682_IG03 cmp edx, 0x208D je SHORT G_M59682_IG03
+ lea eax, [edx-0x2083]
cmp eax, 3 jbe SHORT G_M59682_IG06 jmp SHORT G_M59682_IG07
- ;; size=26 bbWeight=0 PerfScore 0.00
+ ;; size=32 bbWeight=0 PerfScore 0.00
-; Total bytes of code 99, prolog size 3, PerfScore 10.75, instruction count 33, allocated bytes for code 99 (MethodHash=791516dd) for method Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsPreprocessorContextualKeyword(ushort):ubyte (Tier1)
+Total bytes of code 105, prolog size 3, PerfScore 10.75, instruction count 34, allocated bytes for code 105 (MethodHash=791516dd) for method Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsPreprocessorContextualKeyword(ushort):ubyte (Tier1)
; ============================================================

librariestestsnotieredcompilation.run.windows.x86.Release.mch

-2 (-3.23%) : 149564.dasm - System.SpanTests.ReadOnlySpanTests+<>cDisplayClass21_0:b9():this (FullOpts)

@@ -34,24 +34,24 @@ ;* V23 tmp22 [V23 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V24 tmp23 [V24 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V25 tmp24 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
-;* V26 tmp25 [V26,T06] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V27 tmp26 [V27,T03] ( 2, 2 ) int -> eax "Inline stloc first use temp"
+;* V26 tmp25 [V26,T05] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V27 tmp26 [V27,T03] ( 3, 3 ) int -> edx "Inline stloc first use temp"
;* V28 tmp27 [V28 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V29 tmp28 [V29 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V30 tmp29 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V31 tmp30 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V32 tmp31 [V32 ] ( 0, 0 ) int -> zero-ref "field V01._value (fldOffset=0x0)" P-INDEP
-;* V33 tmp32 [V33,T07] ( 0, 0 ) int -> zero-ref "field V03._value (fldOffset=0x0)" P-INDEP
+;* V33 tmp32 [V33,T06] ( 0, 0 ) int -> zero-ref "field V03._value (fldOffset=0x0)" P-INDEP
;* V34 tmp33 [V34 ] ( 0, 0 ) int -> zero-ref "field V04._value (fldOffset=0x0)" P-INDEP ;* V35 tmp34 [V35 ] ( 0, 0 ) int -> zero-ref "field V05.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V36 tmp35 [V36,T08] ( 0, 0 ) int -> zero-ref "field V05.<End>k__BackingField (fldOffset=0x4)" P-INDEP
+;* V36 tmp35 [V36,T07] ( 0, 0 ) int -> zero-ref "field V05.<End>k__BackingField (fldOffset=0x4)" P-INDEP
;* V37 tmp36 [V37 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP ;* V38 tmp37 [V38 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x4)" P-INDEP ;* V39 tmp38 [V39 ] ( 0, 0 ) int -> zero-ref "field V07._value (fldOffset=0x0)" P-INDEP ;* V40 tmp39 [V40 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP ;* V41 tmp40 [V41 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x4)" P-INDEP ;* V42 tmp41 [V42 ] ( 0, 0 ) int -> zero-ref "field V09.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V43 tmp42 [V43,T09] ( 0, 0 ) int -> zero-ref "field V09.<End>k__BackingField (fldOffset=0x4)" P-INDEP
+;* V43 tmp42 [V43,T08] ( 0, 0 ) int -> zero-ref "field V09.<End>k__BackingField (fldOffset=0x4)" P-INDEP
;* V44 tmp43 [V44 ] ( 0, 0 ) int -> zero-ref "field V10.Item1 (fldOffset=0x0)" P-INDEP ;* V45 tmp44 [V45 ] ( 0, 0 ) int -> zero-ref "field V10.Item2 (fldOffset=0x4)" P-INDEP ;* V46 tmp45 [V46 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP @@ -66,8 +66,7 @@ ;* V55 tmp54 [V55 ] ( 0, 0 ) int -> zero-ref "field V20._value (fldOffset=0x0)" P-INDEP ;* V56 tmp55 [V56 ] ( 0, 0 ) int -> zero-ref "field V21._value (fldOffset=0x0)" P-INDEP ;* V57 tmp56 [V57 ] ( 0, 0 ) int -> zero-ref "field V25.Item1 (fldOffset=0x0)" P-INDEP
-; V58 tmp57 [V58,T05] ( 2, 2 ) int -> edx "field V25.Item2 (fldOffset=0x4)" P-INDEP -; V59 cse0 [V59,T04] ( 3, 3 ) int -> edx "CSE - conservative"
+; V58 tmp57 [V58,T04] ( 2, 2 ) int -> edx "field V25.Item2 (fldOffset=0x4)" P-INDEP
; ; Lcl frame size = 0 @@ -83,12 +82,11 @@ G_M60991_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 mov ecx, dword ptr [ecx+0x04] ; gcrRegs -[ecx] mov edx, ecx
- mov eax, edx - cmp eax, ecx
+ cmp edx, ecx
ja SHORT G_M60991_IG06 test edx, edx jge SHORT G_M60991_IG04
- ;; size=22 bbWeight=1 PerfScore 8.25
+ ;; size=20 bbWeight=1 PerfScore 8.00
G_M60991_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] @@ -111,6 +109,6 @@ G_M60991_IG06: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 62, prolog size 3, PerfScore 12.75, instruction count 22, allocated bytes for code 62 (MethodHash=49eb11c0) for method System.SpanTests.ReadOnlySpanTests+<>c__DisplayClass21_0:<StringAsSpanNullNonZeroStartAndLength>b__9():this (FullOpts)
+Total bytes of code 60, prolog size 3, PerfScore 12.50, instruction count 21, allocated bytes for code 60 (MethodHash=49eb11c0) for method System.SpanTests.ReadOnlySpanTests+<>c__DisplayClass21_0:<StringAsSpanNullNonZeroStartAndLength>b__9():this (FullOpts)
; ============================================================

-16 (-0.20%) : 185859.dasm - System.Reflection.Emit.Tests.AssemblySaveAssemblyBuilder:AssemblyWithDifferentTypes():this (FullOpts)

@@ -8,155 +8,155 @@ ; 143 inlinees with PGO data; 137 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T123] ( 3, 3 ) ref -> [ebp-0x44] this class-hnd single-def <System.Reflection.Emit.Tests.AssemblySaveAssemblyBuilder> -; V01 loc0 [V01,T178] ( 4, 0 ) ref -> [ebp-0x48] class-hnd exact EH-live single-def <System.IO.TempFile>
+; V00 this [V00,T123] ( 3, 3 ) ref -> [ebp-0x40] this class-hnd single-def <System.Reflection.Emit.Tests.AssemblySaveAssemblyBuilder> +; V01 loc0 [V01,T177] ( 4, 0 ) ref -> [ebp-0x44] class-hnd exact EH-live single-def <System.IO.TempFile>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Reflection.AssemblyName>
-; V03 loc2 [V03,T37] ( 6, 6 ) ref -> [ebp-0x4C] class-hnd spill-single-def <System.Reflection.Emit.AssemblyBuilder>
+; V03 loc2 [V03,T37] ( 6, 6 ) ref -> [ebp-0x48] class-hnd spill-single-def <System.Reflection.Emit.AssemblyBuilder>
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Reflection.Emit.CustomAttributeBuilder>
-; V05 loc4 [V05,T05] ( 15, 15 ) ref -> [ebp-0x50] class-hnd spill-single-def <System.Reflection.Emit.ModuleBuilder> -; V06 loc5 [V06,T124] ( 6, 4.33) ref -> [ebp-0x54] class-hnd spill-single-def <System.Reflection.Emit.TypeBuilder> -; V07 loc6 [V07,T07] ( 18, 13.90) ref -> [ebp-0x58] class-hnd spill-single-def <System.Reflection.Emit.TypeBuilder> -; V08 loc7 [V08,T121] ( 7, 5.33) ref -> [ebp-0x5C] class-hnd spill-single-def <System.Reflection.Emit.TypeBuilder> -; V09 loc8 [V09,T13] ( 12, 10.82) ref -> [ebp-0x60] class-hnd spill-single-def <System.Reflection.Emit.TypeBuilder> -; V10 loc9 [V10,T10] ( 12, 12 ) ref -> [ebp-0x64] class-hnd <System.Reflection.Emit.GenericTypeParameterBuilder[]> -; V11 loc10 [V11,T35] ( 8, 6.33) ref -> [ebp-0x68] class-hnd spill-single-def <System.Reflection.Emit.TypeBuilder> -; V12 loc11 [V12,T04] ( 17, 15.82) ref -> [ebp-0x6C] class-hnd spill-single-def <System.Reflection.Emit.TypeBuilder> -; V13 loc12 [V13,T08] ( 14, 12.50) ref -> [ebp-0x70] class-hnd spill-single-def <System.Reflection.Emit.TypeBuilder> -; V14 loc13 [V14,T21] ( 8, 8 ) ref -> [ebp-0x74] class-hnd <System.Reflection.Emit.FieldBuilder> -; V15 loc14 [V15,T14] ( 13, 10.32) ref -> [ebp-0x78] class-hnd spill-single-def <System.Reflection.Emit.TypeBuilder>
+; V05 loc4 [V05,T05] ( 15, 15 ) ref -> [ebp-0x4C] class-hnd spill-single-def <System.Reflection.Emit.ModuleBuilder> +; V06 loc5 [V06,T124] ( 6, 4.33) ref -> [ebp-0x50] class-hnd spill-single-def <System.Reflection.Emit.TypeBuilder> +; V07 loc6 [V07,T07] ( 18, 13.90) ref -> [ebp-0x54] class-hnd spill-single-def <System.Reflection.Emit.TypeBuilder> +; V08 loc7 [V08,T121] ( 7, 5.33) ref -> [ebp-0x58] class-hnd spill-single-def <System.Reflection.Emit.TypeBuilder> +; V09 loc8 [V09,T13] ( 12, 10.82) ref -> [ebp-0x5C] class-hnd spill-single-def <System.Reflection.Emit.TypeBuilder> +; V10 loc9 [V10,T10] ( 12, 12 ) ref -> [ebp-0x60] class-hnd <System.Reflection.Emit.GenericTypeParameterBuilder[]> +; V11 loc10 [V11,T35] ( 8, 6.33) ref -> [ebp-0x64] class-hnd spill-single-def <System.Reflection.Emit.TypeBuilder> +; V12 loc11 [V12,T04] ( 17, 15.82) ref -> [ebp-0x68] class-hnd spill-single-def <System.Reflection.Emit.TypeBuilder> +; V13 loc12 [V13,T08] ( 14, 12.50) ref -> [ebp-0x6C] class-hnd spill-single-def <System.Reflection.Emit.TypeBuilder> +; V14 loc13 [V14,T21] ( 8, 8 ) ref -> [ebp-0x70] class-hnd <System.Reflection.Emit.FieldBuilder> +; V15 loc14 [V15,T14] ( 13, 10.32) ref -> [ebp-0x74] class-hnd spill-single-def <System.Reflection.Emit.TypeBuilder>
;* V16 loc15 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Type[]> ;* V17 loc16 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Type[]>
-; V18 loc17 [V18,T34] ( 8, 6.50) ref -> [ebp-0x7C] class-hnd spill-single-def <System.Reflection.Emit.ConstructorBuilder> -; V19 loc18 [V19,T38] ( 6, 6 ) ref -> [ebp-0x80] class-hnd <System.Reflection.Emit.ParameterBuilder>
+; V18 loc17 [V18,T34] ( 8, 6.50) ref -> [ebp-0x78] class-hnd spill-single-def <System.Reflection.Emit.ConstructorBuilder> +; V19 loc18 [V19,T38] ( 6, 6 ) ref -> [ebp-0x7C] class-hnd <System.Reflection.Emit.ParameterBuilder>
; V20 loc19 [V20,T155] ( 5, 2.50) ref -> eax class-hnd single-def <System.Reflection.Emit.ConstructorBuilder>
-; V21 loc20 [V21,T01] ( 34, 16.50) ref -> [ebp-0x84] class-hnd <System.Reflection.Emit.MethodBuilder>
+; V21 loc20 [V21,T01] ( 34, 16.50) ref -> [ebp-0x80] class-hnd <System.Reflection.Emit.MethodBuilder>
; V22 loc21 [V22,T17] ( 11, 9.32) ref -> edi class-hnd single-def <System.Reflection.Emit.TypeBuilder>
-; V23 loc22 [V23,T36] ( 12, 6 ) ref -> [ebp-0x88] class-hnd spill-single-def <System.Reflection.Emit.MethodBuilder> -; V24 loc23 [V24,T145] ( 8, 3.58) ref -> [ebp-0x8C] class-hnd spill-single-def <System.Reflection.Emit.MethodBuilder> -; V25 loc24 [V25,T122] ( 10, 5 ) ref -> [ebp-0x90] class-hnd spill-single-def <System.Reflection.Emit.MethodBuilder> -; V26 loc25 [V26,T11] ( 15, 11.08) ref -> [ebp-0x94] class-hnd spill-single-def <System.Reflection.Emit.PropertyBuilder>
+; V23 loc22 [V23,T36] ( 12, 6 ) ref -> [ebp-0x84] class-hnd spill-single-def <System.Reflection.Emit.MethodBuilder> +; V24 loc23 [V24,T145] ( 8, 3.58) ref -> [ebp-0x88] class-hnd spill-single-def <System.Reflection.Emit.MethodBuilder> +; V25 loc24 [V25,T122] ( 10, 5 ) ref -> [ebp-0x8C] class-hnd spill-single-def <System.Reflection.Emit.MethodBuilder> +; V26 loc25 [V26,T11] ( 16, 11.16) ref -> [ebp-0x90] class-hnd spill-single-def <System.Reflection.Emit.PropertyBuilder>
; V27 loc26 [V27,T19] ( 11, 8.68) ref -> esi class-hnd single-def <System.Reflection.Emit.TypeBuilder> ; V28 loc27 [V28,T147] ( 6, 3.50) ref -> edi class-hnd single-def <System.Reflection.Emit.MethodBuilder>
-; V29 loc28 [V29,T148] ( 6, 3.50) ref -> [ebp-0x98] class-hnd spill-single-def <System.Reflection.Emit.MethodBuilder> -; V30 loc29 [V30,T149] ( 6, 3.50) ref -> [ebp-0x9C] class-hnd spill-single-def <System.Reflection.Emit.MethodBuilder> -; V31 loc30 [V31,T33] ( 7, 7 ) ref -> [ebp-0xA0] class-hnd spill-single-def <System.Reflection.Emit.EventBuilder> -; V32 loc31 [V32,T179] ( 4, 0 ) ref -> [ebp-0xA4] class-hnd exact EH-live single-def <System.Reflection.MetadataLoadContext>
+; V29 loc28 [V29,T148] ( 6, 3.50) ref -> [ebp-0x94] class-hnd spill-single-def <System.Reflection.Emit.MethodBuilder> +; V30 loc29 [V30,T149] ( 6, 3.50) ref -> [ebp-0x98] class-hnd spill-single-def <System.Reflection.Emit.MethodBuilder> +; V31 loc30 [V31,T33] ( 7, 7 ) ref -> [ebp-0x9C] class-hnd spill-single-def <System.Reflection.Emit.EventBuilder> +; V32 loc31 [V32,T178] ( 4, 0 ) ref -> [ebp-0xA0] class-hnd exact EH-live single-def <System.Reflection.MetadataLoadContext>
; V33 tmp0 [V33,T02] ( 8, 16 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <System.Reflection.AssemblyName>
-; V34 tmp1 [V34,T39] ( 3, 6 ) ref -> [ebp-0xA8] class-hnd exact spill-single-def "NewObj constructor temp" <System.Version> -; V35 tmp2 [V35,T40] ( 3, 6 ) ref -> [ebp-0xAC] class-hnd exact spill-single-def "NewObj constructor temp" <System.Globalization.CultureInfo>
+; V34 tmp1 [V34,T39] ( 3, 6 ) ref -> [ebp-0xA4] class-hnd exact spill-single-def "NewObj constructor temp" <System.Version> +; V35 tmp2 [V35,T40] ( 3, 6 ) ref -> [ebp-0xA8] class-hnd exact spill-single-def "NewObj constructor temp" <System.Globalization.CultureInfo>
; V36 tmp3 [V36,T41] ( 3, 6 ) ref -> eax class-hnd exact single-def "dup spill" <System.Type[]> ;* V37 tmp4 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impSpillLclRefs" <System.RuntimeType> ;* V38 tmp5 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V39 tmp6 [V39,T42] ( 3, 6 ) ref -> [ebp-0xB0] class-hnd exact spill-single-def "dup spill" <System.Object[]> -; V40 tmp7 [V40,T126] ( 2, 4 ) ref -> [ebp-0xB4] class-hnd spill-single-def "impSpillLclRefs" <System.Reflection.ConstructorInfo>
+; V39 tmp6 [V39,T42] ( 3, 6 ) ref -> [ebp-0xAC] class-hnd exact spill-single-def "dup spill" <System.Object[]> +; V40 tmp7 [V40,T126] ( 2, 4 ) ref -> [ebp-0xB0] class-hnd spill-single-def "impSpillLclRefs" <System.Reflection.ConstructorInfo>
; V41 tmp8 [V41,T43] ( 3, 6 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V42 tmp9 [V42,T44] ( 3, 6 ) ref -> [ebp-0xB8] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.CustomAttributeBuilder>
+; V42 tmp9 [V42,T44] ( 3, 6 ) ref -> [ebp-0xB4] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.CustomAttributeBuilder>
; V43 tmp10 [V43,T45] ( 3, 6 ) ref -> eax class-hnd exact single-def "dup spill" <System.Type[]> ;* V44 tmp11 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impSpillLclRefs" <System.RuntimeType> ;* V45 tmp12 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V46 tmp13 [V46,T46] ( 3, 6 ) ref -> [ebp-0xBC] class-hnd exact spill-single-def "dup spill" <System.Object[]> -; V47 tmp14 [V47,T127] ( 2, 4 ) ref -> [ebp-0xC0] class-hnd spill-single-def "impSpillLclRefs" <System.Reflection.ConstructorInfo>
+; V46 tmp13 [V46,T46] ( 3, 6 ) ref -> [ebp-0xB8] class-hnd exact spill-single-def "dup spill" <System.Object[]> +; V47 tmp14 [V47,T127] ( 2, 4 ) ref -> [ebp-0xBC] class-hnd spill-single-def "impSpillLclRefs" <System.Reflection.ConstructorInfo>
; V48 tmp15 [V48,T47] ( 3, 6 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V49 tmp16 [V49,T48] ( 3, 6 ) ref -> [ebp-0xC4] class-hnd exact spill-single-def "dup spill" <<unknown class>>
+; V49 tmp16 [V49,T48] ( 3, 6 ) ref -> [ebp-0xC0] class-hnd exact spill-single-def "dup spill" <<unknown class>>
; V50 tmp17 [V50,T128] ( 2, 4 ) ref -> eax class-hnd single-def "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
-; V51 tmp18 [V51,T49] ( 3, 6 ) ref -> [ebp-0xC8] class-hnd exact spill-single-def "dup spill" <System.Object[]>
+; V51 tmp18 [V51,T49] ( 3, 6 ) ref -> [ebp-0xC4] class-hnd exact spill-single-def "dup spill" <System.Object[]>
; V52 tmp19 [V52,T50] ( 3, 6 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <<unknown class>> ;* V53 tmp20 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.Reflection.FieldInfo[]>
-; V54 tmp21 [V54,T00] ( 11, 22 ) ref -> [ebp-0xCC] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.CustomAttributeBuilder>
+; V54 tmp21 [V54,T00] ( 11, 22 ) ref -> [ebp-0xC8] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.CustomAttributeBuilder>
; V55 tmp22 [V55,T51] ( 3, 6 ) ref -> eax class-hnd exact single-def "dup spill" <System.Type[]> ;* V56 tmp23 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impSpillLclRefs" <System.RuntimeType> ;* V57 tmp24 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType> ; V58 tmp25 [V58,T22] ( 4, 8 ) ref -> eax class-hnd exact single-def "dup spill" <System.String[]> ; V59 tmp26 [V59,T52] ( 3, 6 ) ref -> eax class-hnd exact single-def "dup spill" <System.Type[]>
-; V60 tmp27 [V60,T53] ( 3, 6 ) ref -> [ebp-0xD0] class-hnd spill-single-def "impSpillLclRefs" <System.Reflection.Emit.GenericTypeParameterBuilder>
+; V60 tmp27 [V60,T53] ( 3, 6 ) ref -> [ebp-0xCC] class-hnd spill-single-def "impSpillLclRefs" <System.Reflection.Emit.GenericTypeParameterBuilder>
;* V61 tmp28 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V62 tmp29 [V62,T54] ( 3, 6 ) ref -> [ebp-0xD4] class-hnd exact spill-single-def "dup spill" <System.Type[]>
+; V62 tmp29 [V62,T54] ( 3, 6 ) ref -> [ebp-0xD0] class-hnd exact spill-single-def "dup spill" <System.Type[]>
;* V63 tmp30 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impSpillLclRefs" <System.RuntimeType> ; V64 tmp31 [V64,T129] ( 2, 4 ) ref -> ecx class-hnd single-def "Strict ordering of exceptions for Array store" <System.Type> ; V65 tmp32 [V65,T23] ( 4, 8 ) ref -> eax class-hnd exact single-def "dup spill" <System.String[]>
-; V66 tmp33 [V66,T55] ( 3, 6 ) ref -> [ebp-0xD8] class-hnd exact spill-single-def "dup spill" <<unknown class>>
+; V66 tmp33 [V66,T55] ( 3, 6 ) ref -> [ebp-0xD4] class-hnd exact spill-single-def "dup spill" <<unknown class>>
;* V67 tmp34 [V67 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impSpillLclRefs" <System.RuntimeType> ; V68 tmp35 [V68,T56] ( 3, 6 ) ref -> eax class-hnd exact single-def "dup spill" <<unknown class>>
-; V69 tmp36 [V69,T24] ( 4, 8 ) ref -> [ebp-0xDC] class-hnd exact spill-single-def "dup spill" <<unknown class>>
+; V69 tmp36 [V69,T24] ( 4, 8 ) ref -> [ebp-0xD8] class-hnd exact spill-single-def "dup spill" <<unknown class>>
;* V70 tmp37 [V70 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impSpillLclRefs" <System.RuntimeType> ; V71 tmp38 [V71,T25] ( 4, 8 ) ref -> eax class-hnd exact single-def "dup spill" <<unknown class>> ; V72 tmp39 [V72,T26] ( 4, 8 ) ref -> eax class-hnd exact single-def "dup spill" <System.Type[]> ;* V73 tmp40 [V73 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType> ;* V74 tmp41 [V74 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V75 tmp42 [V75,T57] ( 3, 6 ) ref -> [ebp-0xE0] class-hnd exact spill-single-def "Single-def Box Helper" <System.Int32>
+; V75 tmp42 [V75,T57] ( 3, 6 ) ref -> [ebp-0xDC] class-hnd exact spill-single-def "Single-def Box Helper" <System.Int32>
; V76 tmp43 [V76,T58] ( 3, 6 ) ref -> eax class-hnd single-def "impImportAndPushBox" <System.Reflection.Emit.FieldBuilder>
-; V77 tmp44 [V77,T59] ( 3, 6 ) ref -> [ebp-0xE4] class-hnd exact spill-single-def "dup spill" <System.Type[]>
+; V77 tmp44 [V77,T59] ( 3, 6 ) ref -> [ebp-0xE0] class-hnd exact spill-single-def "dup spill" <System.Type[]>
;* V78 tmp45 [V78 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impSpillLclRefs" <System.RuntimeType> ;* V79 tmp46 [V79 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V80 tmp47 [V80,T60] ( 3, 6 ) ref -> [ebp-0xE8] class-hnd exact spill-single-def "dup spill" <System.Type[]>
+; V80 tmp47 [V80,T60] ( 3, 6 ) ref -> [ebp-0xE4] class-hnd exact spill-single-def "dup spill" <System.Type[]>
;* V81 tmp48 [V81 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType> ; V82 tmp49 [V82,T61] ( 3, 6 ) ref -> eax class-hnd exact single-def "dup spill" <System.Type[]> ;* V83 tmp50 [V83 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impSpillLclRefs" <System.RuntimeType> ;* V84 tmp51 [V84 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V85 tmp52 [V85,T62] ( 3, 6 ) ref -> [ebp-0xEC] class-hnd exact spill-single-def "dup spill" <System.Object[]> -; V86 tmp53 [V86,T130] ( 2, 4 ) ref -> [ebp-0xF0] class-hnd spill-single-def "impSpillLclRefs" <System.Reflection.ConstructorInfo>
+; V85 tmp52 [V85,T62] ( 3, 6 ) ref -> [ebp-0xE8] class-hnd exact spill-single-def "dup spill" <System.Object[]> +; V86 tmp53 [V86,T130] ( 2, 4 ) ref -> [ebp-0xEC] class-hnd spill-single-def "impSpillLclRefs" <System.Reflection.ConstructorInfo>
; V87 tmp54 [V87,T63] ( 3, 6 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V88 tmp55 [V88,T64] ( 3, 6 ) ref -> [ebp-0xF4] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.CustomAttributeBuilder>
+; V88 tmp55 [V88,T64] ( 3, 6 ) ref -> [ebp-0xF0] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.CustomAttributeBuilder>
; V89 tmp56 [V89,T65] ( 3, 6 ) ref -> eax class-hnd exact single-def "dup spill" <System.Type[]> ;* V90 tmp57 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impSpillLclRefs" <System.RuntimeType> ;* V91 tmp58 [V91 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V92 tmp59 [V92,T66] ( 3, 6 ) ref -> [ebp-0xF8] class-hnd exact spill-single-def "dup spill" <System.Object[]> -; V93 tmp60 [V93,T131] ( 2, 4 ) ref -> [ebp-0xFC] class-hnd spill-single-def "impSpillLclRefs" <System.Reflection.ConstructorInfo>
+; V92 tmp59 [V92,T66] ( 3, 6 ) ref -> [ebp-0xF4] class-hnd exact spill-single-def "dup spill" <System.Object[]> +; V93 tmp60 [V93,T131] ( 2, 4 ) ref -> [ebp-0xF8] class-hnd spill-single-def "impSpillLclRefs" <System.Reflection.ConstructorInfo>
; V94 tmp61 [V94,T67] ( 3, 6 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V95 tmp62 [V95,T68] ( 3, 6 ) ref -> [ebp-0x100] class-hnd exact spill-single-def "dup spill" <System.Reflection.FieldInfo[]>
+; V95 tmp62 [V95,T68] ( 3, 6 ) ref -> [ebp-0xFC] class-hnd exact spill-single-def "dup spill" <System.Reflection.FieldInfo[]>
; V96 tmp63 [V96,T132] ( 2, 4 ) ref -> eax class-hnd single-def "Strict ordering of exceptions for Array store" <System.Reflection.FieldInfo>
-; V97 tmp64 [V97,T69] ( 3, 6 ) ref -> [ebp-0x104] class-hnd exact spill-single-def "dup spill" <System.Object[]>
+; V97 tmp64 [V97,T69] ( 3, 6 ) ref -> [ebp-0x100] class-hnd exact spill-single-def "dup spill" <System.Object[]>
; V98 tmp65 [V98,T70] ( 3, 6 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <System.Int32>
-; V99 tmp66 [V99,T71] ( 3, 6 ) ref -> [ebp-0x108] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.CustomAttributeBuilder>
+; V99 tmp66 [V99,T71] ( 3, 6 ) ref -> [ebp-0x104] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.CustomAttributeBuilder>
; V100 tmp67 [V100,T72] ( 3, 6 ) ref -> eax class-hnd exact single-def "dup spill" <System.Type[]> ;* V101 tmp68 [V101 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impSpillLclRefs" <System.RuntimeType> ;* V102 tmp69 [V102 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V103 tmp70 [V103,T73] ( 3, 6 ) ref -> [ebp-0x10C] class-hnd exact spill-single-def "dup spill" <System.Object[]> -; V104 tmp71 [V104,T133] ( 2, 4 ) ref -> [ebp-0x110] class-hnd spill-single-def "impSpillLclRefs" <System.Reflection.ConstructorInfo>
+; V103 tmp70 [V103,T73] ( 3, 6 ) ref -> [ebp-0x108] class-hnd exact spill-single-def "dup spill" <System.Object[]> +; V104 tmp71 [V104,T133] ( 2, 4 ) ref -> [ebp-0x10C] class-hnd spill-single-def "impSpillLclRefs" <System.Reflection.ConstructorInfo>
; V105 tmp72 [V105,T74] ( 3, 6 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V106 tmp73 [V106,T75] ( 3, 6 ) ref -> [ebp-0x114] class-hnd exact spill-single-def "dup spill" <System.Reflection.FieldInfo[]>
+; V106 tmp73 [V106,T75] ( 3, 6 ) ref -> [ebp-0x110] class-hnd exact spill-single-def "dup spill" <System.Reflection.FieldInfo[]>
; V107 tmp74 [V107,T134] ( 2, 4 ) ref -> eax class-hnd single-def "Strict ordering of exceptions for Array store" <System.Reflection.FieldInfo>
-; V108 tmp75 [V108,T76] ( 3, 6 ) ref -> [ebp-0x118] class-hnd exact spill-single-def "dup spill" <System.Object[]>
+; V108 tmp75 [V108,T76] ( 3, 6 ) ref -> [ebp-0x114] class-hnd exact spill-single-def "dup spill" <System.Object[]>
; V109 tmp76 [V109,T77] ( 3, 6 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <System.Int32>
-; V110 tmp77 [V110,T78] ( 3, 6 ) ref -> [ebp-0x11C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.CustomAttributeBuilder>
+; V110 tmp77 [V110,T78] ( 3, 6 ) ref -> [ebp-0x118] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.CustomAttributeBuilder>
; V111 tmp78 [V111,T79] ( 3, 6 ) ref -> eax class-hnd exact single-def "dup spill" <System.Type[]> ;* V112 tmp79 [V112 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impSpillLclRefs" <System.RuntimeType> ;* V113 tmp80 [V113 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V114 tmp81 [V114,T80] ( 3, 6 ) ref -> [ebp-0x120] class-hnd exact spill-single-def "dup spill" <System.Object[]> -; V115 tmp82 [V115,T135] ( 2, 4 ) ref -> [ebp-0x124] class-hnd spill-single-def "impSpillLclRefs" <System.Reflection.ConstructorInfo>
+; V114 tmp81 [V114,T80] ( 3, 6 ) ref -> [ebp-0x11C] class-hnd exact spill-single-def "dup spill" <System.Object[]> +; V115 tmp82 [V115,T135] ( 2, 4 ) ref -> [ebp-0x120] class-hnd spill-single-def "impSpillLclRefs" <System.Reflection.ConstructorInfo>
; V116 tmp83 [V116,T81] ( 3, 6 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V117 tmp84 [V117,T27] ( 4, 8 ) ref -> [ebp-0x128] class-hnd exact spill-single-def "dup spill" <System.Reflection.FieldInfo[]>
+; V117 tmp84 [V117,T27] ( 4, 8 ) ref -> [ebp-0x124] class-hnd exact spill-single-def "dup spill" <System.Reflection.FieldInfo[]>
; V118 tmp85 [V118,T136] ( 2, 4 ) ref -> eax class-hnd single-def "Strict ordering of exceptions for Array store" <System.Reflection.FieldInfo> ; V119 tmp86 [V119,T137] ( 2, 4 ) ref -> eax class-hnd single-def "Strict ordering of exceptions for Array store" <System.Reflection.FieldInfo>
-; V120 tmp87 [V120,T28] ( 4, 8 ) ref -> [ebp-0x12C] class-hnd exact spill-single-def "dup spill" <System.Object[]>
+; V120 tmp87 [V120,T28] ( 4, 8 ) ref -> [ebp-0x128] class-hnd exact spill-single-def "dup spill" <System.Object[]>
;* V121 tmp88 [V121 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V122 tmp89 [V122,T82] ( 3, 6 ) ref -> [ebp-0x130] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.CustomAttributeBuilder>
+; V122 tmp89 [V122,T82] ( 3, 6 ) ref -> [ebp-0x12C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.CustomAttributeBuilder>
; V123 tmp90 [V123,T83] ( 3, 6 ) ref -> eax class-hnd exact single-def "dup spill" <ubyte[]>
-; V124 tmp91 [V124,T15] ( 5, 10 ) ref -> [ebp-0x134] class-hnd exact spill-single-def "dup spill" <System.Type[]>
+; V124 tmp91 [V124,T15] ( 5, 10 ) ref -> [ebp-0x130] class-hnd exact spill-single-def "dup spill" <System.Type[]>
;* V125 tmp92 [V125 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V126 tmp93 [V126,T16] ( 5, 10 ) ref -> [ebp-0x138] class-hnd exact spill-single-def "dup spill" <System.Type[]>
+; V126 tmp93 [V126,T16] ( 5, 10 ) ref -> [ebp-0x134] class-hnd exact spill-single-def "dup spill" <System.Type[]>
;* V127 tmp94 [V127 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V128 tmp95 [V128,T29] ( 4, 8 ) ref -> [ebp-0x13C] class-hnd exact spill-single-def "dup spill" <System.Type[]>
+; V128 tmp95 [V128,T29] ( 4, 8 ) ref -> [ebp-0x138] class-hnd exact spill-single-def "dup spill" <System.Type[]>
;* V129 tmp96 [V129 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType> ;* V130 tmp97 [V130 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V131 tmp98 [V131,T84] ( 3, 6 ) ref -> [ebp-0x140] class-hnd exact spill-single-def "dup spill" <System.Type[][]>
+; V131 tmp98 [V131,T84] ( 3, 6 ) ref -> [ebp-0x13C] class-hnd exact spill-single-def "dup spill" <System.Type[][]>
; V132 tmp99 [V132,T85] ( 3, 6 ) ref -> eax class-hnd exact single-def "dup spill" <System.Type[][]> ; V133 tmp100 [V133,T86] ( 3, 6 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <System.Int32> ; V134 tmp101 [V134,T87] ( 3, 6 ) ref -> eax class-hnd exact single-def "dup spill" <System.Type[]> ;* V135 tmp102 [V135 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impSpillLclRefs" <System.RuntimeType> ;* V136 tmp103 [V136 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V137 tmp104 [V137,T88] ( 3, 6 ) ref -> [ebp-0x144] class-hnd exact spill-single-def "dup spill" <System.Object[]> -; V138 tmp105 [V138,T138] ( 2, 4 ) ref -> [ebp-0x148] class-hnd spill-single-def "impSpillLclRefs" <System.Reflection.ConstructorInfo>
+; V137 tmp104 [V137,T88] ( 3, 6 ) ref -> [ebp-0x140] class-hnd exact spill-single-def "dup spill" <System.Object[]> +; V138 tmp105 [V138,T138] ( 2, 4 ) ref -> [ebp-0x144] class-hnd spill-single-def "impSpillLclRefs" <System.Reflection.ConstructorInfo>
; V139 tmp106 [V139,T89] ( 3, 6 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V140 tmp107 [V140,T90] ( 3, 6 ) ref -> [ebp-0x14C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.CustomAttributeBuilder>
+; V140 tmp107 [V140,T90] ( 3, 6 ) ref -> [ebp-0x148] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.CustomAttributeBuilder>
; V141 tmp108 [V141,T30] ( 4, 8 ) ref -> eax class-hnd exact single-def "dup spill" <System.Type[]> ;* V142 tmp109 [V142 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType> ;* V143 tmp110 [V143 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V144 tmp111 [V144,T31] ( 4, 8 ) ref -> [ebp-0x150] class-hnd exact spill-single-def "dup spill" <System.Type[]>
+; V144 tmp111 [V144,T31] ( 4, 8 ) ref -> [ebp-0x14C] class-hnd exact spill-single-def "dup spill" <System.Type[]>
;* V145 tmp112 [V145 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impSpillLclRefs" <System.RuntimeType> ;* V146 tmp113 [V146 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType> ;* V147 tmp114 [V147 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V148 tmp115 [V148,T91] ( 3, 6 ) ref -> [ebp-0x154] class-hnd exact spill-single-def "dup spill" <System.Type[][]>
+; V148 tmp115 [V148,T91] ( 3, 6 ) ref -> [ebp-0x150] class-hnd exact spill-single-def "dup spill" <System.Type[][]>
; V149 tmp116 [V149,T92] ( 3, 6 ) ref -> eax class-hnd exact single-def "dup spill" <System.Type[][]> ; V150 tmp117 [V150,T32] ( 4, 8 ) ref -> eax class-hnd exact single-def "dup spill" <System.String[]> ; V151 tmp118 [V151,T93] ( 3, 6 ) ref -> eax class-hnd exact single-def "dup spill" <System.Type[]> @@ -166,17 +166,17 @@ ; V155 tmp122 [V155,T96] ( 3, 6 ) ref -> eax class-hnd exact single-def "dup spill" <System.Type[]> ;* V156 tmp123 [V156 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impSpillLclRefs" <System.RuntimeType> ;* V157 tmp124 [V157 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V158 tmp125 [V158,T97] ( 3, 6 ) ref -> [ebp-0x158] class-hnd exact spill-single-def "dup spill" <System.Object[]> -; V159 tmp126 [V159,T139] ( 2, 4 ) ref -> [ebp-0x15C] class-hnd spill-single-def "impSpillLclRefs" <System.Reflection.ConstructorInfo>
+; V158 tmp125 [V158,T97] ( 3, 6 ) ref -> [ebp-0x154] class-hnd exact spill-single-def "dup spill" <System.Object[]> +; V159 tmp126 [V159,T139] ( 2, 4 ) ref -> [ebp-0x158] class-hnd spill-single-def "impSpillLclRefs" <System.Reflection.ConstructorInfo>
; V160 tmp127 [V160,T98] ( 3, 6 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V161 tmp128 [V161,T99] ( 3, 6 ) ref -> [ebp-0x160] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.CustomAttributeBuilder>
+; V161 tmp128 [V161,T99] ( 3, 6 ) ref -> [ebp-0x15C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.CustomAttributeBuilder>
; V162 tmp129 [V162,T100] ( 3, 6 ) ref -> eax class-hnd exact single-def "dup spill" <System.Type[]> ;* V163 tmp130 [V163 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impSpillLclRefs" <System.RuntimeType> ;* V164 tmp131 [V164 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V165 tmp132 [V165,T101] ( 3, 6 ) ref -> [ebp-0x164] class-hnd exact spill-single-def "dup spill" <System.Object[]>
+; V165 tmp132 [V165,T101] ( 3, 6 ) ref -> [ebp-0x160] class-hnd exact spill-single-def "dup spill" <System.Object[]>
; V166 tmp133 [V166,T140] ( 2, 4 ) ref -> edi class-hnd single-def "impSpillLclRefs" <System.Reflection.ConstructorInfo> ; V167 tmp134 [V167,T102] ( 3, 6 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V168 tmp135 [V168,T103] ( 3, 6 ) ref -> [ebp-0x168] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.CustomAttributeBuilder>
+; V168 tmp135 [V168,T103] ( 3, 6 ) ref -> [ebp-0x164] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.CustomAttributeBuilder>
; V169 tmp136 [V169,T104] ( 3, 6 ) ref -> eax class-hnd exact single-def "dup spill" <System.Type[]> ;* V170 tmp137 [V170 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impSpillLclRefs" <System.RuntimeType> ;* V171 tmp138 [V171 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType> @@ -203,12 +203,12 @@ ;* V192 tmp159 [V192 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ...

-2 (-0.14%) : 149021.dasm - System.SpanTests.ReadOnlySpanTests:AsSpan_StartAndLength(System.String,int,int) (FullOpts)

@@ -18,7 +18,7 @@ ;* V07 tmp4 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V08 tmp5 [V08,T09] ( 3, 3 ) int -> [ebp-0x10] spill-single-def "impAppendStmt" ;* V09 tmp6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V10 tmp7 [V10,T40] ( 2, 2 ) int -> [ebp-0x14] spill-single-def "impAppendStmt"
+; V10 tmp7 [V10,T41] ( 2, 2 ) int -> [ebp-0x14] spill-single-def "impAppendStmt"
;* V11 tmp8 [V11 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Index> ;* V12 tmp9 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Range> ;* V13 tmp10 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> @@ -34,38 +34,38 @@ ;* V23 tmp20 [V23 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V24 tmp21 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V25 tmp22 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-;* V26 tmp23 [V26,T98] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V27 tmp24 [V27,T33] ( 2, 2 ) byref -> eax single-def "Inlining Arg"
+;* V26 tmp23 [V26,T97] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V27 tmp24 [V27,T34] ( 2, 2 ) byref -> eax single-def "Inlining Arg"
;* V28 tmp25 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp26 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp27 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ; V31 tmp28 [V31 ] ( 3, 1.50) byref -> [ebp-0x18] do-not-enreg[P] must-init pinned "Inline stloc first use temp"
-; V32 tmp29 [V32,T84] ( 2, 1 ) int -> esi
+; V32 tmp29 [V32,T83] ( 2, 1 ) int -> esi
;* V33 tmp30 [V33 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V34 tmp31 [V34 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" ;* V35 tmp32 [V35 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" ;* V36 tmp33 [V36 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V37 tmp34 [V37,T13] ( 3, 3 ) ref -> [ebp-0x60] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]> ;* V38 tmp35 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass2_0[int]>
-; V39 tmp36 [V39,T56] ( 3, 1.50) ref -> [ebp-0x64] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass2_0[int]>
+; V39 tmp36 [V39,T57] ( 3, 1.50) ref -> [ebp-0x64] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass2_0[int]>
; V40 tmp37 [V40,T05] ( 4, 4 ) ref -> [ebp-0x68] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> ; V41 tmp38 [V41,T06] ( 4, 4 ) ref -> [ebp-0x6C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> ;* V42 tmp39 [V42 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ; V43 tmp40 [V43,T14] ( 3, 3 ) ref -> [ebp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]> ;* V44 tmp41 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass2_0[int]>
-; V45 tmp42 [V45,T57] ( 3, 1.50) ref -> [ebp-0x74] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass2_0[int]>
+; V45 tmp42 [V45,T58] ( 3, 1.50) ref -> [ebp-0x74] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass2_0[int]>
; V46 tmp43 [V46,T07] ( 4, 4 ) ref -> [ebp-0x78] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> ; V47 tmp44 [V47,T08] ( 4, 4 ) ref -> [ebp-0x7C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> ;* V48 tmp45 [V48 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V49 tmp46 [V49 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V50 tmp47 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-;* V51 tmp48 [V51,T99] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V52 tmp49 [V52,T34] ( 2, 2 ) byref -> eax single-def "Inlining Arg"
+;* V51 tmp48 [V51,T98] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V52 tmp49 [V52,T35] ( 2, 2 ) byref -> eax single-def "Inlining Arg"
;* V53 tmp50 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V54 tmp51 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V55 tmp52 [V55 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ; V56 tmp53 [V56 ] ( 3, 1.50) byref -> [ebp-0x1C] do-not-enreg[P] must-init pinned "Inline stloc first use temp"
-; V57 tmp54 [V57,T85] ( 2, 1 ) int -> esi
+; V57 tmp54 [V57,T84] ( 2, 1 ) int -> esi
;* V58 tmp55 [V58 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V59 tmp56 [V59 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" ;* V60 tmp57 [V60 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" @@ -89,17 +89,17 @@ ;* V78 tmp75 [V78 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Index> ;* V79 tmp76 [V79 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Index> ;* V80 tmp77 [V80 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Index>
-;* V81 tmp78 [V81,T100] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V81 tmp78 [V81,T99] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V82 tmp79 [V82 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" ;* V83 tmp80 [V83 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" ;* V84 tmp81 [V84 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
-;* V85 tmp82 [V85,T102] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" -; V86 tmp83 [V86,T59] ( 2, 1 ) int -> ecx "Inline stloc first use temp"
+;* V85 tmp82 [V85,T101] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" +; V86 tmp83 [V86,T30] ( 3, 1.50) int -> esi "Inline stloc first use temp"
;* V87 tmp84 [V87 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V88 tmp85 [V88,T35] ( 2, 2 ) byref -> [ebp-0x88] spill-single-def "Inlining Arg"
+; V88 tmp85 [V88,T36] ( 2, 2 ) byref -> [ebp-0x88] spill-single-def "Inlining Arg"
;* V89 tmp86 [V89 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ; V90 tmp87 [V90 ] ( 3, 1.50) byref -> [ebp-0x20] do-not-enreg[P] must-init pinned "Inline stloc first use temp"
-; V91 tmp88 [V91,T86] ( 2, 1 ) int -> edi
+; V91 tmp88 [V91,T85] ( 2, 1 ) int -> edi
;* V92 tmp89 [V92 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V93 tmp90 [V93 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" ;* V94 tmp91 [V94 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" @@ -110,15 +110,15 @@ ;* V99 tmp96 [V99 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V100 tmp97 [V100 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V101 tmp98 [V101 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-;* V102 tmp99 [V102,T101] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V103 tmp100 [V103,T36] ( 2, 2 ) byref -> [ebp-0x90] spill-single-def "Inlining Arg"
+;* V102 tmp99 [V102,T100] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V103 tmp100 [V103,T37] ( 2, 2 ) byref -> [ebp-0x90] spill-single-def "Inlining Arg"
;* V104 tmp101 [V104 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V105 tmp102 [V105 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V106 tmp103 [V106 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ; V107 tmp104 [V107 ] ( 3, 1.50) byref -> [ebp-0x24] do-not-enreg[P] must-init pinned "Inline stloc first use temp"
-; V108 tmp105 [V108,T87] ( 2, 1 ) int -> ecx
+; V108 tmp105 [V108,T86] ( 2, 1 ) int -> ecx
;* V109 tmp106 [V109 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V110 tmp107 [V110,T88] ( 2, 1 ) int -> [ebp-0x28] spill-single-def "Inline stloc first use temp"
+; V110 tmp107 [V110,T87] ( 2, 1 ) int -> [ebp-0x28] spill-single-def "Inline stloc first use temp"
;* V111 tmp108 [V111 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" ;* V112 tmp109 [V112 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V113 tmp110 [V113,T19] ( 3, 3 ) ref -> [ebp-0x94] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]> @@ -146,15 +146,15 @@ ;* V135 tmp132 [V135 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" ;* V136 tmp133 [V136 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" ;* V137 tmp134 [V137 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
-; V138 tmp135 [V138,T30] ( 4, 2 ) int -> ecx "Inline stloc first use temp"
+; V138 tmp135 [V138,T31] ( 4, 2 ) int -> ecx "Inline stloc first use temp"
;* V139 tmp136 [V139 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V140 tmp137 [V140 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V141 tmp138 [V141,T37] ( 2, 2 ) byref -> [ebp-0x9C] spill-single-def "Inlining Arg"
+; V141 tmp138 [V141,T38] ( 2, 2 ) byref -> [ebp-0x9C] spill-single-def "Inlining Arg"
;* V142 tmp139 [V142 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ; V143 tmp140 [V143 ] ( 3, 1.50) byref -> [ebp-0x2C] do-not-enreg[P] must-init pinned "Inline stloc first use temp"
-; V144 tmp141 [V144,T89] ( 2, 1 ) int -> ecx
+; V144 tmp141 [V144,T88] ( 2, 1 ) int -> ecx
;* V145 tmp142 [V145 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V146 tmp143 [V146,T90] ( 2, 1 ) int -> esi single-def "Inline stloc first use temp"
+; V146 tmp143 [V146,T89] ( 2, 1 ) int -> esi single-def "Inline stloc first use temp"
;* V147 tmp144 [V147 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" ;* V148 tmp145 [V148 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V149 tmp146 [V149,T21] ( 3, 3 ) ref -> [ebp-0xA0] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]> @@ -163,12 +163,12 @@ ;* V152 tmp149 [V152 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V153 tmp150 [V153 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V154 tmp151 [V154 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V155 tmp152 [V155,T38] ( 2, 2 ) byref -> [ebp-0xA4] spill-single-def "Inlining Arg"
+; V155 tmp152 [V155,T39] ( 2, 2 ) byref -> [ebp-0xA4] spill-single-def "Inlining Arg"
;* V156 tmp153 [V156 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ; V157 tmp154 [V157 ] ( 3, 1.50) byref -> [ebp-0x30] do-not-enreg[P] must-init pinned "Inline stloc first use temp" ; V158 tmp155 [V158,T60] ( 3, 1.50) int -> ecx ;* V159 tmp156 [V159 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V160 tmp157 [V160,T91] ( 2, 1 ) int -> [ebp-0x34] spill-single-def "Inline stloc first use temp"
+; V160 tmp157 [V160,T90] ( 2, 1 ) int -> [ebp-0x34] spill-single-def "Inline stloc first use temp"
;* V161 tmp158 [V161 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" ;* V162 tmp159 [V162 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V163 tmp160 [V163,T23] ( 3, 3 ) ref -> [ebp-0xA8] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]> @@ -192,19 +192,19 @@ ;* V181 tmp178 [V181 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Index> ;* V182 tmp179 [V182 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Index> ;* V183 tmp180 [V183 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline stloc first use temp" <System.Index>
-; V184 tmp181 [V184,T41] ( 2, 2 ) int -> eax "Inlining Arg"
+; V184 tmp181 [V184,T42] ( 2, 2 ) int -> eax "Inlining Arg"
;* V185 tmp182 [V185 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" ;* V186 tmp183 [V186 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" ;* V187 tmp184 [V187 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
-; V188 tmp185 [V188,T31] ( 4, 2 ) int -> edx "Inline stloc first use temp" -; V189 tmp186 [V189,T32] ( 4, 2 ) int -> ecx "Inline stloc first use temp"
+; V188 tmp185 [V188,T32] ( 4, 2 ) int -> edx "Inline stloc first use temp" +; V189 tmp186 [V189,T33] ( 4, 2 ) int -> ecx "Inline stloc first use temp"
;* V190 tmp187 [V190 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V191 tmp188 [V191,T39] ( 2, 2 ) byref -> [ebp-0xB0] spill-single-def "Inlining Arg"
+; V191 tmp188 [V191,T40] ( 2, 2 ) byref -> [ebp-0xB0] spill-single-def "Inlining Arg"
;* V192 tmp189 [V192 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ; V193 tmp190 [V193 ] ( 3, 1.50) byref -> [ebp-0x38] do-not-enreg[P] must-init pinned "Inline stloc first use temp" ; V194 tmp191 [V194,T61] ( 3, 1.50) int -> ecx ;* V195 tmp192 [V195 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V196 tmp193 [V196,T92] ( 2, 1 ) int -> esi single-def "Inline stloc first use temp"
+; V196 tmp193 [V196,T91] ( 2, 1 ) int -> esi single-def "Inline stloc first use temp"
;* V197 tmp194 [V197 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" ;* V198 tmp195 [V198 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V199 tmp196 [V199,T25] ( 3, 3 ) ref -> [ebp-0xB4] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]> @@ -229,26 +229,26 @@ ;* V218 tmp215 [V218 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x4)" P-INDEP ;* V219 tmp216 [V219 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP ;* V220 tmp217 [V220 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x4)" P-INDEP
-;* V221 tmp218 [V221,T103] ( 0, 0 ) int -> zero-ref single-def "field V19._value (fldOffset=0x0)" P-INDEP
+;* V221 tmp218 [V221,T102] ( 0, 0 ) int -> zero-ref single-def "field V19._value (fldOffset=0x0)" P-INDEP
;* V222 tmp219 [V222 ] ( 0, 0 ) int -> zero-ref single-def "field V20._value (fldOffset=0x0)" P-INDEP ;* V223 tmp220 [V223 ] ( 0, 0 ) int -> zero-ref single-def "field V21.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V224 tmp221 [V224,T104] ( 0, 0 ) int -> zero-ref single-def "field V21.<End>k__BackingField (fldOffset=0x4)" P-INDEP
+;* V224 tmp221 [V224,T103] ( 0, 0 ) int -> zero-ref single-def "field V21.<End>k__BackingField (fldOffset=0x4)" P-INDEP
;* V225 tmp222 [V225 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP ;* V226 tmp223 [V226 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x4)" P-INDEP
-; V227 tmp224 [V227,T72] ( 2, 1 ) byref -> [ebp-0xB8] spill-single-def "field V23._reference (fldOffset=0x0)" P-INDEP
+; V227 tmp224 [V227,T71] ( 2, 1 ) byref -> [ebp-0xB8] spill-single-def "field V23._reference (fldOffset=0x0)" P-INDEP
; V228 tmp225 [V228,T62] ( 3, 1.50) int -> esi single-def "field V23._length (fldOffset=0x4)" P-INDEP
-; V229 tmp226 [V229,T73] ( 2, 1 ) byref -> eax single-def "field V24._reference (fldOffset=0x0)" P-INDEP -;* V230 tmp227 [V230,T105] ( 0, 0 ) int -> zero-ref single-def "field V24._length (fldOffset=0x4)" P-INDEP
+; V229 tmp226 [V229,T72] ( 2, 1 ) byref -> eax single-def "field V24._reference (fldOffset=0x0)" P-INDEP +;* V230 tmp227 [V230,T104] ( 0, 0 ) int -> zero-ref single-def "field V24._length (fldOffset=0x4)" P-INDEP
;* V231 tmp228 [V231 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP ;* V232 tmp229 [V232 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x4)" P-INDEP ;* V233 tmp230 [V233 ] ( 0, 0 ) byref -> zero-ref single-def "field V30._reference (fldOffset=0x0)" P-INDEP ;* V234 tmp231 [V234 ] ( 0, 0 ) int -> zero-ref single-def "field V30._length (fldOffset=0x4)" P-INDEP ;* V235 tmp232 [V235 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP ;* V236 tmp233 [V236 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x4)" P-INDEP
-; V237 tmp234 [V237,T74] ( 2, 1 ) byref -> [ebp-0xBC] spill-single-def "field V48._reference (fldOffset=0x0)" P-INDEP
+; V237 tmp234 [V237,T73] ( 2, 1 ) byref -> [ebp-0xBC] spill-single-def "field V48._reference (fldOffset=0x0)" P-INDEP
; V238 tmp235 [V238,T63] ( 3, 1.50) int -> esi single-def "field V48._length (fldOffset=0x4)" P-INDEP
-; V239 tmp236 [V239,T75] ( 2, 1 ) byref -> eax single-def "field V49._reference (fldOffset=0x0)" P-INDEP -;* V240 tmp237 [V240,T106] ( 0, 0 ) int -> zero-ref single-def "field V49._length (fldOffset=0x4)" P-INDEP
+; V239 tmp236 [V239,T74] ( 2, 1 ) byref -> eax single-def "field V49._reference (fldOffset=0x0)" P-INDEP +;* V240 tmp237 [V240,T105] ( 0, 0 ) int -> zero-ref single-def "field V49._length (fldOffset=0x4)" P-INDEP
;* V241 tmp238 [V241 ] ( 0, 0 ) byref -> zero-ref "field V50._reference (fldOffset=0x0)" P-INDEP ;* V242 tmp239 [V242 ] ( 0, 0 ) int -> zero-ref "field V50._length (fldOffset=0x4)" P-INDEP ;* V243 tmp240 [V243 ] ( 0, 0 ) byref -> zero-ref single-def "field V55._reference (fldOffset=0x0)" P-INDEP @@ -257,14 +257,14 @@ ;* V246 tmp243 [V246 ] ( 0, 0 ) int -> zero-ref "field V63._length (fldOffset=0x4)" P-INDEP ;* V247 tmp244 [V247 ] ( 0, 0 ) int -> zero-ref single-def "field V65._value (fldOffset=0x0)" P-INDEP ;* V248 tmp245 [V248 ] ( 0, 0 ) int -> zero-ref single-def "field V66._value (fldOffset=0x0)" P-INDEP
-; V249 tmp246 [V249,T76] ( 2, 1 ) byref -> [ebp-0xC0] spill-single-def "field V67._reference (fldOffset=0x0)" P-INDEP -; V250 tmp247 [V250,T93] ( 2, 1 ) int -> esi single-def "field V67._length (fldOffset=0x4)" P-INDEP
+; V249 tmp246 [V249,T75] ( 2, 1 ) byref -> [ebp-0xC0] spill-single-def "field V67._reference (fldOffset=0x0)" P-INDEP +; V250 tmp247 [V250,T92] ( 2, 1 ) int -> esi single-def "field V67._length (fldOffset=0x4)" P-INDEP
;* V251 tmp248 [V251 ] ( 0, 0 ) int -> zero-ref single-def "field V68.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V252 tmp249 [V252,T107] ( 0, 0 ) int -> zero-ref single-def "field V68.<End>k__BackingField (fldOffset=0x4)" P-INDEP
+;* V252 tmp249 [V252,T106] ( 0, 0 ) int -> zero-ref single-def "field V68.<End>k__BackingField (fldOffset=0x4)" P-INDEP
;* V253 tmp250 [V253 ] ( 0, 0 ) int -> zero-ref single-def "field V69.Item1 (fldOffset=0x0)" P-INDEP ;* V254 tmp251 [V254 ] ( 0, 0 ) int -> zero-ref single-def "field V69.Item2 (fldOffset=0x4)" P-INDEP
-; V255 tmp252 [V255,T77] ( 2, 1 ) byref -> eax single-def "field V72._reference (fldOffset=0x0)" P-INDEP -; V256 tmp253 [V256,T94] ( 2, 1 ) int -> esi single-def "field V72._length (fldOffset=0x4)" P-INDEP
+; V255 tmp252 [V255,T76] ( 2, 1 ) byref -> eax single-def "field V72._reference (fldOffset=0x0)" P-INDEP +; V256 tmp253 [V256,T93] ( 2, 1 ) int -> esi single-def "field V72._length (fldOffset=0x4)" P-INDEP
;* V257 tmp254 [V257 ] ( 0, 0 ) int -> zero-ref "field V73._value (fldOffset=0x0)" P-INDEP ;* V258 tmp255 [V258 ] ( 0, 0 ) int -> zero-ref "field V74._value (fldOffset=0x0)" P-INDEP ;* V259 tmp256 [V259 ] ( 0, 0 ) int -> zero-ref "field V75._value (fldOffset=0x0)" P-INDEP @@ -280,10 +280,10 @@ ;* V269 tmp266 [V269 ] ( 0, 0 ) int -> zero-ref single-def "field V89._length (fldOffset=0x4)" P-INDEP ;* V270 tmp267 [V270 ] ( 0, 0 ) byref -> zero-ref single-def "field V97._reference (fldOffset=0x0)" P-INDEP ;* V271 tmp268 [V271 ] ( 0, 0 ) int -> zero-ref "field V97._length (fldOffset=0x4)" P-INDEP
-; V272 tmp269 [V272,T78] ( 2, 1 ) byref -> [ebp-0xC4] spill-single-def "field V99._reference (fldOffset=0x0)" P-INDEP
+; V272 tmp269 [V272,T77] ( 2, 1 ) byref -> [ebp-0xC4] spill-single-def "field V99._reference (fldOffset=0x0)" P-INDEP
; V273 tmp270 [V273,T65] ( 3, 1.50) int -> [ebp-0x3C] spill-single-def "field V99._length (fldOffset=0x4)" P-INDEP
-; V274 tmp271 [V274,T79] ( 2, 1 ) byref -> ecx single-def "field V100._reference (fldOffset=0x0)" P-INDEP -;* V275 tmp272 [V275,T108] ( 0, 0 ) int -> zero-ref single-def "field V100._length (fldOffset=0x4)" P-INDEP
+; V274 tmp271 [V274,T78] ( 2, 1 ) byref -> ecx single-def "field V100._reference (fldOffset=0x0)" P-INDEP +;* V275 tmp272 [V275,T107] ( 0, 0 ) int -> zero-ref single-def "field V100._length (fldOffset=0x4)" P-INDEP
;* V276 tmp273 [V276 ] ( 0, 0 ) byref -> zero-ref "field V101._reference (fldOffset=0x0)" P-INDEP ;* V277 tmp274 [V277 ] ( 0, 0 ) int -> zero-ref "field V101._length (fldOffset=0x4)" P-INDEP ;* V278 tmp275 [V278 ] ( 0, 0 ) byref -> zero-ref single-def "field V106._reference (fldOffset=0x0)" P-INDEP @@ -295,14 +295,14 @@ ;* V284 tmp281 [V284 ] ( 0, 0 ) int -> zero-ref single-def "field V117.<End>k__BackingField (fldOffset=0x4)" P-INDEP ;* V285 tmp282 [V285 ] ( 0, 0 ) int -> zero-ref single-def "field V118._value (fldOffset=0x0)" P-INDEP ;* V286 tmp283 [V286 ] ( 0, 0 ) int -> zero-ref single-def "field V119._value (fldOffset=0x0)" P-INDEP
-; V287 tmp284 [V287,T80] ( 2, 1 ) byref -> [ebp-0xC8] spill-single-def "field V120._reference (fldOffset=0x0)" P-INDEP -; V288 tmp285 [V288,T95] ( 2, 1 ) int -> ebx single-def "field V120._length (fldOffset=0x4)" P-INDEP
+; V287 tmp284 [V287,T79] ( 2, 1 ) byref -> [ebp-0xC8] spill-single-def "field V120._reference (fldOffset=0x0)" P-INDEP +; V288 tmp285 [V288,T94] ( 2, 1 ) int -> ebx single-def "field V120._length (fldOffset=0x4)" P-INDEP
;* V289 tmp286 [V289 ] ( 0, 0 ) int -> zero-ref single-def "field V121.<Start>k__BackingField (fldOffset=0x0)" P-INDEP ;* V290 tmp287 [V290 ] ( 0, 0 ) int -> zero-ref single-def "field V121.<End>k__BackingField (fldOffset=0x4)" P-INDEP ;* V291 tmp288 [V291 ] ( 0, 0 ) int -> zero-ref single-def "field V122.Item1 (fldOffset=0x0)" P-INDEP ;* V292 tmp289 [V292 ] ( 0, 0 ) int -> zero-ref single-def "field V122.Item2 (fldOffset=0x4)" P-INDEP
-; V293 tmp290 [V293,T81] ( 2, 1 ) byref -> eax single-def "field V125._reference (fldOffset=0x0)" P-INDEP -; V294 tmp291 [V294,T96] ( 2, 1 ) int -> ebx single-def "field V125._length (fldOffset=0x4)" P-INDEP
+; V293 tmp290 [V293,T80] ( 2, 1 ) byref -> eax single-def "field V125._reference (fldOffset=0x0)" P-INDEP +; V294 tmp291 [V294,T95] ( 2, 1 ) int -> ebx single-def "field V125._length (fldOffset=0x4)" P-INDEP
;* V295 tmp292 [V295 ] ( 0, 0 ) int -> zero-ref "field V126._value (fldOffset=0x0)" P-INDEP ;* V296 tmp293 [V296 ] ( 0, 0 ) int -> zero-ref "field V127._value (fldOffset=0x0)" P-INDEP ;* V297 tmp294 [V297 ] ( 0, 0 ) int -> zero-ref "field V128._value (fldOffset=0x0)" P-INDEP @@ -318,10 +318,10 @@ ;* V307 tmp304 [V307 ] ( 0, 0 ) int -> zero-ref single-def "field V142._length (fldOffset=0x4)" P-INDEP ;* V308 tmp305 [V308 ] ( 0, 0 ) byref -> zero-ref single-def "field V150._reference (fldOffset=0x0)" P-INDEP ...

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 6 4 1 1 -76 +15
benchmarks.run_tiered.windows.x86.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.windows.x86.checked.mch 8 3 5 0 -47 +210
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 33 21 11 1 -222 +61
librariestestsnotieredcompilation.run.windows.x86.Release.mch 3 3 0 0 -20 +0
realworld.run.windows.x86.checked.mch 0 0 0 0 -0 +0
50 31 17 2 -365 +286

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x86.checked.mch 24,475 4 24,471 13 (0.05%) 13 (0.05%)
benchmarks.run_pgo.windows.x86.checked.mch 119,515 42,004 77,511 348 (0.29%) 348 (0.29%)
benchmarks.run_tiered.windows.x86.checked.mch 47,896 28,726 19,170 11 (0.02%) 11 (0.02%)
coreclr_tests.run.windows.x86.checked.mch 574,838 320,010 254,828 569 (0.10%) 569 (0.10%)
libraries.crossgen2.windows.x86.checked.mch 241,911 15 241,896 16 (0.01%) 16 (0.01%)
libraries.pmi.windows.x86.checked.mch 303,525 6 303,519 707 (0.23%) 707 (0.23%)
libraries_tests.run.windows.x86.Release.mch 632,898 429,177 203,721 2,910 (0.46%) 2,911 (0.46%)
librariestestsnotieredcompilation.run.windows.x86.Release.mch 315,245 21,872 293,373 508 (0.16%) 510 (0.16%)
realworld.run.windows.x86.checked.mch 35,971 3 35,968 11 (0.03%) 11 (0.03%)
2,296,274 841,817 1,454,457 5,093 (0.22%) 5,096 (0.22%)

jit-analyze output

benchmarks.run_pgo.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: 45222512 (overridden on cmd)
Total bytes of diff: 45222451 (overridden on cmd)
Total bytes of delta: -61 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -3636 : 82042.dasm (-100.00 % of base)
       -3425 : 106617.dasm (-100.00 % of base)
       -1467 : 78739.dasm (-100.00 % of base)
       -1338 : 14435.dasm (-100.00 % of base)
        -431 : 89589.dasm (-100.00 % of base)
        -337 : 75115.dasm (-100.00 % of base)

6 total files with Code Size differences (6 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -3636 (-100.00 % of base) : 82042.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:AddSynthesizedReturnTypeAttributes(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,byref):this (Tier1)
       -3425 (-100.00 % of base) : 106617.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint],System.Span`1[uint]) (Tier1)
       -1467 (-100.00 % of base) : 78739.dasm - Microsoft.Cci.MetadataWriter:WriteInstructions(System.Reflection.Metadata.Blob,System.Collections.Immutable.ImmutableArray`1[ubyte],byref,byref):this (Tier0-FullOpts)
       -1338 (-100.00 % of base) : 14435.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)
        -431 (-100.00 % of base) : 89589.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
        -337 (-100.00 % of base) : 75115.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol+<>c:<.ctor>b__17_1(Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte:this (Tier1)

Top method improvements (percentages):
       -1467 (-100.00 % of base) : 78739.dasm - Microsoft.Cci.MetadataWriter:WriteInstructions(System.Reflection.Metadata.Blob,System.Collections.Immutable.ImmutableArray`1[ubyte],byref,byref):this (Tier0-FullOpts)
        -337 (-100.00 % of base) : 75115.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol+<>c:<.ctor>b__17_1(Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte:this (Tier1)
       -3636 (-100.00 % of base) : 82042.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:AddSynthesizedReturnTypeAttributes(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,byref):this (Tier1)
       -3425 (-100.00 % of base) : 106617.dasm - System.Numerics.BigIntegerCalculator:Divide(System.ReadOnlySpan`1[uint],System.ReadOnlySpan`1[uint],System.Span`1[uint]) (Tier1)
       -1338 (-100.00 % of base) : 14435.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)
        -431 (-100.00 % of base) : 89589.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)

6 total methods with Code Size differences (6 improved, 0 regressed).


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: 309180492 (overridden on cmd)
Total bytes of diff: 309180655 (overridden on cmd)
Total bytes of delta: 163 (0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -6746 : 231337.dasm (-100.00 % of base)
       -6746 : 276985.dasm (-100.00 % of base)
       -1291 : 498009.dasm (-100.00 % of base)
        -575 : 342492.dasm (-100.00 % of base)
        -448 : 371910.dasm (-100.00 % of base)
        -292 : 370780.dasm (-100.00 % of base)
        -211 : 281383.dasm (-100.00 % of base)
        -176 : 517553.dasm (-100.00 % of base)

8 total files with Code Size differences (8 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -6746 (-100.00 % of base) : 231337.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
       -6746 (-100.00 % of base) : 276985.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
       -1291 (-100.00 % of base) : 498009.dasm - DynamicObjects.M:createObject():System.Object (FullOpts)
        -575 (-100.00 % of base) : 342492.dasm - System.String:Concat(System.String,System.String,System.String):System.String (Tier1)
        -448 (-100.00 % of base) : 371910.dasm - Internal.JitInterface.CorInfoImpl:TryReadRvaFieldData(Internal.TypeSystem.FieldDesc,uint,int,int):ubyte (Tier1)
        -292 (-100.00 % of base) : 370780.dasm - ILCompiler.ReadyToRunCompilerContext:ComputeHasGCStaticBase(Internal.TypeSystem.FieldDesc):ubyte:this (Tier1)
        -211 (-100.00 % of base) : 281383.dasm - System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
        -176 (-100.00 % of base) : 517553.dasm - AA:reset() (FullOpts)

Top method improvements (percentages):
        -176 (-100.00 % of base) : 517553.dasm - AA:reset() (FullOpts)
       -1291 (-100.00 % of base) : 498009.dasm - DynamicObjects.M:createObject():System.Object (FullOpts)
        -292 (-100.00 % of base) : 370780.dasm - ILCompiler.ReadyToRunCompilerContext:ComputeHasGCStaticBase(Internal.TypeSystem.FieldDesc):ubyte:this (Tier1)
        -448 (-100.00 % of base) : 371910.dasm - Internal.JitInterface.CorInfoImpl:TryReadRvaFieldData(Internal.TypeSystem.FieldDesc,uint,int,int):ubyte (Tier1)
       -6746 (-100.00 % of base) : 231337.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
       -6746 (-100.00 % of base) : 276985.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
        -211 (-100.00 % of base) : 281383.dasm - System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this (FullOpts)
        -575 (-100.00 % of base) : 342492.dasm - System.String:Concat(System.String,System.String,System.String):System.String (Tier1)

8 total methods with Code Size differences (8 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: 185842234 (overridden on cmd)
Total bytes of diff: 185842073 (overridden on cmd)
Total bytes of delta: -161 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -7424 : 78105.dasm (-100.00 % of base)
       -6895 : 62716.dasm (-100.00 % of base)
       -4850 : 72852.dasm (-100.00 % of base)
       -4526 : 575133.dasm (-100.00 % of base)
       -4488 : 158592.dasm (-100.00 % of base)
       -2945 : 160216.dasm (-100.00 % of base)
       -2652 : 160131.dasm (-100.00 % of base)
       -2637 : 290447.dasm (-100.00 % of base)
       -2584 : 582695.dasm (-100.00 % of base)
       -2494 : 67170.dasm (-100.00 % of base)
       -2328 : 83610.dasm (-100.00 % of base)
       -2285 : 57167.dasm (-100.00 % of base)
       -2194 : 586880.dasm (-100.00 % of base)
       -1755 : 579589.dasm (-100.00 % of base)
       -1749 : 397718.dasm (-100.00 % of base)
       -1069 : 508908.dasm (-100.00 % of base)
        -853 : 473854.dasm (-100.00 % of base)
        -776 : 508909.dasm (-100.00 % of base)
        -744 : 573531.dasm (-100.00 % of base)
        -611 : 360661.dasm (-100.00 % of base)

33 total files with Code Size differences (33 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -7424 (-100.00 % of base) : 78105.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNamedAttributeArgument(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeArgumentSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator:this (Tier1)
       -6895 (-100.00 % of base) : 62716.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
       -4850 (-100.00 % of base) : 72852.dasm - System.Reflection.PortableExecutable.PEHeaders:.ctor(System.IO.Stream,int,ubyte):this (Tier1)
       -4526 (-100.00 % of base) : 575133.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
       -4488 (-100.00 % of base) : 158592.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
       -2945 (-100.00 % of base) : 160216.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MemberGroupFinalValidation(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):ubyte:this (Tier1)
       -2652 (-100.00 % of base) : 160131.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeOrAliasOrKeyword(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations:this (Tier1)
       -2637 (-100.00 % of base) : 290447.dasm - System.IO.Tests.BaseSymbolicLinks_FileSystem:ResolveLinkTarget_Succeeds(System.String,ubyte):this (Tier1)
       -2584 (-100.00 % of base) : 582695.dasm - Microsoft.CodeAnalysis.CSharp.LocalDataFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:GetOrCreateSlot(Microsoft.CodeAnalysis.CSharp.Symbol,int,ubyte,ubyte):int:this (Tier1)
       -2494 (-100.00 % of base) : 67170.dasm - System.Reflection.PortableExecutable.PEReader:.ctor(System.IO.Stream,int,int):this (Tier1)
       -2328 (-100.00 % of base) : 83610.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeOrAliasOrKeyword(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations:this (Tier1)
       -2285 (-100.00 % of base) : 57167.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeOrAliasOrKeyword(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations:this (Tier1)
       -2194 (-100.00 % of base) : 586880.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConditionalOperator(Microsoft.CodeAnalysis.CSharp.BoundConditionalOperator,ubyte):this (Tier1)
       -1755 (-100.00 % of base) : 579589.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseMethodOrAccessorBodyBlock(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax],ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax:this (Tier1)
       -1749 (-100.00 % of base) : 397718.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
       -1069 (-100.00 % of base) : 508908.dasm - System.Linq.Expressions.Compiler.VariableBinder:VisitConstant(System.Linq.Expressions.ConstantExpression):System.Linq.Expressions.Expression:this (Tier1)
        -853 (-100.00 % of base) : 473854.dasm - System.Linq.Expressions.Compiler.ILGen:CanEmitConstant(System.Object,System.Type):ubyte (Tier1)
        -776 (-100.00 % of base) : 508909.dasm - System.Linq.Expressions.Compiler.ILGen:CanEmitConstant(System.Object,System.Type):ubyte (Tier1)
        -744 (-100.00 % of base) : 573531.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:Create(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol,System.Reflection.Metadata.PropertyDefinitionHandle,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol):Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol (Tier1)
        -611 (-100.00 % of base) : 360661.dasm - Xunit.Assert+<RecordExceptionAsync>d__126:MoveNext():this (Tier1)

Top method improvements (percentages):
       -1749 (-100.00 % of base) : 397718.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
       -7424 (-100.00 % of base) : 78105.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNamedAttributeArgument(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeArgumentSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator:this (Tier1)
       -2285 (-100.00 % of base) : 57167.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeOrAliasOrKeyword(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations:this (Tier1)
       -2652 (-100.00 % of base) : 160131.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeOrAliasOrKeyword(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations:this (Tier1)
       -2328 (-100.00 % of base) : 83610.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeOrAliasOrKeyword(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations:this (Tier1)
       -2945 (-100.00 % of base) : 160216.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MemberGroupFinalValidation(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):ubyte:this (Tier1)
       -2194 (-100.00 % of base) : 586880.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConditionalOperator(Microsoft.CodeAnalysis.CSharp.BoundConditionalOperator,ubyte):this (Tier1)
       -2584 (-100.00 % of base) : 582695.dasm - Microsoft.CodeAnalysis.CSharp.LocalDataFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:GetOrCreateSlot(Microsoft.CodeAnalysis.CSharp.Symbol,int,ubyte,ubyte):int:this (Tier1)
        -744 (-100.00 % of base) : 573531.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:Create(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol,System.Reflection.Metadata.PropertyDefinitionHandle,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol):Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol (Tier1)
        -337 (-100.00 % of base) : 163056.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol+<>c:<.ctor>b__17_1(Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte:this (Tier1)
        -337 (-100.00 % of base) : 164072.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol+<>c:<.ctor>b__17_1(Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte:this (Tier1)
       -4526 (-100.00 % of base) : 575133.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
       -6895 (-100.00 % of base) : 62716.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
       -4488 (-100.00 % of base) : 158592.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
       -1755 (-100.00 % of base) : 579589.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseMethodOrAccessorBodyBlock(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax],ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlockSyntax:this (Tier1)
        -312 (-100.00 % of base) : 163291.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:ConvertToKeyword(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken (Tier1)
        -250 (-100.00 % of base) : 72182.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:ConvertToKeyword(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken (Tier1)
        -312 (-100.00 % of base) : 165158.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:ConvertToKeyword(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken (Tier1)
        -308 (-100.00 % of base) : 46706.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:ConvertToKeyword(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken (Tier1)
        -308 (-100.00 % of base) : 63200.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:ConvertToKeyword(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken (Tier1)

33 total methods with Code Size differences (33 improved, 0 regressed).


librariestestsnotieredcompilation.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: 102197516 (overridden on cmd)
Total bytes of diff: 102197496 (overridden on cmd)
Total bytes of delta: -20 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
       -7946 : 185859.dasm (-100.00 % of base)
       -1455 : 149021.dasm (-100.00 % of base)
         -62 : 149564.dasm (-100.00 % of base)

3 total files with Code Size differences (3 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
       -7946 (-100.00 % of base) : 185859.dasm - System.Reflection.Emit.Tests.AssemblySaveAssemblyBuilder:AssemblyWithDifferentTypes():this (FullOpts)
       -1455 (-100.00 % of base) : 149021.dasm - System.SpanTests.ReadOnlySpanTests:AsSpan_StartAndLength(System.String,int,int) (FullOpts)
         -62 (-100.00 % of base) : 149564.dasm - System.SpanTests.ReadOnlySpanTests+<>c__DisplayClass21_0:<StringAsSpanNullNonZeroStartAndLength>b__9():this (FullOpts)

Top method improvements (percentages):
       -7946 (-100.00 % of base) : 185859.dasm - System.Reflection.Emit.Tests.AssemblySaveAssemblyBuilder:AssemblyWithDifferentTypes():this (FullOpts)
       -1455 (-100.00 % of base) : 149021.dasm - System.SpanTests.ReadOnlySpanTests:AsSpan_StartAndLength(System.String,int,int) (FullOpts)
         -62 (-100.00 % of base) : 149564.dasm - System.SpanTests.ReadOnlySpanTests+<>c__DisplayClass21_0:<StringAsSpanNullNonZeroStartAndLength>b__9():this (FullOpts)

3 total methods with Code Size differences (3 improved, 0 regressed).