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