Assembly Diffs

linux arm

Diffs are based on 2,053,507 contexts (830,101 MinOpts, 1,223,406 FullOpts).

MISSED contexts: 71,368 (3.36%)

Overall (-26,072 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 14,773,010 -366
benchmarks.run_pgo.linux.arm.checked.mch 68,606,114 -968
benchmarks.run_tiered.linux.arm.checked.mch 18,109,340 -266
coreclr_tests.run.linux.arm.checked.mch 321,786,766 -5,140
libraries.pmi.linux.arm.checked.mch 49,829,328 -2,900
libraries_tests.run.linux.arm.Release.mch 244,097,424 -11,840
librariestestsnotieredcompilation.run.linux.arm.Release.mch 94,426,298 -3,560
realworld.run.linux.arm.checked.mch 13,618,802 -1,032

FullOpts (-26,072 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 14,411,504 -366
benchmarks.run_pgo.linux.arm.checked.mch 55,932,312 -968
benchmarks.run_tiered.linux.arm.checked.mch 10,725,358 -266
coreclr_tests.run.linux.arm.checked.mch 109,314,330 -5,140
libraries.pmi.linux.arm.checked.mch 49,723,104 -2,900
libraries_tests.run.linux.arm.Release.mch 122,244,916 -11,840
librariestestsnotieredcompilation.run.linux.arm.Release.mch 84,355,560 -3,560
realworld.run.linux.arm.checked.mch 13,183,502 -1,032

Example diffs

benchmarks.run.linux.arm.checked.mch

-34 (-58.62%) : 763.dasm - BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<g_GetCurrentProcessInstructionSets|20>d:MoveNext():ubyte:this (FullOpts)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 27 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 6, 4.50) ref -> r0 this class-hnd single-def <BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<<GetFullInfo>g__GetCurrentProcessInstructionSets|2_0>d>
+; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<<GetFullInfo>g__GetCurrentProcessInstructionSets|2_0>d>
;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref
-; V02 loc1 [V02,T02] ( 3, 1.50) int -> r0 single-def
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 rat0 [V04,T01] ( 3, 6 ) int -> r3 "ReplaceWithLclVar is creating a new local variable"
+; V04 rat0 [V04,T01] ( 2, 4 ) int -> r3 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 0 @@ -24,39 +24,19 @@ G_M6535_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref ; gcrRegs +[r0] ldr r3, [r0+0x08] cmp r3, 27
- bhi SHORT G_M6535_IG05 - movs r2, 1 - lsr r3, r2, r3 - and r3, r3, 1 - cmp r3, 0 - beq SHORT G_M6535_IG04 - ;; size=20 bbWeight=1 PerfScore 8.00 -G_M6535_IG03: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ bhi SHORT G_M6535_IG03
mov r3, -1 str r3, [r0+0x08]
- ldr r0, [r0+0x10] - ; gcrRegs -[r0] - subs r3, r0, 1 - cmp r3, 1 - bls SHORT G_M6535_IG05 - cmp r0, 4 - beq SHORT G_M6535_IG05 - b SHORT G_M6535_IG05 - ;; size=20 bbWeight=0.50 PerfScore 4.50 -G_M6535_IG04: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref - ; gcrRegs +[r0] - mov r3, -1 - str r3, [r0+0x08] - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M6535_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=1 PerfScore 5.00 +G_M6535_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] movs r0, 0 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M6535_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M6535_IG04: ; bbWeight=1, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-Total bytes of code 58, prolog size 6, PerfScore 17.50, instruction count 23, allocated bytes for code 58 (MethodHash=ff50e678) for method BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<<GetFullInfo>g__GetCurrentProcessInstructionSets|2_0>d:MoveNext():ubyte:this (FullOpts)
+Total bytes of code 24, prolog size 6, PerfScore 9.00, instruction count 9, allocated bytes for code 24 (MethodHash=ff50e678) for method BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<<GetFullInfo>g__GetCurrentProcessInstructionSets|2_0>d:MoveNext():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -68,7 +48,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 58 (0x00003a)
+ Function Length : 12 (0x0000c) Actual length = 24 (0x000018)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

-20 (-10.99%) : 31541.dasm - System.Collections.IterateForEach`1[System.Canon]:ImmutableStack():System.Canon:this (FullOpts)

@@ -8,10 +8,10 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
+; V00 this [V00,T02] ( 3, 3 ) ref -> r4 this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
; V01 loc0 [V01,T05] ( 3, 4 ) ref -> r5 ld-addr-op class-hnd <System.__Canon> ;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Collections.Immutable.ImmutableStack`1[System.__Canon]>
-; V03 loc2 [V03 ] ( 10, 31 ) struct ( 8) [sp+0x04] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableStack`1+Enumerator[System.__Canon]>
+; V03 loc2 [V03 ] ( 10, 31 ) struct ( 8) [sp+0x00] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableStack`1+Enumerator[System.__Canon]>
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" @@ -20,52 +20,44 @@ ;* V09 tmp4 [V09,T07] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableStack`1[System.__Canon]> ; V10 tmp5 [V10,T01] ( 2, 8 ) ref -> r0 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableStack`1[System.__Canon]> ; V11 tmp6 [V11,T00] ( 2, 32 ) ref -> r0 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableStack`1[System.__Canon]>
-; V12 tmp7 [V12 ] ( 2, 3 ) ref -> [sp+0x04] do-not-enreg[X] addr-exposed "field V03._originalStack (fldOffset=0x0)" P-DEP -; V13 tmp8 [V13 ] ( 9, 29 ) ref -> [sp+0x08] do-not-enreg[X] addr-exposed "field V03._remainingStack (fldOffset=0x4)" P-DEP
+; V12 tmp7 [V12 ] ( 2, 3 ) ref -> [sp+0x00] do-not-enreg[X] addr-exposed "field V03._originalStack (fldOffset=0x0)" P-DEP +; V13 tmp8 [V13 ] ( 9, 29 ) ref -> [sp+0x04] do-not-enreg[X] addr-exposed "field V03._remainingStack (fldOffset=0x4)" P-DEP
;* V14 cse0 [V14,T08] ( 0, 0 ) int -> zero-ref hoist "CSE - aggressive"
-; V15 rat0 [V15,T04] ( 2, 4 ) int -> r0 "Spilling to split statement for tree"
+;* V15 rat0 [V15,T04] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V16 rat1 [V16,T06] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V17 rat2 [V17,T03] ( 2, 4 ) int -> r0 "fgMakeTemp is creating a new local variable"
+;* V17 rat2 [V17,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M64146_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr} - sub sp, 16 - add r11, sp, 24
+ push {r2,r3,r4,r5,r11,lr} + add r11, sp, 16
movs r1, 0
- str r1, [sp+0x04] // [V03 loc2] - str r1, [sp+0x08] // [V03 loc2+0x04] - str r0, [r11-0x0C]
+ str r1, [sp] // [V03 loc2] + str r1, [sp+0x04] // [V03 loc2+0x04]
mov r4, r0 ; gcrRegs +[r4]
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=16 bbWeight=1 PerfScore 6.00
G_M64146_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz movs r5, 0 ldr r0, [r4+0x50] ; gcrRegs +[r0]
- add r1, sp, 4
+ add r1, sp, 0
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] ldr r2, [r0] blx r3 // System.Collections.Immutable.ImmutableStack`1[System.__Canon]:GetEnumerator():System.Collections.Immutable.ImmutableStack`1+Enumerator[System.__Canon]:this ; gcrRegs -[r0] +[r5]
- ldr r0, [r4] - ldr r0, [r0+0x24] - ldr r0, [r0] - ldr r0, [r0+0x10] - cmp r0, 0 - bne SHORT G_M64146_IG04
b SHORT G_M64146_IG04
- ;; size=34 bbWeight=1 PerfScore 15.00
+ ;; size=22 bbWeight=1 PerfScore 9.00
G_M64146_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r5]
- ldr r0, [sp+0x08]
+ ldr r0, [sp+0x04]
; gcrRegs +[r0] cmp r0, 0 beq SHORT G_M64146_IG10
- ldr r0, [sp+0x08]
+ ldr r0, [sp+0x04]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -76,36 +68,36 @@ G_M64146_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ;; size=24 bbWeight=2 PerfScore 20.00 G_M64146_IG04: ; bbWeight=8, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0]
- ldr r0, [sp+0x08]
+ ldr r0, [sp+0x04]
; gcrRegs +[r0] cmp r0, 0 bne SHORT G_M64146_IG06 ;; size=6 bbWeight=8 PerfScore 24.00 G_M64146_IG05: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0]
- ldr r0, [sp+0x04]
+ ldr r0, [sp]
; gcrRegs +[r0]
- str r0, [sp+0x08] // [V13 tmp8]
+ str r0, [sp+0x04] // [V13 tmp8]
b SHORT G_M64146_IG07 ;; size=6 bbWeight=2 PerfScore 6.00 G_M64146_IG06: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0]
- ldr r0, [sp+0x08] // [V13 tmp8]
+ ldr r0, [sp+0x04] // [V13 tmp8]
; gcrRegs +[r0] ldr r0, [r0+0x08] cmp r0, 0 beq SHORT G_M64146_IG07
- ldr r0, [sp+0x08] // [V13 tmp8]
+ ldr r0, [sp+0x04] // [V13 tmp8]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] ldr r2, [r0] blx r3 // System.Collections.Immutable.ImmutableStack`1[System.__Canon]:Pop():System.Collections.Immutable.ImmutableStack`1[System.__Canon]:this
- str r0, [sp+0x08] // [V13 tmp8]
+ str r0, [sp+0x04] // [V13 tmp8]
;; size=26 bbWeight=2 PerfScore 22.00 G_M64146_IG07: ; bbWeight=8, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0]
- ldr r0, [sp+0x08] // [V13 tmp8]
+ ldr r0, [sp+0x04] // [V13 tmp8]
; gcrRegs +[r0] ldr r0, [r0+0x08] cmp r0, 0 @@ -117,9 +109,8 @@ G_M64146_IG08: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ; gcrRegs +[r0] ;; size=2 bbWeight=1 PerfScore 1.00 G_M64146_IG09: ; bbWeight=1, epilog, nogc, extend
- add sp, 16 - pop {r4,r5,r11,pc} - ;; size=6 bbWeight=1 PerfScore 2.00
+ pop {r2,r3,r4,r5,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00
G_M64146_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r0 r5] movw r0, 0xd1ff @@ -145,7 +136,7 @@ G_M64146_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr bkpt ;; size=48 bbWeight=0 PerfScore 0.00
-Total bytes of code 182, prolog size 20, PerfScore 130.00, instruction count 73, allocated bytes for code 182 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
+Total bytes of code 162, prolog size 14, PerfScore 121.00, instruction count 64, allocated bytes for code 162 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -157,7 +148,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 91 (0x0005b) Actual length = 182 (0x0000b6)
+ Function Length : 81 (0x00051) Actual length = 162 (0x0000a2)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -165,7 +156,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 04 add sp, sp, #16 ; opsize 16 - A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32 + FF end
FF end

-12 (-8.11%) : 23775.dasm - System.Collections.IterateForEach`1[System.Canon]:ImmutableArray():System.Canon:this (FullOpts)

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 5, 5 ) ref -> r4 this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
+; V00 this [V00,T01] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
; V01 loc0 [V01,T06] ( 3, 4 ) ref -> r5 ld-addr-op class-hnd <System.__Canon> ; V02 loc1 [V02 ] ( 2, 2 ) struct ( 4) [sp+0x08] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]> ; V03 loc2 [V03 ] ( 8, 33 ) struct ( 8) [sp+0x00] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[System.__Canon]> @@ -26,9 +26,9 @@ ; V15 rat0 [V15,T04] ( 3, 4.40) int -> r0 "Spilling to split statement for tree" ; V16 rat1 [V16,T07] ( 3, 4 ) int -> r2 "runtime lookup" ; V17 rat2 [V17,T02] ( 3, 5.60) int -> r2 "fgMakeTemp is creating a new local variable"
-; V18 rat3 [V18,T05] ( 2, 4 ) int -> r0 "Spilling to split statement for tree"
+;* V18 rat3 [V18,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V19 rat4 [V19,T08] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V20 rat5 [V20,T03] ( 2, 4 ) int -> r0 "fgMakeTemp is creating a new local variable"
+;* V20 rat5 [V20,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 16 @@ -78,14 +78,8 @@ G_M57349_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ldr r3, [r3] blx r3 // System.Collections.Immutable.ImmutableArray`1[System.__Canon]:GetEnumerator():System.Collections.Immutable.ImmutableArray`1+Enumerator[System.__Canon]:this ; gcr arg pop 0
- ldr r0, [r4] - ldr r0, [r0+0x24] - ldr r0, [r0] - ldr r0, [r0+0x14] - cmp r0, 0 - bne SHORT G_M57349_IG07
b SHORT G_M57349_IG07
- ;; size=30 bbWeight=1 PerfScore 13.00
+ ;; size=18 bbWeight=1 PerfScore 7.00
G_M57349_IG06: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r5] ldr r0, [sp+0x04] // [V12 tmp7] @@ -134,7 +128,7 @@ G_M57349_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 24, PerfScore 112.00, instruction count 62, allocated bytes for code 148 (MethodHash=874a1ffa) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
+Total bytes of code 136, prolog size 24, PerfScore 106.00, instruction count 56, allocated bytes for code 136 (MethodHash=874a1ffa) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -146,7 +140,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 74 (0x0004a) Actual length = 148 (0x000094)
+ Function Length : 68 (0x00044) Actual length = 136 (0x000088)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-6 (-0.31%) : 7227.dasm - System.IO.Strategies.BufferedFileStreamStrategy+d__57:MoveNext():this (FullOpts)

@@ -61,7 +61,7 @@ ;* V50 tmp33 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> ; V51 tmp34 [V51,T21] ( 3, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task> ; V52 tmp35 [V52,T38] ( 2, 4 ) int -> r1 "Inlining Arg"
-; V53 tmp36 [V53,T09] ( 4, 8 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder>
+; V53 tmp36 [V53,T08] ( 4, 8 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.Text.StringBuilder>
;* V54 tmp37 [V54 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.StringBuilder+AppendInterpolatedStringHandler> ; V55 tmp38 [V55,T05] ( 5, 10 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.Text.StringBuilder> ; V56 tmp39 [V56,T42] ( 3, 3 ) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>> @@ -74,7 +74,7 @@ ;* V63 tmp46 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.String> ;* V64 tmp47 [V64 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V65 tmp48 [V65,T06] ( 5, 10 ) ref -> r2 class-hnd single-def "Inlining Arg" <ubyte[]>
-; V66 tmp49 [V66,T08] ( 5, 8 ) int -> r3 "Inlining Arg"
+; V66 tmp49 [V66,T09] ( 4, 8 ) int -> r3 "Inlining Arg"
;* V67 tmp50 [V67 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask> ;* V68 tmp51 [V68 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Threading.Tasks.ValueTask> ;* V69 tmp52 [V69 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable> @@ -288,7 +288,7 @@ G_M60055_IG04: ; bbWeight=1, gcVars=000000000000000000000001 {V00}, gcref blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b SHORT G_M60055_IG72
+ b SHORT G_M60055_IG71
;; size=60 bbWeight=1 PerfScore 22.00 G_M60055_IG05: ; bbWeight=1, gcVars=000000000000000000000003 {V00 V02}, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, gcvars, byref ; gcrRegs +[r5] @@ -335,8 +335,8 @@ G_M60055_IG09: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by cmp r6, 0 beq G_M60055_IG29 cmp r6, 1
- beq G_M60055_IG55 - b SHORT G_M60055_IG60
+ beq G_M60055_IG54 + b SHORT G_M60055_IG59
;; size=22 bbWeight=1 PerfScore 9.00 G_M60055_IG10: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz ldr r0, [r5+0x20] @@ -507,7 +507,7 @@ G_M60055_IG22: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ; gcrRegs +[r2] ldr r3, [r5+0x1C] cmp r2, 0
- beq G_M60055_IG50
+ beq G_M60055_IG49
ldr r1, [r2+0x04] cmp r1, r3 blo G_M60055_IG49 @@ -652,7 +652,7 @@ G_M60055_IG28: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b SHORT G_M60055_IG65
+ b SHORT G_M60055_IG64
;; size=68 bbWeight=1 PerfScore 24.00 G_M60055_IG29: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref ; byrRegs +[r4] @@ -812,7 +812,7 @@ G_M60055_IG40: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ldr r6, [sp+0x20] // [V14 loc13] ; gcrRegs +[r6] cmp r6, 0
- beq G_M60055_IG51
+ beq G_M60055_IG50
mov r1, r6 ; gcrRegs +[r1] movw r0, 0xd1ff @@ -823,7 +823,7 @@ G_M60055_IG40: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ; gcrRegs -[r1] +[r0] ; gcr arg pop 0 cmp r0, 0
- bne G_M60055_IG51
+ bne G_M60055_IG50
mov r1, r6 ; gcrRegs +[r1] movw r0, 0xd1ff @@ -851,14 +851,14 @@ G_M60055_IG42: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b blx r3 // System.Diagnostics.Debug:Assert(ubyte) ; gcr arg pop 0 cmp r6, 0
- bne G_M60055_IG52
+ bne G_M60055_IG51
;; size=20 bbWeight=1 PerfScore 7.00 G_M60055_IG43: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r6] ldr r7, [sp+0x20] // [V14 loc13] ; gcrRegs +[r7] cmp r7, 0
- beq G_M60055_IG58
+ beq G_M60055_IG57
mov r1, r7 ; gcrRegs +[r1] movw r0, 0xd1ff @@ -869,7 +869,7 @@ G_M60055_IG43: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre ; gcrRegs -[r1] +[r0] ; gcr arg pop 0 cmp r0, 0
- bne G_M60055_IG58
+ bne G_M60055_IG57
mov r1, r7 ; gcrRegs +[r1] movw r0, 0xd1ff @@ -908,7 +908,7 @@ G_M60055_IG45: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ; gcrRegs -[r1] +[r0] ; gcr arg pop 0 cmp r0, 0
- beq G_M60055_IG59
+ beq G_M60055_IG58
ldr r1, [r0+0x1C] dmb 15 and r1, r1, 0x11000000 @@ -966,7 +966,7 @@ G_M60055_IG47: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre dmb 15 ands r1, r1, 0x1600000 cmp r1, 0
- bne G_M60055_IG63
+ bne G_M60055_IG62
;; size=78 bbWeight=1 PerfScore 29.00 G_M60055_IG48: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz ; gcrRegs -[r6] @@ -1005,7 +1005,7 @@ G_M60055_IG48: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b SHORT G_M60055_IG69
+ b SHORT G_M60055_IG68
;; size=62 bbWeight=1 PerfScore 23.00 G_M60055_IG49: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref movw r3, 0xd1ff @@ -1015,18 +1015,13 @@ G_M60055_IG49: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ; gcr arg pop 0 bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-G_M60055_IG50: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz - cmp r3, 0 - bne SHORT G_M60055_IG49 - b SHORT G_M60055_IG49 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M60055_IG51: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M60055_IG50: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r6] ; byrRegs -[r4] movs r0, 1 b SHORT G_M60055_IG42 ;; size=4 bbWeight=1 PerfScore 2.00
-G_M60055_IG52: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M60055_IG51: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
mov r1, r6 ; gcrRegs +[r1] movw r0, 0xd1ff @@ -1037,16 +1032,16 @@ G_M60055_IG52: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b ; gcrRegs -[r1] +[r0] ; gcr arg pop 0 cmp r0, 0
- beq SHORT G_M60055_IG53
+ beq SHORT G_M60055_IG52
ldr r0, [r0+0x1C] ; gcrRegs -[r0] dmb 15 ands r0, r0, 0x1600000 cmp r0, 0 bne G_M60055_IG43
- b SHORT G_M60055_IG54
+ b SHORT G_M60055_IG53
;; size=42 bbWeight=1 PerfScore 14.00
-G_M60055_IG53: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M60055_IG52: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
mov r0, r6 ; gcrRegs +[r0] ldrsh r1, [sp+0x24] // [V14 loc13+0x04] @@ -1059,7 +1054,7 @@ G_M60055_IG53: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b cmp r0, 0 bne G_M60055_IG43 ;; size=24 bbWeight=1 PerfScore 8.00
-G_M60055_IG54: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M60055_IG53: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
movs r0, 2 str r0, [sp+0x4C] // [V01 loc0] ldr r4, [sp+0x14] // [V00 this] @@ -1093,20 +1088,20 @@ G_M60055_IG54: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b SHORT G_M60055_IG67
+ b SHORT G_M60055_IG66
;; size=68 bbWeight=1 PerfScore 24.00
-G_M60055_IG55: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
+G_M60055_IG54: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
; byrRegs +[r4] add r0, r4, 32 ; byrRegs +[r0] ;; size=4 bbWeight=1 PerfScore 1.00
-G_M60055_IG56: ; bbWeight=1, nogc, extend
+G_M60055_IG55: ; bbWeight=1, nogc, extend
ldr r3, [r0] str r3, [sp+0x20] // [V14 loc13] ldr r3, [r0+0x04] str r3, [sp+0x24] // [V14 loc13+0x04] ;; size=8 bbWeight=1 PerfScore 4.00
-G_M60055_IG57: ; bbWeight=1, isz, extend
+G_M60055_IG56: ; bbWeight=1, isz, extend
movs r3, 0 str r3, [r0] str r3, [r0+0x04] @@ -1115,13 +1110,13 @@ G_M60055_IG57: ; bbWeight=1, isz, extend str r3, [r4+0x08] b SHORT G_M60055_IG43 ;; size=16 bbWeight=1 PerfScore 7.00
-G_M60055_IG58: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M60055_IG57: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r7] ; byrRegs -[r0 r4] movs r0, 1 b SHORT G_M60055_IG45 ;; size=4 bbWeight=1 PerfScore 2.00
-G_M60055_IG59: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M60055_IG58: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
mov r0, r7 ; gcrRegs +[r0] ldrsh r1, [sp+0x24] // [V14 loc13+0x04] @@ -1133,18 +1128,18 @@ G_M60055_IG59: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ; gcr arg pop 0 b SHORT G_M60055_IG46 ;; size=20 bbWeight=1 PerfScore 7.00
-G_M60055_IG60: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
+G_M60055_IG59: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
; byrRegs +[r4] add r6, r4, 24 ; byrRegs +[r6] ;; size=4 bbWeight=1 PerfScore 1.00
-G_M60055_IG61: ; bbWeight=1, nogc, extend
+G_M60055_IG60: ; bbWeight=1, nogc, extend
ldr r3, [r6] str r3, [sp+0x18] // [V15 loc14] ldr r3, [r6+0x04] str r3, [sp+0x1C] // [V15 loc14+0x04] ;; size=8 bbWeight=1 PerfScore 4.00
-G_M60055_IG62: ; bbWeight=1, extend
+G_M60055_IG61: ; bbWeight=1, extend
movs r3, 0 str r3, [r6] str r3, [r6+0x04] @@ -1152,7 +1147,7 @@ G_M60055_IG62: ; bbWeight=1, extend str r3, [sp+0x4C] // [V01 loc0] str r3, [r4+0x08] ;; size=14 bbWeight=1 PerfScore 6.00
-G_M60055_IG63: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
+G_M60055_IG62: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
; byrRegs -[r6] ldr r0, [sp+0x18] // [V131 tmp114] ; gcrRegs +[r0] @@ -1161,7 +1156,7 @@ G_M60055_IG63: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ...

-24 (-0.24%) : 12963.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)

@@ -423,16 +423,16 @@ ; V412 cse17 [V412,T146] ( 4, 8 ) int -> r0 "CSE - conservative" ; V413 cse18 [V413,T282] ( 4, 2 ) int -> r0 "CSE - conservative" ; V414 cse19 [V414,T03] ( 88,115.50) int -> [sp+0x110] spill-single-def "CSE - aggressive"
-; V415 rat0 [V415,T339] ( 3, 1.50) int -> r2 "field V52.lo (fldOffset=0x0)" P-INDEP -; V416 rat1 [V416,T340] ( 3, 1.50) int -> r3 "field V52.hi (fldOffset=0x4)" P-INDEP
+; V415 rat0 [V415,T339] ( 2, 1 ) int -> r2 "field V52.lo (fldOffset=0x0)" P-INDEP +; V416 rat1 [V416,T340] ( 2, 1 ) int -> r3 "field V52.hi (fldOffset=0x4)" P-INDEP
; V417 rat2 [V417,T209] ( 8, 4 ) int -> [sp+0x10C] "field V73.lo (fldOffset=0x0)" P-INDEP ; V418 rat3 [V418,T218] ( 7, 3.50) int -> [sp+0x108] "field V73.hi (fldOffset=0x4)" P-INDEP ; V419 rat4 [V419,T201] ( 9, 4.50) int -> [sp+0x104] "field V75.lo (fldOffset=0x0)" P-INDEP ; V420 rat5 [V420,T202] ( 9, 4.50) int -> [sp+0x100] "field V75.hi (fldOffset=0x4)" P-INDEP ; V421 rat6 [V421,T341] ( 2, 1.50) int -> r0 "field V77.lo (fldOffset=0x0)" P-INDEP ; V422 rat7 [V422,T342] ( 2, 1.50) int -> r1 "field V77.hi (fldOffset=0x4)" P-INDEP
-; V423 rat8 [V423,T140] ( 3, 10 ) int -> r0 "field V92.lo (fldOffset=0x0)" P-INDEP -; V424 rat9 [V424,T141] ( 3, 10 ) int -> r3 "field V92.hi (fldOffset=0x4)" P-INDEP
+; V423 rat8 [V423,T140] ( 2, 8 ) int -> r0 "field V92.lo (fldOffset=0x0)" P-INDEP +; V424 rat9 [V424,T141] ( 2, 8 ) int -> r3 "field V92.hi (fldOffset=0x4)" P-INDEP
; V425 rat10 [V425,T142] ( 3, 10 ) int -> r0 "field V101.lo (fldOffset=0x0)" P-INDEP ; V426 rat11 [V426,T143] ( 3, 10 ) int -> r3 "field V101.hi (fldOffset=0x4)" P-INDEP ; V427 rat12 [V427,T62] ( 8, 16 ) int -> [sp+0xFC] "field V121.lo (fldOffset=0x0)" P-INDEP @@ -550,7 +550,7 @@ G_M11467_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b ldr r3, [r9+0x08] blx r3 // <unknown method> ; gcrRegs -[r0-r1 r5]
- b G_M11467_IG277
+ b G_M11467_IG275
;; size=30 bbWeight=0.50 PerfScore 4.50 G_M11467_IG04: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r5-r7] @@ -611,14 +611,14 @@ G_M11467_IG05: ; bbWeight=0.50, gcVars=0000000000000000000000000000000000 ; gcrRegs +[r3] ldr r0, [r3+0x04] cmp r0, 0
- blt G_M11467_IG279
+ blt G_M11467_IG277
str r0, [sp+0x32C] // [V05 loc2] cmp r0, 0 ble G_M11467_IG45 movs r0, 0 ldr r1, [r3+0x04] cmp r0, r1
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
ldrb lr, [r3+0x08] str lr, [sp+0x2F8] // [V21 tmp8] cmp lr, 0x80000000 @@ -823,7 +823,7 @@ G_M11467_IG18: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} ; gcrRegs +[r2] ldr r0, [r2+0x04] cmp r3, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -838,7 +838,7 @@ G_M11467_IG19: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} adds r0, r3, 1 ldr r1, [r2+0x04] cmp r0, r1
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -854,7 +854,7 @@ G_M11467_IG20: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} adds r0, r3, 2 ldr r1, [r2+0x04] cmp r0, r1
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -870,7 +870,7 @@ G_M11467_IG21: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} ; gcrRegs +[r2] ldr r0, [r2+0x04] cmp r3, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -885,7 +885,7 @@ G_M11467_IG22: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} adds r0, r3, 1 ldr r1, [r2+0x04] cmp r0, r1
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -901,7 +901,7 @@ G_M11467_IG23: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} adds r0, r3, 2 ldr r1, [r2+0x04] cmp r0, r1
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -915,7 +915,7 @@ G_M11467_IG23: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} ldr r0, [r2+0x04] ldr r1, [sp+0x2F0] // [V23 tmp10] cmp r1, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -928,7 +928,7 @@ G_M11467_IG23: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} adds r3, r1, 1 ldr r12, [r2+0x04] cmp r3, r12
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -941,7 +941,7 @@ G_M11467_IG23: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} adds r1, r1, 2 ldr r3, [r2+0x04] cmp r1, r3
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -972,7 +972,7 @@ G_M11467_IG25: ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ; gcrRegs +[lr] ldr r1, [lr+0x04] cmp r3, r1
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r1, lr, 8 ; byrRegs +[r1] str r3, [sp+0x328] // [V06 loc3] @@ -1179,7 +1179,7 @@ G_M11467_IG38: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ; gcrRegs +[r1] ldr r2, [r1+0x04] cmp r3, r2
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r2, r1, 8 ; byrRegs +[r2] lsls r0, r3, 1 @@ -1194,7 +1194,7 @@ G_M11467_IG39: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b adds r2, r3, 1 ldr r0, [r1+0x04] cmp r2, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r2, r1, 8 ; byrRegs +[r2] lsls r0, r3, 1 @@ -1210,7 +1210,7 @@ G_M11467_IG40: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b adds r2, r3, 2 ldr r0, [r1+0x04] cmp r2, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r2, r1, 8 ; byrRegs +[r2] lsls r0, r3, 1 @@ -1226,7 +1226,7 @@ G_M11467_IG41: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ; gcrRegs +[r1] ldr r2, [r1+0x04] cmp r3, r2
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r2, r1, 8 ; byrRegs +[r2] lsls r0, r3, 1 @@ -1241,7 +1241,7 @@ G_M11467_IG42: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b adds r2, r3, 1 ldr r0, [r1+0x04] cmp r2, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r2, r1, 8 ; byrRegs +[r2] lsls r0, r3, 1 @@ -1259,7 +1259,7 @@ G_M11467_IG43: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b adds r0, r3, 2 ldr lr, [r2+0x04] cmp r0, lr
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -1273,7 +1273,7 @@ G_M11467_IG43: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ldr r0, [r2+0x04] ldr r3, [sp+0x2E0] // [V38 tmp25] cmp r3, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -1286,7 +1286,7 @@ G_M11467_IG43: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b add lr, r3, 1 ldr r12, [r2+0x04] cmp lr, r12
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -1300,7 +1300,7 @@ G_M11467_IG43: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ; gcrRegs -[r1] ldr r3, [r2+0x04] cmp r1, r3
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -1365,7 +1365,7 @@ G_M11467_IG46: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} ; GC ptr vars -{V07} blx r3 // <unknown method> ; gcrRegs -[r0-r1 r6]
- b G_M11467_IG107
+ b G_M11467_IG105
;; size=44 bbWeight=0.50 PerfScore 8.00 G_M11467_IG47: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000000000000000200000000000002000000000000000000000000000000000 {V01 V07}, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, gcvars, byref, isz ; GC ptr vars +{V07 V133} @@ -1382,14 +1382,14 @@ G_M11467_IG47: ; bbWeight=0.50, gcVars=0000000000000000000000000000000000 ; gcrRegs +[r1] ldr r2, [r1+0x04] cmp r2, 0
- blt G_M11467_IG279
+ blt G_M11467_IG277
str r2, [sp+0x328] // [V06 loc3] cmp r2, 0
- ble G_M11467_IG106
+ ble G_M11467_IG104
movs r2, 0 ldr r3, [r1+0x04] cmp r2, r3
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r2, r1, 8 ; byrRegs +[r2] ldr r3, [r2] @@ -1401,15 +1401,8 @@ G_M11467_IG47: ; bbWeight=0.50, gcVars=0000000000000000000000000000000000 ldr r3, [sp+0x324] // [V214 tmp201+0x04] and r2, r2, 0 and r3, r3, -0x40000000
- orrs r0, r2, r3
...

-6 (-0.20%) : 17944.dasm - System.IO.Strategies.BufferedFileStreamStrategy+d__37:MoveNext():this (FullOpts)

@@ -70,12 +70,12 @@ ; V59 tmp40 [V59,T41] ( 3, 6 ) int -> r7 "Inlining Arg" ; V60 tmp41 [V60,T42] ( 3, 6 ) int -> r6 "Inlining Arg" ; V61 tmp42 [V61,T05] ( 5, 10 ) ref -> r1 class-hnd single-def "Inlining Arg" <ubyte[]>
-; V62 tmp43 [V62,T15] ( 5, 8 ) int -> r3 "Inlining Arg"
+; V62 tmp43 [V62,T18] ( 4, 8 ) int -> r0 "Inlining Arg"
;* V63 tmp44 [V63 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V64 tmp45 [V64 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V65 tmp46 [V65,T28] ( 6, 6 ) byref -> [sp+0x18] "Inline stloc first use temp" ; V66 tmp47 [V66,T13] ( 8, 8 ) int -> [sp+0x38] "Inline stloc first use temp"
-; V67 tmp48 [V67,T16] ( 4, 8 ) byref -> r9 single-def "Inlining Arg"
+; V67 tmp48 [V67,T15] ( 4, 8 ) byref -> r9 single-def "Inlining Arg"
; V68 tmp49 [V68,T11] ( 9, 9 ) ref -> [sp+0x14] class-hnd spill-single-def "Inline stloc first use temp" <System.Object> ;* V69 tmp50 [V69 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V70 tmp51 [V70 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> @@ -91,7 +91,7 @@ ;* V80 tmp61 [V80 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V81 tmp62 [V81 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V82 tmp63 [V82 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V83 tmp64 [V83,T17] ( 4, 8 ) byref -> r1 single-def "Inlining Arg"
+; V83 tmp64 [V83,T16] ( 4, 8 ) byref -> r1 single-def "Inlining Arg"
;* V84 tmp65 [V84 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]> ; V85 tmp66 [V85,T06] ( 5, 10 ) ref -> r7 class-hnd single-def "Inlining Arg" <System.Object> ; V86 tmp67 [V86,T76] ( 3, 3 ) int -> r0 @@ -174,7 +174,7 @@ ;* V163 tmp144 [V163 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V164 tmp145 [V164,T31] ( 6, 6 ) byref -> [sp+0x10] "Inline stloc first use temp" ; V165 tmp146 [V165,T14] ( 8, 8 ) int -> [sp+0x2C] "Inline stloc first use temp"
-; V166 tmp147 [V166,T18] ( 4, 8 ) byref -> r9 single-def "Inlining Arg"
+; V166 tmp147 [V166,T17] ( 4, 8 ) byref -> r9 single-def "Inlining Arg"
; V167 tmp148 [V167,T12] ( 9, 9 ) ref -> [sp+0x0C] class-hnd spill-single-def "Inline stloc first use temp" <System.Object> ;* V168 tmp149 [V168 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V169 tmp150 [V169 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> @@ -265,7 +265,7 @@ ; V254 tmp235 [V254,T61] ( 2, 4 ) ref -> r1 single-def "argument with side effect" ; V255 PSPSym [V255,T119] ( 1, 1 ) int -> [sp+0x80] do-not-enreg[V] "PSPSym" ; V256 cse0 [V256,T86] ( 3, 3 ) int -> r6 "CSE - conservative"
-; V257 cse1 [V257,T87] ( 3, 3 ) int -> r3 "CSE - conservative"
+; V257 cse1 [V257,T87] ( 3, 3 ) int -> r0 "CSE - conservative"
; V258 cse2 [V258,T88] ( 3, 3 ) int -> r0 "CSE - conservative" ; V259 cse3 [V259,T89] ( 3, 3 ) int -> r1 "CSE - conservative" ; V260 rat0 [V260,T20] ( 4, 8 ) int -> r6 "ReplaceWithLclVar is creating a new local variable" @@ -401,7 +401,7 @@ G_M33324_IG06: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00 blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b G_M33324_IG116
+ b G_M33324_IG115
;; size=62 bbWeight=1 PerfScore 22.00 G_M33324_IG07: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, gcvars, byref, nogc ; gcrRegs +[r5] @@ -450,8 +450,8 @@ G_M33324_IG11: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by movs r1, 0 str r1, [r4+0x0C] ldr r1, [r5+0x20]
- ldr r3, [r5+0x1C] - subs r6, r1, r3
+ ldr r0, [r5+0x1C] + subs r6, r1, r0
cmp r6, 0 ble G_M33324_IG27 ldr r7, [r4+0x20] @@ -468,18 +468,18 @@ G_M33324_IG13: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ldr r1, [r5+0x10] ; gcrRegs +[r1] cmp r1, 0
- beq G_M33324_IG99 - ldr r0, [r1+0x04] - cmp r0, r3
+ beq G_M33324_IG98 + ldr r3, [r1+0x04] + cmp r3, r0
blo G_M33324_IG98
- ldr r0, [r1+0x04] - subs r0, r0, r3 - cmp r0, r6
+ ldr r3, [r1+0x04] + subs r3, r3, r0 + cmp r3, r6
blo G_M33324_IG98 adds r1, 8 ; gcrRegs -[r1] ; byrRegs +[r1]
- adds r7, r1, r3
+ adds r7, r1, r0
; byrRegs +[r7] mov r8, r6 add r9, r4, 24 @@ -621,7 +621,7 @@ G_M33324_IG22: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0090 {r4 r7}, ; gcr arg pop 0 ldr r9, [sp+0x38] // [V66 tmp47] cmp r8, r9
- bhi G_M33324_IG100
+ bhi G_M33324_IG99
ldr r0, [sp+0x18] // [V65 tmp46] ; byrRegs +[r0] mov r1, r7 @@ -643,7 +643,7 @@ G_M33324_IG23: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by cmp r6, r1 bne SHORT G_M33324_IG24 str r6, [sp+0x78] // [V03 loc2]
- b G_M33324_IG104
+ b G_M33324_IG103
;; size=12 bbWeight=1 PerfScore 5.00 G_M33324_IG24: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz cmp r6, 0 @@ -652,7 +652,7 @@ G_M33324_IG24: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ; byrRegs +[r1] ldr r0, [r1+0x08] cmp r6, r0
- bhi G_M33324_IG101
+ bhi G_M33324_IG100
ldr r7, [r1] ; gcrRegs +[r7] ldr r1, [r1+0x04] @@ -1022,7 +1022,7 @@ G_M33324_IG42: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre ldr r0, [r4+0x0C] adds r0, r6, r0 str r0, [sp+0x78] // [V03 loc2]
- b SHORT G_M33324_IG110
+ b SHORT G_M33324_IG109
;; size=10 bbWeight=1 PerfScore 5.00 G_M33324_IG43: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0010 {r4}, byref, isz ; gcrRegs +[r7] @@ -1102,7 +1102,7 @@ G_M33324_IG47: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b SHORT G_M33324_IG106
+ b SHORT G_M33324_IG105
;; size=68 bbWeight=1 PerfScore 24.00 G_M33324_IG48: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, nogc ; byrRegs +[r4] @@ -1212,7 +1212,7 @@ G_M33324_IG55: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b SHORT G_M33324_IG108
+ b SHORT G_M33324_IG107
;; size=76 bbWeight=1 PerfScore 26.00 G_M33324_IG56: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, nogc ; byrRegs +[r4] @@ -1483,7 +1483,7 @@ G_M33324_IG72: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b SHORT G_M33324_IG112
+ b SHORT G_M33324_IG111
;; size=76 bbWeight=1 PerfScore 26.00 G_M33324_IG73: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, nogc ; byrRegs +[r4] @@ -1794,7 +1794,7 @@ G_M33324_IG97: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0050 {r4 r6}, ; gcr arg pop 0 ldr r9, [sp+0x2C] // [V165 tmp146] cmp r8, r9
- bhi SHORT G_M33324_IG100
+ bhi SHORT G_M33324_IG99
ldr r0, [sp+0x10] // [V164 tmp145] ; byrRegs +[r0] mov r1, r6 @@ -1807,7 +1807,7 @@ G_M33324_IG97: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0050 {r4 r6}, blx r3 // <unknown method> ; byrRegs -[r0-r1 r6] ; gcr arg pop 0
- b SHORT G_M33324_IG102
+ b SHORT G_M33324_IG101
;; size=40 bbWeight=1 PerfScore 15.00 G_M33324_IG98: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref movw r3, 0xd1ff @@ -1817,12 +1817,7 @@ G_M33324_IG98: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ; gcr arg pop 0 bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-G_M33324_IG99: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz - cmp r3, 0 - bne SHORT G_M33324_IG98 - b SHORT G_M33324_IG98 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M33324_IG100: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
+G_M33324_IG99: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -1830,7 +1825,7 @@ G_M33324_IG100: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, b ; gcr arg pop 0 bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-G_M33324_IG101: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
+G_M33324_IG100: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
movs r0, 33 movw r3, 0xd1ff movt r3, 0xd1ff @@ -1839,7 +1834,7 @@ G_M33324_IG101: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, b ; gcr arg pop 0 bkpt ;; size=16 bbWeight=0 PerfScore 0.00
-G_M33324_IG102: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
+G_M33324_IG101: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
ldr r0, [r5+0x1C] adds r0, r0, r7 str r0, [r5+0x1C] @@ -1847,10 +1842,10 @@ G_M33324_IG102: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, b adds r0, r0, r7 str r0, [sp+0x78] // [V03 loc2] ;; size=12 bbWeight=1 PerfScore 6.00
-G_M33324_IG103: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
+G_M33324_IG102: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
ldr r0, [sp+0x7C] // [V01 loc0] cmp r0, 0
- bge SHORT G_M33324_IG114
+ bge SHORT G_M33324_IG113
ldr r0, [r5+0x04] ; gcrRegs +[r0] ldrsb r1, [r0] @@ -1862,44 +1857,44 @@ G_M33324_IG103: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, b blx r3 // <unknown method> ; gcrRegs -[r0 r5] ; gcr arg pop 0
- b SHORT G_M33324_IG114
+ b SHORT G_M33324_IG113
;; size=28 bbWeight=1 PerfScore 11.00
-G_M33324_IG104: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, gcvars, byref
+G_M33324_IG103: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, gcvars, byref
; gcrRegs +[r5] ; GC ptr vars +{V01 V02}
- bl G_M33324_IG117
+ bl G_M33324_IG116
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG105: ; bbWeight=1, nogc, isz, extend - b SHORT G_M33324_IG114
+G_M33324_IG104: ; bbWeight=1, nogc, isz, extend + b SHORT G_M33324_IG113
;; size=2 bbWeight=1 PerfScore 1.00
-G_M33324_IG106: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M33324_IG105: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
; byrRegs -[r4]
- bl G_M33324_IG117
+ bl G_M33324_IG116
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG107: ; bbWeight=1, nogc, isz, extend - b SHORT G_M33324_IG116
+G_M33324_IG106: ; bbWeight=1, nogc, isz, extend + b SHORT G_M33324_IG115
;; size=2 bbWeight=1 PerfScore 1.00
-G_M33324_IG108: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref - bl G_M33324_IG117
+G_M33324_IG107: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref + bl G_M33324_IG116
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG109: ; bbWeight=1, nogc, isz, extend
...

benchmarks.run_pgo.linux.arm.checked.mch

-16 (-17.02%) : 90541.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)

@@ -9,27 +9,26 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 8, 6.50) ref -> r2 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]> -; V01 arg1 [V01,T01] ( 4, 3 ) byref -> [sp+0x00] single-def
+; V00 this [V00,T00] ( 7, 5.88) ref -> r2 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]> +; V01 arg1 [V01,T01] ( 4, 3 ) byref -> [sp+0x04] single-def
; V02 loc0 [V02,T02] ( 5, 3.88) int -> r4 ; V03 loc1 [V03,T04] ( 4, 3.25) ref -> r5 class-hnd single-def <<unknown class>> ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V07 cse0 [V07,T06] ( 2, 2 ) int -> r0 "CSE - aggressive"
-; V08 rat0 [V08,T05] ( 2, 2.50) int -> r0 "Spilling to split statement for tree"
+;* V08 rat0 [V08,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V10 rat2 [V10,T03] ( 2, 2.50) int -> r0 "fgMakeTemp is creating a new local variable"
+;* V10 rat2 [V10,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 G_M49890_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push {r2,r3,r4,r5,r11,lr} add r11, sp, 16
- str r0, [r11-0x0C]
mov r2, r0 ; gcrRegs +[r2]
- ;; size=14 bbWeight=1 PerfScore 4.00
+ ;; size=10 bbWeight=1 PerfScore 3.00
G_M49890_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz ; byrRegs +[r1] ldr r0, [r2+0x08] @@ -38,10 +37,10 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, by ; gcrRegs +[r5] ldr r0, [r5+0x04] cmp r0, r4
- bls SHORT G_M49890_IG05
+ bls SHORT G_M49890_IG04
;; size=12 bbWeight=1 PerfScore 6.00 G_M49890_IG03: ; bbWeight=0.62, gcrefRegs=0024 {r2 r5}, byrefRegs=0002 {r1}, byref, isz
- str r1, [sp]
+ str r1, [sp+0x04]
; GC ptr vars +{V01} ldr r0, [r2+0x0C] adds r0, r0, 1 @@ -53,34 +52,26 @@ G_M49890_IG03: ; bbWeight=0.62, gcrefRegs=0024 {r2 r5}, byrefRegs=0002 {r ldr r1, [r0+r3] ; gcrRegs +[r1] ; byrRegs -[r1]
- ldr r0, [sp] // [V01 arg1]
+ ldr r0, [sp+0x04] // [V01 arg1]
movw r12, 0xd1ff movt r12, 0xd1ff ; GC ptr vars -{V01} blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0]
- ldr r0, [r2] - ldr r0, [r0+0x24] - ldr r0, [r0] - ldr r0, [r0+0x0C] - cmp r0, 0 - bne SHORT G_M49890_IG07 - ;; size=42 bbWeight=0.62 PerfScore 11.25 -G_M49890_IG04: ; bbWeight=0.12, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, byref, isz - b SHORT G_M49890_IG07 - ;; size=2 bbWeight=0.12 PerfScore 0.12 -G_M49890_IG05: ; bbWeight=0.38, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref
+ b SHORT G_M49890_IG06 + ;; size=32 bbWeight=0.62 PerfScore 8.12 +G_M49890_IG04: ; bbWeight=0.38, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref
; gcrRegs -[r5] ; byrRegs +[r1] movs r0, 0 str r0, [r1] ;; size=4 bbWeight=0.38 PerfScore 0.75
-G_M49890_IG06: ; bbWeight=0.38, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M49890_IG05: ; bbWeight=0.38, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r1] pop {r2,r3,r4,r5,r11,pc} ;; size=4 bbWeight=0.38 PerfScore 0.38
-G_M49890_IG07: ; bbWeight=0.62, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, gcvars, byref
+G_M49890_IG06: ; bbWeight=0.62, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r5] add r0, r5, 8 ; byrRegs +[r0] @@ -90,11 +81,11 @@ G_M49890_IG07: ; bbWeight=0.62, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5 movs r0, 1 ; byrRegs -[r0] ;; size=12 bbWeight=0.62 PerfScore 3.12
-G_M49890_IG08: ; bbWeight=0.62, epilog, nogc, extend
+G_M49890_IG07: ; bbWeight=0.62, epilog, nogc, extend
pop {r2,r3,r4,r5,r11,pc} ;; size=4 bbWeight=0.62 PerfScore 0.62
-Total bytes of code 94, prolog size 12, PerfScore 26.25, instruction count 38, allocated bytes for code 94 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+Total bytes of code 78, prolog size 8, PerfScore 22.00, instruction count 31, allocated bytes for code 78 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -106,7 +97,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 47 (0x0002f) Actual length = 94 (0x00005e)
+ Function Length : 39 (0x00027) Actual length = 78 (0x00004e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-17.02%) : 159385.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)

@@ -9,27 +9,26 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 8, 7.53) ref -> r2 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]> -; V01 arg1 [V01,T01] ( 4, 3 ) byref -> [sp+0x00] single-def
+; V00 this [V00,T00] ( 7, 6.65) ref -> r2 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]> +; V01 arg1 [V01,T01] ( 4, 3 ) byref -> [sp+0x04] single-def
; V02 loc0 [V02,T03] ( 5, 4.65) int -> r4 ; V03 loc1 [V03,T05] ( 4, 3.76) ref -> r5 class-hnd single-def <<unknown class>> ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V07 cse0 [V07,T06] ( 2, 2 ) int -> r0 "CSE - aggressive"
-; V08 rat0 [V08,T04] ( 2, 3.53) int -> r0 "Spilling to split statement for tree"
+;* V08 rat0 [V08,T04] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V10 rat2 [V10,T02] ( 2, 3.53) int -> r0 "fgMakeTemp is creating a new local variable"
+;* V10 rat2 [V10,T02] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 G_M49890_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push {r2,r3,r4,r5,r11,lr} add r11, sp, 16
- str r0, [r11-0x0C]
mov r2, r0 ; gcrRegs +[r2]
- ;; size=14 bbWeight=1 PerfScore 4.00
+ ;; size=10 bbWeight=1 PerfScore 3.00
G_M49890_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz ; byrRegs +[r1] ldr r0, [r2+0x08] @@ -38,10 +37,10 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, by ; gcrRegs +[r5] ldr r0, [r5+0x04] cmp r0, r4
- bls SHORT G_M49890_IG05
+ bls SHORT G_M49890_IG04
;; size=12 bbWeight=1 PerfScore 6.00 G_M49890_IG03: ; bbWeight=0.88, gcrefRegs=0024 {r2 r5}, byrefRegs=0002 {r1}, byref, isz
- str r1, [sp]
+ str r1, [sp+0x04]
; GC ptr vars +{V01} ldr r0, [r2+0x0C] adds r0, r0, 1 @@ -53,34 +52,26 @@ G_M49890_IG03: ; bbWeight=0.88, gcrefRegs=0024 {r2 r5}, byrefRegs=0002 {r ldr r1, [r0+r3] ; gcrRegs +[r1] ; byrRegs -[r1]
- ldr r0, [sp] // [V01 arg1]
+ ldr r0, [sp+0x04] // [V01 arg1]
movw r12, 0xd1ff movt r12, 0xd1ff ; GC ptr vars -{V01} blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0]
- ldr r0, [r2] - ldr r0, [r0+0x24] - ldr r0, [r0] - ldr r0, [r0+0x0C] - cmp r0, 0 - bne SHORT G_M49890_IG07 - ;; size=42 bbWeight=0.88 PerfScore 15.88 -G_M49890_IG04: ; bbWeight=0.18, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, byref, isz - b SHORT G_M49890_IG07 - ;; size=2 bbWeight=0.18 PerfScore 0.18 -G_M49890_IG05: ; bbWeight=0.12, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref
+ b SHORT G_M49890_IG06 + ;; size=32 bbWeight=0.88 PerfScore 11.47 +G_M49890_IG04: ; bbWeight=0.12, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref
; gcrRegs -[r5] ; byrRegs +[r1] movs r0, 0 str r0, [r1] ;; size=4 bbWeight=0.12 PerfScore 0.24
-G_M49890_IG06: ; bbWeight=0.12, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M49890_IG05: ; bbWeight=0.12, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r1] pop {r2,r3,r4,r5,r11,pc} ;; size=4 bbWeight=0.12 PerfScore 0.12
-G_M49890_IG07: ; bbWeight=0.88, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, gcvars, byref
+G_M49890_IG06: ; bbWeight=0.88, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r5] add r0, r5, 8 ; byrRegs +[r0] @@ -90,11 +81,11 @@ G_M49890_IG07: ; bbWeight=0.88, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5 movs r0, 1 ; byrRegs -[r0] ;; size=12 bbWeight=0.88 PerfScore 4.41
-G_M49890_IG08: ; bbWeight=0.88, epilog, nogc, extend
+G_M49890_IG07: ; bbWeight=0.88, epilog, nogc, extend
pop {r2,r3,r4,r5,r11,pc} ;; size=4 bbWeight=0.88 PerfScore 0.88
-Total bytes of code 94, prolog size 12, PerfScore 31.71, instruction count 38, allocated bytes for code 94 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+Total bytes of code 78, prolog size 8, PerfScore 26.12, instruction count 31, allocated bytes for code 78 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -106,7 +97,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 47 (0x0002f) Actual length = 94 (0x00005e)
+ Function Length : 39 (0x00027) Actual length = 78 (0x00004e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-16 (-17.02%) : 25182.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)

@@ -9,27 +9,26 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 8, 6.86) ref -> r2 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]> -; V01 arg1 [V01,T01] ( 4, 3 ) byref -> [sp+0x00] single-def
+; V00 this [V00,T00] ( 7, 6.14) ref -> r2 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]> +; V01 arg1 [V01,T01] ( 4, 3 ) byref -> [sp+0x04] single-def
; V02 loc0 [V02,T02] ( 5, 4.14) int -> r4 ; V03 loc1 [V03,T04] ( 4, 3.43) ref -> r5 class-hnd single-def <<unknown class>> ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V07 cse0 [V07,T06] ( 2, 2 ) int -> r0 "CSE - aggressive"
-; V08 rat0 [V08,T05] ( 2, 2.86) int -> r0 "Spilling to split statement for tree"
+;* V08 rat0 [V08,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V10 rat2 [V10,T03] ( 2, 2.86) int -> r0 "fgMakeTemp is creating a new local variable"
+;* V10 rat2 [V10,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 G_M49890_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push {r2,r3,r4,r5,r11,lr} add r11, sp, 16
- str r0, [r11-0x0C]
mov r2, r0 ; gcrRegs +[r2]
- ;; size=14 bbWeight=1 PerfScore 4.00
+ ;; size=10 bbWeight=1 PerfScore 3.00
G_M49890_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref, isz ; byrRegs +[r1] ldr r0, [r2+0x08] @@ -38,10 +37,10 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, by ; gcrRegs +[r5] ldr r0, [r5+0x04] cmp r0, r4
- bls SHORT G_M49890_IG05
+ bls SHORT G_M49890_IG04
;; size=12 bbWeight=1 PerfScore 6.00 G_M49890_IG03: ; bbWeight=0.71, gcrefRegs=0024 {r2 r5}, byrefRegs=0002 {r1}, byref, isz
- str r1, [sp]
+ str r1, [sp+0x04]
; GC ptr vars +{V01} ldr r0, [r2+0x0C] adds r0, r0, 1 @@ -53,34 +52,26 @@ G_M49890_IG03: ; bbWeight=0.71, gcrefRegs=0024 {r2 r5}, byrefRegs=0002 {r ldr r1, [r0+r3] ; gcrRegs +[r1] ; byrRegs -[r1]
- ldr r0, [sp] // [V01 arg1]
+ ldr r0, [sp+0x04] // [V01 arg1]
movw r12, 0xd1ff movt r12, 0xd1ff ; GC ptr vars -{V01} blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0]
- ldr r0, [r2] - ldr r0, [r0+0x24] - ldr r0, [r0] - ldr r0, [r0+0x0C] - cmp r0, 0 - bne SHORT G_M49890_IG07 - ;; size=42 bbWeight=0.71 PerfScore 12.86 -G_M49890_IG04: ; bbWeight=0.14, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, byref, isz - b SHORT G_M49890_IG07 - ;; size=2 bbWeight=0.14 PerfScore 0.14 -G_M49890_IG05: ; bbWeight=0.29, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref
+ b SHORT G_M49890_IG06 + ;; size=32 bbWeight=0.71 PerfScore 9.29 +G_M49890_IG04: ; bbWeight=0.29, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref
; gcrRegs -[r5] ; byrRegs +[r1] movs r0, 0 str r0, [r1] ;; size=4 bbWeight=0.29 PerfScore 0.57
-G_M49890_IG06: ; bbWeight=0.29, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M49890_IG05: ; bbWeight=0.29, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r1] pop {r2,r3,r4,r5,r11,pc} ;; size=4 bbWeight=0.29 PerfScore 0.29
-G_M49890_IG07: ; bbWeight=0.71, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, gcvars, byref
+G_M49890_IG06: ; bbWeight=0.71, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r5] add r0, r5, 8 ; byrRegs +[r0] @@ -90,11 +81,11 @@ G_M49890_IG07: ; bbWeight=0.71, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5 movs r0, 1 ; byrRegs -[r0] ;; size=12 bbWeight=0.71 PerfScore 3.57
-G_M49890_IG08: ; bbWeight=0.71, epilog, nogc, extend
+G_M49890_IG07: ; bbWeight=0.71, epilog, nogc, extend
pop {r2,r3,r4,r5,r11,pc} ;; size=4 bbWeight=0.71 PerfScore 0.71
-Total bytes of code 94, prolog size 12, PerfScore 28.14, instruction count 38, allocated bytes for code 94 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+Total bytes of code 78, prolog size 8, PerfScore 23.43, instruction count 31, allocated bytes for code 78 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -106,7 +97,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 47 (0x0002f) Actual length = 94 (0x00005e)
+ Function Length : 39 (0x00027) Actual length = 78 (0x00004e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 11018.dasm - System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)

@@ -19,7 +19,8 @@ ; V08 tmp4 [V08,T03] ( 3, 6 ) byref -> r0 single-def "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ; V10 tmp6 [V10,T02] ( 4, 4 ) ref -> [sp+0x1C] do-not-enreg[] single-def "field V02._source (fldOffset=0x0)" P-DEP
-; V11 PSPSym [V11,T06] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym"
+; V11 tmp7 [V11,T06] ( 2, 1 ) ref -> r1 single-def "Field obj" +; V12 PSPSym [V12,T07] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym"
; TEMP_01 ref -> [r11-0x14] ; ; Lcl frame size = 16 @@ -32,7 +33,7 @@ G_M23091_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movs r2, 0 str r2, [sp] // [TEMP_01] add r2, sp, 32
- str r2, [sp+0x0C] // [V11 PSPSym]
+ str r2, [sp+0x0C] // [V12 PSPSym]
str r1, [sp+0x04] // [V01 arg1] ; GC ptr vars +{V01} mov r4, r0 @@ -82,7 +83,7 @@ G_M23091_IG03: ; bbWeight=0.50, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {} movt r1, 0xd1ff ldr r1, [r1] ; gcrRegs +[r1]
- ldrsb r1, [r1+0x5D]
+ ldrsb r1, [r1]
; gcrRegs -[r1] ;; size=14 bbWeight=0.50 PerfScore 2.00 G_M23091_IG04: ; bbWeight=1, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, byref

+0 (0.00%) : 31275.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1)

@@ -22,13 +22,13 @@ ;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle> ;* V11 tmp10 [V11 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V12 tmp11 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V13 tmp12 [V13,T03] ( 2, 4 ) byref -> r0 single-def "Inlining Arg"
+; V13 tmp12 [V13,T01] ( 2, 4 ) byref -> r0 single-def "Inlining Arg"
;* V14 tmp13 [V14,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V15 tmp14 [V15,T11] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
+;* V15 tmp14 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
;* V16 tmp15 [V16 ] ( 0, 0 ) int -> zero-ref "field V07.m_asTAddr (fldOffset=0x0)" P-INDEP
-; V17 tmp16 [V17,T04] ( 3, 3 ) int -> r0 "field V10.m_asTAddr (fldOffset=0x0)" P-INDEP -; V18 cse0 [V18,T01] ( 3, 3 ) int -> r5 "CSE - aggressive" -; V19 cse1 [V19,T02] ( 3, 3 ) int -> r6 "CSE - aggressive"
+; V17 tmp16 [V17,T02] ( 3, 3 ) int -> r0 "field V10.m_asTAddr (fldOffset=0x0)" P-INDEP +; V18 cse0 [V18,T03] ( 3, 3 ) int -> r5 "CSE - aggressive" +; V19 cse1 [V19,T04] ( 3, 3 ) int -> r6 "CSE - aggressive"
; ; Lcl frame size = 0 @@ -43,11 +43,11 @@ G_M8853_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref movw r6, 0xd1ff movt r6, 0xd1ff cmp r5, r6
- bne SHORT G_M8853_IG11
+ bne SHORT G_M8853_IG08
ldr r0, [r4+0x0C] ands r3, r0, 2 cmp r3, 0
- bne SHORT G_M8853_IG10
+ bne SHORT G_M8853_IG07
ldr r0, [r0] and r0, r0, 0xf0000 cmp r0, 0xc0000 @@ -61,15 +61,15 @@ G_M8853_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref G_M8853_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz uxtb r3, r7 cmp r3, 0
- bne SHORT G_M8853_IG14
+ bne SHORT G_M8853_IG11
;; size=6 bbWeight=1 PerfScore 3.00 G_M8853_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz movw r0, 0xd1ff movt r0, 0xd1ff cmp r4, r0
- beq SHORT G_M8853_IG07
+ beq SHORT G_M8853_IG13
cmp r5, r6
- bne SHORT G_M8853_IG09
+ bne SHORT G_M8853_IG15
mov r0, r4 ; gcrRegs +[r0] movw r3, 0xd1ff @@ -81,14 +81,47 @@ G_M8853_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref G_M8853_IG06: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc pop {r4,r5,r6,r7,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-G_M8853_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M8853_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r0] +[r4] + movs r7, 0 + b SHORT G_M8853_IG04 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M8853_IG08: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + mov r0, r4 + ; gcrRegs +[r0] + ldr r3, [r4] + ldr r3, [r3+0x44] + ldr r3, [r3+0x0C] + blx r3 // <unknown method>
; gcrRegs -[r0]
- movs r0, 0
+ and r0, r0, 32 + cmp r0, 32 + beq SHORT G_M8853_IG09 + movs r3, 0 + b SHORT G_M8853_IG10 + ;; size=22 bbWeight=0 PerfScore 0.00 +G_M8853_IG09: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref + movs r3, 1
;; size=2 bbWeight=0 PerfScore 0.00
-G_M8853_IG08: ; bbWeight=0, epilog, nogc, extend
+G_M8853_IG10: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + cmp r3, 0 + beq SHORT G_M8853_IG05 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M8853_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r4] + movw r0, 0xd1ff + movt r0, 0xd1ff + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M8853_IG12: ; bbWeight=0, epilog, nogc, extend
pop {r4,r5,r6,r7,r11,pc} ;; size=4 bbWeight=0 PerfScore 0.00
-G_M8853_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M8853_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + movs r0, 0 + ;; size=2 bbWeight=0 PerfScore 0.00 +G_M8853_IG14: ; bbWeight=0, epilog, nogc, extend + pop {r4,r5,r6,r7,r11,pc} + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M8853_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4] mov r0, r4 ; gcrRegs +[r0] @@ -99,40 +132,6 @@ G_M8853_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byre ; gcrRegs -[r4] b SHORT G_M8853_IG06 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M8853_IG10: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r0] +[r4] - movs r7, 0 - b SHORT G_M8853_IG04 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M8853_IG11: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - mov r0, r4 - ; gcrRegs +[r0] - ldr r3, [r4] - ldr r3, [r3+0x44] - ldr r3, [r3+0x0C] - blx r3 // <unknown method> - ; gcrRegs -[r0] - and r0, r0, 32 - cmp r0, 32 - beq SHORT G_M8853_IG12 - movs r3, 0 - b SHORT G_M8853_IG13 - ;; size=22 bbWeight=0 PerfScore 0.00 -G_M8853_IG12: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - movs r3, 1 - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M8853_IG13: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - cmp r3, 0 - beq SHORT G_M8853_IG05 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M8853_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4] - movw r0, 0xd1ff - movt r0, 0xd1ff - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M8853_IG15: ; bbWeight=0, epilog, nogc, extend - pop {r4,r5,r6,r7,r11,pc} - ;; size=4 bbWeight=0 PerfScore 0.00
Total bytes of code 154, prolog size 8, PerfScore 34.00, instruction count 60, allocated bytes for code 154 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (Tier1) ; ============================================================

+4 (+0.47%) : 29315.dasm - System.Reflection.Emit.DynamicILGenerator:GetMemberRefToken(System.Reflection.MethodInfo,System.Type[]):int:this (Tier0-FullOpts)

@@ -45,10 +45,10 @@ ;* V34 tmp23 [V34 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ; V35 tmp24 [V35,T18] ( 5, 4 ) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Emit.VarArgMethod> ;* V36 tmp25 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.VarArgMethod>
-; V37 tmp26 [V37,T23] ( 3, 3 ) ref -> r5 class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.DynamicScope>
+; V37 tmp26 [V37,T23] ( 3, 3 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.DynamicScope>
; V38 tmp27 [V38,T11] ( 7, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V39 tmp28 [V39,T29] ( 3, 1.33) ref -> r1 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V40 tmp29 [V40,T27] ( 4, 1.66) int -> r3 "Inline stloc first use temp"
+; V39 tmp28 [V39,T29] ( 3, 1.33) ref -> r3 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V40 tmp29 [V40,T27] ( 4, 1.66) int -> r1 "Inline stloc first use temp"
;* V41 tmp30 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>> ; V42 tmp31 [V42 ] ( 4, 13 ) byref -> [sp+0x20] do-not-enreg[X] addr-exposed "field V08._reference (fldOffset=0x0)" P-DEP ; V43 tmp32 [V43 ] ( 8, 19 ) int -> [sp+0x24] do-not-enreg[X] addr-exposed "field V08._length (fldOffset=0x4)" P-DEP @@ -110,14 +110,14 @@ G_M8328_IG04: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, mov r7, r4 ; gcrRegs +[r7] cmp r7, 0
- bne G_M8328_IG18
+ bne G_M8328_IG17
;; size=8 bbWeight=1 PerfScore 3.00 G_M8328_IG05: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz mov r8, r4 ; gcrRegs +[r8] cmp r8, 0
- bne SHORT G_M8328_IG13 - ;; size=8 bbWeight=1 PerfScore 3.00
+ bne G_M8328_IG14 + ;; size=10 bbWeight=1 PerfScore 3.00
G_M8328_IG06: ; bbWeight=1, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz orrs r1, r7, r8 cmp r1, 0 @@ -132,17 +132,120 @@ G_M8328_IG06: ; bbWeight=1, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=00 ; gcrRegs -[r0] ldr r1, [sp+0x24] cmp r1, 0
- bne SHORT G_M8328_IG15 - ;; size=28 bbWeight=1 PerfScore 12.00 -G_M8328_IG07: ; bbWeight=0.50, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref - mov r9, 0 - mov r10, 0 - movs r3, 0 - str r3, [sp+0x10]
+ beq G_M8328_IG16 + ;; size=30 bbWeight=1 PerfScore 12.00 +G_M8328_IG07: ; bbWeight=0.50, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz + ldr r1, [sp+0x24] + movw r0, 0xd1ff + movt r0, 0xd1ff + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_NEWARR_1_OBJ + ; gcrRegs +[r0] + mov r9, r0 + ; gcrRegs +[r9] + ldr r1, [r9+0x04] + movw r0, 0xd1ff + ; gcrRegs -[r0] + movt r0, 0xd1ff + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_NEWARR_1_OBJ + ; gcrRegs +[r0] + mov r10, r0 + ; gcrRegs +[r10] + ldr r1, [r9+0x04] + movw r0, 0xd1ff + ; gcrRegs -[r0] + movt r0, 0xd1ff + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_NEWARR_1_OBJ + ; gcrRegs +[r0] + str r0, [sp+0x10] // [V05 loc2]
; GC ptr vars +{V05}
- ;; size=12 bbWeight=0.50 PerfScore 2.00 -G_M8328_IG08: ; bbWeight=1, gcVars=0000000000008000 {V05}, gcrefRegs=07F0 {r4 r5 r6 r7 r8 r9 r10}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r9-r10]
+ movs r2, 0 + ldr r0, [sp+0x24] // [V43 tmp32] + ; gcrRegs -[r0] + cmp r0, 0 + ble SHORT G_M8328_IG09 + ;; size=78 bbWeight=0.50 PerfScore 12.50 +G_M8328_IG08: ; bbWeight=4, gcVars=0000000000008000 {V05}, gcrefRegs=07F0 {r4 r5 r6 r7 r8 r9 r10}, byrefRegs=0000 {}, gcvars, byref, isz + ldr r0, [sp+0x24] // [V43 tmp32] + cmp r2, r0 + bhs G_M8328_IG26 + ldr r0, [sp+0x20] // [V42 tmp31] + ; byrRegs +[r0] + str r2, [sp+0x1C] // [V10 loc7] + lsls r1, r2, 2 + str r1, [sp+0x14] // [V65 cse0] + ldr r0, [r0+r1] + ; gcrRegs +[r0] + ; byrRegs -[r0] + ldr lr, [r0] + ldr lr, [lr+0x2C] + ldr lr, [lr+0x1C] + blx lr // <unknown method> + mov r2, r0 + ; gcrRegs +[r2] + ldr r1, [sp+0x1C] // [V10 loc7] + mov r0, r9 + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_ARRADDR_ST + ; gcrRegs -[r0 r2] + ldr r0, [sp+0x24] // [V43 tmp32] + ldr r3, [sp+0x1C] // [V10 loc7] + cmp r3, r0 + bhs G_M8328_IG26 + ldr r0, [sp+0x20] // [V42 tmp31] + ; byrRegs +[r0] + ldr r2, [sp+0x14] // [V65 cse0] + ldr r0, [r0+r2] + ; gcrRegs +[r0] + ; byrRegs -[r0] + ldr r1, [r0] + ldr r1, [r1+0x34] + ldr r1, [r1+0x0C] + blx r1 // <unknown method> + mov r2, r0 + ; gcrRegs +[r2] + ldr r1, [sp+0x1C] // [V10 loc7] + mov r0, r10 + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_ARRADDR_ST + ; gcrRegs -[r0 r2] + ldr r0, [sp+0x24] // [V43 tmp32] + ldr r3, [sp+0x1C] // [V10 loc7] + cmp r3, r0 + bhs G_M8328_IG26 + ldr r0, [sp+0x20] // [V42 tmp31] + ; byrRegs +[r0] + ldr r2, [sp+0x14] // [V65 cse0] + ldr r0, [r0+r2] + ; gcrRegs +[r0] + ; byrRegs -[r0] + ldr r2, [r0] + ldr r2, [r2+0x34] + ldr r2, [r2+0x08] + blx r2 // <unknown method> + mov r2, r0 + ; gcrRegs +[r2] + ldr r1, [sp+0x1C] // [V10 loc7] + ldr r0, [sp+0x10] // [V05 loc2] + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_ARRADDR_ST + ; gcrRegs -[r0 r2] + ldr r0, [sp+0x1C] // [V10 loc7] + adds r0, r0, 1 + ldr r3, [sp+0x24] // [V43 tmp32] + cmp r0, r3 + mov r2, r0 + blt SHORT G_M8328_IG08 + ;; size=140 bbWeight=4 PerfScore 232.00 +G_M8328_IG09: ; bbWeight=1, gcrefRegs=07F0 {r4 r5 r6 r7 r8 r9 r10}, byrefRegs=0000 {}, byref, isz
mov r0, r4 ; gcrRegs +[r0] ldr r2, [r4] @@ -178,9 +281,9 @@ G_M8328_IG08: ; bbWeight=1, gcVars=0000000000008000 {V05}, gcrefRegs=07F0 mov r4, r0 ; gcrRegs +[r4] cmp r7, 0
- beq G_M8328_IG21 - ;; size=66 bbWeight=1 PerfScore 26.00 -G_M8328_IG09: ; bbWeight=0.50, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
+ beq SHORT G_M8328_IG19 + ;; size=64 bbWeight=1 PerfScore 26.00 +G_M8328_IG10: ; bbWeight=0.50, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0 r8] movw r0, 0xd1ff movt r0, 0xd1ff @@ -221,9 +324,9 @@ G_M8328_IG09: ; bbWeight=0.50, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0000 ldr r3, [r0+0x08] ldr lr, [r1+0x04] cmp lr, r3
- bls G_M8328_IG20 - ;; size=78 bbWeight=0.50 PerfScore 13.00 -G_M8328_IG10: ; bbWeight=0.33, gcrefRegs=0107 {r0 r1 r2 r8}, byrefRegs=0000 {}, byref
+ bls SHORT G_M8328_IG21 + ;; size=76 bbWeight=0.50 PerfScore 13.00 +G_M8328_IG11: ; bbWeight=0.33, gcrefRegs=0107 {r0 r1 r2 r8}, byrefRegs=0000 {}, byref
; gcrRegs -[r5] add lr, r3, 1 str lr, [r0+0x08] @@ -235,7 +338,7 @@ G_M8328_IG10: ; bbWeight=0.33, gcrefRegs=0107 {r0 r1 r2 r8}, byrefRegs=00 blx r3 // CORINFO_HELP_ARRADDR_ST ; gcrRegs -[r0 r2] ;; size=22 bbWeight=0.33 PerfScore 2.32
-G_M8328_IG11: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
+G_M8328_IG12: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
ldr r0, [r8+0x04] ; gcrRegs +[r0] ldr r0, [r0+0x08] @@ -243,140 +346,34 @@ G_M8328_IG11: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, by subs r0, r0, 1 orr r0, r0, 0xa000000 ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M8328_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M8328_IG13: ; bbWeight=0.50, epilog, nogc, extend
add sp, 44 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M8328_IG13: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M8328_IG14: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r4-r7] ldr r1, [r8] movw r0, 0xd1ff movt r0, 0xd1ff cmp r1, r0
- beq SHORT G_M8328_IG06 - ;; size=16 bbWeight=0.25 PerfScore 1.25 -G_M8328_IG14: ; bbWeight=0.12, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ beq G_M8328_IG06 + ;; size=18 bbWeight=0.25 PerfScore 1.25 +G_M8328_IG15: ; bbWeight=0.12, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r8] mov r8, 0 b SHORT G_M8328_IG06 ;; size=6 bbWeight=0.12 PerfScore 0.25
-G_M8328_IG15: ; bbWeight=0.50, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
+G_M8328_IG16: ; bbWeight=0.50, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r8]
- ldr r1, [sp+0x24] // [V43 tmp32] - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_NEWARR_1_OBJ - ; gcrRegs +[r0] - mov r9, r0 - ; gcrRegs +[r9] - ldr r1, [r9+0x04] - movw r0, 0xd1ff - ; gcrRegs -[r0] - movt r0, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_NEWARR_1_OBJ - ; gcrRegs +[r0] - mov r10, r0 - ; gcrRegs +[r10] - ldr r1, [r9+0x04] - movw r0, 0xd1ff - ; gcrRegs -[r0] - movt r0, 0xd1ff
...

benchmarks.run_tiered.linux.arm.checked.mch

-20 (-10.99%) : 54138.dasm - System.Collections.IterateForEach`1[System.Canon]:ImmutableStack():System.Canon:this (Tier0-FullOpts)

@@ -8,10 +8,10 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
+; V00 this [V00,T02] ( 3, 3 ) ref -> r4 this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
; V01 loc0 [V01,T05] ( 3, 4 ) ref -> r5 ld-addr-op class-hnd <System.__Canon> ;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Collections.Immutable.ImmutableStack`1[System.__Canon]>
-; V03 loc2 [V03 ] ( 10, 31 ) struct ( 8) [sp+0x04] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableStack`1+Enumerator[System.__Canon]>
+; V03 loc2 [V03 ] ( 10, 31 ) struct ( 8) [sp+0x00] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableStack`1+Enumerator[System.__Canon]>
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.__Canon> ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" @@ -20,52 +20,44 @@ ;* V09 tmp4 [V09,T07] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableStack`1[System.__Canon]> ; V10 tmp5 [V10,T01] ( 2, 8 ) ref -> r0 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableStack`1[System.__Canon]> ; V11 tmp6 [V11,T00] ( 2, 32 ) ref -> r0 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableStack`1[System.__Canon]>
-; V12 tmp7 [V12 ] ( 2, 3 ) ref -> [sp+0x04] do-not-enreg[X] addr-exposed "field V03._originalStack (fldOffset=0x0)" P-DEP -; V13 tmp8 [V13 ] ( 9, 29 ) ref -> [sp+0x08] do-not-enreg[X] addr-exposed "field V03._remainingStack (fldOffset=0x4)" P-DEP
+; V12 tmp7 [V12 ] ( 2, 3 ) ref -> [sp+0x00] do-not-enreg[X] addr-exposed "field V03._originalStack (fldOffset=0x0)" P-DEP +; V13 tmp8 [V13 ] ( 9, 29 ) ref -> [sp+0x04] do-not-enreg[X] addr-exposed "field V03._remainingStack (fldOffset=0x4)" P-DEP
;* V14 cse0 [V14,T08] ( 0, 0 ) int -> zero-ref hoist "CSE - aggressive"
-; V15 rat0 [V15,T04] ( 2, 4 ) int -> r0 "Spilling to split statement for tree"
+;* V15 rat0 [V15,T04] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V16 rat1 [V16,T06] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V17 rat2 [V17,T03] ( 2, 4 ) int -> r0 "fgMakeTemp is creating a new local variable"
+;* V17 rat2 [V17,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M64146_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr} - sub sp, 16 - add r11, sp, 24
+ push {r2,r3,r4,r5,r11,lr} + add r11, sp, 16
movs r1, 0
- str r1, [sp+0x04] // [V03 loc2] - str r1, [sp+0x08] // [V03 loc2+0x04] - str r0, [r11-0x0C]
+ str r1, [sp] // [V03 loc2] + str r1, [sp+0x04] // [V03 loc2+0x04]
mov r4, r0 ; gcrRegs +[r4]
- ;; size=22 bbWeight=1 PerfScore 8.00
+ ;; size=16 bbWeight=1 PerfScore 6.00
G_M64146_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz movs r5, 0 ldr r0, [r4+0x50] ; gcrRegs +[r0]
- add r1, sp, 4
+ add r1, sp, 0
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] ldr r2, [r0] blx r3 // System.Collections.Immutable.ImmutableStack`1[System.__Canon]:GetEnumerator():System.Collections.Immutable.ImmutableStack`1+Enumerator[System.__Canon]:this ; gcrRegs -[r0] +[r5]
- ldr r0, [r4] - ldr r0, [r0+0x24] - ldr r0, [r0] - ldr r0, [r0+0x10] - cmp r0, 0 - bne SHORT G_M64146_IG04
b SHORT G_M64146_IG04
- ;; size=34 bbWeight=1 PerfScore 15.00
+ ;; size=22 bbWeight=1 PerfScore 9.00
G_M64146_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r5]
- ldr r0, [sp+0x08]
+ ldr r0, [sp+0x04]
; gcrRegs +[r0] cmp r0, 0 beq SHORT G_M64146_IG10
- ldr r0, [sp+0x08]
+ ldr r0, [sp+0x04]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -76,36 +68,36 @@ G_M64146_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ;; size=24 bbWeight=2 PerfScore 20.00 G_M64146_IG04: ; bbWeight=8, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0]
- ldr r0, [sp+0x08]
+ ldr r0, [sp+0x04]
; gcrRegs +[r0] cmp r0, 0 bne SHORT G_M64146_IG06 ;; size=6 bbWeight=8 PerfScore 24.00 G_M64146_IG05: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0]
- ldr r0, [sp+0x04]
+ ldr r0, [sp]
; gcrRegs +[r0]
- str r0, [sp+0x08] // [V13 tmp8]
+ str r0, [sp+0x04] // [V13 tmp8]
b SHORT G_M64146_IG07 ;; size=6 bbWeight=2 PerfScore 6.00 G_M64146_IG06: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0]
- ldr r0, [sp+0x08] // [V13 tmp8]
+ ldr r0, [sp+0x04] // [V13 tmp8]
; gcrRegs +[r0] ldr r0, [r0+0x08] cmp r0, 0 beq SHORT G_M64146_IG07
- ldr r0, [sp+0x08] // [V13 tmp8]
+ ldr r0, [sp+0x04] // [V13 tmp8]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] ldr r2, [r0] blx r3 // System.Collections.Immutable.ImmutableStack`1[System.__Canon]:Pop():System.Collections.Immutable.ImmutableStack`1[System.__Canon]:this
- str r0, [sp+0x08] // [V13 tmp8]
+ str r0, [sp+0x04] // [V13 tmp8]
;; size=26 bbWeight=2 PerfScore 22.00 G_M64146_IG07: ; bbWeight=8, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0]
- ldr r0, [sp+0x08] // [V13 tmp8]
+ ldr r0, [sp+0x04] // [V13 tmp8]
; gcrRegs +[r0] ldr r0, [r0+0x08] cmp r0, 0 @@ -117,9 +109,8 @@ G_M64146_IG08: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ; gcrRegs +[r0] ;; size=2 bbWeight=1 PerfScore 1.00 G_M64146_IG09: ; bbWeight=1, epilog, nogc, extend
- add sp, 16 - pop {r4,r5,r11,pc} - ;; size=6 bbWeight=1 PerfScore 2.00
+ pop {r2,r3,r4,r5,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00
G_M64146_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r0 r5] movw r0, 0xd1ff @@ -145,7 +136,7 @@ G_M64146_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr bkpt ;; size=48 bbWeight=0 PerfScore 0.00
-Total bytes of code 182, prolog size 20, PerfScore 130.00, instruction count 73, allocated bytes for code 182 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (Tier0-FullOpts)
+Total bytes of code 162, prolog size 14, PerfScore 121.00, instruction count 64, allocated bytes for code 162 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -157,7 +148,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 91 (0x0005b) Actual length = 182 (0x0000b6)
+ Function Length : 81 (0x00051) Actual length = 162 (0x0000a2)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -165,7 +156,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 04 add sp, sp, #16 ; opsize 16 - A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32 + FF end
FF end

-12 (-8.11%) : 39211.dasm - System.Collections.IterateForEach`1[System.Canon]:ImmutableArray():System.Canon:this (Tier0-FullOpts)

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 5, 5 ) ref -> r4 this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
+; V00 this [V00,T01] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
; V01 loc0 [V01,T06] ( 3, 4 ) ref -> r5 ld-addr-op class-hnd <System.__Canon> ; V02 loc1 [V02 ] ( 2, 2 ) struct ( 4) [sp+0x08] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]> ; V03 loc2 [V03 ] ( 8, 33 ) struct ( 8) [sp+0x00] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[System.__Canon]> @@ -26,9 +26,9 @@ ; V15 rat0 [V15,T04] ( 3, 4.40) int -> r0 "Spilling to split statement for tree" ; V16 rat1 [V16,T07] ( 3, 4 ) int -> r2 "runtime lookup" ; V17 rat2 [V17,T02] ( 3, 5.60) int -> r2 "fgMakeTemp is creating a new local variable"
-; V18 rat3 [V18,T05] ( 2, 4 ) int -> r0 "Spilling to split statement for tree"
+;* V18 rat3 [V18,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V19 rat4 [V19,T08] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V20 rat5 [V20,T03] ( 2, 4 ) int -> r0 "fgMakeTemp is creating a new local variable"
+;* V20 rat5 [V20,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 16 @@ -78,14 +78,8 @@ G_M57349_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b ldr r3, [r3] blx r3 // System.Collections.Immutable.ImmutableArray`1[System.__Canon]:GetEnumerator():System.Collections.Immutable.ImmutableArray`1+Enumerator[System.__Canon]:this ; gcr arg pop 0
- ldr r0, [r4] - ldr r0, [r0+0x24] - ldr r0, [r0] - ldr r0, [r0+0x14] - cmp r0, 0 - bne SHORT G_M57349_IG07
b SHORT G_M57349_IG07
- ;; size=30 bbWeight=1 PerfScore 13.00
+ ;; size=18 bbWeight=1 PerfScore 7.00
G_M57349_IG06: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r5] ldr r0, [sp+0x04] // [V12 tmp7] @@ -134,7 +128,7 @@ G_M57349_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 148, prolog size 24, PerfScore 112.00, instruction count 62, allocated bytes for code 148 (MethodHash=874a1ffa) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableArray():System.__Canon:this (Tier0-FullOpts)
+Total bytes of code 136, prolog size 24, PerfScore 106.00, instruction count 56, allocated bytes for code 136 (MethodHash=874a1ffa) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableArray():System.__Canon:this (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -146,7 +140,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 74 (0x0004a) Actual length = 148 (0x000094)
+ Function Length : 68 (0x00044) Actual length = 136 (0x000088)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-12 (-4.92%) : 58659.dasm - System.Collections.IterateForEach`1[System.Canon]:FrozenSet():System.Canon:this (Tier0-FullOpts)

@@ -24,10 +24,10 @@ ; V13 tmp8 [V13,T02] ( 3, 6 ) ref -> r3 single-def "argument with side effect" ; V14 PSPSym [V14,T10] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[V] "PSPSym" ;* V15 cse0 [V15,T11] ( 0, 0 ) int -> zero-ref hoist "CSE - aggressive"
-; V16 cse1 [V16,T09] ( 6, 3.20) int -> r3 multi-def "CSE - aggressive" -; V17 rat0 [V17,T05] ( 2, 4 ) int -> r1 "Spilling to split statement for tree"
+; V16 cse1 [V16,T09] ( 5, 2.20) int -> r3 multi-def "CSE - aggressive" +;* V17 rat0 [V17,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V18 rat1 [V18,T08] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V19 rat2 [V19,T03] ( 2, 4 ) int -> r1 "fgMakeTemp is creating a new local variable"
+;* V19 rat2 [V19,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; V20 rat3 [V20,T04] ( 3, 5.60) int -> r2 "fgMakeTemp is creating a new local variable" ; V21 rat4 [V21,T12] ( 3, 0 ) int -> r3 "Spilling to split statement for tree" ; V22 rat5 [V22,T13] ( 3, 0 ) int -> r2 "fgMakeTemp is creating a new local variable" @@ -66,14 +66,8 @@ G_M17622_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ldr r0, [sp] // [V00 this] ; gcrRegs +[r0] ldr r3, [r0]
- mov r1, r3 - ldr r1, [r1+0x24] - ldr r1, [r1] - ldr r1, [r1+0x10] - cmp r1, 0 - bne SHORT G_M17622_IG05
b SHORT G_M17622_IG05
- ;; size=18 bbWeight=1 PerfScore 9.00
+ ;; size=6 bbWeight=1 PerfScore 3.00
G_M17622_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0 r4] ldr r1, [sp+0x08] // [V12 tmp7] @@ -207,7 +201,7 @@ G_M17622_IG19: ; bbWeight=0, funclet epilog, nogc, extend pop {r3,r4,r11,pc} ;; size=4 bbWeight=0 PerfScore 0.00
-Total bytes of code 244, prolog size 26, PerfScore 149.20, instruction count 101, allocated bytes for code 244 (MethodHash=5937bb29) for method System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (Tier0-FullOpts)
+Total bytes of code 232, prolog size 26, PerfScore 143.20, instruction count 95, allocated bytes for code 232 (MethodHash=5937bb29) for method System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -219,7 +213,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 92 (0x0005c) Actual length = 184 (0x0000b8)
+ Function Length : 86 (0x00056) Actual length = 172 (0x0000ac)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

-24 (-0.24%) : 26145.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)

@@ -423,16 +423,16 @@ ; V412 cse17 [V412,T146] ( 4, 8 ) int -> r0 "CSE - conservative" ; V413 cse18 [V413,T282] ( 4, 2 ) int -> r0 "CSE - conservative" ; V414 cse19 [V414,T03] ( 88,115.50) int -> [sp+0x110] spill-single-def "CSE - aggressive"
-; V415 rat0 [V415,T339] ( 3, 1.50) int -> r2 "field V52.lo (fldOffset=0x0)" P-INDEP -; V416 rat1 [V416,T340] ( 3, 1.50) int -> r3 "field V52.hi (fldOffset=0x4)" P-INDEP
+; V415 rat0 [V415,T339] ( 2, 1 ) int -> r2 "field V52.lo (fldOffset=0x0)" P-INDEP +; V416 rat1 [V416,T340] ( 2, 1 ) int -> r3 "field V52.hi (fldOffset=0x4)" P-INDEP
; V417 rat2 [V417,T209] ( 8, 4 ) int -> [sp+0x10C] "field V73.lo (fldOffset=0x0)" P-INDEP ; V418 rat3 [V418,T218] ( 7, 3.50) int -> [sp+0x108] "field V73.hi (fldOffset=0x4)" P-INDEP ; V419 rat4 [V419,T201] ( 9, 4.50) int -> [sp+0x104] "field V75.lo (fldOffset=0x0)" P-INDEP ; V420 rat5 [V420,T202] ( 9, 4.50) int -> [sp+0x100] "field V75.hi (fldOffset=0x4)" P-INDEP ; V421 rat6 [V421,T341] ( 2, 1.50) int -> r0 "field V77.lo (fldOffset=0x0)" P-INDEP ; V422 rat7 [V422,T342] ( 2, 1.50) int -> r1 "field V77.hi (fldOffset=0x4)" P-INDEP
-; V423 rat8 [V423,T140] ( 3, 10 ) int -> r0 "field V92.lo (fldOffset=0x0)" P-INDEP -; V424 rat9 [V424,T141] ( 3, 10 ) int -> r3 "field V92.hi (fldOffset=0x4)" P-INDEP
+; V423 rat8 [V423,T140] ( 2, 8 ) int -> r0 "field V92.lo (fldOffset=0x0)" P-INDEP +; V424 rat9 [V424,T141] ( 2, 8 ) int -> r3 "field V92.hi (fldOffset=0x4)" P-INDEP
; V425 rat10 [V425,T142] ( 3, 10 ) int -> r0 "field V101.lo (fldOffset=0x0)" P-INDEP ; V426 rat11 [V426,T143] ( 3, 10 ) int -> r3 "field V101.hi (fldOffset=0x4)" P-INDEP ; V427 rat12 [V427,T62] ( 8, 16 ) int -> [sp+0xFC] "field V121.lo (fldOffset=0x0)" P-INDEP @@ -550,7 +550,7 @@ G_M11467_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b ldr r3, [r9+0x08] blx r3 // <unknown method> ; gcrRegs -[r0-r1 r5]
- b G_M11467_IG277
+ b G_M11467_IG275
;; size=30 bbWeight=0.50 PerfScore 4.50 G_M11467_IG04: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r5-r7] @@ -611,14 +611,14 @@ G_M11467_IG05: ; bbWeight=0.50, gcVars=0000000000000000000000000000000000 ; gcrRegs +[r3] ldr r0, [r3+0x04] cmp r0, 0
- blt G_M11467_IG279
+ blt G_M11467_IG277
str r0, [sp+0x32C] // [V05 loc2] cmp r0, 0 ble G_M11467_IG45 movs r0, 0 ldr r1, [r3+0x04] cmp r0, r1
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
ldrb lr, [r3+0x08] str lr, [sp+0x2F8] // [V21 tmp8] cmp lr, 0x80000000 @@ -823,7 +823,7 @@ G_M11467_IG18: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} ; gcrRegs +[r2] ldr r0, [r2+0x04] cmp r3, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -838,7 +838,7 @@ G_M11467_IG19: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} adds r0, r3, 1 ldr r1, [r2+0x04] cmp r0, r1
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -854,7 +854,7 @@ G_M11467_IG20: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} adds r0, r3, 2 ldr r1, [r2+0x04] cmp r0, r1
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -870,7 +870,7 @@ G_M11467_IG21: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} ; gcrRegs +[r2] ldr r0, [r2+0x04] cmp r3, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -885,7 +885,7 @@ G_M11467_IG22: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} adds r0, r3, 1 ldr r1, [r2+0x04] cmp r0, r1
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -901,7 +901,7 @@ G_M11467_IG23: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} adds r0, r3, 2 ldr r1, [r2+0x04] cmp r0, r1
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -915,7 +915,7 @@ G_M11467_IG23: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} ldr r0, [r2+0x04] ldr r1, [sp+0x2F0] // [V23 tmp10] cmp r1, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -928,7 +928,7 @@ G_M11467_IG23: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} adds r3, r1, 1 ldr r12, [r2+0x04] cmp r3, r12
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -941,7 +941,7 @@ G_M11467_IG23: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} adds r1, r1, 2 ldr r3, [r2+0x04] cmp r1, r3
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -972,7 +972,7 @@ G_M11467_IG25: ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ; gcrRegs +[lr] ldr r1, [lr+0x04] cmp r3, r1
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r1, lr, 8 ; byrRegs +[r1] str r3, [sp+0x328] // [V06 loc3] @@ -1179,7 +1179,7 @@ G_M11467_IG38: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ; gcrRegs +[r1] ldr r2, [r1+0x04] cmp r3, r2
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r2, r1, 8 ; byrRegs +[r2] lsls r0, r3, 1 @@ -1194,7 +1194,7 @@ G_M11467_IG39: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b adds r2, r3, 1 ldr r0, [r1+0x04] cmp r2, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r2, r1, 8 ; byrRegs +[r2] lsls r0, r3, 1 @@ -1210,7 +1210,7 @@ G_M11467_IG40: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b adds r2, r3, 2 ldr r0, [r1+0x04] cmp r2, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r2, r1, 8 ; byrRegs +[r2] lsls r0, r3, 1 @@ -1226,7 +1226,7 @@ G_M11467_IG41: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ; gcrRegs +[r1] ldr r2, [r1+0x04] cmp r3, r2
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r2, r1, 8 ; byrRegs +[r2] lsls r0, r3, 1 @@ -1241,7 +1241,7 @@ G_M11467_IG42: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b adds r2, r3, 1 ldr r0, [r1+0x04] cmp r2, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r2, r1, 8 ; byrRegs +[r2] lsls r0, r3, 1 @@ -1259,7 +1259,7 @@ G_M11467_IG43: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b adds r0, r3, 2 ldr lr, [r2+0x04] cmp r0, lr
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -1273,7 +1273,7 @@ G_M11467_IG43: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ldr r0, [r2+0x04] ldr r3, [sp+0x2E0] // [V38 tmp25] cmp r3, r0
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -1286,7 +1286,7 @@ G_M11467_IG43: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b add lr, r3, 1 ldr r12, [r2+0x04] cmp lr, r12
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -1300,7 +1300,7 @@ G_M11467_IG43: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b ; gcrRegs -[r1] ldr r3, [r2+0x04] cmp r1, r3
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
adds r2, 8 ; gcrRegs -[r2] ; byrRegs +[r2] @@ -1365,7 +1365,7 @@ G_M11467_IG46: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} ; GC ptr vars -{V07} blx r3 // <unknown method> ; gcrRegs -[r0-r1 r6]
- b G_M11467_IG107
+ b G_M11467_IG105
;; size=44 bbWeight=0.50 PerfScore 8.00 G_M11467_IG47: ; bbWeight=0.50, gcVars=000000000000000000000000000000000000000000000000200000000000002000000000000000000000000000000000 {V01 V07}, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, gcvars, byref, isz ; GC ptr vars +{V07 V133} @@ -1382,14 +1382,14 @@ G_M11467_IG47: ; bbWeight=0.50, gcVars=0000000000000000000000000000000000 ; gcrRegs +[r1] ldr r2, [r1+0x04] cmp r2, 0
- blt G_M11467_IG279
+ blt G_M11467_IG277
str r2, [sp+0x328] // [V06 loc3] cmp r2, 0
- ble G_M11467_IG106
+ ble G_M11467_IG104
movs r2, 0 ldr r3, [r1+0x04] cmp r2, r3
- bhs G_M11467_IG278
+ bhs G_M11467_IG276
add r2, r1, 8 ; byrRegs +[r2] ldr r3, [r2] @@ -1401,15 +1401,8 @@ G_M11467_IG47: ; bbWeight=0.50, gcVars=0000000000000000000000000000000000 ldr r3, [sp+0x324] // [V214 tmp201+0x04] and r2, r2, 0 and r3, r3, -0x40000000
- orrs r0, r2, r3
...

-6 (-0.20%) : 52139.dasm - System.IO.Strategies.BufferedFileStreamStrategy+d__37:MoveNext():this (Tier1)

@@ -70,12 +70,12 @@ ; V59 tmp40 [V59,T41] ( 3, 6 ) int -> r7 "Inlining Arg" ; V60 tmp41 [V60,T42] ( 3, 6 ) int -> r6 "Inlining Arg" ; V61 tmp42 [V61,T05] ( 5, 10 ) ref -> r1 class-hnd single-def "Inlining Arg" <ubyte[]>
-; V62 tmp43 [V62,T15] ( 5, 8 ) int -> r3 "Inlining Arg"
+; V62 tmp43 [V62,T18] ( 4, 8 ) int -> r0 "Inlining Arg"
;* V63 tmp44 [V63 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V64 tmp45 [V64 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V65 tmp46 [V65,T28] ( 6, 6 ) byref -> [sp+0x18] "Inline stloc first use temp" ; V66 tmp47 [V66,T13] ( 8, 8 ) int -> [sp+0x38] "Inline stloc first use temp"
-; V67 tmp48 [V67,T16] ( 4, 8 ) byref -> r9 single-def "Inlining Arg"
+; V67 tmp48 [V67,T15] ( 4, 8 ) byref -> r9 single-def "Inlining Arg"
; V68 tmp49 [V68,T11] ( 9, 9 ) ref -> [sp+0x14] class-hnd spill-single-def "Inline stloc first use temp" <System.Object> ;* V69 tmp50 [V69 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V70 tmp51 [V70 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> @@ -91,7 +91,7 @@ ;* V80 tmp61 [V80 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V81 tmp62 [V81 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V82 tmp63 [V82 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V83 tmp64 [V83,T17] ( 4, 8 ) byref -> r1 single-def "Inlining Arg"
+; V83 tmp64 [V83,T16] ( 4, 8 ) byref -> r1 single-def "Inlining Arg"
;* V84 tmp65 [V84 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]> ; V85 tmp66 [V85,T06] ( 5, 10 ) ref -> r7 class-hnd single-def "Inlining Arg" <System.Object> ; V86 tmp67 [V86,T76] ( 3, 3 ) int -> r0 @@ -174,7 +174,7 @@ ;* V163 tmp144 [V163 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V164 tmp145 [V164,T31] ( 6, 6 ) byref -> [sp+0x10] "Inline stloc first use temp" ; V165 tmp146 [V165,T14] ( 8, 8 ) int -> [sp+0x2C] "Inline stloc first use temp"
-; V166 tmp147 [V166,T18] ( 4, 8 ) byref -> r9 single-def "Inlining Arg"
+; V166 tmp147 [V166,T17] ( 4, 8 ) byref -> r9 single-def "Inlining Arg"
; V167 tmp148 [V167,T12] ( 9, 9 ) ref -> [sp+0x0C] class-hnd spill-single-def "Inline stloc first use temp" <System.Object> ;* V168 tmp149 [V168 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V169 tmp150 [V169 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> @@ -265,7 +265,7 @@ ; V254 tmp235 [V254,T61] ( 2, 4 ) ref -> r1 single-def "argument with side effect" ; V255 PSPSym [V255,T119] ( 1, 1 ) int -> [sp+0x80] do-not-enreg[V] "PSPSym" ; V256 cse0 [V256,T86] ( 3, 3 ) int -> r6 "CSE - conservative"
-; V257 cse1 [V257,T87] ( 3, 3 ) int -> r3 "CSE - conservative"
+; V257 cse1 [V257,T87] ( 3, 3 ) int -> r0 "CSE - conservative"
; V258 cse2 [V258,T88] ( 3, 3 ) int -> r0 "CSE - conservative" ; V259 cse3 [V259,T89] ( 3, 3 ) int -> r1 "CSE - conservative" ; V260 rat0 [V260,T20] ( 4, 8 ) int -> r6 "ReplaceWithLclVar is creating a new local variable" @@ -401,7 +401,7 @@ G_M33324_IG06: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00 blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b G_M33324_IG116
+ b G_M33324_IG115
;; size=62 bbWeight=1 PerfScore 22.00 G_M33324_IG07: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, gcvars, byref, nogc ; gcrRegs +[r5] @@ -450,8 +450,8 @@ G_M33324_IG11: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by movs r1, 0 str r1, [r4+0x0C] ldr r1, [r5+0x20]
- ldr r3, [r5+0x1C] - subs r6, r1, r3
+ ldr r0, [r5+0x1C] + subs r6, r1, r0
cmp r6, 0 ble G_M33324_IG27 ldr r7, [r4+0x20] @@ -468,18 +468,18 @@ G_M33324_IG13: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ldr r1, [r5+0x10] ; gcrRegs +[r1] cmp r1, 0
- beq G_M33324_IG99 - ldr r0, [r1+0x04] - cmp r0, r3
+ beq G_M33324_IG98 + ldr r3, [r1+0x04] + cmp r3, r0
blo G_M33324_IG98
- ldr r0, [r1+0x04] - subs r0, r0, r3 - cmp r0, r6
+ ldr r3, [r1+0x04] + subs r3, r3, r0 + cmp r3, r6
blo G_M33324_IG98 adds r1, 8 ; gcrRegs -[r1] ; byrRegs +[r1]
- adds r7, r1, r3
+ adds r7, r1, r0
; byrRegs +[r7] mov r8, r6 add r9, r4, 24 @@ -621,7 +621,7 @@ G_M33324_IG22: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0090 {r4 r7}, ; gcr arg pop 0 ldr r9, [sp+0x38] // [V66 tmp47] cmp r8, r9
- bhi G_M33324_IG100
+ bhi G_M33324_IG99
ldr r0, [sp+0x18] // [V65 tmp46] ; byrRegs +[r0] mov r1, r7 @@ -643,7 +643,7 @@ G_M33324_IG23: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by cmp r6, r1 bne SHORT G_M33324_IG24 str r6, [sp+0x78] // [V03 loc2]
- b G_M33324_IG104
+ b G_M33324_IG103
;; size=12 bbWeight=1 PerfScore 5.00 G_M33324_IG24: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz cmp r6, 0 @@ -652,7 +652,7 @@ G_M33324_IG24: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ; byrRegs +[r1] ldr r0, [r1+0x08] cmp r6, r0
- bhi G_M33324_IG101
+ bhi G_M33324_IG100
ldr r7, [r1] ; gcrRegs +[r7] ldr r1, [r1+0x04] @@ -1022,7 +1022,7 @@ G_M33324_IG42: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre ldr r0, [r4+0x0C] adds r0, r6, r0 str r0, [sp+0x78] // [V03 loc2]
- b SHORT G_M33324_IG110
+ b SHORT G_M33324_IG109
;; size=10 bbWeight=1 PerfScore 5.00 G_M33324_IG43: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0010 {r4}, byref, isz ; gcrRegs +[r7] @@ -1102,7 +1102,7 @@ G_M33324_IG47: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b SHORT G_M33324_IG106
+ b SHORT G_M33324_IG105
;; size=68 bbWeight=1 PerfScore 24.00 G_M33324_IG48: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, nogc ; byrRegs +[r4] @@ -1212,7 +1212,7 @@ G_M33324_IG55: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b SHORT G_M33324_IG108
+ b SHORT G_M33324_IG107
;; size=76 bbWeight=1 PerfScore 26.00 G_M33324_IG56: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, nogc ; byrRegs +[r4] @@ -1483,7 +1483,7 @@ G_M33324_IG72: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre blx r3 // <unknown method> ; gcrRegs -[r1] ; gcr arg pop 0
- b SHORT G_M33324_IG112
+ b SHORT G_M33324_IG111
;; size=76 bbWeight=1 PerfScore 26.00 G_M33324_IG73: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, nogc ; byrRegs +[r4] @@ -1794,7 +1794,7 @@ G_M33324_IG97: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0050 {r4 r6}, ; gcr arg pop 0 ldr r9, [sp+0x2C] // [V165 tmp146] cmp r8, r9
- bhi SHORT G_M33324_IG100
+ bhi SHORT G_M33324_IG99
ldr r0, [sp+0x10] // [V164 tmp145] ; byrRegs +[r0] mov r1, r6 @@ -1807,7 +1807,7 @@ G_M33324_IG97: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0050 {r4 r6}, blx r3 // <unknown method> ; byrRegs -[r0-r1 r6] ; gcr arg pop 0
- b SHORT G_M33324_IG102
+ b SHORT G_M33324_IG101
;; size=40 bbWeight=1 PerfScore 15.00 G_M33324_IG98: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref movw r3, 0xd1ff @@ -1817,12 +1817,7 @@ G_M33324_IG98: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by ; gcr arg pop 0 bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-G_M33324_IG99: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz - cmp r3, 0 - bne SHORT G_M33324_IG98 - b SHORT G_M33324_IG98 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M33324_IG100: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
+G_M33324_IG99: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -1830,7 +1825,7 @@ G_M33324_IG100: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, b ; gcr arg pop 0 bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-G_M33324_IG101: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
+G_M33324_IG100: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
movs r0, 33 movw r3, 0xd1ff movt r3, 0xd1ff @@ -1839,7 +1834,7 @@ G_M33324_IG101: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, b ; gcr arg pop 0 bkpt ;; size=16 bbWeight=0 PerfScore 0.00
-G_M33324_IG102: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
+G_M33324_IG101: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
ldr r0, [r5+0x1C] adds r0, r0, r7 str r0, [r5+0x1C] @@ -1847,10 +1842,10 @@ G_M33324_IG102: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, b adds r0, r0, r7 str r0, [sp+0x78] // [V03 loc2] ;; size=12 bbWeight=1 PerfScore 6.00
-G_M33324_IG103: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
+G_M33324_IG102: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
ldr r0, [sp+0x7C] // [V01 loc0] cmp r0, 0
- bge SHORT G_M33324_IG114
+ bge SHORT G_M33324_IG113
ldr r0, [r5+0x04] ; gcrRegs +[r0] ldrsb r1, [r0] @@ -1862,44 +1857,44 @@ G_M33324_IG103: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, b blx r3 // <unknown method> ; gcrRegs -[r0 r5] ; gcr arg pop 0
- b SHORT G_M33324_IG114
+ b SHORT G_M33324_IG113
;; size=28 bbWeight=1 PerfScore 11.00
-G_M33324_IG104: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, gcvars, byref
+G_M33324_IG103: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, gcvars, byref
; gcrRegs +[r5] ; GC ptr vars +{V01 V02}
- bl G_M33324_IG117
+ bl G_M33324_IG116
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG105: ; bbWeight=1, nogc, isz, extend - b SHORT G_M33324_IG114
+G_M33324_IG104: ; bbWeight=1, nogc, isz, extend + b SHORT G_M33324_IG113
;; size=2 bbWeight=1 PerfScore 1.00
-G_M33324_IG106: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M33324_IG105: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
; byrRegs -[r4]
- bl G_M33324_IG117
+ bl G_M33324_IG116
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG107: ; bbWeight=1, nogc, isz, extend - b SHORT G_M33324_IG116
+G_M33324_IG106: ; bbWeight=1, nogc, isz, extend + b SHORT G_M33324_IG115
;; size=2 bbWeight=1 PerfScore 1.00
-G_M33324_IG108: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref - bl G_M33324_IG117
+G_M33324_IG107: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref + bl G_M33324_IG116
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG109: ; bbWeight=1, nogc, isz, extend
...

+0 (0.00%) : 53835.dasm - System.ArgumentOutOfRangeException:ThrowIfLessThanOrEqualfloat (Tier1)

No diffs found?

coreclr_tests.run.linux.arm.checked.mch

-40 (-71.43%) : 413427.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111_1():float (FullOpts)

@@ -2,65 +2,48 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T00] ( 4, 3.50) float -> f0 single-def
+;* V00 loc0 [V00 ] ( 0, 0 ) float -> zero-ref
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 cse0 [V02,T01] ( 3, 2.50) float -> f8 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M53663_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00 -G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float
- movw r3, 0xd1ff - movt r3, 0xd1ff - vmov.i2f s8, r3 - vcmp s0, s8 - vmrs APSR, FPSCR - bhs SHORT G_M53663_IG04 - ;; size=34 bbWeight=1 PerfScore 10.00 -G_M53663_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M53663_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - vcmp s0, s8 - vmrs APSR, FPSCR - bne SHORT G_M53663_IG03 - b SHORT G_M53663_IG03 - ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ; gcr arg pop 0 + ;; size=12 bbWeight=1 PerfScore 4.00 +G_M53663_IG03: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-Total bytes of code 56, prolog size 6, PerfScore 15.00, instruction count 17, allocated bytes for code 56 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+Total bytes of code 16, prolog size 2, PerfScore 6.00, instruction count 6, allocated bytes for code 16 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 1
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- Function Length : 28 (0x0001c) Actual length = 56 (0x000038) - ---- 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 : 0 (0x00)
+ Function Length : 8 (0x00008) Actual length = 16 (0x000010) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-30 (-28.30%) : 409421.dasm - Test10w250d.testout1:Func01111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_1():float (FullOpts)

@@ -8,62 +8,47 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T00] ( 5, 4 ) float -> f16 single-def
+; V00 loc0 [V00,T00] ( 3, 3 ) float -> [sp+0x04] spill-single-def
;* V01 loc1 [V01 ] ( 0, 0 ) float -> zero-ref ;* V02 loc2 [V02 ] ( 0, 0 ) float -> zero-ref ;* V03 loc3 [V03 ] ( 0, 0 ) float -> zero-ref ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T01] ( 4, 3 ) float -> f8 "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 2, 2 ) float -> f8 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M28447_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - vpush {d8-d8}
+ push {r2,r3,r11,lr}
add r11, sp, 8
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
G_M28447_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float
- vmov s16, s0
+ vstr s0, [sp+0x04]
movw r0, 0xd1ff movt r0, 0xd1ff vmov.i2f s8, r0
- vcmp s16, s8
+ vcmp s0, s8
vmrs APSR, FPSCR
- bhi SHORT G_M28447_IG07
+ bhi SHORT G_M28447_IG04
;; size=38 bbWeight=1 PerfScore 11.00
-G_M28447_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - vcmp s16, s8 - vmrs APSR, FPSCR - blt SHORT G_M28447_IG06 - ;; size=10 bbWeight=0.50 PerfScore 1.50 -G_M28447_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - vmov s0, s16
+G_M28447_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r2,r3,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M28447_IG05: ; bbWeight=1, epilog, nogc, extend - vpop {d8-d8} - pop {r11,pc} - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M28447_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - vcmp s16, s8 - vmrs APSR, FPSCR - ble SHORT G_M28447_IG04 - b SHORT G_M28447_IG04 - ;; size=12 bbWeight=0.50 PerfScore 2.00 -G_M28447_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M28447_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- b SHORT G_M28447_IG04 - ;; size=22 bbWeight=0.50 PerfScore 3.50
+ vldr s0, [sp+0x04] // [V00 loc0] + b SHORT G_M28447_IG03 + ;; size=26 bbWeight=0.50 PerfScore 4.00
-Total bytes of code 106, prolog size 12, PerfScore 24.00, instruction count 31, allocated bytes for code 106 (MethodHash=2d4290e0) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+Total bytes of code 76, prolog size 8, PerfScore 18.00, instruction count 22, allocated bytes for code 76 (MethodHash=2d4290e0) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================ Unwind Info: @@ -75,7 +60,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 53 (0x00035) Actual length = 106 (0x00006a)
+ Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -83,7 +68,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- E0 vpop {d8} ; opsize 32 - A8 00 pop {r11,lr} ; opsize 32
+ A8 0C pop {r2,r3,r11,lr} ; opsize 32 + FF end
FF end

-38 (-27.54%) : 211727.dasm - Test.AA:Method1(byref,int,byref,double[]):float (Tier0-FullOpts)

@@ -9,16 +9,16 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) byref -> zero-ref single-def
-; V01 arg1 [V01,T05] ( 3, 3 ) int -> r1 single-def
+; V01 arg1 [V01,T03] ( 3, 3 ) int -> r1 single-def
;* V02 arg2 [V02 ] ( 0, 0 ) byref -> zero-ref single-def
-; V03 arg3 [V03,T03] ( 4, 4 ) ref -> r3 class-hnd single-def <double[]>
+; V03 arg3 [V03,T01] ( 4, 4 ) ref -> r3 class-hnd single-def <double[]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T01] ( 2, 16 ) ref -> r0 class-hnd exact "NewObj constructor temp" <Test.AA> -; V06 cse0 [V06,T00] ( 4, 16 ) float -> f0 "CSE - aggressive" -; V07 cse1 [V07,T04] ( 3, 6 ) double -> f16:f17 "CSE - aggressive" -; V08 cse2 [V08,T02] ( 3, 9 ) float -> f18 hoist "CSE - aggressive" -; V09 cse3 [V09,T06] ( 2, 5 ) float -> f19 hoist "CSE - aggressive" -; V10 cse4 [V10,T07] ( 2, 5 ) int -> r4 hoist "CSE - aggressive"
+; V05 tmp1 [V05,T00] ( 2, 16 ) ref -> r0 class-hnd exact "NewObj constructor temp" <Test.AA> +;* V06 cse0 [V06,T06] ( 0, 0 ) float -> zero-ref "CSE - aggressive" +; V07 cse1 [V07,T02] ( 2, 2 ) double -> f16:f17 "CSE - aggressive" +; V08 cse2 [V08,T04] ( 2, 5 ) float -> f18 hoist "CSE - aggressive" +;* V09 cse3 [V09,T07] ( 0, 0 ) float -> zero-ref hoist "CSE - aggressive" +; V10 cse4 [V10,T05] ( 2, 5 ) int -> r4 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -43,10 +43,7 @@ G_M18129_IG02: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byre movw r0, 0xd1ff movt r0, 0xd1ff vmov.i2f s18, r0
- movw r0, 0xd1ff - movt r0, 0xd1ff - vmov.i2f s19, r0 - ;; size=56 bbWeight=1 PerfScore 17.00
+ ;; size=44 bbWeight=1 PerfScore 14.00
G_M18129_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r3] mov r0, r4 @@ -56,15 +53,8 @@ G_M18129_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[r0] ; gcr arg pop 0 vstr s18, [r0+0x04]
- vcvt.d2f s0, d8 - vsub s8, s18, s0 - vadd s0, s0, s0 - vadd s0, s8, s0 - vcmp s0, s19 - vmrs APSR, FPSCR - beq SHORT G_M18129_IG03
b SHORT G_M18129_IG03
- ;; size=44 bbWeight=4 PerfScore 52.00
+ ;; size=18 bbWeight=4 PerfScore 24.00
G_M18129_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[r0] movs r3, 0 @@ -82,7 +72,7 @@ G_M18129_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 138, prolog size 12, PerfScore 76.00, instruction count 41, allocated bytes for code 138 (MethodHash=704ab92e) for method Test.AA:Method1(byref,int,byref,double[]):float (Tier0-FullOpts)
+Total bytes of code 100, prolog size 12, PerfScore 45.00, instruction count 31, allocated bytes for code 100 (MethodHash=704ab92e) for method Test.AA:Method1(byref,int,byref,double[]):float (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -94,7 +84,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 69 (0x00045) Actual length = 138 (0x00008a)
+ Function Length : 50 (0x00032) Actual length = 100 (0x000064)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+6 (+4.05%) : 326219.dasm - testout1:SubFunclet183():int (FullOpts)

@@ -18,49 +18,49 @@ ;* V07 tmp3 [V07 ] ( 0, 0 ) int -> zero-ref single-def ;* V08 tmp4 [V08 ] ( 0, 0 ) int -> zero-ref ;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref
-; V10 tmp6 [V10,T10] ( 2, 2 ) int -> r3 single-def
+; V10 tmp6 [V10,T11] ( 2, 2 ) int -> r2 single-def
;* V11 tmp7 [V11 ] ( 0, 0 ) int -> zero-ref ;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref
-; V13 tmp9 [V13,T11] ( 2, 2 ) int -> r3 single-def
+; V13 tmp9 [V13,T12] ( 2, 2 ) int -> r2 single-def
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref ;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref
-; V16 tmp12 [V16,T12] ( 2, 2 ) int -> r3 single-def
+; V16 tmp12 [V16,T13] ( 2, 2 ) int -> r2 single-def
;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref ;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref
-; V19 tmp15 [V19,T13] ( 2, 2 ) int -> r0 single-def
+;* V19 tmp15 [V19,T14] ( 0, 0 ) int -> zero-ref single-def
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref ;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref
-; V22 tmp18 [V22,T14] ( 2, 2 ) int -> r0 single-def
+;* V22 tmp18 [V22,T15] ( 0, 0 ) int -> zero-ref single-def
;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref ;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref
-;* V25 tmp21 [V25,T15] ( 0, 0 ) int -> zero-ref single-def
+;* V25 tmp21 [V25 ] ( 0, 0 ) int -> zero-ref
;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref ;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref ;* V28 tmp24 [V28,T24] ( 0, 0 ) int -> zero-ref single-def ;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref ;* V30 tmp26 [V30 ] ( 0, 0 ) int -> zero-ref
-;* V31 tmp27 [V31,T16] ( 0, 0 ) int -> zero-ref single-def
+; V31 tmp27 [V31,T16] ( 2, 2 ) int -> r2 single-def
;* V32 tmp28 [V32 ] ( 0, 0 ) int -> zero-ref ;* V33 tmp29 [V33 ] ( 0, 0 ) int -> zero-ref
-;* V34 tmp30 [V34,T17] ( 0, 0 ) int -> zero-ref single-def
+; V34 tmp30 [V34,T17] ( 2, 2 ) int -> r3 single-def
;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref ;* V36 tmp32 [V36 ] ( 0, 0 ) int -> zero-ref
-;* V37 tmp33 [V37,T18] ( 0, 0 ) int -> zero-ref single-def
+; V37 tmp33 [V37,T18] ( 2, 2 ) int -> r3 single-def
;* V38 tmp34 [V38 ] ( 0, 0 ) int -> zero-ref ;* V39 tmp35 [V39 ] ( 0, 0 ) int -> zero-ref
-;* V40 tmp36 [V40,T25] ( 0, 0 ) int -> zero-ref single-def
+; V40 tmp36 [V40,T19] ( 2, 2 ) int -> r3 single-def
;* V41 tmp37 [V41 ] ( 0, 0 ) int -> zero-ref ;* V42 tmp38 [V42 ] ( 0, 0 ) int -> zero-ref
-; V43 tmp39 [V43,T19] ( 2, 2 ) int -> r0 single-def
+; V43 tmp39 [V43,T20] ( 2, 2 ) int -> r0 single-def
;* V44 tmp40 [V44 ] ( 0, 0 ) int -> zero-ref ;* V45 tmp41 [V45 ] ( 0, 0 ) int -> zero-ref
-; V46 tmp42 [V46,T20] ( 2, 2 ) int -> r0 single-def
+; V46 tmp42 [V46,T21] ( 2, 2 ) int -> r0 single-def
;* V47 tmp43 [V47 ] ( 0, 0 ) int -> zero-ref ;* V48 tmp44 [V48 ] ( 0, 0 ) int -> zero-ref
-;* V49 tmp45 [V49,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V49 tmp45 [V49,T25] ( 0, 0 ) int -> zero-ref single-def
;* V50 tmp46 [V50 ] ( 0, 0 ) int -> zero-ref ;* V51 tmp47 [V51 ] ( 0, 0 ) int -> zero-ref
-;* V52 tmp48 [V52,T26] ( 0, 0 ) int -> zero-ref single-def
+;* V52 tmp48 [V52 ] ( 0, 0 ) int -> zero-ref
;* V53 tmp49 [V53 ] ( 0, 0 ) int -> zero-ref ;* V54 tmp50 [V54 ] ( 0, 0 ) int -> zero-ref ;* V55 tmp51 [V55,T22] ( 0, 0 ) int -> zero-ref single-def @@ -69,19 +69,20 @@ ;* V58 tmp54 [V58,T23] ( 0, 0 ) int -> zero-ref single-def ;* V59 tmp55 [V59 ] ( 0, 0 ) int -> zero-ref ;* V60 tmp56 [V60 ] ( 0, 0 ) int -> zero-ref
-;* V61 tmp57 [V61,T27] ( 0, 0 ) int -> zero-ref single-def
+;* V61 tmp57 [V61,T26] ( 0, 0 ) int -> zero-ref single-def
;* V62 tmp58 [V62 ] ( 0, 0 ) int -> zero-ref ;* V63 tmp59 [V63 ] ( 0, 0 ) int -> zero-ref
-;* V64 tmp60 [V64,T28] ( 0, 0 ) int -> zero-ref single-def
+;* V64 tmp60 [V64,T27] ( 0, 0 ) int -> zero-ref single-def
;* V65 tmp61 [V65 ] ( 0, 0 ) int -> zero-ref ;* V66 tmp62 [V66 ] ( 0, 0 ) int -> zero-ref
-; V67 cse0 [V67,T07] ( 2, 2 ) int -> r0 "CSE - aggressive" -; V68 cse1 [V68,T04] ( 2, 2 ) int -> r0 "CSE - aggressive"
+; V67 cse0 [V67,T06] ( 2, 2 ) int -> r2 "CSE - aggressive" +; V68 cse1 [V68,T07] ( 2, 2 ) int -> r0 "CSE - aggressive"
; V69 cse2 [V69,T08] ( 2, 2 ) int -> r0 "CSE - aggressive"
-; V70 cse3 [V70,T05] ( 2, 2 ) int -> r2 "CSE - aggressive" -; V71 cse4 [V71,T06] ( 2, 2 ) int -> r3 "CSE - aggressive" -; V72 cse5 [V72,T03] ( 4, 4 ) int -> r3 "CSE - aggressive" -; V73 cse6 [V73,T09] ( 2, 2 ) int -> r0 "CSE - aggressive"
+; V70 cse3 [V70,T04] ( 3, 3 ) int -> r1 "CSE - aggressive" +; V71 cse4 [V71,T05] ( 3, 3 ) int -> r3 "CSE - aggressive" +; V72 cse5 [V72,T09] ( 3, 3 ) int -> r0 "CSE - aggressive" +; V73 cse6 [V73,T03] ( 4, 4 ) int -> r3 "CSE - aggressive" +; V74 cse7 [V74,T10] ( 2, 2 ) int -> r0 "CSE - aggressive"
; ; Lcl frame size = 4 @@ -138,22 +139,25 @@ G_M39164_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref strb r3, [r4+0x08] strb r2, [r4+0x09] ldr r3, [r4+0x04]
- adds r3, 17 - ldr r2, [r0+0x0C] - adds r3, r3, r2
+ mov r2, r3 + adds r2, 17 + ldr r1, [r0+0x0C] + adds r2, r2, r1
ldr r0, [r0+0x08] ; gcrRegs -[r0]
+ adds r2, r2, r0 + adds r3, r2, r3 + adds r3, 17 + adds r3, r3, r1
adds r0, r3, r0 adds r0, r0, 3 subs r0, r0, 5
- adds r0, r0, 3 - subs r0, r0, 5 - ;; size=136 bbWeight=1 PerfScore 51.00
+ ;; size=142 bbWeight=1 PerfScore 54.00
G_M39164_IG03: ; bbWeight=1, epilog, nogc, extend pop {r3,r4,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-Total bytes of code 148, prolog size 8, PerfScore 54.00, instruction count 54, allocated bytes for code 148 (MethodHash=17766703) for method testout1:Sub_Funclet_183():int (FullOpts)
+Total bytes of code 154, prolog size 8, PerfScore 57.00, instruction count 57, allocated bytes for code 154 (MethodHash=17766703) for method testout1:Sub_Funclet_183():int (FullOpts)
; ============================================================ Unwind Info: @@ -165,7 +169,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 74 (0x0004a) Actual length = 148 (0x000094)
+ Function Length : 77 (0x0004d) Actual length = 154 (0x00009a)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+6 (+4.17%) : 325726.dasm - testout1:SubFunclet106():int (FullOpts)

@@ -22,7 +22,7 @@ ;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref single-def ;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref ;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
-;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref single-def
+;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref ;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref ;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref single-def @@ -31,59 +31,59 @@ ;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref single-def ;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref ;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref
-;* V23 tmp14 [V23,T21] ( 0, 0 ) int -> zero-ref single-def
+;* V23 tmp14 [V23,T20] ( 0, 0 ) int -> zero-ref single-def
;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref ;* V25 tmp16 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp17 [V26,T08] ( 2, 2 ) int -> r3 single-def
+; V26 tmp17 [V26,T09] ( 2, 2 ) int -> r2 single-def
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref ;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
-; V29 tmp20 [V29,T09] ( 2, 2 ) int -> r3 single-def
+; V29 tmp20 [V29,T10] ( 2, 2 ) int -> r2 single-def
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref ;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
-; V32 tmp23 [V32,T10] ( 2, 2 ) int -> r3 single-def
+; V32 tmp23 [V32,T11] ( 2, 2 ) int -> r2 single-def
;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref ;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
-; V35 tmp26 [V35,T11] ( 2, 2 ) int -> r0 single-def
+;* V35 tmp26 [V35,T12] ( 0, 0 ) int -> zero-ref single-def
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref ;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref
-; V38 tmp29 [V38,T12] ( 2, 2 ) int -> r0 single-def
+;* V38 tmp29 [V38,T13] ( 0, 0 ) int -> zero-ref single-def
;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref ;* V40 tmp31 [V40 ] ( 0, 0 ) int -> zero-ref
-;* V41 tmp32 [V41,T13] ( 0, 0 ) int -> zero-ref single-def
+;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref
;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref ;* V43 tmp34 [V43 ] ( 0, 0 ) int -> zero-ref
-;* V44 tmp35 [V44,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V44 tmp35 [V44,T21] ( 0, 0 ) int -> zero-ref single-def
;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref ;* V46 tmp37 [V46 ] ( 0, 0 ) int -> zero-ref
-;* V47 tmp38 [V47,T14] ( 0, 0 ) int -> zero-ref single-def
+; V47 tmp38 [V47,T14] ( 2, 2 ) int -> r2 single-def
;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref ;* V49 tmp40 [V49 ] ( 0, 0 ) int -> zero-ref
-;* V50 tmp41 [V50,T15] ( 0, 0 ) int -> zero-ref single-def
+; V50 tmp41 [V50,T15] ( 2, 2 ) int -> r3 single-def
;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref ;* V52 tmp43 [V52 ] ( 0, 0 ) int -> zero-ref
-;* V53 tmp44 [V53,T16] ( 0, 0 ) int -> zero-ref single-def
+; V53 tmp44 [V53,T16] ( 2, 2 ) int -> r3 single-def
;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref ;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp47 [V56,T23] ( 0, 0 ) int -> zero-ref single-def
+; V56 tmp47 [V56,T17] ( 2, 2 ) int -> r3 single-def
;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref ;* V58 tmp49 [V58 ] ( 0, 0 ) int -> zero-ref
-;* V59 tmp50 [V59,T17] ( 0, 0 ) int -> zero-ref single-def
+;* V59 tmp50 [V59,T18] ( 0, 0 ) int -> zero-ref single-def
;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref ;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref
-;* V62 tmp53 [V62,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V62 tmp53 [V62,T19] ( 0, 0 ) int -> zero-ref single-def
;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref ;* V64 tmp55 [V64 ] ( 0, 0 ) int -> zero-ref
-;* V65 tmp56 [V65,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V65 tmp56 [V65,T22] ( 0, 0 ) int -> zero-ref single-def
;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref ;* V67 tmp58 [V67 ] ( 0, 0 ) int -> zero-ref
-;* V68 tmp59 [V68,T24] ( 0, 0 ) int -> zero-ref single-def
+;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref
;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref ;* V70 tmp61 [V70 ] ( 0, 0 ) int -> zero-ref
-; V71 cse0 [V71,T05] ( 2, 2 ) int -> r0 "CSE - aggressive" -;* V72 cse1 [V72,T20] ( 0, 0 ) int -> zero-ref "CSE - aggressive" -; V73 cse2 [V73,T04] ( 2, 2 ) int -> r0 "CSE - aggressive" -; V74 cse3 [V74,T06] ( 2, 2 ) int -> r3 "CSE - aggressive" -; V75 cse4 [V75,T07] ( 2, 2 ) int -> r2 "CSE - aggressive"
+; V71 cse0 [V71,T04] ( 2, 2 ) int -> r2 "CSE - aggressive" +; V72 cse1 [V72,T05] ( 2, 2 ) int -> r0 "CSE - aggressive" +; V73 cse2 [V73,T06] ( 3, 3 ) int -> r3 "CSE - aggressive" +; V74 cse3 [V74,T07] ( 3, 3 ) int -> r1 "CSE - aggressive" +; V75 cse4 [V75,T08] ( 3, 3 ) int -> r0 "CSE - aggressive"
; V76 cse5 [V76,T02] ( 4, 4 ) int -> r3 "CSE - aggressive" ; ; Lcl frame size = 4 @@ -141,20 +141,23 @@ G_M50161_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref strb r3, [r4+0x08] strb r2, [r4+0x09] ldr r3, [r4+0x04]
- adds r3, 17 - ldr r2, [r0+0x0C] - adds r3, r3, r2
+ mov r2, r3 + adds r2, 17 + ldr r1, [r0+0x0C] + adds r2, r2, r1
ldr r0, [r0+0x08] ; gcrRegs -[r0]
+ adds r2, r2, r0 + adds r3, r2, r3 + adds r3, 17 + adds r3, r3, r1
adds r0, r3, r0
- adds r0, r0, 3 - subs r0, r0, 5 - ;; size=132 bbWeight=1 PerfScore 49.00
+ ;; size=138 bbWeight=1 PerfScore 52.00
G_M50161_IG03: ; bbWeight=1, epilog, nogc, extend pop {r3,r4,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-Total bytes of code 144, prolog size 8, PerfScore 52.00, instruction count 52, allocated bytes for code 144 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
+Total bytes of code 150, prolog size 8, PerfScore 55.00, instruction count 55, allocated bytes for code 150 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
; ============================================================ Unwind Info: @@ -166,7 +169,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 72 (0x00048) Actual length = 144 (0x000090)
+ Function Length : 75 (0x0004b) Actual length = 150 (0x000096)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+6 (+4.17%) : 326143.dasm - testout1:SubFunclet106():int (FullOpts)

@@ -19,7 +19,7 @@ ;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref single-def ;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref ;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref
-;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref single-def
+;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref ;* V13 tmp8 [V13 ] ( 0, 0 ) int -> zero-ref ;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref single-def @@ -28,61 +28,61 @@ ;* V17 tmp12 [V17 ] ( 0, 0 ) int -> zero-ref single-def ;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref ;* V19 tmp14 [V19 ] ( 0, 0 ) int -> zero-ref
-;* V20 tmp15 [V20,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V20 tmp15 [V20,T21] ( 0, 0 ) int -> zero-ref single-def
;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref ;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref
-; V23 tmp18 [V23,T09] ( 2, 2 ) int -> r3 single-def
+; V23 tmp18 [V23,T10] ( 2, 2 ) int -> r2 single-def
;* V24 tmp19 [V24 ] ( 0, 0 ) int -> zero-ref ;* V25 tmp20 [V25 ] ( 0, 0 ) int -> zero-ref
-; V26 tmp21 [V26,T10] ( 2, 2 ) int -> r3 single-def
+; V26 tmp21 [V26,T11] ( 2, 2 ) int -> r2 single-def
;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref ;* V28 tmp23 [V28 ] ( 0, 0 ) int -> zero-ref
-; V29 tmp24 [V29,T11] ( 2, 2 ) int -> r3 single-def
+; V29 tmp24 [V29,T12] ( 2, 2 ) int -> r2 single-def
;* V30 tmp25 [V30 ] ( 0, 0 ) int -> zero-ref ;* V31 tmp26 [V31 ] ( 0, 0 ) int -> zero-ref
-; V32 tmp27 [V32,T12] ( 2, 2 ) int -> r0 single-def
+;* V32 tmp27 [V32,T13] ( 0, 0 ) int -> zero-ref single-def
;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref ;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref
-; V35 tmp30 [V35,T13] ( 2, 2 ) int -> r0 single-def
+;* V35 tmp30 [V35,T14] ( 0, 0 ) int -> zero-ref single-def
;* V36 tmp31 [V36 ] ( 0, 0 ) int -> zero-ref ;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref
-;* V38 tmp33 [V38,T14] ( 0, 0 ) int -> zero-ref single-def
+;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref
;* V39 tmp34 [V39 ] ( 0, 0 ) int -> zero-ref ;* V40 tmp35 [V40 ] ( 0, 0 ) int -> zero-ref
-;* V41 tmp36 [V41,T23] ( 0, 0 ) int -> zero-ref single-def
+;* V41 tmp36 [V41,T22] ( 0, 0 ) int -> zero-ref single-def
;* V42 tmp37 [V42 ] ( 0, 0 ) int -> zero-ref ;* V43 tmp38 [V43 ] ( 0, 0 ) int -> zero-ref
-;* V44 tmp39 [V44,T15] ( 0, 0 ) int -> zero-ref single-def
+; V44 tmp39 [V44,T15] ( 2, 2 ) int -> r2 single-def
;* V45 tmp40 [V45 ] ( 0, 0 ) int -> zero-ref ;* V46 tmp41 [V46 ] ( 0, 0 ) int -> zero-ref
-;* V47 tmp42 [V47,T16] ( 0, 0 ) int -> zero-ref single-def
+; V47 tmp42 [V47,T16] ( 2, 2 ) int -> r3 single-def
;* V48 tmp43 [V48 ] ( 0, 0 ) int -> zero-ref ;* V49 tmp44 [V49 ] ( 0, 0 ) int -> zero-ref
-;* V50 tmp45 [V50,T17] ( 0, 0 ) int -> zero-ref single-def
+; V50 tmp45 [V50,T17] ( 2, 2 ) int -> r3 single-def
;* V51 tmp46 [V51 ] ( 0, 0 ) int -> zero-ref ;* V52 tmp47 [V52 ] ( 0, 0 ) int -> zero-ref
-;* V53 tmp48 [V53,T24] ( 0, 0 ) int -> zero-ref single-def
+; V53 tmp48 [V53,T18] ( 2, 2 ) int -> r3 single-def
;* V54 tmp49 [V54 ] ( 0, 0 ) int -> zero-ref ;* V55 tmp50 [V55 ] ( 0, 0 ) int -> zero-ref
-;* V56 tmp51 [V56,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V56 tmp51 [V56,T19] ( 0, 0 ) int -> zero-ref single-def
;* V57 tmp52 [V57 ] ( 0, 0 ) int -> zero-ref ;* V58 tmp53 [V58 ] ( 0, 0 ) int -> zero-ref
-;* V59 tmp54 [V59,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V59 tmp54 [V59,T20] ( 0, 0 ) int -> zero-ref single-def
;* V60 tmp55 [V60 ] ( 0, 0 ) int -> zero-ref ;* V61 tmp56 [V61 ] ( 0, 0 ) int -> zero-ref
-;* V62 tmp57 [V62,T20] ( 0, 0 ) int -> zero-ref single-def
+;* V62 tmp57 [V62,T23] ( 0, 0 ) int -> zero-ref single-def
;* V63 tmp58 [V63 ] ( 0, 0 ) int -> zero-ref ;* V64 tmp59 [V64 ] ( 0, 0 ) int -> zero-ref
-;* V65 tmp60 [V65,T25] ( 0, 0 ) int -> zero-ref single-def
+;* V65 tmp60 [V65 ] ( 0, 0 ) int -> zero-ref
;* V66 tmp61 [V66 ] ( 0, 0 ) int -> zero-ref ;* V67 tmp62 [V67 ] ( 0, 0 ) int -> zero-ref
-; V68 cse0 [V68,T05] ( 2, 2 ) int -> r0 "CSE - aggressive" -;* V69 cse1 [V69,T21] ( 0, 0 ) int -> zero-ref "CSE - aggressive" -; V70 cse2 [V70,T04] ( 2, 2 ) int -> r0 "CSE - aggressive" -; V71 cse3 [V71,T06] ( 2, 2 ) int -> r3 "CSE - aggressive" -; V72 cse4 [V72,T07] ( 2, 2 ) int -> r2 "CSE - aggressive"
+; V68 cse0 [V68,T04] ( 2, 2 ) int -> r2 "CSE - aggressive" +; V69 cse1 [V69,T05] ( 2, 2 ) int -> r0 "CSE - aggressive" +; V70 cse2 [V70,T06] ( 3, 3 ) int -> r3 "CSE - aggressive" +; V71 cse3 [V71,T07] ( 3, 3 ) int -> r1 "CSE - aggressive" +; V72 cse4 [V72,T08] ( 3, 3 ) int -> r0 "CSE - aggressive"
; V73 cse5 [V73,T03] ( 4, 4 ) int -> r3 "CSE - aggressive"
-; V74 cse6 [V74,T08] ( 2, 2 ) int -> r0 "CSE - aggressive"
+; V74 cse6 [V74,T09] ( 2, 2 ) int -> r0 "CSE - aggressive"
; ; Lcl frame size = 4 @@ -139,20 +139,23 @@ G_M50161_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref strb r3, [r4+0x08] strb r2, [r4+0x09] ldr r3, [r4+0x04]
- adds r3, 17 - ldr r2, [r0+0x0C] - adds r3, r3, r2
+ mov r2, r3 + adds r2, 17 + ldr r1, [r0+0x0C] + adds r2, r2, r1
ldr r0, [r0+0x08] ; gcrRegs -[r0]
+ adds r2, r2, r0 + adds r3, r2, r3 + adds r3, 17 + adds r3, r3, r1
adds r0, r3, r0
- adds r0, r0, 3 - subs r0, r0, 5 - ;; size=132 bbWeight=1 PerfScore 49.00
+ ;; size=138 bbWeight=1 PerfScore 52.00
G_M50161_IG03: ; bbWeight=1, epilog, nogc, extend pop {r3,r4,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-Total bytes of code 144, prolog size 8, PerfScore 52.00, instruction count 52, allocated bytes for code 144 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
+Total bytes of code 150, prolog size 8, PerfScore 55.00, instruction count 55, allocated bytes for code 150 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
; ============================================================ Unwind Info: @@ -164,7 +167,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 72 (0x00048) Actual length = 144 (0x000090)
+ Function Length : 75 (0x0004b) Actual length = 150 (0x000096)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

libraries.pmi.linux.arm.checked.mch

-10 (-41.67%) : 201981.dasm - System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)

@@ -2,7 +2,7 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data ; 1 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data @@ -13,12 +13,11 @@ ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M40773_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00
G_M40773_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0] uxtb r3, r1 @@ -27,18 +26,15 @@ G_M40773_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byre ;; size=6 bbWeight=1 PerfScore 3.00 G_M40773_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[r0]
- pop {r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00
+ pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
G_M40773_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[r0] ldr r3, [r0+0x08]
- ; gcrRegs +[r3] - cmp r3, 0 - beq SHORT G_M40773_IG03
b SHORT G_M40773_IG03
- ;; size=8 bbWeight=0.50 PerfScore 2.00
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
-Total bytes of code 24, prolog size 6, PerfScore 8.00, instruction count 10, allocated bytes for code 24 (MethodHash=8a3760ba) for method System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
+Total bytes of code 14, prolog size 2, PerfScore 6.00, instruction count 7, allocated bytes for code 14 (MethodHash=8a3760ba) for method System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
; ============================================================ Unwind Info: @@ -50,7 +46,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 12 (0x0000c) Actual length = 24 (0x000018)
+ Function Length : 7 (0x00007) Actual length = 14 (0x00000e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -58,7 +54,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-16 (-17.39%) : 218477.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (FullOpts)

@@ -8,10 +8,10 @@ ; 1 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 7, 5.00) ref -> r4 class-hnd single-def <System.Type>
+; V00 arg0 [V00,T00] ( 6, 4.50) ref -> r4 class-hnd single-def <System.Type>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02,T01] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V03 tmp2 [V03,T02] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; ; Lcl frame size = 4 @@ -46,40 +46,26 @@ G_M8853_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, b movw r0, 0xd1ff movt r0, 0xd1ff cmp r4, r0
- beq SHORT G_M8853_IG08 - ;; size=12 bbWeight=0.50 PerfScore 2.00 -G_M8853_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - ldr r0, [r4] - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r0, r3 - beq SHORT G_M8853_IG10 - ;; size=14 bbWeight=0.50 PerfScore 2.48 -G_M8853_IG07: ; bbWeight=0.49, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - b SHORT G_M8853_IG10 - ;; size=2 bbWeight=0.49 PerfScore 0.49 -G_M8853_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4]
+ bne SHORT G_M8853_IG07
movs r0, 0
- ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M8853_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=14 bbWeight=0.50 PerfScore 2.50 +G_M8853_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M8853_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[r4]
+G_M8853_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
mov r0, r4 ; gcrRegs +[r0] ldr r3, [r4] ldr r3, [r3+0x58] ldr r3, [r3+0x10] ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M8853_IG11: ; bbWeight=0.50, epilog, nogc, extend
+G_M8853_IG08: ; bbWeight=0.50, epilog, nogc, extend
add sp, 4 pop {r4,r11,lr} bx r3 // <unknown method> ;; size=8 bbWeight=0.50 PerfScore 1.50
-Total bytes of code 92, prolog size 8, PerfScore 21.97, instruction count 33, allocated bytes for code 92 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (FullOpts)
+Total bytes of code 76, prolog size 8, PerfScore 19.00, instruction count 27, allocated bytes for code 76 (MethodHash=a7e7dd6a) for method System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (FullOpts)
; ============================================================ Unwind Info: @@ -91,7 +77,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 46 (0x0002e) Actual length = 92 (0x00005c)
+ Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-12 (-16.22%) : 272290.dasm - System.IO.FileSystemWatcher+NormalizedFilterCollection+ImmutableStringList:get_Item(int):System.String:this (FullOpts)

@@ -2,29 +2,28 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data ; 2 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.IO.FileSystemWatcher+NormalizedFilterCollection+ImmutableStringList>
-; V01 arg1 [V01,T00] ( 6, 4.11) int -> r4 single-def
+; V01 arg1 [V01,T00] ( 5, 4 ) int -> r4 single-def
; V02 loc0 [V02,T03] ( 3, 3 ) ref -> r0 class-hnd exact single-def <<unknown class>> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-; V05 tmp2 [V05,T02] ( 4, 4.22) int -> r5 "Inlining Arg"
+; V05 tmp2 [V05,T02] ( 3, 4 ) int -> r5 "Inlining Arg"
;* V06 tmp3 [V06,T05] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ; V07 tmp4 [V07,T06] ( 2, 0 ) ref -> r2 single-def "argument with side effect" ; V08 cse0 [V08,T04] ( 2, 2 ) int -> r5 "CSE - aggressive" ;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M30474_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr} - add r11, sp, 8
+ push {r3,r4,r5,lr}
mov r4, r1
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M30474_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0] ldr r0, [r0+0x04] @@ -40,14 +39,10 @@ G_M30474_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byre ; byrRegs -[r0] ;; size=14 bbWeight=1 PerfScore 7.00 G_M30474_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r4,r5,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M30474_IG04: ; bbWeight=0.11, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ pop {r3,r4,r5,pc} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M30474_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0]
- cmp r4, r5 - bls SHORT G_M30474_IG05 - ;; size=4 bbWeight=0.11 PerfScore 0.22 -G_M30474_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff movw r1, 0xd1ff movt r1, 0xd1ff @@ -55,6 +50,7 @@ G_M30474_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movt r3, 0xd1ff blx r3 // CORINFO_HELP_STRCNS ; gcrRegs +[r0]
+ ; gcr arg pop 0
mov r2, r0 ; gcrRegs +[r2] mov r1, r5 @@ -65,10 +61,11 @@ G_M30474_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr r3, [r3] blx r3 // System.ArgumentOutOfRangeException:ThrowGreaterEqual[uint](uint,uint,System.String) ; gcrRegs -[r2]
+ ; gcr arg pop 0
bkpt ;; size=42 bbWeight=0 PerfScore 0.00
-Total bytes of code 74, prolog size 8, PerfScore 11.22, instruction count 27, allocated bytes for code 74 (MethodHash=9dbb88f5) for method System.IO.FileSystemWatcher+NormalizedFilterCollection+ImmutableStringList:get_Item(int):System.String:this (FullOpts)
+Total bytes of code 62, prolog size 2, PerfScore 10.00, instruction count 24, allocated bytes for code 62 (MethodHash=9dbb88f5) for method System.IO.FileSystemWatcher+NormalizedFilterCollection+ImmutableStringList:get_Item(int):System.String:this (FullOpts)
; ============================================================ Unwind Info: @@ -80,7 +77,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -88,7 +85,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ ED 38 pop {r3,r4,r5,lr} ; opsize 16
FF end FF end

+4 (+0.21%) : 182632.dasm - System.DirectoryServices.Protocols.BerConverter:TryDecode(System.String,ubyte[],byref):System.Object

@@ -8,34 +8,34 @@ ; 21 inlinees with PGO data; 27 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T16] ( 6, 12 ) ref -> [sp+0x30] class-hnd single-def <System.String>
+; V00 arg0 [V00,T20] ( 5, 8 ) ref -> [sp+0x2C] class-hnd single-def <System.String>
; V01 arg1 [V01,T21] ( 9, 6 ) ref -> r5 class-hnd single-def <ubyte[]> ; V02 arg2 [V02,T36] ( 4, 3.50) byref -> r6 single-def
-; V03 loc0 [V03,T20] ( 4, 11 ) ref -> r7 class-hnd exact single-def <System.Text.UTF8Encoding> -; V04 loc1 [V04,T46] ( 6, 2.50) ref -> [sp+0x2C] class-hnd exact EH-live spill-single-def <System.DirectoryServices.Protocols.BerVal>
+; V03 loc0 [V03,T19] ( 4, 11 ) ref -> r7 class-hnd exact single-def <System.Text.UTF8Encoding> +; V04 loc1 [V04,T46] ( 6, 2.50) ref -> [sp+0x28] class-hnd exact EH-live spill-single-def <System.DirectoryServices.Protocols.BerVal>
; V05 loc2 [V05,T00] ( 66,114.02) ref -> r9 class-hnd exact single-def <System.Collections.ArrayList> ; V06 loc3 [V06,T15] ( 8, 15 ) ref -> r5 class-hnd single-def <System.DirectoryServices.Protocols.SafeBerHandle>
-; V07 loc4 [V07,T31] ( 3, 5 ) ref -> r5 class-hnd <System.Object[]> -; V08 loc5 [V08 ] ( 14, 30 ) int -> [sp+0x4C] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V07 loc4 [V07,T30] ( 3, 5 ) ref -> r5 class-hnd <System.Object[]> +; V08 loc5 [V08 ] ( 13, 28 ) int -> [sp+0x4C] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V09 loc6 [V09,T11] ( 5, 17 ) int -> r8 ; V10 loc7 [V10,T04] ( 20, 44 ) ushort -> [sp+0x48] spill-single-def ; V11 loc8 [V11 ] ( 4, 8 ) int -> [sp+0x44] do-not-enreg[X] must-init addr-exposed ld-addr-op
-; V12 loc9 [V12,T35] ( 3, 6 ) ubyte -> [sp+0x40]
+; V12 loc9 [V12,T34] ( 3, 6 ) ubyte -> [sp+0x40]
; V13 loc10 [V13,T22] ( 4, 8 ) ref -> r1 class-hnd <ubyte[]>
-; V14 loc11 [V14,T32] ( 3, 6 ) ref -> [sp+0x28] class-hnd <System.String> -; V15 loc12 [V15,T37] ( 2, 4 ) ref -> [sp+0x24] class-hnd spill-single-def <ubyte[]> -; V16 loc13 [V16,T09] ( 5, 22 ) ref -> [sp+0x20] class-hnd <<unknown class>> -; V17 loc14 [V17,T07] ( 10, 24.16) ref -> [sp+0x1C] class-hnd <<unknown class>>
+; V14 loc11 [V14,T31] ( 3, 6 ) ref -> [sp+0x24] class-hnd <System.String> +; V15 loc12 [V15,T37] ( 2, 4 ) ref -> [sp+0x20] class-hnd spill-single-def <ubyte[]> +; V16 loc13 [V16,T09] ( 5, 22 ) ref -> [sp+0x1C] class-hnd <<unknown class>> +; V17 loc14 [V17,T07] ( 10, 24.16) ref -> [sp+0x18] class-hnd <<unknown class>>
; V18 loc15 [V18,T01] ( 13, 66.32) int -> [sp+0x3C]
-; V19 loc16 [V19,T38] ( 2, 4 ) ref -> [sp+0x18] class-hnd spill-single-def <<unknown class>>
+; V19 loc16 [V19,T38] ( 2, 4 ) ref -> [sp+0x14] class-hnd spill-single-def <<unknown class>>
; V20 loc17 [V20,T10] ( 6, 20.50) int -> r7 ;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V22 tmp1 [V22,T12] ( 8, 16 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Text.UTF8Encoding>
-; V23 tmp2 [V23,T19] ( 8, 11 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.DirectoryServices.Protocols.BerVal> -; V24 tmp3 [V24,T33] ( 3, 6 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ArrayList> -; V25 tmp4 [V25,T34] ( 3, 6 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <System.DirectoryServices.Protocols.SafeBerHandle> -; V26 tmp5 [V26,T17] ( 3, 12 ) ref -> [sp+0x14] class-hnd exact spill-single-def "Single-def Box Helper" <System.Int32> -; V27 tmp6 [V27,T18] ( 3, 12 ) ref -> [sp+0x10] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>>
+; V23 tmp2 [V23,T18] ( 8, 11 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.DirectoryServices.Protocols.BerVal> +; V24 tmp3 [V24,T32] ( 3, 6 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ArrayList> +; V25 tmp4 [V25,T33] ( 3, 6 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <System.DirectoryServices.Protocols.SafeBerHandle> +; V26 tmp5 [V26,T16] ( 3, 12 ) ref -> [sp+0x10] class-hnd exact spill-single-def "Single-def Box Helper" <System.Int32> +; V27 tmp6 [V27,T17] ( 3, 12 ) ref -> [sp+0x0C] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>>
; V28 tmp7 [V28,T54] ( 3, 0 ) ref -> r4 class-hnd exact "NewObj constructor temp" <<unknown class>> ; V29 tmp8 [V29,T06] ( 4, 32 ) ref -> r1 class-hnd exact "Strict ordering of exceptions for Array store" <System.String> ;* V30 tmp9 [V30 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" @@ -50,21 +50,21 @@ ;* V39 tmp18 [V39 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V40 tmp19 [V40,T47] ( 4, 2 ) int -> r0 "Inlining Arg" ;* V41 tmp20 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V42 tmp21 [V42,T25] ( 2, 8 ) int -> r0 "Inlining Arg"
+;* V42 tmp21 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V43 tmp22 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V44 tmp23 [V44,T26] ( 2, 8 ) int -> r0 "Inlining Arg"
+; V44 tmp23 [V44,T25] ( 2, 8 ) int -> r0 "Inlining Arg"
;* V45 tmp24 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ; V46 tmp25 [V46,T39] ( 2, 4 ) int -> r0 "Inline stloc first use temp" ;* V47 tmp26 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Int32> ; V48 tmp27 [V48,T40] ( 2, 4 ) int -> r2 "Inline stloc first use temp"
-; V49 tmp28 [V49,T27] ( 2, 8 ) int -> r3 "Inlining Arg"
+; V49 tmp28 [V49,T26] ( 2, 8 ) int -> r3 "Inlining Arg"
; V50 tmp29 [V50,T41] ( 2, 4 ) int -> r2 "Inline stloc first use temp"
-; V51 tmp30 [V51,T28] ( 2, 8 ) int -> r1 "Inlining Arg"
+; V51 tmp30 [V51,T27] ( 2, 8 ) int -> r1 "Inlining Arg"
; V52 tmp31 [V52,T42] ( 2, 4 ) int -> r0 "Inline stloc first use temp"
-; V53 tmp32 [V53,T29] ( 2, 8 ) int -> r1 "Inlining Arg" -; V54 tmp33 [V54,T02] ( 6, 48 ) ref -> [sp+0x0C] class-hnd "Inlining Arg" <ubyte[]>
+; V53 tmp32 [V53,T28] ( 2, 8 ) int -> r1 "Inlining Arg" +; V54 tmp33 [V54,T02] ( 6, 48 ) ref -> [sp+0x08] class-hnd "Inlining Arg" <ubyte[]>
; V55 tmp34 [V55,T43] ( 2, 4 ) int -> r0 "Inline stloc first use temp"
-; V56 tmp35 [V56,T30] ( 2, 8 ) int -> r1 "Inlining Arg"
+; V56 tmp35 [V56,T29] ( 2, 8 ) int -> r1 "Inlining Arg"
; V57 tmp36 [V57,T44] ( 2, 4 ) int -> r1 "Inline stloc first use temp" ; V58 tmp37 [V58,T14] ( 2, 16 ) int -> r1 "Inlining Arg" ; V59 tmp38 [V59,T49] ( 2, 1 ) byref -> r1 single-def "field V33._reference (fldOffset=0x0)" P-INDEP @@ -84,8 +84,9 @@ ; V73 cse1 [V73,T05] ( 3, 39.60) ref -> r3 "CSE - aggressive" ; V74 cse2 [V74,T03] ( 4, 47.52) int -> [sp+0x38] spill-single-def "CSE - aggressive" ; V75 cse3 [V75,T08] ( 6, 24 ) int -> [sp+0x34] spill-single-def "CSE - aggressive"
-; TEMP_02 ref -> [r11-0x68] -; TEMP_01 int -> [r11-0x6C]
+; V76 cse4 [V76,T35] ( 3, 6 ) int -> [sp+0x30] spill-single-def "CSE - moderate" +; TEMP_02 ref -> [r11-0x6C] +; TEMP_01 int -> [r11-0x70]
; ; Lcl frame size = 84 @@ -96,7 +97,7 @@ G_M40673_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movs r3, 0 str r3, [sp+0x4C] // [V08 loc5] str r3, [sp+0x44] // [V11 loc8]
- str r3, [sp+0x08] // [TEMP_02]
+ str r3, [sp+0x04] // [TEMP_02]
add r3, sp, 120 str r3, [sp+0x50] // [V71 PSPSym] mov r4, r0 @@ -155,7 +156,7 @@ G_M40673_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0040 {r6}, movs r0, 0 ; gcrRegs -[r0] str r0, [r8+0x08]
- str r8, [sp+0x2C] // [V04 loc1]
+ str r8, [sp+0x28] // [V04 loc1]
; GC ptr vars +{V04} movw r0, 0xd1ff movt r0, 0xd1ff @@ -237,7 +238,7 @@ G_M40673_IG06: ; bbWeight=1, gcrefRegs=0290 {r4 r7 r9}, byrefRegs=0040 {r mov r5, r0 ; gcrRegs +[r5] mov r0, r5
- ldr r1, [sp+0x2C] // [V04 loc1]
+ ldr r1, [sp+0x28] // [V04 loc1]
; gcrRegs +[r1] movw r3, 0xd1ff movt r3, 0xd1ff @@ -247,7 +248,7 @@ G_M40673_IG06: ; bbWeight=1, gcrefRegs=0290 {r4 r7 r9}, byrefRegs=0040 {r ; gcr arg pop 0 ;; size=36 bbWeight=1 PerfScore 12.00 G_M40673_IG07: ; bbWeight=1, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz
- ldr r1, [sp+0x2C] // [V04 loc1]
+ ldr r1, [sp+0x28] // [V04 loc1]
; gcrRegs +[r1] ldr r0, [r1+0x08] cmp r0, 0 @@ -264,38 +265,39 @@ G_M40673_IG08: ; bbWeight=0.50, gcrefRegs=02B2 {r1 r4 r5 r7 r9}, byrefReg ;; size=12 bbWeight=0.50 PerfScore 2.00 G_M40673_IG09: ; bbWeight=1, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz mov r8, 0
- ldr r0, [r4+0x04] - cmp r0, 0
+ ldr r3, [r4+0x04] + str r3, [sp+0x30] // [V76 cse4] + cmp r3, 0
ble G_M40673_IG49
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=14 bbWeight=1 PerfScore 5.00
G_M40673_IG10: ; bbWeight=4, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz add r0, r4, 8 ; byrRegs +[r0] lsl r1, r8, 1
- ldrh r3, [r0+r1] - str r3, [sp+0x48] // [V10 loc7] - cmp r3, 123
+ ldrh r2, [r0+r1] + str r2, [sp+0x48] // [V10 loc7] + cmp r2, 123
beq SHORT G_M40673_IG12 ;; size=16 bbWeight=4 PerfScore 24.00 G_M40673_IG11: ; bbWeight=2, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz ; byrRegs -[r0]
- cmp r3, 125
+ cmp r2, 125
beq SHORT G_M40673_IG12
- cmp r3, 91
+ cmp r2, 91
beq SHORT G_M40673_IG12
- cmp r3, 93
+ cmp r2, 93
beq SHORT G_M40673_IG12
- cmp r3, 110
+ cmp r2, 110
beq SHORT G_M40673_IG12
- cmp r3, 120
+ cmp r2, 120
bne SHORT G_M40673_IG13 ;; size=20 bbWeight=2 PerfScore 20.00 G_M40673_IG12: ; bbWeight=2, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz
- mov r0, r3
+ mov r0, r2
movs r1, 1
- movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method>
+ movw r2, 0xd1ff + movt r2, 0xd1ff + blx r2 // <unknown method>
; gcrRegs +[r0] ; gcr arg pop 0 mov r1, r0 @@ -308,27 +310,24 @@ G_M40673_IG12: ; bbWeight=2, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 ; gcrRegs -[r0-r1] ; gcr arg pop 0 str r0, [sp+0x4C] // [V08 loc5]
- ldr r0, [sp+0x4C] // [V08 loc5] - cmp r0, -1 - bne G_M40673_IG48
b SHORT G_M40673_IG48
- ;; size=44 bbWeight=2 PerfScore 32.00
+ ;; size=34 bbWeight=2 PerfScore 26.00
G_M40673_IG13: ; bbWeight=2, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz
- cmp r3, 105
+ cmp r2, 105
beq SHORT G_M40673_IG14
- cmp r3, 101
+ cmp r2, 101
beq SHORT G_M40673_IG14
- cmp r3, 98
+ cmp r2, 98
bne G_M40673_IG25 ;; size=14 bbWeight=2 PerfScore 12.00 G_M40673_IG14: ; bbWeight=2, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz movs r0, 0 str r0, [sp+0x44] // [V11 loc8]
- mov r0, r3
+ mov r0, r2
movs r1, 1
- movw r2, 0xd1ff - movt r2, 0xd1ff - blx r2 // <unknown method>
+ movw lr, 0xd1ff + movt lr, 0xd1ff + blx lr // <unknown method>
; gcrRegs +[r0] ; gcr arg pop 0 mov r1, r0 @@ -369,7 +368,7 @@ G_M40673_IG16: ; bbWeight=2, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 ; gcr arg pop 0 mov r3, r0 ; gcrRegs +[r3]
- str r3, [sp+0x10] // [V27 tmp6]
+ str r3, [sp+0x0C] // [V27 tmp6]
; GC ptr vars +{V27} ldr r1, [sp+0x40] // [V12 loc9] strb r1, [r3+0x04] @@ -380,9 +379,9 @@ G_M40673_IG16: ; bbWeight=2, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 cmp r1, r0 beq SHORT G_M40673_IG19 ;; size=40 bbWeight=2 PerfScore 28.00
-G_M40673_IG17: ; bbWeight=1, gcVars=0000000000040000 {V27}, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 {r6}, gcvars, byref
+G_M40673_IG17: ; bbWeight=1, gcVars=0000000000020000 {V27}, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 {r6}, gcvars, byref
; gcrRegs -[r3]
- ldr r3, [sp+0x10] // [V27 tmp6]
+ ldr r3, [sp+0x0C] // [V27 tmp6]
; gcrRegs +[r3] ;; size=2 bbWeight=1 PerfScore 1.00 G_M40673_IG18: ; bbWeight=2, gcrefRegs=02B8 {r3 r4 r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz @@ -406,8 +405,8 @@ G_M40673_IG18: ; bbWeight=2, gcrefRegs=02B8 {r3 r4 r5 r7 r9}, byrefRegs=0 str r0, [r9+0x08] b SHORT G_M40673_IG48 ;; size=42 bbWeight=2 PerfScore 26.00
-G_M40673_IG19: ; bbWeight=0.50, gcVars=0000000000040000 {V27}, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 {r6}, gcvars, byref, isz - ; GC ptr vars +{V18 V27}
+G_M40673_IG19: ; bbWeight=0.50, gcVars=0000000000020000 {V27}, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0040 {r6}, gcvars, byref, isz + ; GC ptr vars +{V17 V27}
ldr r1, [r9+0x08] adds r1, r1, 1 ...

+20 (+0.38%) : 163623.dasm - ILCompiler.PettisHansenSort.PettisHansen:Sort(System.Collections.Generic.List1[ILCompiler.PettisHansenSort.CallGraphNode]):System.Collections.Generic.List1[System.Collections.Generic.List`1[int]] (FullOpts)

@@ -10,7 +10,7 @@ ; ; V00 arg0 [V00,T193] ( 3, 3 ) ref -> r4 class-hnd single-def <System.Collections.Generic.List`1[ILCompiler.PettisHansenSort.CallGraphNode]> ; V01 loc0 [V01,T38] ( 19,100 ) ref -> r5 class-hnd exact single-def <ILCompiler.PettisHansenSort.PettisHansen+<>c__DisplayClass0_0>
-; V02 loc1 [V02,T55] ( 39, 81 ) ref -> [sp+0x2C] class-hnd exact spill-single-def <<unknown class>>
+; V02 loc1 [V02,T55] ( 39, 81 ) ref -> r6 class-hnd exact single-def <<unknown class>>
; V03 loc2 [V03,T39] ( 14, 98 ) ref -> r7 class-hnd exact single-def <System.Collections.Generic.PriorityQueue`2[System.ValueTuple`2[int,int],long]> ; V04 loc3 [V04,T187] ( 6, 5.50) ref -> r6 class-hnd single-def <System.Collections.Generic.List`1[System.Collections.Generic.List`1[int]]> ; V05 loc4 [V05,T159] ( 3, 9 ) int -> r5 @@ -42,7 +42,7 @@ ; V31 loc30 [V31,T04] ( 12,402 ) int -> r8 ; V32 loc31 [V32 ] ( 8,224 ) struct (32) [sp+0x198] do-not-enreg[XS] must-init addr-exposed ld-addr-op double-align <System.Collections.Generic.Dictionary`2+Enumerator[int,long]> ;* V33 loc32 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op double-align <System.Collections.Generic.KeyValuePair`2[int,long]>
-; V34 loc33 [V34,T157] ( 7, 10 ) ref -> [sp+0x28] class-hnd EH-live single-def <<unknown class>>
+; V34 loc33 [V34,T157] ( 7, 10 ) ref -> [sp+0x24] class-hnd EH-live single-def <<unknown class>>
; V35 loc34 [V35,T109] ( 5, 20 ) ref -> r4 class-hnd <System.Collections.Generic.List`1[int]> ; V36 OutArgs [V36 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V37 tmp1 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <ILCompiler.PettisHansenSort.PettisHansen+<>c__DisplayClass0_0> @@ -63,14 +63,14 @@ ; V52 tmp16 [V52,T184] ( 3, 6 ) int -> r8 ; V53 tmp17 [V53,T162] ( 2, 8 ) ref -> r9 class-hnd exact "impAppendStmt" <ILCompiler.PettisHansenSort.PettisHansen+<>c__DisplayClass0_0> ;* V54 tmp18 [V54 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V55 tmp19 [V55,T163] ( 2, 8 ) ref -> [sp+0x24] class-hnd exact spill-single-def "impAppendStmt" <ILCompiler.PettisHansenSort.PettisHansen+<>c__DisplayClass0_0>
+; V55 tmp19 [V55,T163] ( 2, 8 ) ref -> [sp+0x20] class-hnd exact spill-single-def "impAppendStmt" <ILCompiler.PettisHansenSort.PettisHansen+<>c__DisplayClass0_0>
;* V56 tmp20 [V56 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V57 tmp21 [V57,T164] ( 2, 8 ) ref -> [sp+0x20] class-hnd exact spill-single-def "impAppendStmt" <ILCompiler.PettisHansenSort.PettisHansen+<>c__DisplayClass0_0>
+; V57 tmp21 [V57,T164] ( 2, 8 ) ref -> [sp+0x1C] class-hnd exact spill-single-def "impAppendStmt" <ILCompiler.PettisHansenSort.PettisHansen+<>c__DisplayClass0_0>
;* V58 tmp22 [V58 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V59 tmp23 [V59,T165] ( 2, 8 ) ref -> [sp+0x1C] class-hnd exact spill-single-def "impAppendStmt" <ILCompiler.PettisHansenSort.PettisHansen+<>c__DisplayClass0_0>
+; V59 tmp23 [V59,T165] ( 2, 8 ) ref -> [sp+0x18] class-hnd exact spill-single-def "impAppendStmt" <ILCompiler.PettisHansenSort.PettisHansen+<>c__DisplayClass0_0>
;* V60 tmp24 [V60 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V61 tmp25 [V61,T185] ( 3, 6 ) int -> r0
-; V62 tmp26 [V62,T111] ( 4, 16 ) ref -> [sp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V62 tmp26 [V62,T111] ( 4, 16 ) ref -> [sp+0x14] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
; V63 tmp27 [V63,T166] ( 2, 8 ) ref -> r2 class-hnd "impAppendStmt" <System.Collections.Generic.Dictionary`2[int,long]> ;* V64 tmp28 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>> ;* V65 tmp29 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <ILCompiler.PettisHansenSort.PettisHansen+<>c__DisplayClass0_0> @@ -151,8 +151,8 @@ ;* V140 tmp104 [V140 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inlining Arg" ;* V141 tmp105 [V141 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V142 tmp106 [V142,T69] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V143 tmp107 [V143,T60] ( 2, 72 ) ref -> [sp+0x14] class-hnd spill-single-def "Inline stloc first use temp" <System.Collections.Generic.IComparer`1[long]> -; V144 tmp108 [V144,T23] ( 6,216 ) ref -> [sp+0x10] class-hnd exact spill-single-def "Inline stloc first use temp" <System.ValueTuple`2[System.ValueTuple`2[int,int],long][]>
+; V143 tmp107 [V143,T60] ( 2, 72 ) ref -> [sp+0x10] class-hnd spill-single-def "Inline stloc first use temp" <System.Collections.Generic.IComparer`1[long]> +; V144 tmp108 [V144,T23] ( 6,216 ) ref -> [sp+0x0C] class-hnd exact spill-single-def "Inline stloc first use temp" <System.ValueTuple`2[System.ValueTuple`2[int,int],long][]>
; V145 tmp109 [V145,T01] ( 9,704 ) int -> [sp+0x114] "Inlining Arg" ; V146 tmp110 [V146,T21] ( 4,256 ) int -> [sp+0x110] spill-single-def "Inline stloc first use temp" ; V147 tmp111 [V147,T32] ( 2,128 ) struct (16) [sp+0x100] do-not-enreg[SF] double-align "Inline stloc first use temp" <System.ValueTuple`2[System.ValueTuple`2[int,int],long]> @@ -365,19 +365,19 @@ ; V354 rat28 [V354,T35] ( 2,128 ) int -> r3 "field V198.lo (fldOffset=0x0)" P-INDEP ; V355 rat29 [V355,T36] ( 2,128 ) int -> r0 "field V198.hi (fldOffset=0x4)" P-INDEP ; V356 rat30 [V356,T24] ( 4,204.08) int -> r8 "field V259.lo (fldOffset=0x0)" P-INDEP
-; V357 rat31 [V357,T25] ( 4,204.08) int -> r1 "field V259.hi (fldOffset=0x4)" P-INDEP
+; V357 rat31 [V357,T25] ( 3,192 ) int -> r1 "field V259.hi (fldOffset=0x4)" P-INDEP
; V358 rat32 [V358,T53] ( 4, 92.08) int -> r9 "field V260.lo (fldOffset=0x0)" P-INDEP
-; V359 rat33 [V359,T54] ( 4, 92.08) int -> r3 "field V260.hi (fldOffset=0x4)" P-INDEP -; V360 rat34 [V360,T28] ( 3,192 ) int -> r8 "field V263.lo (fldOffset=0x0)" P-INDEP -; V361 rat35 [V361,T29] ( 3,192 ) int -> r6 "field V263.hi (fldOffset=0x4)" P-INDEP
+; V359 rat33 [V359,T54] ( 3, 80 ) int -> [sp+0x30] spill-single-def "field V260.hi (fldOffset=0x4)" P-INDEP +; V360 rat34 [V360,T28] ( 3,192 ) int -> [sp+0x2C] spill-single-def "field V263.lo (fldOffset=0x0)" P-INDEP +; V361 rat35 [V361,T29] ( 3,192 ) int -> r8 "field V263.hi (fldOffset=0x4)" P-INDEP
; V362 rat36 [V362,T58] ( 3, 80 ) int -> r9 "field V264.lo (fldOffset=0x0)" P-INDEP
-; V363 rat37 [V363,T59] ( 3, 80 ) int -> [sp+0x30] spill-single-def "field V264.hi (fldOffset=0x4)" P-INDEP
+; V363 rat37 [V363,T59] ( 3, 80 ) int -> [sp+0x28] spill-single-def "field V264.hi (fldOffset=0x4)" P-INDEP
; V364 rat38 [V364,T49] ( 3, 96 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable" ; V365 rat39 [V365,T50] ( 3, 96 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable" ; V366 rat40 [V366,T13] ( 3,384 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable" ; V367 rat41 [V367,T14] ( 3,384 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable" ; V368 rat42 [V368,T79] ( 3, 48 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable"
-; V369 rat43 [V369,T15] ( 3,384 ) byref -> r6 "ReplaceWithLclVar is creating a new local variable"
+; V369 rat43 [V369,T15] ( 3,384 ) byref -> r8 "ReplaceWithLclVar is creating a new local variable"
; V370 rat44 [V370,T16] ( 3,384 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable" ; V371 rat45 [V371,T80] ( 3, 48 ) byref -> r3 "ReplaceWithLclVar is creating a new local variable" ; V372 rat46 [V372,T144] ( 3, 12 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable" @@ -385,7 +385,7 @@ ; V374 rat48 [V374,T51] ( 3, 96 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable" ; V375 rat49 [V375,T17] ( 3,384 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable" ; V376 rat50 [V376,T18] ( 3,384 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
-; TEMP_01 ref -> [r11-0x274]
+; TEMP_01 ref -> [r11-0x278]
; ; Lcl frame size = 612 @@ -393,19 +393,18 @@ G_M55398_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push {r4,r5,r6,r7,r8,r9,r10,r11,lr} sub sp, sp, 612 add r11, sp, 640
- sub r3, r11, 628 - movs r4, 74
+ sub r3, r11, 632 + movs r4, 75
movs r1, 0 movs r2, 0 stm r3!, {r1,r2} subs r4, 1 bhi SHORT pc-6 (-3 instructions)
- str r1, [r3]
add r1, sp, 648 str r1, [sp+0x260] // [V319 PSPSym] mov r4, r0 ; gcrRegs +[r4]
- ;; size=36 bbWeight=1 PerfScore 14.00
+ ;; size=34 bbWeight=1 PerfScore 13.00
G_M55398_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz movw r0, 0xd1ff movt r0, 0xd1ff @@ -468,8 +467,6 @@ G_M55398_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ; gcr arg pop 0 mov r6, r0 ; gcrRegs +[r6]
- str r6, [sp+0x2C] - ; GC ptr vars +{V02}
mov r1, r4 movw r0, 0xd1ff ; gcrRegs -[r0] @@ -479,11 +476,11 @@ G_M55398_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre blx r3 // CORINFO_HELP_NEWARR_1_OBJ ; gcrRegs +[r0] ; gcr arg pop 0
- str r0, [sp+0x0C]
+ str r0, [sp+0x08]
adds r0, r5, 4 ; gcrRegs -[r0] ; byrRegs +[r0]
- ldr r1, [sp+0x0C]
+ ldr r1, [sp+0x08]
; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff @@ -494,17 +491,17 @@ G_M55398_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ldr r0, [r6+0x04] cmp r0, 0 ble SHORT G_M55398_IG07
- ;; size=162 bbWeight=1 PerfScore 55.00
+ ;; size=160 bbWeight=1 PerfScore 54.00
G_M55398_IG03: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz ldr r0, [r5+0x08] ; gcrRegs +[r0] ldr r3, [r0+0x08] cmp r4, r3
- bhs G_M55398_IG99
+ bhs G_M55398_IG94
ldr r0, [r0+0x04] ldr r3, [r0+0x04] cmp r4, r3
- bhs G_M55398_IG97
+ bhs G_M55398_IG92
adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0] @@ -530,11 +527,11 @@ G_M55398_IG03: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b blx r3 // CORINFO_HELP_NEWARR_1_VC ; gcrRegs +[r0] ; gcr arg pop 0
- str r0, [sp+0x0C]
+ str r0, [sp+0x08]
add r0, r8, 4 ; gcrRegs -[r0] ; byrRegs +[r0]
- ldr r1, [sp+0x0C]
+ ldr r1, [sp+0x08]
; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff @@ -636,11 +633,11 @@ G_M55398_IG08: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b ; gcrRegs +[r0] ldr r3, [r0+0x08] cmp r4, r3
- bhs G_M55398_IG99
+ bhs G_M55398_IG94
ldr r0, [r0+0x04] ldr r3, [r0+0x04] cmp r4, r3
- bhs G_M55398_IG97
+ bhs G_M55398_IG92
adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0] @@ -757,14 +754,14 @@ G_M55398_IG11: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b movs r7, 0 ldr r0, [r6+0x04] cmp r0, 0
- ble G_M55398_IG27
+ ble G_M55398_IG17
;; size=10 bbWeight=1 PerfScore 4.00 G_M55398_IG12: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz ldr r0, [r5+0x04] ; gcrRegs +[r0] ldr r3, [r0+0x04] cmp r7, r3
- bhs G_M55398_IG97
+ bhs G_M55398_IG92
adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0] @@ -824,7 +821,7 @@ G_M55398_IG13: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, ; gcrRegs +[r0] ldr r1, [r0+0x04] cmp r8, r1
- bhs G_M55398_IG97
+ bhs G_M55398_IG92
adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0] @@ -842,7 +839,7 @@ G_M55398_IG13: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, ; byrRegs +[r0] ; gcr arg pop 0 cmp r0, 0
- beq G_M55398_IG100
+ beq G_M55398_IG95
ldr r4, [r0] ldr r9, [r0+0x04] ldr r0, [r5+0x04] @@ -850,7 +847,7 @@ G_M55398_IG13: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, ; byrRegs -[r0] ldr r1, [r0+0x04] cmp r7, r1
- bhs G_M55398_IG97
+ bhs G_M55398_IG92
adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0] @@ -868,7 +865,7 @@ G_M55398_IG13: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, ; byrRegs +[r0] ; gcr arg pop 0 cmp r0, 0
- beq G_M55398_IG101
+ beq G_M55398_IG96
ldr r3, [r0] ldr r0, [r0+0x04] ; byrRegs -[r0] @@ -901,10 +898,9 @@ G_M55398_IG16: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b adds r7, r7, 1 ldr r0, [r6+0x04] cmp r0, r7
- bgt G_M55398_IG26
+ bgt G_M55398_IG12
;; size=10 bbWeight=4 PerfScore 16.00
-G_M55398_IG17: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref - ; gcrRegs -[r6]
+G_M55398_IG17: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -943,21 +939,21 @@ G_M55398_IG17: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre movs r0, 0 str r0, [r7+0x08] ;; size=86 bbWeight=1 PerfScore 27.00
-G_M55398_IG18: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M55398_IG18: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
...

+10 (+0.45%) : 119185.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeCoverageInstrumenter:GetCreatePayloadStatement(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.SourceSpan],Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.SyntheticBoundNodeFactory,Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider):Microsoft.CodeAnalysis.VisualBasic.BoundExpressionStatement (FullOpts)

@@ -94,7 +94,7 @@ ; V83 tmp66 [V83,T56] ( 5, 2.50) ref -> r3 ; V84 tmp67 [V84,T32] ( 5, 5 ) ref -> [sp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> ; V85 tmp68 [V85,T49] ( 3, 3 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V86 tmp69 [V86,T115] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V86 tmp69 [V86 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V87 tmp70 [V87,T85] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp" ;* V88 tmp71 [V88 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.DiagnosticInfo> ;* V89 tmp72 [V89 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>> @@ -170,7 +170,7 @@ ; V159 tmp142 [V159,T62] ( 3, 2 ) int -> r2 ;* V160 tmp143 [V160 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V161 tmp144 [V161,T75] ( 2, 2 ) ubyte -> r0 "Inline return value spill temp"
-;* V162 tmp145 [V162,T116] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V162 tmp145 [V162,T115] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
; V163 tmp146 [V163,T98] ( 2, 1 ) ubyte -> r2 "Inline return value spill temp" ;* V164 tmp147 [V164 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V165 tmp148 [V165 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -198,7 +198,7 @@ ;* V187 tmp170 [V187 ] ( 0, 0 ) ref -> zero-ref "field V20.array (fldOffset=0x0)" P-INDEP ;* V188 tmp171 [V188 ] ( 0, 0 ) ref -> zero-ref single-def "field V24.array (fldOffset=0x0)" P-INDEP ; V189 tmp172 [V189,T93] ( 2, 1 ) ref -> r10 single-def "field V25._array (fldOffset=0x0)" P-INDEP
-;* V190 tmp173 [V190,T117] ( 0, 0 ) int -> zero-ref single-def "field V25._index (fldOffset=0x4)" P-INDEP
+;* V190 tmp173 [V190,T116] ( 0, 0 ) int -> zero-ref single-def "field V25._index (fldOffset=0x4)" P-INDEP
;* V191 tmp174 [V191 ] ( 0, 0 ) ref -> zero-ref single-def "field V54._nodeOrParent (fldOffset=0x0)" P-INDEP ;* V192 tmp175 [V192 ] ( 0, 0 ) ref -> zero-ref single-def "field V54._token (fldOffset=0x4)" P-INDEP ;* V193 tmp176 [V193 ] ( 0, 0 ) int -> zero-ref single-def "field V54._position (fldOffset=0x8)" P-INDEP @@ -242,8 +242,8 @@ ; V231 tmp214 [V231,T87] ( 3, 1.50) int -> [sp+0x4C] "V52.[012..016)" ;* V232 tmp215 [V232,T113] ( 0, 0 ) ref -> zero-ref single-def "V67.[000..004)" ;* V233 tmp216 [V233,T114] ( 0, 0 ) ref -> zero-ref single-def "V67.[004..008)"
-;* V234 tmp217 [V234,T118] ( 0, 0 ) int -> zero-ref single-def "V67.[008..012)" -;* V235 tmp218 [V235,T119] ( 0, 0 ) int -> zero-ref single-def "V67.[012..016)"
+;* V234 tmp217 [V234,T117] ( 0, 0 ) int -> zero-ref single-def "V67.[008..012)" +;* V235 tmp218 [V235,T118] ( 0, 0 ) int -> zero-ref single-def "V67.[012..016)"
;* V236 tmp219 [V236 ] ( 0, 0 ) ref -> zero-ref single-def "V55.[000..004)" ;* V237 tmp220 [V237 ] ( 0, 0 ) ref -> zero-ref single-def "V55.[004..008)" ;* V238 tmp221 [V238 ] ( 0, 0 ) int -> zero-ref single-def "V55.[008..012)" @@ -259,7 +259,7 @@ ; V248 tmp231 [V248,T72] ( 2, 2 ) ref -> r0 single-def "argument with side effect" ; V249 tmp232 [V249,T53] ( 3, 3 ) ref -> r0 single-def "argument with side effect" ; V250 tmp233 [V250,T73] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-;* V251 cse0 [V251,T120] ( 0, 0 ) int -> zero-ref "CSE - conservative"
+;* V251 cse0 [V251,T119] ( 0, 0 ) int -> zero-ref "CSE - conservative"
; V252 cse1 [V252,T54] ( 3, 3 ) int -> r6 "CSE - conservative" ; V253 cse2 [V253,T20] ( 5, 7.50) int -> r8 "CSE - moderate" ; V254 cse3 [V254,T26] ( 3, 6 ) ref -> r1 "CSE - moderate" @@ -319,7 +319,7 @@ G_M20504_IG03: ; bbWeight=0.50, gcrefRegs=00E2 {r1 r5 r6 r7}, byrefRegs=0 ; gcrRegs -[r1] mov r4, r0 ; gcrRegs +[r4]
- b SHORT G_M20504_IG31
+ b SHORT G_M20504_IG32
;; size=36 bbWeight=0.50 PerfScore 7.00 G_M20504_IG04: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0 r4] @@ -574,11 +574,11 @@ G_M20504_IG18: ; bbWeight=0.50, gcrefRegs=02F0 {r4 r5 r6 r7 r9}, byrefReg ldr r0, [r4+0x20] ; gcrRegs +[r0] cmp r0, 0
- beq G_M20504_IG55
+ beq G_M20504_IG56
ldr r1, [r0+0x04] ; gcrRegs +[r1] cmp r1, 0
- bne G_M20504_IG54
+ bne G_M20504_IG55
adds r0, r0, 4 ; gcrRegs -[r0] ; byrRegs +[r0] @@ -588,7 +588,7 @@ G_M20504_IG18: ; bbWeight=0.50, gcrefRegs=02F0 {r4 r5 r6 r7 r9}, byrefReg blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1 r4] ; byrRegs -[r0]
- b SHORT G_M20504_IG55
+ b SHORT G_M20504_IG56
;; size=50 bbWeight=0.50 PerfScore 9.00 G_M20504_IG19: ; bbWeight=1.00, gcVars=00000000000000000000000200040004 {V03 V28 V29}, gcrefRegs=0678 {r3 r4 r5 r6 r9 r10}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r7] +[r3-r4 r10] @@ -613,22 +613,20 @@ G_M20504_IG22: ; bbWeight=0.50, gcVars=00000000400240000000000002000000 { ; gcrRegs -[r10] ; byrRegs -[r0 r3] ; GC ptr vars -{V03 V05 V28 V29 V33 V34} +{V57 V59 V78 V94 V213 V214}
- ldr r12, [sp+0x30] - ; gcrRegs +[r12] - ldr r0, [r12+0x08] - ; gcrRegs +[r0]
cmp r0, 0
- beq SHORT G_M20504_IG29 - mov r3, r12 - ; gcrRegs +[r3]
+ bne SHORT G_M20504_IG30
ldr r2, [sp+0x10] // [V214 tmp197] ; gcrRegs +[r2]
+ ldr r3, [sp+0x30] // [V57 tmp40] + ; gcrRegs +[r3]
ldr r10, [sp+0x14] // [V213 tmp196] ; gcrRegs +[r10]
+ str r10, [sp+0x14] // [V213 tmp196] + str r2, [sp+0x10] // [V214 tmp197]
b SHORT G_M20504_IG24
- ;; size=22 bbWeight=0.50 PerfScore 4.00
+ ;; size=20 bbWeight=0.50 PerfScore 4.00
G_M20504_IG23: ; bbWeight=0.00, gcVars=00000000000000000000000000040024 {V28 V29 V34}, gcrefRegs=06F8 {r3 r4 r5 r6 r7 r9 r10}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0 r2 r12]
+ ; gcrRegs -[r2]
; GC ptr vars -{V57 V59 V78 V94 V213 V214} +{V02 V05 V28 V29 V34} str r7, [sp+0x48] // [V03 arg3] ; GC ptr vars +{V03} @@ -665,16 +663,26 @@ G_M20504_IG23: ; bbWeight=0.00, gcVars=00000000000000000000000000040024 { ; gcrRegs +[r7] b SHORT G_M20504_IG16 ;; size=54 bbWeight=0.00 PerfScore 0.02
-G_M20504_IG24: ; bbWeight=0.50, gcVars=00000000000040000000000002000000 {V57 V59}, gcrefRegs=06FD {r0 r2 r3 r4 r5 r6 r7 r9 r10}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M20504_IG24: ; bbWeight=0.50, gcVars=00000000400240000000000002000000 {V57 V59 V213 V214}, gcrefRegs=02F0 {r4 r5 r6 r7 r9}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r2-r3 r10] + ; GC ptr vars -{V03 V28 V29} +{V57 V59 V78 V94 V213 V214} + ldr r12, [sp+0x30] + ; gcrRegs +[r12] + ldr r0, [r12+0x08]
; gcrRegs +[r0]
- ; GC ptr vars -{V03 V28 V29} +{V57 V59 V78} - cmp r10, 0 - beq SHORT G_M20504_IG28
+ cmp r0, 0 + beq SHORT G_M20504_IG30 + mov r3, r12 + ; gcrRegs +[r3] + ldr r2, [sp+0x10] // [V214 tmp197] + ; gcrRegs +[r2] + ldr r10, [sp+0x14] // [V213 tmp196] + ; gcrRegs +[r10]
b SHORT G_M20504_IG26
- ;; size=8 bbWeight=0.50 PerfScore 1.50
+ ;; size=22 bbWeight=0.50 PerfScore 4.00
G_M20504_IG25: ; bbWeight=0.39, gcVars=00000000000000000000000000040004 {V28 V29}, gcrefRegs=06FC {r2 r3 r4 r5 r6 r7 r9 r10}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0] - ; GC ptr vars -{V57 V59 V78} +{V02 V28 V29}
+ ; gcrRegs -[r0 r12] + ; GC ptr vars -{V57 V59 V78 V94 V213 V214} +{V02 V28 V29}
mov r0, lr ldr lr, [sp+0x80] // [V30 tmp13] b SHORT G_M20504_IG08 @@ -682,6 +690,27 @@ G_M20504_IG25: ; bbWeight=0.39, gcVars=00000000000000000000000000040004 { G_M20504_IG26: ; bbWeight=0.50, gcVars=00000000000040000000000002000000 {V57 V59}, gcrefRegs=06FD {r0 r2 r3 r4 r5 r6 r7 r9 r10}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[r0] ; GC ptr vars -{V02 V28 V29} +{V57 V59 V78}
+ cmp r10, 0 + beq SHORT G_M20504_IG29 + b SHORT G_M20504_IG28 + ;; size=8 bbWeight=0.50 PerfScore 1.50 +G_M20504_IG27: ; bbWeight=0.00, gcVars=00000000000000000000000200040024 {V03 V28 V29 V34}, gcrefRegs=06F0 {r4 r5 r6 r7 r9 r10}, byrefRegs=0009 {r0 r3}, gcvars, byref, isz + ; gcrRegs -[r0 r2-r3] + ; byrRegs +[r0 r3] + ; GC ptr vars -{V57 V59 V78} +{V02 V03 V05 V28 V29 V33 V34} + mov r1, r3 + ; byrRegs +[r1] + movw r3, 0xd1ff + ; byrRegs -[r3] + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; byrRegs -[r0-r1] + b SHORT G_M20504_IG14 + ;; size=16 bbWeight=0.00 PerfScore 0.00 +G_M20504_IG28: ; bbWeight=0.50, gcVars=00000000000040000000000002000000 {V57 V59}, gcrefRegs=06FD {r0 r2 r3 r4 r5 r6 r7 r9 r10}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[r0 r2-r3] + ; GC ptr vars -{V02 V03 V05 V28 V29 V33 V34} +{V57 V59 V78}
str r2, [sp+0x10] // [V214 tmp197] ; GC ptr vars +{V214} mov r1, r10 @@ -699,25 +728,9 @@ G_M20504_IG26: ; bbWeight=0.50, gcVars=00000000000040000000000002000000 { ; gcrRegs +[r3] ldr r4, [sp+0x2C] // [V59 tmp42] ; gcrRegs +[r4]
- b SHORT G_M20504_IG28 - ;; size=26 bbWeight=0.50 PerfScore 5.00 -G_M20504_IG27: ; bbWeight=0.00, gcVars=00000000000000000000000200040024 {V03 V28 V29 V34}, gcrefRegs=06F0 {r4 r5 r6 r7 r9 r10}, byrefRegs=0009 {r0 r3}, gcvars, byref, isz - ; gcrRegs -[r2-r3] +[r10] - ; byrRegs +[r0 r3] - ; GC ptr vars -{V57 V59 V214} +{V02 V03 V05 V28 V29 V33 V34} - mov r1, r3 - ; byrRegs +[r1] - movw r3, 0xd1ff - ; byrRegs -[r3] - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - ; byrRegs -[r0-r1] - b SHORT G_M20504_IG14 - ;; size=16 bbWeight=0.00 PerfScore 0.00 -G_M20504_IG28: ; bbWeight=0.50, gcVars=00000000000040000000000002000000 {V57 V59}, gcrefRegs=02FC {r2 r3 r4 r5 r6 r7 r9}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r10] +[r2-r3] - ; GC ptr vars -{V02 V03 V05 V28 V29 V33 V34} +{V57 V59 V78}
+ ;; size=24 bbWeight=0.50 PerfScore 4.50 +G_M20504_IG29: ; bbWeight=0.50, gcVars=00000000000040000000000002000000 {V57 V59}, gcrefRegs=02FC {r2 r3 r4 r5 r6 r7 r9}, byrefRegs=0000 {}, gcvars, byref + ; GC ptr vars -{V214}
mov r0, r3 ; gcrRegs +[r0] mov r1, r2 @@ -726,11 +739,11 @@ G_M20504_IG28: ; bbWeight=0.50, gcVars=00000000000040000000000002000000 { ; gcrRegs -[r3] movt r3, 0xd1ff ldr r3, [r3]
- ; GC ptr vars -{V57 V78}
+ ; GC ptr vars -{V57}
blx r3 // <unknown method> ; gcrRegs -[r0-r2] ;; size=16 bbWeight=0.50 PerfScore 3.00
-G_M20504_IG29: ; bbWeight=0.50, gcrefRegs=02F0 {r4 r5 r6 r7 r9}, byrefRegs=0000 {}, byref
+G_M20504_IG30: ; bbWeight=0.50, gcrefRegs=02F0 {r4 r5 r6 r7 r9}, byrefRegs=0000 {}, byref
ldr r0, [r9+0x04] ; gcrRegs +[r0] ldrsb r3, [r0] @@ -752,7 +765,7 @@ G_M20504_IG29: ; bbWeight=0.50, gcrefRegs=02F0 {r4 r5 r6 r7 r9}, byrefReg mov r4, r0 ; gcrRegs +[r4] ;; size=40 bbWeight=0.50 PerfScore 7.00
-G_M20504_IG30: ; bbWeight=0.50, gcrefRegs=02F0 {r4 r5 r6 r7 r9}, byrefRegs=0000 {}, byref
+G_M20504_IG31: ; bbWeight=0.50, gcrefRegs=02F0 {r4 r5 r6 r7 r9}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] mov r0, r9 ; gcrRegs +[r0] @@ -762,7 +775,7 @@ G_M20504_IG30: ; bbWeight=0.50, gcrefRegs=02F0 {r4 r5 r6 r7 r9}, byrefReg blx r3 // Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon]:Free():this ; gcrRegs -[r0 r9] ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M20504_IG31: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M20504_IG32: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
ldr r9, [r5+0x08] ; gcrRegs +[r9] movw r0, 0xd1ff @@ -938,15 +951,15 @@ G_M20504_IG31: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 ; byrRegs -[r0] uxtb r1, r2 cmp r1, 0
- beq SHORT G_M20504_IG33
+ beq SHORT G_M20504_IG34
;; size=344 bbWeight=1 PerfScore 117.00
-G_M20504_IG32: ; bbWeight=0.50, gcrefRegs=06B0 {r4 r5 r7 r9 r10}, byrefRegs=0000 {}, byref
+G_M20504_IG33: ; bbWeight=0.50, gcrefRegs=06B0 {r4 r5 r7 r9 r10}, byrefRegs=0000 {}, byref
movs r1, 1 ldr r8, [sp+0x20] ; gcrRegs +[r8] strb r1, [r8+0x09] ;; size=10 bbWeight=0.50 PerfScore 1.50
-G_M20504_IG33: ; bbWeight=1, gcrefRegs=06B0 {r4 r5 r7 r9 r10}, byrefRegs=0000 {}, byref
+G_M20504_IG34: ; bbWeight=1, gcrefRegs=06B0 {r4 r5 r7 r9 r10}, byrefRegs=0000 {}, byref
; gcrRegs -[r8] ldr r8, [sp+0x20] ...

libraries_tests.run.linux.arm.Release.mch

-12 (-35.29%) : 442491.dasm - System.ArgumentOutOfRangeException:ThrowIfGreaterThanOrEqualint (Tier1)

@@ -3,47 +3,42 @@ ; Tier1 code ; optimized code ; optimized using Dynamic PGO
-; r11 based frame
+; sp based frame
; partially interruptible ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 5 ; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 4 ) int -> r0 ld-addr-op single-def -; V01 arg1 [V01,T01] ( 5, 4 ) int -> r1 single-def
+; V00 arg0 [V00,T00] ( 4, 3 ) int -> r0 ld-addr-op single-def +; V01 arg1 [V01,T01] ( 4, 3 ) int -> r1 single-def
; V02 arg2 [V02,T02] ( 3, 2 ) ref -> r2 class-hnd single-def <System.String> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04,T03] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M34388_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00
G_M34388_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r2] cmp r0, r1
- blt SHORT G_M34388_IG03 - cmp r0, r1 - bgt SHORT G_M34388_IG04 - b SHORT G_M34388_IG04 - ;; size=10 bbWeight=1 PerfScore 5.00 -G_M34388_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[r2] - pop {r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00
+ bge SHORT G_M34388_IG04 + ;; size=4 bbWeight=1 PerfScore 2.00 +G_M34388_IG03: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
G_M34388_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[r2]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.ArgumentOutOfRangeException:ThrowGreaterEqual[int](int,int,System.String) ; gcrRegs -[r2]
+ ; gcr arg pop 0
bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-Total bytes of code 34, prolog size 6, PerfScore 8.00, instruction count 13, allocated bytes for code 34 (MethodHash=fe1b79ab) for method System.ArgumentOutOfRangeException:ThrowIfGreaterThanOrEqual[int](int,int,System.String) (Tier1)
+Total bytes of code 22, prolog size 2, PerfScore 4.00, instruction count 9, allocated bytes for code 22 (MethodHash=fe1b79ab) for method System.ArgumentOutOfRangeException:ThrowIfGreaterThanOrEqual[int](int,int,System.String) (Tier1)
; ============================================================ Unwind Info: @@ -55,7 +50,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 34 (0x000022)
+ Function Length : 11 (0x0000b) Actual length = 22 (0x000016)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -63,7 +58,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-36 (-32.73%) : 47613.dasm - Roslyn.Utilities.AsyncLazy1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task1[System.Canon]):System.Threading.Tasks.Task`1[System.Canon]:this (Tier1)

@@ -12,18 +12,18 @@ ; V00 this [V00,T00] ( 6, 4.70) ref -> r2 this class-hnd single-def <Roslyn.Utilities.AsyncLazy`1[System.__Canon]> ; V01 arg1 [V01,T01] ( 5, 3.70) ref -> r1 class-hnd single-def <System.Threading.Tasks.Task`1[System.__Canon]> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 8, 2.59) int -> r4 "Inline stloc first use temp"
+; V03 tmp1 [V03,T02] ( 4, 2.26) int -> r0 "Inline stloc first use temp"
;* V04 tmp2 [V04,T04] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V05 cse0 [V05,T03] ( 3, 2.43) ref -> r0 "CSE - aggressive" ;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M21386_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr} - add r11, sp, 8
+ push {r11,lr} + mov r11, sp
mov r2, r0 ; gcrRegs +[r2]
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=8 bbWeight=1 PerfScore 3.00
G_M21386_IG02: ; bbWeight=1, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r1] ldr r0, [r2+0x0C] @@ -33,21 +33,21 @@ G_M21386_IG02: ; bbWeight=1, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, b ;; size=6 bbWeight=1 PerfScore 3.00 G_M21386_IG03: ; bbWeight=0.43, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc ; gcrRegs -[r1-r2]
- pop {r3,r4,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=0.43 PerfScore 0.43 G_M21386_IG04: ; bbWeight=0.57, gcVars=00000000 {}, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r0] +[r1-r2]
- ldr r4, [r1+0x1C]
+ ldr r0, [r1+0x1C]
dmb 15
- ands r0, r4, 0x200000 - cmp r0, 0
+ ands r3, r0, 0x200000 + cmp r3, 0
bne SHORT G_M21386_IG06
- ands r0, r4, 0x400000 - cmp r0, 0
+ ands r3, r0, 0x400000 + cmp r3, 0
bne SHORT G_M21386_IG06
- ands r0, r4, 0x1000000
+ ands r0, r0, 0x1000000
cmp r0, 0
- beq SHORT G_M21386_IG08
+ beq SHORT G_M21386_IG06
add r0, r2, 12 ; byrRegs +[r0] movw r12, 0xd1ff @@ -66,26 +66,10 @@ G_M21386_IG06: ; bbWeight=0.57, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, b ; gcrRegs +[r0] ;; size=2 bbWeight=0.57 PerfScore 0.57 G_M21386_IG07: ; bbWeight=0.57, epilog, nogc, extend
- pop {r3,r4,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=0.57 PerfScore 0.57
-G_M21386_IG08: ; bbWeight=0.08, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0] - ands r0, r4, 0x800000 - cmp r0, 0 - bne SHORT G_M21386_IG06 - ands r0, r4, 0x20000 - cmp r0, 0 - bne SHORT G_M21386_IG06 - ands r0, r4, 0x10000 - cmp r0, 0 - bne SHORT G_M21386_IG06 - ands r0, r4, 0x2000000 - cmp r0, 0 - beq SHORT G_M21386_IG06 - b SHORT G_M21386_IG06 - ;; size=34 bbWeight=0.08 PerfScore 1.05
-Total bytes of code 110, prolog size 8, PerfScore 18.79, instruction count 40, allocated bytes for code 110 (MethodHash=7308ac75) for method Roslyn.Utilities.AsyncLazy`1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (Tier1)
+Total bytes of code 74, prolog size 6, PerfScore 17.74, instruction count 27, allocated bytes for code 74 (MethodHash=7308ac75) for method Roslyn.Utilities.AsyncLazy`1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (Tier1)
; ============================================================ Unwind Info: @@ -97,7 +81,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 55 (0x00037) Actual length = 110 (0x00006e)
+ Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -109,7 +93,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

-36 (-32.14%) : 51833.dasm - Roslyn.Utilities.AsyncLazy1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)

@@ -12,35 +12,35 @@ ; V00 this [V00,T00] ( 7, 6 ) ref -> r2 this class-hnd single-def <Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]> ; V01 arg1 [V01,T01] ( 5, 5 ) ref -> r1 class-hnd single-def <System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 8, 4.57) int -> r4 "Inline stloc first use temp"
+; V03 tmp1 [V03,T02] ( 4, 4 ) int -> r0 "Inline stloc first use temp"
;* V04 tmp2 [V04,T03] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;
-; Lcl frame size = 4
+; Lcl frame size = 0
-G_M46606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - push {r3,r4,r11,lr} - add r11, sp, 8
+G_M46606_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + push {r11,lr} + mov r11, sp
mov r2, r0 ; gcrRegs +[r2]
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=8 bbWeight=1 PerfScore 3.00
G_M46606_IG02: ; bbWeight=1, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r1] ldr r0, [r2+0x0C] ; gcrRegs +[r0] cmp r0, 0
- bne SHORT G_M46606_IG07 - ldr r4, [r1+0x1C] - dmb 15 - ands r0, r4, 0x200000
+ bne SHORT G_M46606_IG06 + ldr r0, [r1+0x1C]
; gcrRegs -[r0]
- cmp r0, 0
+ dmb 15 + ands r3, r0, 0x200000 + cmp r3, 0
bne SHORT G_M46606_IG04
- ands r0, r4, 0x400000 - cmp r0, 0
+ ands r3, r0, 0x400000 + cmp r3, 0
bne SHORT G_M46606_IG04
- ands r0, r4, 0x1000000
+ ands r0, r0, 0x1000000
cmp r0, 0
- beq SHORT G_M46606_IG06
+ beq SHORT G_M46606_IG04
add r0, r2, 12 ; byrRegs +[r0] movw r12, 0xd1ff @@ -59,34 +59,18 @@ G_M46606_IG04: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byre ; gcrRegs +[r0] ;; size=2 bbWeight=1 PerfScore 1.00 G_M46606_IG05: ; bbWeight=1, epilog, nogc, extend
- pop {r3,r4,r11,pc}
+ pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M46606_IG06: ; bbWeight=0.14, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0] - ands r0, r4, 0x800000 - cmp r0, 0 - bne SHORT G_M46606_IG04 - ands r0, r4, 0x20000 - cmp r0, 0 - bne SHORT G_M46606_IG04 - ands r0, r4, 0x10000 - cmp r0, 0 - bne SHORT G_M46606_IG04 - ands r0, r4, 0x2000000 - cmp r0, 0 - beq SHORT G_M46606_IG04 - b SHORT G_M46606_IG04 - ;; size=34 bbWeight=0.14 PerfScore 1.86 -G_M46606_IG07: ; bbWeight=0, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref - ; gcrRegs -[r1] +[r2]
+G_M46606_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[r0-r1] +[r2]
ldr r0, [r2+0x0C] ; gcrRegs +[r0] ;; size=2 bbWeight=0 PerfScore 0.00
-G_M46606_IG08: ; bbWeight=0, epilog, nogc, extend - pop {r3,r4,r11,pc}
+G_M46606_IG07: ; bbWeight=0, epilog, nogc, extend + pop {r11,pc}
;; size=4 bbWeight=0 PerfScore 0.00
-Total bytes of code 112, prolog size 8, PerfScore 27.86, instruction count 41, allocated bytes for code 112 (MethodHash=b9a349f1) for method Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
+Total bytes of code 76, prolog size 6, PerfScore 26.00, instruction count 28, allocated bytes for code 76 (MethodHash=b9a349f1) for method Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
; ============================================================ Unwind Info: @@ -98,7 +82,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 56 (0x00038) Actual length = 112 (0x000070)
+ Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -110,7 +94,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

+18 (+1.36%) : 672458.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:ConvertConditionalOperandOrSwitchExpressionArmResult(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (Tier1)

@@ -10,9 +10,9 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 19, 14.00) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker>
-; V01 RetBuf [V01,T03] ( 4, 4 ) byref -> r5 single-def -; V02 arg1 [V02,T08] ( 5, 3.13) ref -> r7 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression> -; V03 arg2 [V03,T04] ( 4, 4 ) ref -> r6 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V01 RetBuf [V01,T04] ( 4, 4 ) byref -> r6 single-def +; V02 arg1 [V02,T08] ( 6, 3.46) ref -> r7 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression> +; V03 arg2 [V03,T03] ( 5, 4.33) ref -> r5 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
; V04 arg3 [V04,T29] ( 1, 1 ) struct ( 8) [sp+0x230] do-not-enreg[S] single-def <Microsoft.CodeAnalysis.CSharp.Conversion> ; V05 arg4 [V05,T30] ( 1, 1 ) struct (12) [sp+0x238] do-not-enreg[S] single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations> ; V06 arg5 [V06,T31] ( 1, 1 ) struct ( 8) [sp+0x244] do-not-enreg[S] single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState> @@ -138,19 +138,19 @@ G_M19812_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, bhi SHORT pc-6 (-3 instructions) mov r4, r0 ; gcrRegs +[r4]
- mov r5, r1 - ; byrRegs +[r5]
+ mov r6, r1 + ; byrRegs +[r6]
mov r7, r2 ; gcrRegs +[r7]
- mov r6, r3 - ; gcrRegs +[r6]
+ mov r5, r3 + ; gcrRegs +[r5]
;; size=36 bbWeight=1 PerfScore 14.00
-G_M19812_IG02: ; bbWeight=1, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0020 {r5}, byref, isz
+G_M19812_IG02: ; bbWeight=1, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0040 {r6}, byref, isz
ldrb r0, [r4+0x3D] cmp r0, 0 bne G_M19812_IG31 ;; size=10 bbWeight=1 PerfScore 3.00
-G_M19812_IG03: ; bbWeight=1.00, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0020 {r5}, byref
+G_M19812_IG03: ; bbWeight=1.00, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0040 {r6}, byref
add r0, r4, 64 ; byrRegs +[r0] ldr r8, [r0] @@ -178,7 +178,7 @@ G_M19812_IG03: ; bbWeight=1.00, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0020 str r0, [sp+0x138] // [V17 tmp4+0x48] str r0, [sp+0x13C] // [V17 tmp4+0x4c] ;; size=50 bbWeight=1.00 PerfScore 19.00
-G_M19812_IG04: ; bbWeight=1.00, gcVars=0000000000000800 {V74}, gcrefRegs=01D0 {r4 r6 r7 r8}, byrefRegs=0020 {r5}, gcvars, byref, isz
+G_M19812_IG04: ; bbWeight=1.00, gcVars=0000000000000800 {V74}, gcrefRegs=01B0 {r4 r5 r7 r8}, byrefRegs=0040 {r6}, gcvars, byref, isz
; gcrRegs -[r1] str r0, [sp+0x110] // [V17 tmp4+0x20] str r0, [sp+0x114] // [V17 tmp4+0x24] @@ -187,25 +187,25 @@ G_M19812_IG04: ; bbWeight=1.00, gcVars=0000000000000800 {V74}, gcrefRegs= str r0, [sp+0x120] // [V17 tmp4+0x30] str r0, [sp+0x124] // [V17 tmp4+0x34] cmp r8, 0
- bne G_M19812_IG30 - ;; size=20 bbWeight=1.00 PerfScore 8.00 -G_M19812_IG05: ; bbWeight=0.96, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0020 {r5}, byref
+ bne SHORT G_M19812_IG09 + ;; size=18 bbWeight=1.00 PerfScore 8.00 +G_M19812_IG05: ; bbWeight=0.96, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0040 {r6}, byref
; gcrRegs -[r8] mov r8, 0 ;; size=4 bbWeight=0.96 PerfScore 0.96
-G_M19812_IG06: ; bbWeight=1.00, gcrefRegs=01D0 {r4 r6 r7 r8}, byrefRegs=0020 {r5}, byref, isz
+G_M19812_IG06: ; bbWeight=1.00, gcrefRegs=01B0 {r4 r5 r7 r8}, byrefRegs=0040 {r6}, byref, isz
; gcrRegs +[r8] ldr r1, [sp+0x7C] // [V74 tmp61] ; gcrRegs +[r1] cmp r1, 0 beq SHORT G_M19812_IG08 ;; size=6 bbWeight=1.00 PerfScore 3.00
-G_M19812_IG07: ; bbWeight=0.99, gcrefRegs=01D2 {r1 r4 r6 r7 r8}, byrefRegs=0020 {r5}, byref, isz
+G_M19812_IG07: ; bbWeight=0.99, gcrefRegs=01B2 {r1 r4 r5 r7 r8}, byrefRegs=0040 {r6}, byref, isz
ldr r0, [r1+0x04] cmp r0, 0 bne G_M19812_IG39 ;; size=8 bbWeight=0.99 PerfScore 2.97
-G_M19812_IG08: ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=01D0 {r4 r6 r7 r8}, byrefRegs=0020 {r5}, gcvars, byref
+G_M19812_IG08: ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=01B0 {r4 r5 r7 r8}, byrefRegs=0040 {r6}, gcvars, byref, isz
; gcrRegs -[r1] ; GC ptr vars -{V74} movw r0, 0xd1ff @@ -214,9 +214,231 @@ G_M19812_IG08: ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=01D ; gcrRegs +[r12] str r12, [sp+0x80] // [V29 tmp16] ; GC ptr vars +{V29}
- ;; size=16 bbWeight=1.00 PerfScore 4.00 -G_M19812_IG09: ; bbWeight=1.00, gcVars=0000000000400000 {V29}, gcrefRegs=01D0 {r4 r6 r7 r8}, byrefRegs=0020 {r5}, gcvars, byref
+ b SHORT G_M19812_IG24 + ;; size=18 bbWeight=1.00 PerfScore 5.00 +G_M19812_IG09: ; bbWeight=0.04, gcVars=0000000000000800 {V74}, gcrefRegs=01B0 {r4 r5 r7 r8}, byrefRegs=0040 {r6}, gcvars, byref, isz
; gcrRegs -[r12]
+ ; GC ptr vars -{V29} +{V74} + movw r0, 0xd1ff + movt r0, 0xd1ff + movw r12, 0xd1ff + movt r12, 0xd1ff + blx r12 // CORINFO_HELP_NEWFAST + ; gcrRegs +[r0] + str r0, [sp+0x84] // [V26 tmp13] + ; GC ptr vars +{V26} + add r0, r8, 8 + ; gcrRegs -[r0] + ; byrRegs +[r0] + add r1, sp, 216 // [V27 tmp14] + movw r2, 0xd1ff + movt r2, 0xd1ff + ldr r2, [r2] + blx r2 // Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState:Clone():Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState:this + ; gcrRegs -[r8] + ; byrRegs -[r0] + ldr r8, [sp+0x84] + ; gcrRegs +[r8] + add r0, r8, 8 + ; byrRegs +[r0] + add r1, sp, 216 + ; byrRegs +[r1] + movw r12, 0xd1ff + movt r12, 0xd1ff + blx r12 // CORINFO_HELP_ASSIGN_BYREF + ldr r2, [r1!+0x04] + str r2, [r0!+0x04] + ldr r2, [r1!+0x04] + str r2, [r0!+0x04] + ldr r2, [r1!+0x04] + str r2, [r0!+0x04] + movw r12, 0xd1ff + movt r12, 0xd1ff + blx r12 // CORINFO_HELP_ASSIGN_BYREF + ldr r2, [r1!+0x04] + str r2, [r0!+0x04] + b SHORT G_M19812_IG06 + ;; size=102 bbWeight=0.04 PerfScore 1.23 +G_M19812_IG10: ; bbWeight=0.33, gcVars=000000000000C000 {V82 V85}, gcrefRegs=00B0 {r4 r5 r7}, byrefRegs=0040 {r6}, gcvars, byref, isz + ; gcrRegs -[r8] + ; byrRegs -[r0-r1] + ; GC ptr vars -{V26 V74} +{V14 V15 V82 V85} + cmp r7, r5 + bne G_M19812_IG28 + ;; size=6 bbWeight=0.33 PerfScore 0.66 +G_M19812_IG11: ; bbWeight=0.87, gcrefRegs=0030 {r4 r5}, byrefRegs=0040 {r6}, byref + ; gcrRegs -[r7] + movs r2, 0 + ;; size=2 bbWeight=0.87 PerfScore 0.87 +G_M19812_IG12: ; bbWeight=1, gcrefRegs=0034 {r2 r4 r5}, byrefRegs=0040 {r6}, byref + ; gcrRegs +[r2] + movs r1, 0 + str r1, [sp+0x1E0] + str r1, [sp+0x1E4] + str r1, [sp+0x1E8] + str r1, [sp+0x1EC] + str r1, [sp+0x1F0] + str r1, [sp+0x1F4] + str r1, [sp+0x1F8] + str r1, [sp+0x1FC] + ldr r1, [sp+0x230] + ; gcrRegs +[r1] + str r1, [sp] + ldr r1, [sp+0x234] + ; gcrRegs -[r1] + str r1, [sp+0x04] + ldr r1, [sp+0x238] + ; gcrRegs +[r1] + str r1, [sp+0x08] + ldr r1, [sp+0x23C] + str r1, [sp+0x0C] + ldr r1, [sp+0x240] + ; gcrRegs -[r1] + str r1, [sp+0x10] + ldr r1, [sp+0x244] + ; gcrRegs +[r1] + str r1, [sp+0x14] + ldr r1, [sp+0x248] + ; gcrRegs -[r1] + str r1, [sp+0x18] + movs r1, 1 + str r1, [sp+0x1C] + movs r1, 0 + str r1, [sp+0x20] + ;; size=54 bbWeight=1 PerfScore 27.00 +G_M19812_IG13: ; bbWeight=1, gcrefRegs=0034 {r2 r4 r5}, byrefRegs=0040 {r6}, byref + str r1, [sp+0x24] + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M19812_IG14: ; bbWeight=1, gcrefRegs=0034 {r2 r4 r5}, byrefRegs=0040 {r6}, byref + str r1, [sp+0x28] + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M19812_IG15: ; bbWeight=1, gcrefRegs=0034 {r2 r4 r5}, byrefRegs=0040 {r6}, byref + str r1, [sp+0x2C] + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M19812_IG16: ; bbWeight=1, gcrefRegs=0034 {r2 r4 r5}, byrefRegs=0040 {r6}, byref + str r1, [sp+0x30] + movs r1, 1 + str r1, [sp+0x34] + movs r1, 0 + str r1, [sp+0x38] + ldr r1, [sp+0x1E0] + str r1, [sp+0x40] + ldr r1, [sp+0x1E4] + str r1, [sp+0x44] + ldr r1, [sp+0x1E8] + ; gcrRegs +[r1] + str r1, [sp+0x48] + ldr r1, [sp+0x1EC] + ; gcrRegs -[r1] + str r1, [sp+0x4C] + ldr r1, [sp+0x1F0] + str r1, [sp+0x50] + ldr r1, [sp+0x1F4] + str r1, [sp+0x54] + ldr r1, [sp+0x1F8] + ; gcrRegs +[r1] + str r1, [sp+0x58] + ldr r1, [sp+0x1FC] + ; gcrRegs -[r1] + str r1, [sp+0x5C] + movs r1, 0 + str r1, [sp+0x60] + ;; size=46 bbWeight=1 PerfScore 23.00 +G_M19812_IG17: ; bbWeight=1, gcrefRegs=0034 {r2 r4 r5}, byrefRegs=0040 {r6}, byref + str r1, [sp+0x64] + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M19812_IG18: ; bbWeight=1, gcrefRegs=0034 {r2 r4 r5}, byrefRegs=0040 {r6}, byref, isz + str r1, [sp+0x68] + add r1, sp, 512 + mov r0, r4 + ; gcrRegs +[r0] + mov r3, r5 + ; gcrRegs +[r3] + movw lr, 0xd1ff + movt lr, 0xd1ff + ldr lr, [lr] + blx lr // <unknown method> + ; gcrRegs -[r0 r2-r3 r5] + cmp r9, 0 + beq G_M19812_IG37 + ldr r9, [sp+0xA0] // [V81 tmp68] + cmp r9, 0 + bne G_M19812_IG38 + ;; size=42 bbWeight=1 PerfScore 13.00 +G_M19812_IG19: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6}, byref + movs r1, 0 + str r1, [r4+0x70] + str r1, [r4+0x74] + str r1, [r4+0x78] + str r1, [r4+0x7C] + str r1, [r4+0x80] + str r1, [r4+0x84] + ;; size=18 bbWeight=1 PerfScore 7.00 +G_M19812_IG20: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6}, byref + str r1, [r4+0x58] + str r1, [r4+0x5C] + str r1, [r4+0x60]
...

+12 (+1.47%) : 558084.dasm - System.Net.SocketAddress:.ctor(System.Net.IPAddress):this (Tier1)

@@ -21,7 +21,7 @@ ;* V09 tmp3 [V09 ] ( 0, 0 ) int -> zero-ref ;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref single-def ptr ;* V11 tmp5 [V11 ] ( 0, 0 ) int -> zero-ref
-; V12 tmp6 [V12,T09] ( 7, 2 ) int -> r6
+; V12 tmp6 [V12,T09] ( 6, 2 ) int -> r6
;* V13 tmp7 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]> ;* V14 tmp8 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]> ; V15 tmp9 [V15 ] ( 1, 0 ) struct (16) [sp+0x54] do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal" @@ -186,28 +186,20 @@ G_M12197_IG02: ; bbWeight=1, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, b movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_INIT_PINVOKE_FRAME
- str r7, [sp+0x34] - ; GC ptr vars +{V01}
ldr r0, [r7+0x04] ; gcrRegs +[r0] cmp r0, 0
- bne G_M12197_IG38
+ bne G_M12197_IG40
movs r4, 2 movs r6, 16
- ;; size=26 bbWeight=1 PerfScore 10.00 -G_M12197_IG03: ; bbWeight=1, gcVars=0000000000000004 {V01}, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0 r7]
+ ;; size=24 bbWeight=1 PerfScore 9.00 +G_M12197_IG03: ; bbWeight=1, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r0]
cmp r6, 2
- blt SHORT G_M12197_IG05
+ bge SHORT G_M12197_IG05
;; size=4 bbWeight=1 PerfScore 2.00
-G_M12197_IG04: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz - cmp r6, 2 - ble SHORT G_M12197_IG06 - b SHORT G_M12197_IG06 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M12197_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r8] - ; GC ptr vars -{V01}
+G_M12197_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r7-r8]
movw r0, 0xd1ff movw r1, 0xd1ff movt r1, 0xd1ff @@ -227,9 +219,8 @@ G_M12197_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcrRegs -[r2] bkpt ;; size=42 bbWeight=0 PerfScore 0.00
-G_M12197_IG06: ; bbWeight=0, gcVars=0000000000000004 {V01}, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r8] - ; GC ptr vars +{V01}
+G_M12197_IG05: ; bbWeight=0, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r7-r8]
str r6, [r8+0x08] mov r1, r6 movw r0, 0xd1ff @@ -259,23 +250,25 @@ G_M12197_IG06: ; bbWeight=0, gcVars=0000000000000004 {V01}, gcrefRegs=010 movs r3, 0 ldr lr, [r1+0x04] cmp r3, lr
- bhs G_M12197_IG37
+ bhs G_M12197_IG39
strb r2, [r1+0x08] add r1, r0, 8 ; gcrRegs -[r1] ; byrRegs +[r1] ldr r2, [r0+0x04] cmp r4, -1
- beq SHORT G_M12197_IG09
+ beq SHORT G_M12197_IG08
movs r0, 0 ; gcrRegs -[r0] cmp r2, 0
- beq SHORT G_M12197_IG07
+ beq SHORT G_M12197_IG10
mov r0, r1 ; byrRegs +[r0]
- ;; size=90 bbWeight=0 PerfScore 0.00 -G_M12197_IG07: ; bbWeight=0, gcVars=000000000000000C {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref - ; gcrRegs -[r8]
+ str r7, [sp+0x34] + ; GC ptr vars +{V01} + ;; size=92 bbWeight=0 PerfScore 0.00 +G_M12197_IG06: ; bbWeight=0, gcVars=000000000000000C {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref + ; gcrRegs -[r7-r8]
; byrRegs -[r1] str r0, [sp+0x50] // [V27 tmp21] mov r1, r2 @@ -283,7 +276,7 @@ G_M12197_IG07: ; bbWeight=0, gcVars=000000000000000C {V00 V01}, gcrefRegs movw r3, 0xd1ff movt r3, 0xd1ff ;; size=14 bbWeight=0 PerfScore 0.00
-G_M12197_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M12197_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0] blx r3 // <unknown method> movs r3, 0 @@ -300,8 +293,11 @@ G_M12197_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_POLL_GC
- ;; size=42 bbWeight=0 PerfScore 0.00 -G_M12197_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ldr r7, [sp+0x34] // [V01 arg1] + ; gcrRegs +[r7] + ;; size=44 bbWeight=0 PerfScore 0.00 +G_M12197_IG08: ; bbWeight=0, gcVars=0000000000000008 {V00}, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, gcvars, byref, isz + ; GC ptr vars -{V01}
movs r0, 0 str r0, [sp+0x50] // [V27 tmp21] ldr r8, [sp+0x38] // [V00 this] @@ -309,14 +305,30 @@ G_M12197_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr r0, [r8+0x04] ; gcrRegs +[r0] cmp r0, 0
- bne SHORT G_M12197_IG10
+ bne SHORT G_M12197_IG11
movs r0, 0 ; gcrRegs -[r0] movs r1, 0
- b SHORT G_M12197_IG11
+ b SHORT G_M12197_IG12
;; size=22 bbWeight=0 PerfScore 0.00
-G_M12197_IG10: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref - ; gcrRegs -[r8] +[r0]
+G_M12197_IG09: ; bbWeight=0, gcVars=000000000000000C {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r7-r8] + ; GC ptr vars +{V01} + ldr r7, [sp+0x34] // [V01 arg1] + ; gcrRegs +[r7] + b SHORT G_M12197_IG08 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M12197_IG10: ; bbWeight=0, gcVars=0000000000000008 {V00}, gcrefRegs=0080 {r7}, byrefRegs=0001 {r0}, gcvars, byref, isz + ; byrRegs +[r0] + ; GC ptr vars -{V01} + str r7, [sp+0x34] // [V01 arg1] + ; GC ptr vars +{V01} + b SHORT G_M12197_IG06 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M12197_IG11: ; bbWeight=0, gcrefRegs=0081 {r0 r7}, byrefRegs=0000 {}, byref + ; gcrRegs +[r0] + ; byrRegs -[r0] + ; GC ptr vars -{V01}
add r1, r0, 8 ; byrRegs +[r1] ldr r0, [r0+0x04] @@ -327,14 +339,17 @@ G_M12197_IG10: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byre mov r1, r2 ; byrRegs -[r1] ;; size=12 bbWeight=0 PerfScore 0.00
-G_M12197_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+G_M12197_IG12: ; bbWeight=0, gcrefRegs=0080 {r7}, byrefRegs=0001 {r0}, byref, isz
movs r2, 0 cmp r1, 0
- beq SHORT G_M12197_IG12
+ beq G_M12197_IG33
mov r2, r0 ; byrRegs +[r2]
- ;; size=8 bbWeight=0 PerfScore 0.00 -G_M12197_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0004 {r2}, byref
+ str r7, [sp+0x34] // [V01 arg1] + ; GC ptr vars +{V01} + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M12197_IG13: ; bbWeight=0, gcVars=000000000000000C {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0004 {r2}, gcvars, byref + ; gcrRegs -[r7]
; byrRegs -[r0] str r2, [sp+0x4C] // [V35 tmp29] mov r0, r2 @@ -343,7 +358,7 @@ G_M12197_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0004 {r2}, byre movw r3, 0xd1ff movt r3, 0xd1ff ;; size=14 bbWeight=0 PerfScore 0.00
-G_M12197_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M12197_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
blx r3 // <unknown method> movs r3, 0 str r3, [sp+0x4C] // [V35 tmp29] @@ -355,33 +370,33 @@ G_M12197_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movt r3, 0xd1ff ldr r3, [r3] cmp r3, 0
- beq SHORT G_M12197_IG14
+ beq SHORT G_M12197_IG15
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_POLL_GC ;; size=42 bbWeight=0 PerfScore 0.00
-G_M12197_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M12197_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr r7, [sp+0x34] ; gcrRegs +[r7] ldr r0, [r7+0x04] ; gcrRegs +[r0] cmp r0, 0
- beq G_M12197_IG32
+ beq G_M12197_IG34
add r4, sp, 84 ldr r6, [r7+0x04] ; gcrRegs +[r6] mov r8, 0 ldr r9, [r6+0x04] cmp r9, 0
- ble SHORT G_M12197_IG19
+ ble SHORT G_M12197_IG20
;; size=28 bbWeight=0 PerfScore 0.00
-G_M12197_IG15: ; bbWeight=0.33, gcVars=0000000000000008 {V00}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0010 {r4}, gcvars, byref, isz
+G_M12197_IG16: ; bbWeight=0.33, gcVars=0000000000000008 {V00}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0010 {r4}, gcvars, byref, isz
; gcrRegs -[r0] ; byrRegs +[r4] ; GC ptr vars -{V01} lsl r0, r8, 1 cmp r0, 16
- bhi G_M12197_IG39
+ bhi G_M12197_IG41
adds r3, r4, r0 ; byrRegs +[r3] str r3, [sp+0x30] // [V50 tmp44] @@ -390,15 +405,15 @@ G_M12197_IG15: ; bbWeight=0.33, gcVars=0000000000000008 {V00}, gcrefRegs= subs r2, r2, r0 str r2, [sp+0x48] // [V49 tmp43] cmp r2, 0
- bge SHORT G_M12197_IG16
+ bge SHORT G_M12197_IG17
movs r0, 0
- b SHORT G_M12197_IG17
+ b SHORT G_M12197_IG18
;; size=28 bbWeight=0.33 PerfScore 4.00
-G_M12197_IG16: ; bbWeight=0.33, gcVars=000000000000000A {V00 V50}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0010 {r4}, gcvars, byref
+G_M12197_IG17: ; bbWeight=0.33, gcVars=000000000000000A {V00 V50}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0010 {r4}, gcvars, byref
; byrRegs -[r3] movs r0, 1 ;; size=2 bbWeight=0.33 PerfScore 0.33
-G_M12197_IG17: ; bbWeight=0.33, gcrefRegs=00C0 {r6 r7}, byrefRegs=0010 {r4}, byref, isz
+G_M12197_IG18: ; bbWeight=0.33, gcrefRegs=00C0 {r6 r7}, byrefRegs=0010 {r4}, byref, isz
movw r1, 0xd1ff movt r1, 0xd1ff ldr r1, [r1] @@ -414,17 +429,17 @@ G_M12197_IG17: ; bbWeight=0.33, gcrefRegs=00C0 {r6 r7}, byrefRegs=0010 {r uxth r0, r0 ldr r1, [sp+0x48] // [V49 tmp43] cmp r1, 2
- blo G_M12197_IG40
+ blo G_M12197_IG42
;; size=38 bbWeight=0.33 PerfScore 4.67
-G_M12197_IG18: ; bbWeight=2.67, gcrefRegs=00C0 {r6 r7}, byrefRegs=0010 {r4}, byref, isz
+G_M12197_IG19: ; bbWeight=2.67, gcrefRegs=00C0 {r6 r7}, byrefRegs=0010 {r4}, byref, isz
ldr r1, [sp+0x30] // [V50 tmp44] ; byrRegs +[r1] strh r0, [r1] ...

+18 (+1.53%) : 506892.dasm - System.Xml.XmlBinaryReader:ReadArray(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,int[],int,int):int:this (Tier1)

@@ -51,9 +51,9 @@ ; V39 tmp33 [V39,T41] ( 4, 0.93) ubyte -> r3 "Inline return value spill temp" ;* V40 tmp34 [V40 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" ;* V41 tmp35 [V41 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V42 tmp36 [V42,T05] ( 12, 15.53) ref -> r9 class-hnd exact single-def "impAppendStmt" <System.Xml.XmlBufferReader>
+; V42 tmp36 [V42,T05] ( 14, 15.53) ref -> r9 class-hnd exact single-def "impAppendStmt" <System.Xml.XmlBufferReader>
;* V43 tmp37 [V43 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[int]>
-; V44 tmp38 [V44,T21] ( 7, 3.53) int -> r10 "Inline return value spill temp"
+; V44 tmp38 [V44,T22] ( 7, 3.53) int -> r10 "Inline return value spill temp"
; V45 tmp39 [V45,T28] ( 3, 2.85) int -> r10 "Inlining Arg" ;* V46 tmp40 [V46 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V47 tmp41 [V47 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]> @@ -64,10 +64,10 @@ ;* V52 tmp46 [V52 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V53 tmp47 [V53 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> ;* V54 tmp48 [V54 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ubyte]>
-; V55 tmp49 [V55,T22] ( 5, 3.53) ref -> r0 class-hnd single-def "Inline return value spill temp" <ubyte[]> -; V56 tmp50 [V56,T15] ( 4, 5.65) byref -> r0 single-def "Inlining Arg"
+; V55 tmp49 [V55,T21] ( 7, 3.53) ref -> r3 class-hnd single-def "Inline return value spill temp" <ubyte[]> +; V56 tmp50 [V56,T16] ( 4, 5.65) byref -> r0 single-def "Inlining Arg"
;* V57 tmp51 [V57 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V58 tmp52 [V58,T16] ( 4, 5.65) int -> r1 "Inlining Arg"
+; V58 tmp52 [V58,T15] ( 5, 5.65) int -> lr "Inlining Arg"
;* V59 tmp53 [V59 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V60 tmp54 [V60 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V61 tmp55 [V61 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> @@ -151,7 +151,7 @@ G_M43301_IG02: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 ; gcrRegs -[r0] cmp r0, 1 ldr r9, [sp+0x3C] // [V05 arg5]
- bne G_M43301_IG42
+ bne G_M43301_IG43
;; size=62 bbWeight=1 PerfScore 20.00 G_M43301_IG03: ; bbWeight=0.96, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz ldr r0, [r4+0x08] @@ -161,9 +161,9 @@ G_M43301_IG03: ; bbWeight=0.96, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0 ldr r0, [r10+0x08] ; gcrRegs -[r0] cmp r0, 0
- beq G_M43301_IG50
+ beq G_M43301_IG51
cmp r0, 1
- bne G_M43301_IG51
+ bne G_M43301_IG52
ldr r3, [r10+0x04] ; gcrRegs +[r3] str r3, [sp+0x08] // [V15 tmp9] @@ -238,7 +238,7 @@ G_M43301_IG08: ; bbWeight=7.63, gcVars=0000000000000000 {}, gcrefRegs=40F ldr r2, [sp+0x0C] // [V16 tmp10] add r12, r2, r0 cmp r12, r1
- bhs G_M43301_IG49
+ bhs G_M43301_IG50
ldrb r12, [r3+r12] add r9, lr, 8 ; byrRegs +[r9] @@ -249,7 +249,7 @@ G_M43301_IG08: ; bbWeight=7.63, gcVars=0000000000000000 {}, gcrefRegs=40F bne SHORT G_M43301_IG05 adds r0, r0, 1 cmp r0, r10
- blt G_M43301_IG26
+ blt G_M43301_IG27
;; size=40 bbWeight=7.63 PerfScore 99.24 G_M43301_IG09: ; bbWeight=0.96, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref ; gcrRegs -[lr] @@ -258,14 +258,14 @@ G_M43301_IG09: ; bbWeight=0.96, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0 ;; size=4 bbWeight=0.96 PerfScore 0.96 G_M43301_IG10: ; bbWeight=0.96, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz cmp r12, 0
- beq G_M43301_IG28
+ beq G_M43301_IG29
;; size=8 bbWeight=0.96 PerfScore 1.93 G_M43301_IG11: ; bbWeight=0.96, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz ldr r0, [r4+0x08] ; gcrRegs +[r0] ldr r1, [r0+0x24] cmp r1, 0
- bne G_M43301_IG33
+ bne G_M43301_IG34
;; size=10 bbWeight=0.96 PerfScore 3.85 G_M43301_IG12: ; bbWeight=0.50, gcrefRegs=00F1 {r0 r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz ldr r10, [r0+0x10] @@ -277,7 +277,7 @@ G_M43301_IG12: ; bbWeight=0.50, gcrefRegs=00F1 {r0 r4 r5 r6 r7}, byrefReg ldr r1, [r10+0x10] ; gcrRegs +[r1] cmp r0, r1
- bne G_M43301_IG43
+ bne G_M43301_IG44
;; size=20 bbWeight=0.50 PerfScore 2.99 G_M43301_IG13: ; bbWeight=0.31, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref ; gcrRegs -[r0-r1 r10] @@ -285,18 +285,18 @@ G_M43301_IG13: ; bbWeight=0.31, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0 ;; size=2 bbWeight=0.31 PerfScore 0.31 G_M43301_IG14: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz cmp r3, 0
- beq G_M43301_IG28
+ beq G_M43301_IG29
;; size=6 bbWeight=1 PerfScore 2.00 G_M43301_IG15: ; bbWeight=0.50, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz ldr r0, [r4+0x80] cmp r0, 1
- bne G_M43301_IG28
+ bne G_M43301_IG29
ldr r0, [r4+0x8C] cmp r0, 141
- bne G_M43301_IG28
+ bne G_M43301_IG29
ldrb r0, [r4+0x7A] cmp r0, 0
- bne G_M43301_IG28
+ bne G_M43301_IG29
;; size=30 bbWeight=0.50 PerfScore 4.50 G_M43301_IG16: ; bbWeight=0.71, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r6-r7] @@ -312,7 +312,7 @@ G_M43301_IG16: ; bbWeight=0.71, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} ; gcr arg pop 0 ldr r10, [r4+0x84] cmp r9, r10
- bgt G_M43301_IG27
+ bgt G_M43301_IG28
;; size=28 bbWeight=0.71 PerfScore 7.06 G_M43301_IG17: ; bbWeight=0.69, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref mov r10, r9 @@ -321,14 +321,14 @@ G_M43301_IG18: ; bbWeight=0.71, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {} ldr r9, [r4+0x04] ; gcrRegs +[r9] cmp r5, 0
- beq G_M43301_IG53
+ beq G_M43301_IG54
ldr r0, [r5+0x04] cmp r0, r8
- blo G_M43301_IG55
+ blo G_M43301_IG56
ldr r0, [r5+0x04] sub r0, r0, r8 cmp r0, r10
- blo G_M43301_IG55
+ blo G_M43301_IG56
add r0, r5, 8 ; byrRegs +[r0] lsl r3, r8, 2 @@ -343,7 +343,7 @@ G_M43301_IG19: ; bbWeight=0.71, gcrefRegs=0210 {r4 r9}, byrefRegs=0020 {r movs r0, 4 smull r8, r2, r3, r0 cmp r2, r8 ASR 31
- bne G_M43301_IG48
+ bne G_M43301_IG49
cmp r8, 0 bge SHORT G_M43301_IG20 movs r0, 0 @@ -359,7 +359,7 @@ G_M43301_IG21: ; bbWeight=0.71, gcrefRegs=0210 {r4 r9}, byrefRegs=0020 {r blx r3 // <unknown method> ; gcr arg pop 0 cmp r8, 0
- ble SHORT G_M43301_IG23
+ ble SHORT G_M43301_IG24
add r0, r9, 44 ; byrRegs +[r0] ldr r1, [r9+0x2C] @@ -382,31 +382,33 @@ G_M43301_IG21: ; bbWeight=0.71, gcrefRegs=0210 {r4 r9}, byrefRegs=0020 {r ; gcrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- beq G_M43301_IG54
+ beq G_M43301_IG55
;; size=70 bbWeight=0.71 PerfScore 16.94 G_M43301_IG22: ; bbWeight=0.71, gcrefRegs=0210 {r4 r9}, byrefRegs=0020 {r5}, byref, isz
- ldr r0, [r9+0x10] - ; gcrRegs +[r0] - ldr r1, [r9+0x2C] - cmp r0, 0 - beq G_M43301_IG55 - ldr r2, [r0+0x04] - cmp r2, r1 - blo G_M43301_IG55 - ldr r2, [r0+0x04] - subs r2, r2, r1 - cmp r2, r8 - blo G_M43301_IG55 - adds r0, 8 - ; gcrRegs -[r0]
+ ldr r3, [r9+0x10] + ; gcrRegs +[r3] + ldr lr, [r9+0x2C] + cmp r3, 0 + beq G_M43301_IG56 + ;; size=14 bbWeight=0.71 PerfScore 2.82 +G_M43301_IG23: ; bbWeight=0.71, gcrefRegs=0218 {r3 r4 r9}, byrefRegs=0020 {r5}, byref, isz + ldr r0, [r3+0x04] + cmp r0, lr + blo G_M43301_IG56 + ldr r0, [r3+0x04] + sub r0, r0, lr + cmp r0, r8 + blo G_M43301_IG56 + add r0, r3, 8
; byrRegs +[r0]
- adds r1, r0, r1
+ add r1, r0, lr
; byrRegs +[r1] mov r2, r8 cmp r2, r8
- bhi G_M43301_IG56
+ bhi G_M43301_IG57
mov r0, r5 movw r3, 0xd1ff
+ ; gcrRegs -[r3]
movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method> @@ -415,19 +417,19 @@ G_M43301_IG22: ; bbWeight=0.71, gcrefRegs=0210 {r4 r9}, byrefRegs=0020 {r ldr r0, [r9+0x2C] add r0, r8 str r0, [r9+0x2C]
- ;; size=68 bbWeight=0.71 PerfScore 16.94 -G_M43301_IG23: ; bbWeight=0.71, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=60 bbWeight=0.71 PerfScore 14.12 +G_M43301_IG24: ; bbWeight=0.71, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r9] ldr r0, [r4+0x84] sub r0, r0, r10 str r0, [r4+0x84] cmp r0, 0
- bne SHORT G_M43301_IG24
+ bne SHORT G_M43301_IG25
movs r0, 0 str r0, [r4+0x80] ldr r0, [r4+0x60] cmp r0, 0
- beq G_M43301_IG57
+ beq G_M43301_IG58
subs r0, r0, 1 str r0, [r4+0x60] ldr r0, [r4+0x0C] @@ -448,62 +450,62 @@ G_M43301_IG23: ; bbWeight=0.71, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ; gcrRegs -[r0 r4] ; gcr arg pop 0 ;; size=64 bbWeight=0.71 PerfScore 16.24
-G_M43301_IG24: ; bbWeight=0.71, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M43301_IG25: ; bbWeight=0.71, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov r0, r10 ;; size=2 bbWeight=0.71 PerfScore 0.71
-G_M43301_IG25: ; bbWeight=0.71, epilog, nogc, extend
+G_M43301_IG26: ; bbWeight=0.71, epilog, nogc, extend
add sp, 20 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=0.71 PerfScore 1.41
-G_M43301_IG26: ; bbWeight=3.82, gcVars=0000000000000000 {}, gcrefRegs=40F0 {r4 r5 r6 r7 lr}, byrefRegs=0008 {r3}, gcvars, byref, isz
+G_M43301_IG27: ; bbWeight=3.82, gcVars=0000000000000000 {}, gcrefRegs=40F0 {r4 r5 r6 r7 lr}, byrefRegs=0008 {r3}, gcvars, byref, isz
; gcrRegs +[r4-r7 lr] ...

librariestestsnotieredcompilation.run.linux.arm.Release.mch

-24 (-24.49%) : 6050.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)

@@ -8,7 +8,7 @@ ; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 5, 4 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 4, 3.50) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r1 class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference> ; V02 loc0 [V02,T06] ( 3, 1.50) int -> r3 ld-addr-op ;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> @@ -20,20 +20,18 @@ ; V09 tmp4 [V09,T04] ( 3, 2.50) byref -> r0 single-def "Inline stloc first use temp" ;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V11 tmp6 [V11,T07] ( 3, 1.50) ref -> r2 single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V12 rat0 [V12,T05] ( 2, 2 ) int -> r0 "Spilling to split statement for tree"
+;* V12 rat0 [V12,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V13 rat1 [V13,T09] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V14 rat2 [V14,T03] ( 2, 2 ) int -> r0 "fgMakeTemp is creating a new local variable"
+;* V14 rat2 [V14,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 12
+; Lcl frame size = 4
G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r11,lr} - sub sp, 12 - add r11, sp, 16 - str r0, [r11-0x0C]
+ push {r3,r4,r11,lr} + add r11, sp, 8
mov r4, r0 ; gcrRegs +[r4]
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=10 bbWeight=1 PerfScore 3.00
G_M43979_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r1] ldr r0, [r4+0x10] @@ -46,36 +44,27 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b ; gcrRegs -[r0-r1] ; byrRegs +[r0] cmp r0, 0
- beq SHORT G_M43979_IG05
+ beq SHORT G_M43979_IG04
;; size=22 bbWeight=1 PerfScore 8.00 G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz ldr r3, [r0] ldr r2, [r4+0x44] ; gcrRegs +[r2]
- ldr r0, [r4] - ; byrRegs -[r0] - ldr r0, [r0+0x24] - ldr r0, [r0] - ldr r0, [r0+0x84] - cmp r0, 0 - bne SHORT G_M43979_IG07 - ;; size=18 bbWeight=0.50 PerfScore 4.00 -G_M43979_IG04: ; bbWeight=0.10, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, byref, isz - b SHORT G_M43979_IG07 - ;; size=2 bbWeight=0.10 PerfScore 0.10 -G_M43979_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ b SHORT G_M43979_IG06 + ;; size=6 bbWeight=0.50 PerfScore 1.50 +G_M43979_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r2]
+ ; byrRegs -[r0]
movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M43979_IG06: ; bbWeight=0.50, epilog, nogc, extend - add sp, 12 - pop {r4,r11,pc} - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M43979_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43979_IG05: ; bbWeight=0.50, epilog, nogc, extend + pop {r3,r4,r11,pc} + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M43979_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r2] ldr r0, [r2+0x04] cmp r3, r0
- bhs SHORT G_M43979_IG09
+ bhs SHORT G_M43979_IG08
add r0, r2, 8 ; byrRegs +[r0] lsls r3, r3, 2 @@ -83,11 +72,10 @@ G_M43979_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0014 {r2 r4 ; gcrRegs +[r0] ; byrRegs -[r0] ;; size=14 bbWeight=0.50 PerfScore 3.00
-G_M43979_IG08: ; bbWeight=0.50, epilog, nogc, extend - add sp, 12 - pop {r4,r11,pc} - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M43979_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
+G_M43979_IG07: ; bbWeight=0.50, epilog, nogc, extend + pop {r3,r4,r11,pc} + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M43979_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0 r2] movw r3, 0xd1ff movt r3, 0xd1ff @@ -95,7 +83,7 @@ G_M43979_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 98, prolog size 14, PerfScore 22.60, instruction count 37, allocated bytes for code 98 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
+Total bytes of code 74, prolog size 8, PerfScore 17.00, instruction count 27, allocated bytes for code 74 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -107,7 +95,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 49 (0x00031) Actual length = 98 (0x000062)
+ Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -119,7 +107,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16 - A8 10 pop {r4,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32 + FF end
FF end

-22 (-22.92%) : 43554.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)

@@ -8,7 +8,7 @@ ; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 5, 4 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 4, 3.50) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r1 class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference> ; V02 loc0 [V02,T06] ( 3, 1.50) int -> r3 ld-addr-op ;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> @@ -20,20 +20,18 @@ ; V09 tmp4 [V09,T04] ( 3, 2.50) byref -> r0 single-def "Inline stloc first use temp" ;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V11 tmp6 [V11,T07] ( 3, 1.50) ref -> r2 single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V12 rat0 [V12,T05] ( 2, 2 ) int -> r0 "Spilling to split statement for tree"
+;* V12 rat0 [V12,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V13 rat1 [V13,T09] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V14 rat2 [V14,T03] ( 2, 2 ) int -> r0 "fgMakeTemp is creating a new local variable"
+;* V14 rat2 [V14,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 12
+; Lcl frame size = 4
G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r11,lr} - sub sp, 12 - add r11, sp, 16 - str r0, [r11-0x0C]
+ push {r3,r4,r11,lr} + add r11, sp, 8
mov r4, r0 ; gcrRegs +[r4]
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=10 bbWeight=1 PerfScore 3.00
G_M43979_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r1] ldr r0, [r4+0x10] @@ -46,36 +44,27 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b ; gcrRegs -[r0-r1] ; byrRegs +[r0] cmp r0, 0
- beq SHORT G_M43979_IG05
+ beq SHORT G_M43979_IG04
;; size=22 bbWeight=1 PerfScore 8.00 G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz ldr r3, [r0] ldr r2, [r4+0x44] ; gcrRegs +[r2]
- ldr r0, [r4] - ; byrRegs -[r0] - ldr r0, [r0+0x24] - ldr r0, [r0] - ldr r0, [r0+0x60] - cmp r0, 0 - bne SHORT G_M43979_IG07 - ;; size=16 bbWeight=0.50 PerfScore 4.00 -G_M43979_IG04: ; bbWeight=0.10, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, byref, isz - b SHORT G_M43979_IG07 - ;; size=2 bbWeight=0.10 PerfScore 0.10 -G_M43979_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ b SHORT G_M43979_IG06 + ;; size=6 bbWeight=0.50 PerfScore 1.50 +G_M43979_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r2]
+ ; byrRegs -[r0]
movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M43979_IG06: ; bbWeight=0.50, epilog, nogc, extend - add sp, 12 - pop {r4,r11,pc} - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M43979_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43979_IG05: ; bbWeight=0.50, epilog, nogc, extend + pop {r3,r4,r11,pc} + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M43979_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r2] ldr r0, [r2+0x04] cmp r3, r0
- bhs SHORT G_M43979_IG09
+ bhs SHORT G_M43979_IG08
add r0, r2, 8 ; byrRegs +[r0] lsls r3, r3, 2 @@ -83,11 +72,10 @@ G_M43979_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0014 {r2 r4 ; gcrRegs +[r0] ; byrRegs -[r0] ;; size=14 bbWeight=0.50 PerfScore 3.00
-G_M43979_IG08: ; bbWeight=0.50, epilog, nogc, extend - add sp, 12 - pop {r4,r11,pc} - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M43979_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
+G_M43979_IG07: ; bbWeight=0.50, epilog, nogc, extend + pop {r3,r4,r11,pc} + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M43979_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0 r2] movw r3, 0xd1ff movt r3, 0xd1ff @@ -95,7 +83,7 @@ G_M43979_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 96, prolog size 14, PerfScore 22.60, instruction count 37, allocated bytes for code 96 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
+Total bytes of code 74, prolog size 8, PerfScore 17.00, instruction count 27, allocated bytes for code 74 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -107,7 +95,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 48 (0x00030) Actual length = 96 (0x000060)
+ Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -119,7 +107,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16 - A8 10 pop {r4,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32 + FF end
FF end

-22 (-22.92%) : 49246.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)

@@ -8,7 +8,7 @@ ; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 5, 4 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 4, 3.50) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r1 class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference> ; V02 loc0 [V02,T06] ( 3, 1.50) int -> r3 ld-addr-op ;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> @@ -20,20 +20,18 @@ ; V09 tmp4 [V09,T04] ( 3, 2.50) byref -> r0 single-def "Inline stloc first use temp" ;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V11 tmp6 [V11,T07] ( 3, 1.50) ref -> r2 single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V12 rat0 [V12,T05] ( 2, 2 ) int -> r0 "Spilling to split statement for tree"
+;* V12 rat0 [V12,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V13 rat1 [V13,T09] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V14 rat2 [V14,T03] ( 2, 2 ) int -> r0 "fgMakeTemp is creating a new local variable"
+;* V14 rat2 [V14,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 12
+; Lcl frame size = 4
G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r11,lr} - sub sp, 12 - add r11, sp, 16 - str r0, [r11-0x0C]
+ push {r3,r4,r11,lr} + add r11, sp, 8
mov r4, r0 ; gcrRegs +[r4]
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=10 bbWeight=1 PerfScore 3.00
G_M43979_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r1] ldr r0, [r4+0x10] @@ -46,36 +44,27 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b ; gcrRegs -[r0-r1] ; byrRegs +[r0] cmp r0, 0
- beq SHORT G_M43979_IG05
+ beq SHORT G_M43979_IG04
;; size=22 bbWeight=1 PerfScore 8.00 G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz ldr r3, [r0] ldr r2, [r4+0x44] ; gcrRegs +[r2]
- ldr r0, [r4] - ; byrRegs -[r0] - ldr r0, [r0+0x24] - ldr r0, [r0] - ldr r0, [r0+0x60] - cmp r0, 0 - bne SHORT G_M43979_IG07 - ;; size=16 bbWeight=0.50 PerfScore 4.00 -G_M43979_IG04: ; bbWeight=0.10, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, byref, isz - b SHORT G_M43979_IG07 - ;; size=2 bbWeight=0.10 PerfScore 0.10 -G_M43979_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ b SHORT G_M43979_IG06 + ;; size=6 bbWeight=0.50 PerfScore 1.50 +G_M43979_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r2]
+ ; byrRegs -[r0]
movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M43979_IG06: ; bbWeight=0.50, epilog, nogc, extend - add sp, 12 - pop {r4,r11,pc} - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M43979_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43979_IG05: ; bbWeight=0.50, epilog, nogc, extend + pop {r3,r4,r11,pc} + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M43979_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0014 {r2 r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r2] ldr r0, [r2+0x04] cmp r3, r0
- bhs SHORT G_M43979_IG09
+ bhs SHORT G_M43979_IG08
add r0, r2, 8 ; byrRegs +[r0] lsls r3, r3, 2 @@ -83,11 +72,10 @@ G_M43979_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0014 {r2 r4 ; gcrRegs +[r0] ; byrRegs -[r0] ;; size=14 bbWeight=0.50 PerfScore 3.00
-G_M43979_IG08: ; bbWeight=0.50, epilog, nogc, extend - add sp, 12 - pop {r4,r11,pc} - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M43979_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
+G_M43979_IG07: ; bbWeight=0.50, epilog, nogc, extend + pop {r3,r4,r11,pc} + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M43979_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0 r2] movw r3, 0xd1ff movt r3, 0xd1ff @@ -95,7 +83,7 @@ G_M43979_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 96, prolog size 14, PerfScore 22.60, instruction count 37, allocated bytes for code 96 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
+Total bytes of code 74, prolog size 8, PerfScore 17.00, instruction count 27, allocated bytes for code 74 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
; ============================================================ Unwind Info: @@ -107,7 +95,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 48 (0x00030) Actual length = 96 (0x000060)
+ Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -119,7 +107,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 03 add sp, sp, #12 ; opsize 16 - A8 10 pop {r4,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32 + FF end
FF end

+4 (+0.07%) : 153621.dasm - System.Net.Quic.Tests.MsQuicTests+d__33:MoveNext():this (FullOpts)

@@ -1531,8 +1531,8 @@ G_M59229_IG76: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre J_M59229_DS68 LABEL DWORD DD G_M59229_IG90 DD G_M59229_IG100
- DD G_M59229_IG115 - DD G_M59229_IG143
+ DD G_M59229_IG114 + DD G_M59229_IG142
ldr pc, [r0+4*r5] ;; size=20 bbWeight=1 PerfScore 7.00 G_M59229_IG77: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz @@ -1934,7 +1934,7 @@ G_M59229_IG101: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref dmb 15 and r1, r1, 0x11000000 cmp r1, 0x1000000
- bne G_M59229_IG111
+ bne G_M59229_IG110
;; size=20 bbWeight=1 PerfScore 6.00 G_M59229_IG102: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0] @@ -1944,7 +1944,7 @@ G_M59229_IG102: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref str r3, [r4+0x44] ldr r3, [r4+0x44] cmp r3, 0
- ble G_M59229_IG129
+ ble G_M59229_IG128
;; size=14 bbWeight=1 PerfScore 6.00 G_M59229_IG103: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz ldr r0, [r4+0x1C] @@ -1955,13 +1955,13 @@ G_M59229_IG103: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byr rsbs r3, r3, 0 adds r3, 100 cmp r2, 0
- beq G_M59229_IG110
+ beq G_M59229_IG151
ldr r1, [r2+0x04] cmp r1, r3
- blo SHORT G_M59229_IG110
+ blo G_M59229_IG151
subs r1, r1, r3 cmp r1, 0
- beq SHORT G_M59229_IG110
+ beq G_M59229_IG151
movs r1, 0 str r1, [sp+0x04] // [V28 OutArgs+0x04] ; gcr arg write @@ -1975,7 +1975,7 @@ G_M59229_IG103: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byr blx lr // System.Net.Quic.QuicStream:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this ; gcrRegs -[r0 r2] ; gcr arg pop 0
- ;; size=56 bbWeight=4 PerfScore 92.00
+ ;; size=60 bbWeight=4 PerfScore 92.00
G_M59229_IG104: ; bbWeight=4, nogc, extend ldr r1, [sp+0x74] // [V15 loc14] str r1, [sp+0x5C] // [V20 loc19] @@ -1988,7 +1988,7 @@ G_M59229_IG105: ; bbWeight=4, isz, extend ldr r5, [sp+0x5C] // [V20 loc19] ; gcrRegs +[r5] cmp r5, 0
- beq SHORT G_M59229_IG112
+ beq SHORT G_M59229_IG111
mov r1, r5 ; gcrRegs +[r1] movw r0, 0xd1ff @@ -1999,7 +1999,7 @@ G_M59229_IG105: ; bbWeight=4, isz, extend ; gcrRegs -[r1] +[r0] ; gcr arg pop 0 cmp r0, 0
- bne SHORT G_M59229_IG112
+ bne SHORT G_M59229_IG111
mov r1, r5 ; gcrRegs +[r1] movw r0, 0xd1ff @@ -2044,13 +2044,13 @@ G_M59229_IG108: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, b ; gcrRegs -[r1] +[r0] ; gcr arg pop 0 cmp r0, 0
- beq SHORT G_M59229_IG113
+ beq SHORT G_M59229_IG112
ldr r0, [r0+0x1C] ; gcrRegs -[r0] dmb 15 ands r0, r0, 0x1600000 cmp r0, 0
- bne SHORT G_M59229_IG117
+ bne SHORT G_M59229_IG116
;; size=38 bbWeight=4 PerfScore 52.00 G_M59229_IG109: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz ; gcrRegs -[r5] @@ -2089,18 +2089,8 @@ G_M59229_IG109: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byr ; gcr arg pop 0 b SHORT G_M59229_IG163 ;; size=74 bbWeight=1 PerfScore 25.00
-G_M59229_IG110: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref - ; byrRegs +[r4] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowArgumentOutOfRangeException() - ; gcr arg pop 0 - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M59229_IG111: ; bbWeight=0.00, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M59229_IG110: ; bbWeight=0.00, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
- ; byrRegs -[r4]
movs r1, 0 movw r3, 0xd1ff movt r3, 0xd1ff @@ -2110,14 +2100,14 @@ G_M59229_IG111: ; bbWeight=0.00, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, ; gcr arg pop 0 b SHORT G_M59229_IG102 ;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M59229_IG112: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
+G_M59229_IG111: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs +[r5] ; byrRegs +[r4] cmp r5, 0 bne SHORT G_M59229_IG108
- b SHORT G_M59229_IG117
+ b SHORT G_M59229_IG116
;; size=6 bbWeight=4 PerfScore 12.00
-G_M59229_IG113: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M59229_IG112: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r4] mov r0, r5 ; gcrRegs +[r0] @@ -2131,12 +2121,12 @@ G_M59229_IG113: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byr cmp r0, 0 ldr r4, [sp+0x14] // [V00 this] ; byrRegs +[r4]
- bne SHORT G_M59229_IG117
+ bne SHORT G_M59229_IG116
;; size=24 bbWeight=4 PerfScore 36.00
-G_M59229_IG114: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M59229_IG113: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
b SHORT G_M59229_IG109 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M59229_IG115: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, nogc
+G_M59229_IG114: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, nogc
ldr r0, [r4+0x64] str r0, [sp+0x5C] // [V20 loc19] ldr r0, [r4+0x68] @@ -2144,7 +2134,7 @@ G_M59229_IG115: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byr ldr r0, [r4+0x6C] str r0, [sp+0x64] // [V20 loc19+0x08] ;; size=12 bbWeight=1 PerfScore 6.00
-G_M59229_IG116: ; bbWeight=1, extend
+G_M59229_IG115: ; bbWeight=1, extend
movs r0, 0 str r0, [r4+0x64] str r0, [r4+0x68] @@ -2153,13 +2143,13 @@ G_M59229_IG116: ; bbWeight=1, extend str r0, [sp+0xB4] // [V01 loc0] str r0, [r4+0x38] ;; size=16 bbWeight=1 PerfScore 7.00
-G_M59229_IG117: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M59229_IG116: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
ldr r5, [sp+0x5C] // [V20 loc19] ; gcrRegs +[r5] cmp r5, 0
- beq SHORT G_M59229_IG121
+ beq SHORT G_M59229_IG120
;; size=6 bbWeight=8 PerfScore 24.00
-G_M59229_IG118: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
+G_M59229_IG117: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
mov r1, r5 ; gcrRegs +[r1] movw r0, 0xd1ff @@ -2170,7 +2160,7 @@ G_M59229_IG118: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, b ; gcrRegs -[r1] +[r0] ; gcr arg pop 0 cmp r0, 0
- bne SHORT G_M59229_IG121
+ bne SHORT G_M59229_IG120
mov r1, r5 ; gcrRegs +[r1] movw r0, 0xd1ff @@ -2182,18 +2172,18 @@ G_M59229_IG118: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, b ; gcrRegs -[r1] +[r0] ; gcr arg pop 0 cmp r0, 0
- bne SHORT G_M59229_IG119
+ bne SHORT G_M59229_IG118
movs r0, 0 ; gcrRegs -[r0]
- b SHORT G_M59229_IG120
+ b SHORT G_M59229_IG119
;; size=52 bbWeight=4 PerfScore 72.00
-G_M59229_IG119: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
+G_M59229_IG118: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
movs r0, 1 ;; size=2 bbWeight=4 PerfScore 4.00
-G_M59229_IG120: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
+G_M59229_IG119: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
uxtb r0, r0 cmp r0, 0
- bne SHORT G_M59229_IG123
+ bne SHORT G_M59229_IG122
movw r0, 0xd1ff movt r0, 0xd1ff movw r1, 0xd1ff @@ -2203,18 +2193,18 @@ G_M59229_IG120: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, b ldr r3, [r3] blx r3 // <unknown method> ; gcr arg pop 0
- b SHORT G_M59229_IG123
+ b SHORT G_M59229_IG122
;; size=36 bbWeight=4 PerfScore 48.00
-G_M59229_IG121: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
+G_M59229_IG120: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
cmp r5, 0
- bne SHORT G_M59229_IG123
+ bne SHORT G_M59229_IG122
;; size=4 bbWeight=8 PerfScore 16.00
-G_M59229_IG122: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M59229_IG121: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs -[r5] ldr r6, [sp+0x60] // [V20 loc19+0x04]
- b SHORT G_M59229_IG128
+ b SHORT G_M59229_IG127
;; size=4 bbWeight=4 PerfScore 8.00
-G_M59229_IG123: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
+G_M59229_IG122: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs +[r5] mov r1, r5 ; gcrRegs +[r1] @@ -2228,21 +2218,21 @@ G_M59229_IG123: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, b mov r6, r0 ; gcrRegs +[r6] cmp r6, 0
- beq SHORT G_M59229_IG127
+ beq SHORT G_M59229_IG126
ldr r0, [r6+0x1C] ; gcrRegs -[r0] dmb 15 and r0, r0, 0x11000000 cmp r0, 0x1000000
- bne SHORT G_M59229_IG126
+ bne SHORT G_M59229_IG125
;; size=42 bbWeight=4 PerfScore 56.00
-G_M59229_IG124: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0010 {r4}, byref, isz
+G_M59229_IG123: ; bbWeight=4, gcrefRegs=0040 {r6}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs -[r5] ldr r0, [r6+0x1C] dmb 15 and r0, r0, 0x11000000 cmp r0, 0x1000000
- beq SHORT G_M59229_IG125
+ beq SHORT G_M59229_IG124
...

+2 (+0.20%) : 288568.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex30568_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -71,11 +71,11 @@ ;* V60 tmp48 [V60 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" ; V61 tmp49 [V61,T44] ( 4, 2 ) int -> r0 single-def "Inline stloc first use temp" ; V62 tmp50 [V62,T40] ( 3, 3 ) ref -> r3 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V63 tmp51 [V63,T33] ( 3, 6 ) int -> r0 "Inline stloc first use temp" -; V64 tmp52 [V64,T27] ( 4, 8 ) int -> r3 "Inline stloc first use temp" -; V65 tmp53 [V65,T16] ( 3, 12 ) ref -> r0 class-hnd "impAppendStmt" <<unknown class>>
+; V63 tmp51 [V63,T33] ( 3, 6 ) int -> r3 "Inline stloc first use temp" +; V64 tmp52 [V64,T27] ( 4, 8 ) int -> r2 "Inline stloc first use temp" +; V65 tmp53 [V65,T16] ( 3, 12 ) ref -> r3 class-hnd "impAppendStmt" <<unknown class>>
;* V66 tmp54 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V67 tmp55 [V67,T17] ( 3, 12 ) byref -> r0 "dup spill"
+; V67 tmp55 [V67,T17] ( 3, 12 ) byref -> r3 "dup spill"
; V68 tmp56 [V68,T31] ( 3, 6 ) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP ; V69 tmp57 [V69,T24] ( 10, 10.00) int -> r6 single-def "field V02._length (fldOffset=0x4)" P-INDEP ;* V70 tmp58 [V70 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP @@ -98,9 +98,9 @@ ; V87 tmp75 [V87,T41] ( 3, 3.00) ref -> r0 single-def "arr expr" ; V88 tmp76 [V88,T42] ( 3, 3.00) ref -> r0 single-def "arr expr" ; V89 tmp77 [V89,T10] ( 3, 24 ) ref -> lr "arr expr"
-; V90 tmp78 [V90,T18] ( 3, 12 ) ref -> r3 "arr expr"
+; V90 tmp78 [V90,T18] ( 3, 12 ) ref -> r2 "arr expr"
; V91 cse0 [V91,T26] ( 4, 9 ) ref -> r1 "CSE - moderate"
-; V92 cse1 [V92,T29] ( 3, 7 ) ref -> r5 hoist "CSE - moderate"
+; V92 cse1 [V92,T29] ( 3, 7 ) ref -> r0 hoist "CSE - moderate"
; V93 cse2 [V93,T19] ( 2, 8 ) ref -> r0 "CSE - moderate" ; V94 cse3 [V94,T22] ( 3, 12 ) int -> [sp+0x04] spill-single-def "CSE - moderate" ; V95 cse4 [V95,T23] ( 3, 12 ) int -> r1 "CSE - moderate" @@ -146,7 +146,7 @@ G_M62831_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r ;; size=28 bbWeight=0.50 PerfScore 4.00 G_M62831_IG05: ; bbWeight=1.00, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r9}, byref, isz cmp r10, 2
- bls G_M62831_IG27
+ bls G_M62831_IG33
;; size=8 bbWeight=1.00 PerfScore 2.00 G_M62831_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r9}, byref, isz ldrh r0, [r9] @@ -156,7 +156,7 @@ G_M62831_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r blx r3 // System.Text.RegularExpressions.RegexCharClass:IsWordChar(ushort):ubyte ; gcr arg pop 0 cmp r0, 0
- beq G_M62831_IG27
+ beq G_M62831_IG33
ldrh r0, [r9+0x02] movw r3, 0xd1ff movt r3, 0xd1ff @@ -164,7 +164,7 @@ G_M62831_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r blx r3 // System.Text.RegularExpressions.RegexCharClass:IsWordChar(ushort):ubyte ; gcr arg pop 0 cmp r0, 0
- beq G_M62831_IG27
+ beq G_M62831_IG33
ldrh r0, [r9+0x04] movw r3, 0xd1ff movt r3, 0xd1ff @@ -173,7 +173,7 @@ G_M62831_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r ; byrRegs -[r9] ; gcr arg pop 0 cmp r0, 0
- beq G_M62831_IG27
+ beq G_M62831_IG33
;; size=66 bbWeight=0.50 PerfScore 10.50 G_M62831_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz adds r0, r7, 3 @@ -370,7 +370,7 @@ G_M62831_IG20: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, by ; gcr arg pop 0 ldr r9, [sp+0x10] // [V09 loc7] cmp r9, 8
- bge SHORT G_M62831_IG31
+ bge SHORT G_M62831_IG27
str r9, [sp+0x10] // [V09 loc7] ldr r9, [sp+0x14] // [V04 loc2] b SHORT G_M62831_IG11 @@ -381,8 +381,8 @@ G_M62831_IG21: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b subs r3, r3, 1 str r3, [sp+0x10] // [V09 loc7] cmp r3, 0
- blt SHORT G_M62831_IG27 - ;; size=10 bbWeight=0.50 PerfScore 2.50
+ blt G_M62831_IG33 + ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M62831_IG22: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz add r8, r8, -1 ldr r0, [r4+0x18] @@ -478,34 +478,12 @@ G_M62831_IG26: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ; gcrRegs -[r1] ldr r3, [sp+0x10] // [V09 loc7] cmp r3, 6
- bge SHORT G_M62831_IG31
+ blt SHORT G_M62831_IG33
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M62831_IG27: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - ldr r5, [r4+0x1C] - ; gcrRegs +[r5] - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M62831_IG28: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz - ldr r0, [r5+0x04] - ldr r3, [r4+0x40] - subs r0, r0, r3 - cmp r0, 0 - bne SHORT G_M62831_IG37 - ;; size=10 bbWeight=4 PerfScore 20.00 -G_M62831_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4-r5] - movs r0, 0 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M62831_IG30: ; bbWeight=0.50, epilog, nogc, extend - add sp, 28 - pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} - add sp, 8 - bx lr - ;; size=10 bbWeight=0.50 PerfScore 2.00 -G_M62831_IG31: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4]
+G_M62831_IG27: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
subs r0, r6, r10 cmp r0, 0
- bge SHORT G_M62831_IG32
+ bge SHORT G_M62831_IG28
movw r0, 0xd1ff movt r0, 0xd1ff movw r1, 0xd1ff @@ -516,21 +494,21 @@ G_M62831_IG31: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=001 blx r3 // <unknown method> ; gcr arg pop 0 ;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M62831_IG32: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M62831_IG28: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
str r10, [r4+0x34] mov r5, r7 mov r6, r10 cmp r6, r5
- bge SHORT G_M62831_IG34
+ bge SHORT G_M62831_IG30
;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M62831_IG33: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M62831_IG29: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
mov r6, r7 mov r5, r10 ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M62831_IG34: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M62831_IG30: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x40] cmp r0, 0
- bne SHORT G_M62831_IG35
+ bne SHORT G_M62831_IG31
mov r0, r4 ; gcrRegs +[r0] movw r3, 0xd1ff @@ -540,7 +518,7 @@ G_M62831_IG34: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ; gcrRegs -[r0] ; gcr arg pop 0 ;; size=20 bbWeight=0.50 PerfScore 4.00
-G_M62831_IG35: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M62831_IG31: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r3, [r4+0x1C] ; gcrRegs +[r3] ldr r0, [r4+0x40] @@ -570,49 +548,69 @@ G_M62831_IG35: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ; gcr arg pop 0 movs r0, 1 ;; size=50 bbWeight=0.50 PerfScore 10.50
-G_M62831_IG36: ; bbWeight=0.50, epilog, nogc, extend
+G_M62831_IG32: ; bbWeight=0.50, epilog, nogc, extend
add sp, 28 pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} add sp, 8 bx lr ;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M62831_IG37: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4-r5] - mov r0, r5
+G_M62831_IG33: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r4] + ldr r0, [r4+0x1C]
; gcrRegs +[r0]
- ldr r3, [r4+0x40] - adds r2, r3, 1 - str r2, [r4+0x40] - ldr r2, [r0+0x04] - cmp r3, r2 - bhs SHORT G_M62831_IG38 - adds r0, 8 - ; gcrRegs -[r0] - ; byrRegs +[r0] - lsls r3, r3, 2 - ldr r0, [r0+r3] - ; byrRegs -[r0] - ldr r3, [r4+0x20]
+ b SHORT G_M62831_IG35 + ;; size=4 bbWeight=1 PerfScore 2.00 +G_M62831_IG34: ; bbWeight=2, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz + mov r3, r0
; gcrRegs +[r3]
- ldr r3, [r3+0x2C] - ldr r2, [r3+0x04] - cmp r0, r2
+ ldr r2, [r4+0x40] + adds r1, r2, 1 + str r1, [r4+0x40] + ldr r1, [r3+0x04] + cmp r2, r1
bhs SHORT G_M62831_IG38 adds r3, 8 ; gcrRegs -[r3] ; byrRegs +[r3]
- lsls r0, r0, 2 - adds r0, r3, r0 - ; byrRegs +[r0] - ldr r3, [r0]
+ lsls r2, r2, 2 + ldr r3, [r3+r2]
; byrRegs -[r3]
- subs r3, r3, 1 - str r3, [r0] - b SHORT G_M62831_IG28 - ;; size=44 bbWeight=2 PerfScore 44.00 -G_M62831_IG38: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4-r5] - ; byrRegs -[r0]
+ ldr r2, [r4+0x20] + ; gcrRegs +[r2] + ldr r2, [r2+0x2C] + ldr r1, [r2+0x04] + cmp r3, r1 + bhs SHORT G_M62831_IG38 + adds r2, 8 + ; gcrRegs -[r2] + ; byrRegs +[r2] + lsls r3, r3, 2 + adds r3, r2, r3 + ; byrRegs +[r3] + ldr r2, [r3] + ; byrRegs -[r2] + subs r2, r2, 1 + str r2, [r3] + ;; size=42 bbWeight=2 PerfScore 42.00 +G_M62831_IG35: ; bbWeight=4, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r3] + ldr r3, [r0+0x04] + ldr r2, [r4+0x40] + subs r3, r3, r2 + cmp r3, 0 + bne SHORT G_M62831_IG34 + ;; size=10 bbWeight=4 PerfScore 20.00 +G_M62831_IG36: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0 r4] + movs r0, 0 + ;; size=2 bbWeight=0.50 PerfScore 0.50 +G_M62831_IG37: ; bbWeight=0.50, epilog, nogc, extend
...

+2 (+0.23%) : 257356.dasm - System.Text.Json.Serialization.Tests.JsonSerializerWrapper+Utf8BomInsertingStream:Read(ubyte[],int,int):int:this (FullOpts)

@@ -234,7 +234,7 @@ G_M15050_IG10: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0102 {r ldr r3, [r3] blx r3 // <unknown method> ; byrRegs -[r0-r1 r8]
- b SHORT G_M15050_IG24
+ b SHORT G_M15050_IG21
;; size=22 bbWeight=0.50 PerfScore 4.00 G_M15050_IG11: ; bbWeight=0.05, gcrefRegs=0090 {r4 r7}, byrefRegs=0100 {r8}, byref, isz ; byrRegs +[r8] @@ -316,15 +316,15 @@ G_M15050_IG15: ; bbWeight=0.50, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs= G_M15050_IG16: ; bbWeight=1.00, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz ldr r9, [r4+0x14] cmp r9, r5
- bgt SHORT G_M15050_IG23
+ bgt SHORT G_M15050_IG20
;; size=8 bbWeight=1.00 PerfScore 3.00 G_M15050_IG17: ; bbWeight=0.37, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref mov r8, r9 ;; size=2 bbWeight=0.37 PerfScore 0.37 G_M15050_IG18: ; bbWeight=1, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz cmp r8, 0
- ble SHORT G_M15050_IG21 - ;; size=6 bbWeight=1 PerfScore 2.00
+ ble G_M15050_IG31 + ;; size=8 bbWeight=1 PerfScore 2.00
G_M15050_IG19: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz ldr r0, [r4+0x0C] ; gcrRegs +[r0] @@ -345,72 +345,37 @@ G_M15050_IG19: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {} ; byrRegs +[r1] mov r2, r8 cmp r7, 0
- bne G_M15050_IG32
+ bne SHORT G_M15050_IG29
orrs r0, r6, r5 ; byrRegs -[r0] cmp r0, 0 bne G_M15050_IG38 movs r0, 0 movs r3, 0
- ;; size=54 bbWeight=0.50 PerfScore 10.50 -G_M15050_IG20: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0003 {r0 r1}, byref, isz - ; byrRegs +[r0] - cmp r2, r3 - bhi G_M15050_IG39 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - ; byrRegs -[r0-r1] - ldr r0, [r4+0x10] - add r0, r8 - str r0, [r4+0x10] - ldr r0, [r4+0x14] - sub r0, r0, r8 - str r0, [r4+0x14] - add r6, r8 - sub r5, r5, r8 - ;; size=38 bbWeight=0.50 PerfScore 7.00 -G_M15050_IG21: ; bbWeight=1, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref - ldr r0, [r4+0x08] - ; gcrRegs +[r0] - mov r1, r7 - ; gcrRegs +[r1] - mov r2, r6 - mov r3, r5 - ldr lr, [r0] - ldr lr, [lr+0x3C] - ldr lr, [lr+0x0C] - blx lr // <unknown method> - ; gcrRegs -[r0-r1 r4 r7] - add r0, r8 - ;; size=24 bbWeight=1 PerfScore 9.00 -G_M15050_IG22: ; bbWeight=1, epilog, nogc, extend - add sp, 36 - pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} - ;; size=6 bbWeight=1 PerfScore 2.00 -G_M15050_IG23: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4 r7]
+ b SHORT G_M15050_IG30 + ;; size=54 bbWeight=0.50 PerfScore 11.00 +G_M15050_IG20: ; bbWeight=0.13, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r1]
mov r8, r5 b SHORT G_M15050_IG18 ;; size=4 bbWeight=0.13 PerfScore 0.26
-G_M15050_IG24: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
+G_M15050_IG21: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
cmp r0, 0
- beq SHORT G_M15050_IG25
+ beq SHORT G_M15050_IG22
movs r0, 3 str r0, [r4+0x10] str r0, [r4+0x14] b SHORT G_M15050_IG16 ;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M15050_IG25: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
+G_M15050_IG22: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff movt r0, 0xd1ff ldr r0, [r0] and r0, r0, 1 cmp r0, 1
- bne SHORT G_M15050_IG36 - ;; size=18 bbWeight=0.50 PerfScore 3.00 -G_M15050_IG26: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
+ bne G_M15050_IG36 + ;; size=20 bbWeight=0.50 PerfScore 3.00 +G_M15050_IG23: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff movt r0, 0xd1ff ldr r8, [r0] @@ -419,16 +384,16 @@ G_M15050_IG26: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {} ; gcrRegs +[r10] ldrsb r0, [r8] cmp r10, 0
- beq SHORT G_M15050_IG30
+ beq SHORT G_M15050_IG27
ldr r3, [r10] str r3, [sp+0x18] // [V40 tmp33] ; GC ptr vars +{V40} ldr r0, [r3] ands r0, r0, 0x80000000 cmp r0, 0
- bne SHORT G_M15050_IG28
+ bne SHORT G_M15050_IG25
;; size=42 bbWeight=0.50 PerfScore 6.50
-G_M15050_IG27: ; bbWeight=0.50, gcVars=0000000000040000 {V40}, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs=0000 {}, gcvars, byref
+G_M15050_IG24: ; bbWeight=0.50, gcVars=0000000000040000 {V40}, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs=0000 {}, gcvars, byref
movw r1, 0xd1ff movt r1, 0xd1ff mov r0, r1 @@ -439,7 +404,7 @@ G_M15050_IG27: ; bbWeight=0.50, gcVars=0000000000040000 {V40}, gcrefRegs= blx r2 // <unknown method> ; gcrRegs -[r0] ;; size=22 bbWeight=0.50 PerfScore 3.50
-G_M15050_IG28: ; bbWeight=0.50, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
+G_M15050_IG25: ; bbWeight=0.50, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
ldr r3, [sp+0x18] // [V40 tmp33] ; byrRegs +[r3] ldr r0, [r3+0x04] @@ -451,20 +416,20 @@ G_M15050_IG28: ; bbWeight=0.50, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs= ; GC ptr vars -{V40} blx r3 // CORINFO_HELP_UDIV cmp r0, 0
- beq SHORT G_M15050_IG30
+ beq SHORT G_M15050_IG27
;; size=22 bbWeight=0.50 PerfScore 4.50
-G_M15050_IG29: ; bbWeight=0.50, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
+G_M15050_IG26: ; bbWeight=0.50, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
cmp r0, 1 bne SHORT G_M15050_IG37 ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M15050_IG30: ; bbWeight=0.50, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
+G_M15050_IG27: ; bbWeight=0.50, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
ldr r3, [r8] str r3, [sp+0x14] // [V45 tmp38] ; GC ptr vars +{V45} ldr r0, [r3] ands r0, r0, 0x80000000 cmp r0, 0
- bne SHORT G_M15050_IG31
+ bne SHORT G_M15050_IG28
movw r1, 0xd1ff movt r1, 0xd1ff mov r0, r1 @@ -475,7 +440,7 @@ G_M15050_IG30: ; bbWeight=0.50, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs= blx r2 // <unknown method> ; gcrRegs -[r0] ;; size=38 bbWeight=0.50 PerfScore 6.50
-G_M15050_IG31: ; bbWeight=0.50, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
+G_M15050_IG28: ; bbWeight=0.50, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
ldr r3, [sp+0x14] // [V45 tmp38] ; byrRegs +[r3] ldr r0, [r3+0x04] @@ -493,7 +458,7 @@ G_M15050_IG31: ; bbWeight=0.50, gcrefRegs=0590 {r4 r7 r8 r10}, byrefRegs= movs r1, 0 b SHORT G_M15050_IG15 ;; size=32 bbWeight=0.50 PerfScore 6.50
-G_M15050_IG32: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0002 {r1}, byref, isz
+G_M15050_IG29: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0002 {r1}, byref, isz
; gcrRegs -[r8 r10] ; byrRegs +[r1] ldr r0, [r7+0x04] @@ -507,11 +472,43 @@ G_M15050_IG32: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0002 {r ; byrRegs +[r0] adds r0, r0, r6 mov r3, r5
- b SHORT G_M15050_IG20 - ;; size=24 bbWeight=0.50 PerfScore 5.50 -G_M15050_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4 r7]
+ ;; size=22 bbWeight=0.50 PerfScore 5.00 +G_M15050_IG30: ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0003 {r0 r1}, byref, isz + cmp r2, r3 + bhi SHORT G_M15050_IG39 + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method>
; byrRegs -[r0-r1]
+ ldr r0, [r4+0x10] + add r0, r8 + str r0, [r4+0x10] + ldr r0, [r4+0x14] + sub r0, r0, r8 + str r0, [r4+0x14] + add r6, r8 + sub r5, r5, r8 + ;; size=36 bbWeight=0.50 PerfScore 7.00 +G_M15050_IG31: ; bbWeight=1, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref + ldr r0, [r4+0x08] + ; gcrRegs +[r0] + mov r1, r7 + ; gcrRegs +[r1] + mov r2, r6 + mov r3, r5 + ldr lr, [r0] + ldr lr, [lr+0x3C] + ldr lr, [lr+0x0C] + blx lr // <unknown method> + ; gcrRegs -[r0-r1 r4 r7] + add r0, r8 + ;; size=24 bbWeight=1 PerfScore 9.00 +G_M15050_IG32: ; bbWeight=1, epilog, nogc, extend + add sp, 36 + pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M15050_IG33: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_OVERFLOW @@ -534,8 +531,8 @@ G_M15050_IG35: ; bbWeight=0, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, b ldr r0, [r0] and r0, r0, 1 cmp r0, 1
- beq SHORT G_M15050_IG26 - ;; size=18 bbWeight=0 PerfScore 0.00
+ beq G_M15050_IG23 + ;; size=20 bbWeight=0 PerfScore 0.00
G_M15050_IG36: ; bbWeight=0, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz movw r0, 0xd1ff movt r0, 0xd1ff @@ -543,7 +540,7 @@ G_M15050_IG36: ; bbWeight=0, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, b movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- b SHORT G_M15050_IG26
+ b SHORT G_M15050_IG23
;; size=24 bbWeight=0 PerfScore 0.00 ...

realworld.run.linux.arm.checked.mch

-34 (-58.62%) : 758.dasm - BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<g_GetCurrentProcessInstructionSets|20>d:MoveNext():ubyte:this (FullOpts)

@@ -8,11 +8,11 @@ ; 0 inlinees with PGO data; 27 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 6, 4.50) ref -> r0 this class-hnd single-def <BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<<GetFullInfo>g__GetCurrentProcessInstructionSets|2_0>d>
+; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<<GetFullInfo>g__GetCurrentProcessInstructionSets|2_0>d>
;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref
-; V02 loc1 [V02,T02] ( 3, 1.50) int -> r0 single-def
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 rat0 [V04,T01] ( 3, 6 ) int -> r3 "ReplaceWithLclVar is creating a new local variable"
+; V04 rat0 [V04,T01] ( 2, 4 ) int -> r3 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 0 @@ -24,39 +24,19 @@ G_M6535_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref ; gcrRegs +[r0] ldr r3, [r0+0x08] cmp r3, 27
- bhi SHORT G_M6535_IG05 - movs r2, 1 - lsr r3, r2, r3 - and r3, r3, 1 - cmp r3, 0 - beq SHORT G_M6535_IG04 - ;; size=20 bbWeight=1 PerfScore 8.00 -G_M6535_IG03: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ bhi SHORT G_M6535_IG03
mov r3, -1 str r3, [r0+0x08]
- ldr r0, [r0+0x10] - ; gcrRegs -[r0] - subs r3, r0, 1 - cmp r3, 1 - bls SHORT G_M6535_IG05 - cmp r0, 4 - beq SHORT G_M6535_IG05 - b SHORT G_M6535_IG05 - ;; size=20 bbWeight=0.50 PerfScore 4.50 -G_M6535_IG04: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref - ; gcrRegs +[r0] - mov r3, -1 - str r3, [r0+0x08] - ;; size=6 bbWeight=0.50 PerfScore 1.00 -G_M6535_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=1 PerfScore 5.00 +G_M6535_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] movs r0, 0 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M6535_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M6535_IG04: ; bbWeight=1, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-Total bytes of code 58, prolog size 6, PerfScore 17.50, instruction count 23, allocated bytes for code 58 (MethodHash=ff50e678) for method BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<<GetFullInfo>g__GetCurrentProcessInstructionSets|2_0>d:MoveNext():ubyte:this (FullOpts)
+Total bytes of code 24, prolog size 6, PerfScore 9.00, instruction count 9, allocated bytes for code 24 (MethodHash=ff50e678) for method BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<<GetFullInfo>g__GetCurrentProcessInstructionSets|2_0>d:MoveNext():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -68,7 +48,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 29 (0x0001d) Actual length = 58 (0x00003a)
+ Function Length : 12 (0x0000c) Actual length = 24 (0x000018)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

-26 (-26.00%) : 11352.dasm - FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)

@@ -8,8 +8,8 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 7, 5 ) ref -> r4 this class-hnd single-def <FSharp.Compiler.Infos+PropInfo> -;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <FSharp.Compiler.Infos+PropInfo>
+; V00 this [V00,T00] ( 6, 4.50) ref -> r4 this class-hnd single-def <FSharp.Compiler.Infos+PropInfo> +;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <FSharp.Compiler.Infos+PropInfo>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ; V03 loc2 [V03,T04] ( 2, 1 ) ref -> r0 class-hnd exact single-def <<unknown class>> ;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <FSharp.Compiler.TypedTree+ValRef> @@ -38,54 +38,39 @@ G_M3270_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref ; gcrRegs -[r1] +[r0] ; gcr arg pop 0 cmp r0, 0
- bne SHORT G_M3270_IG04
+ beq SHORT G_M3270_IG05
;; size=24 bbWeight=1 PerfScore 8.00 G_M3270_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0]
- mov r1, r4 - ; gcrRegs +[r1] - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[r1 r4] +[r0] - ; gcr arg pop 0 - cmp r0, 0 - bne SHORT G_M3270_IG06 - b SHORT G_M3270_IG06 - ;; size=26 bbWeight=0.50 PerfScore 4.50 -G_M3270_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r0] +[r4]
ldr r0, [r4+0x0C] ; gcrRegs +[r0] cmp r0, 0
- beq SHORT G_M3270_IG06
+ beq SHORT G_M3270_IG05
ldr r1, [r4+0x10] ; gcrRegs +[r1] cmp r1, 0
- bne SHORT G_M3270_IG06
+ bne SHORT G_M3270_IG05
ldr r0, [r0+0x04] ldr r1, [r4+0x04] movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] ;; size=26 bbWeight=0.50 PerfScore 5.50
-G_M3270_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M3270_IG04: ; bbWeight=0.50, epilog, nogc, extend
add sp, 4 pop {r4,r11,lr} bx r3 // FSharp.Compiler.Infos:ValRef.IsFSharpEventProperty(FSharp.Compiler.TypedTree+ValRef,FSharp.Compiler.TcGlobals+TcGlobals):ubyte ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M3270_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3270_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0-r1 r4] movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3270_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M3270_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-Total bytes of code 100, prolog size 10, PerfScore 23.50, instruction count 36, allocated bytes for code 100 (MethodHash=cb2ef339) for method FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
+Total bytes of code 74, prolog size 10, PerfScore 19.00, instruction count 27, allocated bytes for code 74 (MethodHash=cb2ef339) for method FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -97,7 +82,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 50 (0x00032) Actual length = 100 (0x000064)
+ Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-22 (-14.47%) : 33107.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:g_makeReplacement|171(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode]):Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode (FullOpts)

@@ -8,20 +8,21 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 6, 4.50) ref -> r5 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode>
+; V00 arg0 [V00,T00] ( 5, 4 ) ref -> r5 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode>
; V01 arg1 [V01,T01] ( 4, 3 ) ref -> r6 class-hnd single-def <System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode]>
-; V02 loc0 [V02,T04] ( 5, 2.25) ref -> r0 class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundDagFieldEvaluation> -; V03 loc1 [V03,T05] ( 4, 2 ) ref -> r7 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
+; V02 loc0 [V02,T03] ( 5, 2.25) ref -> r0 class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundDagFieldEvaluation> +; V03 loc1 [V03,T04] ( 4, 2 ) ref -> r7 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
; V04 loc2 [V04,T02] ( 4, 2.75) ref -> r4 class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundEvaluationDecisionDagNode> ;# 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 "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundEvaluationDecisionDagNode>
-; V07 tmp2 [V07,T06] ( 2, 2 ) ref -> r0 single-def "CASTCLASS eval op1"
+; V07 tmp2 [V07,T05] ( 2, 2 ) ref -> r0 single-def "CASTCLASS eval op1"
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundDagFieldEvaluation>
-; V09 tmp4 [V09,T03] ( 3, 2.50) ref -> r0 class-hnd "spilling QMark2" <<unknown class>> -; V10 tmp5 [V10,T07] ( 2, 2 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundDagTemp>
+;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>> +; V10 tmp5 [V10,T06] ( 2, 2 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundDagTemp>
;* V11 tmp6 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
-; V13 cse0 [V13,T08] ( 3, 1.50) int -> r8 "CSE - moderate"
+; V13 cse0 [V13,T07] ( 3, 1.50) int -> r8 "CSE - moderate" +; V14 cse1 [V14,T08] ( 2, 0.50) int -> r0 "CSE - conservative"
; ; Lcl frame size = 4 @@ -37,53 +38,34 @@ G_M26195_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b mov r4, r5 ; gcrRegs +[r4] cmp r4, 0
- beq SHORT G_M26195_IG04
+ beq SHORT G_M26195_IG08
;; size=6 bbWeight=1 PerfScore 3.00 G_M26195_IG03: ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz ldr r0, [r4] movw r3, 0xd1ff movt r3, 0xd1ff cmp r0, r3
- beq SHORT G_M26195_IG07
+ bne SHORT G_M26195_IG08
;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M26195_IG04: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r4] - mov r0, r5 - ; gcrRegs +[r0] - cmp r0, 0 - beq SHORT G_M26195_IG11 - ;; size=6 bbWeight=0.50 PerfScore 1.50 -G_M26195_IG05: ; bbWeight=0.25, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz - ldr r0, [r0] - ; gcrRegs -[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r0, r3 - beq SHORT G_M26195_IG11 - ;; size=14 bbWeight=0.25 PerfScore 1.25 -G_M26195_IG06: ; bbWeight=0.12, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz - b SHORT G_M26195_IG11 - ;; size=2 bbWeight=0.12 PerfScore 0.12 -G_M26195_IG07: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r4]
+G_M26195_IG04: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
ldr r0, [r5+0x0C] ; gcrRegs +[r0] cmp r0, 0
- beq SHORT G_M26195_IG11
+ beq SHORT G_M26195_IG08
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M26195_IG08: ; bbWeight=0.25, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M26195_IG05: ; bbWeight=0.25, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
ldr r3, [r0] movw r2, 0xd1ff movt r2, 0xd1ff cmp r3, r2
- bne SHORT G_M26195_IG11
+ bne SHORT G_M26195_IG08
;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M26195_IG09: ; bbWeight=0.50, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M26195_IG06: ; bbWeight=0.50, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
ldr r3, [r0+0x0C] ; gcrRegs +[r3] ldr r3, [r3+0x10] cmp r3, 0
- bne SHORT G_M26195_IG11
+ bne SHORT G_M26195_IG08
ldr r7, [r0+0x10] ; gcrRegs +[r7] mov r0, r7 @@ -94,7 +76,7 @@ G_M26195_IG09: ; bbWeight=0.50, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0 blx r3 // <unknown method> ; gcr arg pop 0 cmp r0, 0
- beq SHORT G_M26195_IG11
+ beq SHORT G_M26195_IG08
mov r0, r7 ldr r3, [r8+0x14] blx r3 // <unknown method> @@ -112,10 +94,10 @@ G_M26195_IG09: ; bbWeight=0.50, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0 ; gcrRegs -[r1 r6] ; gcr arg pop 0 ;; size=52 bbWeight=0.50 PerfScore 10.50
-G_M26195_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M26195_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,r7,r8,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M26195_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref
+G_M26195_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0] +[r5-r6] mov r0, r5 ; gcrRegs +[r0] @@ -125,14 +107,14 @@ G_M26195_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6 movt r3, 0xd1ff ldr r3, [r3] ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M26195_IG12: ; bbWeight=0.50, epilog, nogc, extend
+G_M26195_IG09: ; bbWeight=0.50, epilog, nogc, extend
add sp, 4 pop {r4,r5,r6,r7,r8,r11,lr} bx r3 // <unknown method> ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-Total bytes of code 152, prolog size 12, PerfScore 28.88, instruction count 59, allocated bytes for code 152 (MethodHash=af9999ac) for method Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:<RewriteTupleInput>g__makeReplacement|17_1(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode]):Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode (FullOpts)
+Total bytes of code 130, prolog size 12, PerfScore 26.00, instruction count 50, allocated bytes for code 130 (MethodHash=af9999ac) for method Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:<RewriteTupleInput>g__makeReplacement|17_1(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode]):Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode (FullOpts)
; ============================================================ Unwind Info: @@ -144,7 +126,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 76 (0x0004c) Actual length = 152 (0x000098)
+ Function Length : 65 (0x00041) Actual length = 130 (0x000082)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-0.06%) : 24222.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,ubyte):this (FullOpts)

@@ -3401,10 +3401,8 @@ G_M12170_IG133: ; bbWeight=2, gcrefRegs=0280 {r7 r9}, byrefRegs=0040 {r6} blx r3 // <unknown method> ; gcrRegs -[r0] ; gcr arg pop 0
- cmp r0, 5 - bne SHORT G_M12170_IG137
b SHORT G_M12170_IG137
- ;; size=56 bbWeight=2 PerfScore 46.00
+ ;; size=52 bbWeight=2 PerfScore 42.00
G_M12170_IG134: ; bbWeight=2, gcrefRegs=0080 {r7}, byrefRegs=0040 {r6}, byref, isz ldr r5, [sp+0xA0] // [V266 tmp237] ; gcrRegs +[r5] @@ -4294,7 +4292,7 @@ G_M12170_IG174: ; bbWeight=0, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byr bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-Total bytes of code 6898, prolog size 32, PerfScore 1253.75, instruction count 2438, allocated bytes for code 6898 (MethodHash=068ad075) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,ubyte):this (FullOpts)
+Total bytes of code 6894, prolog size 32, PerfScore 1249.75, instruction count 2436, allocated bytes for code 6894 (MethodHash=068ad075) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref,int,ubyte):this (FullOpts)
; ============================================================ Unwind Info: @@ -4306,7 +4304,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 3449 (0x00d79) Actual length = 6898 (0x001af2)
+ Function Length : 3447 (0x00d77) Actual length = 6894 (0x001aee)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 26001.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldNativeIntegerOverflowingUnaryOperator(int,Microsoft.CodeAnalysis.ConstantValue):System.Object (FullOpts)

@@ -23,17 +23,9 @@ G_M35943_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35943_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz movw r3, 0xd1ff cmp r0, r3
- beq SHORT G_M35943_IG05
+ bne SHORT G_M35943_IG05
;; size=8 bbWeight=1 PerfScore 3.00
-G_M35943_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r4] - movs r0, 0 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend - pop {r4,r5,r11,pc} - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M35943_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[r4]
+G_M35943_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -55,11 +47,17 @@ G_M35943_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, mov r0, r5 ; gcrRegs +[r0] ;; size=40 bbWeight=0.50 PerfScore 8.00
+G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend + pop {r4,r5,r11,pc} + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M35943_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[r0 r5] + movs r0, 0 + ;; size=2 bbWeight=0.50 PerfScore 0.50
G_M35943_IG06: ; bbWeight=0.50, epilog, nogc, extend pop {r4,r5,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M35943_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0 r5]
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_OVERFLOW

+2 (+0.85%) : 4131.dasm - FSharp.Compiler.CompilerConfig+TcConfig:computeKnownDllReference(System.String):System.Tuple2[FSharp.Compiler.CompilerConfig+AssemblyReference,Microsoft.FSharp.Core.FSharpOption1[System.String]]:this (FullOpts)

@@ -22,11 +22,12 @@ ; V11 tmp5 [V11,T00] ( 7, 12 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.CompilerConfig+AssemblyReference> ;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ;* V13 tmp7 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-;* V14 tmp8 [V14,T10] ( 0, 0 ) long -> zero-ref single-def "field V07.code1 (fldOffset=0x0)" P-INDEP -;* V15 tmp9 [V15,T11] ( 0, 0 ) long -> zero-ref single-def "field V07.code2 (fldOffset=0x8)" P-INDEP
+;* V14 tmp8 [V14,T11] ( 0, 0 ) long -> zero-ref single-def "field V07.code1 (fldOffset=0x0)" P-INDEP +;* V15 tmp9 [V15,T12] ( 0, 0 ) long -> zero-ref single-def "field V07.code2 (fldOffset=0x8)" P-INDEP
;* V16 tmp10 [V16,T09] ( 0, 0 ) ref -> zero-ref single-def "BlockOp address local"
-; V17 rat0 [V17,T03] ( 3, 6 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable" -; V18 rat1 [V18,T04] ( 3, 6 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V17 tmp11 [V17,T10] ( 2, 1 ) ref -> r2 single-def "Field obj" +; V18 rat0 [V18,T03] ( 3, 6 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable" +; V19 rat1 [V19,T04] ( 3, 6 ) byref -> r1 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 8 @@ -124,7 +125,7 @@ G_M10872_IG04: ; bbWeight=0.50, gcrefRegs=00A1 {r0 r5 r7}, byrefRegs=0000 ; gcrRegs -[r2] ldr r2, [r0+0x08] ; gcrRegs +[r2]
- ldr r2, [r2+0x08]
+ ldrsb r2, [r2]
; gcrRegs -[r2] ldr r2, [r0+0x04] ; gcrRegs +[r2] @@ -134,7 +135,7 @@ G_M10872_IG04: ; bbWeight=0.50, gcrefRegs=00A1 {r0 r5 r7}, byrefRegs=0000 movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3]
- ;; size=20 bbWeight=0.50 PerfScore 4.00
+ ;; size=22 bbWeight=0.50 PerfScore 4.00
G_M10872_IG05: ; bbWeight=0.50, epilog, nogc, extend add sp, 8 pop {r4,r5,r6,r7,r11,lr} @@ -169,7 +170,7 @@ G_M10872_IG07: ; bbWeight=0.50, epilog, nogc, extend pop {r2,r3,r4,r5,r6,r7,r11,pc} ;; size=4 bbWeight=0.50 PerfScore 0.50
-Total bytes of code 236, prolog size 8, PerfScore 71.00, instruction count 84, allocated bytes for code 236 (MethodHash=bcfad587) for method FSharp.Compiler.CompilerConfig+TcConfig:computeKnownDllReference(System.String):System.Tuple`2[FSharp.Compiler.CompilerConfig+AssemblyReference,Microsoft.FSharp.Core.FSharpOption`1[System.String]]:this (FullOpts)
+Total bytes of code 238, prolog size 8, PerfScore 71.00, instruction count 84, allocated bytes for code 238 (MethodHash=bcfad587) for method FSharp.Compiler.CompilerConfig+TcConfig:computeKnownDllReference(System.String):System.Tuple`2[FSharp.Compiler.CompilerConfig+AssemblyReference,Microsoft.FSharp.Core.FSharpOption`1[System.String]]:this (FullOpts)
; ============================================================ Unwind Info: @@ -181,7 +182,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 118 (0x00076) Actual length = 236 (0x0000ec)
+ Function Length : 119 (0x00077) Actual length = 238 (0x0000ee)
---- 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 34 34 0 0 -366 +0
benchmarks.run_pgo.linux.arm.checked.mch 86 82 1 3 -972 +4
benchmarks.run_tiered.linux.arm.checked.mch 29 28 0 1 -266 +0
coreclr_tests.run.linux.arm.checked.mch 553 303 4 246 -5,164 +24
libraries.crossgen2.linux.arm.checked.mch 0 0 0 0 -0 +0
libraries.pmi.linux.arm.checked.mch 245 234 3 8 -2,934 +34
libraries_tests.run.linux.arm.Release.mch 842 812 10 20 -11,928 +88
librariestestsnotieredcompilation.run.linux.arm.Release.mch 311 296 3 12 -3,568 +8
realworld.run.linux.arm.checked.mch 68 66 1 1 -1,034 +2
2,168 1,855 22 291 -26,232 +160

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm.checked.mch 44,927 4,966 39,961 1,181 (2.56%) 1,181 (2.56%)
benchmarks.run_pgo.linux.arm.checked.mch 167,320 62,159 105,161 3,336 (1.95%) 3,336 (1.95%)
benchmarks.run_tiered.linux.arm.checked.mch 73,073 38,812 34,261 951 (1.28%) 951 (1.28%)
coreclr_tests.run.linux.arm.checked.mch 472,401 259,200 213,201 7,170 (1.50%) 7,170 (1.50%)
libraries.crossgen2.linux.arm.checked.mch 1,774 0 1,774 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm.checked.mch 272,309 6 272,303 7,786 (2.78%) 7,786 (2.78%)
libraries_tests.run.linux.arm.Release.mch 710,650 443,197 267,453 16,293 (2.24%) 16,293 (2.24%)
librariestestsnotieredcompilation.run.linux.arm.Release.mch 274,642 21,604 253,038 33,244 (10.80%) 33,244 (10.80%)
realworld.run.linux.arm.checked.mch 36,411 157 36,254 1,407 (3.72%) 1,407 (3.72%)
2,053,507 830,101 1,223,406 71,368 (3.36%) 71,368 (3.36%)

jit-analyze output

benchmarks.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: 14773010 (overridden on cmd)
Total bytes of diff: 14772644 (overridden on cmd)
Total bytes of delta: -366 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


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: 68606114 (overridden on cmd)
Total bytes of diff: 68605146 (overridden on cmd)
Total bytes of delta: -968 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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


benchmarks.run_tiered.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: 18109340 (overridden on cmd)
Total bytes of diff: 18109074 (overridden on cmd)
Total bytes of delta: -266 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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

0 total methods with Code Size differences (0 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: 321786766 (overridden on cmd)
Total bytes of diff: 321781626 (overridden on cmd)
Total bytes of delta: -5140 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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


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: 49829328 (overridden on cmd)
Total bytes of diff: 49826428 (overridden on cmd)
Total bytes of delta: -2900 (-0.01 % of base)
    relative diff is a regression.

Detail diffs



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


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: 244097424 (overridden on cmd)
Total bytes of diff: 244085584 (overridden on cmd)
Total bytes of delta: -11840 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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


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: 94426298 (overridden on cmd)
Total bytes of diff: 94422738 (overridden on cmd)
Total bytes of delta: -3560 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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


realworld.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: 13618802 (overridden on cmd)
Total bytes of diff: 13617770 (overridden on cmd)
Total bytes of delta: -1032 (-0.01 % of base)
    relative diff is a regression.

Detail diffs



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



windows x86

Diffs are based on 2,290,721 contexts (838,165 MinOpts, 1,452,556 FullOpts).

MISSED contexts: base: 808 (0.04%), diff: 842 (0.04%)

Overall (-20,881 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,120,835 -250
benchmarks.run_pgo.windows.x86.checked.mch 45,138,363 -1,049
benchmarks.run_tiered.windows.x86.checked.mch 9,473,048 -197
coreclr_tests.run.windows.x86.checked.mch 309,362,652 -3,659
libraries.crossgen2.windows.x86.checked.mch 31,674,641 -1,340
libraries.pmi.windows.x86.checked.mch 49,151,190 -2,398
libraries_tests.run.windows.x86.Release.mch 184,732,225 -7,338
librariestestsnotieredcompilation.run.windows.x86.Release.mch 103,708,178 -3,719
realworld.run.windows.x86.checked.mch 11,283,258 -931

FullOpts (-20,881 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,120,554 -250
benchmarks.run_pgo.windows.x86.checked.mch 38,525,997 -1,049
benchmarks.run_tiered.windows.x86.checked.mch 5,203,456 -197
coreclr_tests.run.windows.x86.checked.mch 107,567,075 -3,659
libraries.crossgen2.windows.x86.checked.mch 31,673,581 -1,340
libraries.pmi.windows.x86.checked.mch 49,055,957 -2,398
libraries_tests.run.windows.x86.Release.mch 87,432,185 -7,338
librariestestsnotieredcompilation.run.windows.x86.Release.mch 95,028,117 -3,719
realworld.run.windows.x86.checked.mch 10,987,544 -931

Example diffs

benchmarks.run.windows.x86.checked.mch

-14 (-9.21%) : 22178.dasm - System.Collections.IterateForEach`1[System.Canon]:ImmutableStack():System.Canon:this (FullOpts)

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
+; V00 this [V00,T02] ( 3, 3 ) ref -> esi this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
; V01 loc0 [V01,T05] ( 3, 4 ) ref -> edi ld-addr-op class-hnd <System.__Canon> ;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Collections.Immutable.ImmutableStack`1[System.__Canon]> ; V03 loc2 [V03 ] ( 10, 31 ) struct ( 8) [ebp-0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableStack`1+Enumerator[System.__Canon]> @@ -22,9 +22,9 @@ ; V11 tmp6 [V11 ] ( 2, 3 ) ref -> [ebp-0x10] do-not-enreg[X] addr-exposed "field V03._originalStack (fldOffset=0x0)" P-DEP ; V12 tmp7 [V12 ] ( 9, 29 ) ref -> [ebp-0x0C] do-not-enreg[X] addr-exposed "field V03._remainingStack (fldOffset=0x4)" P-DEP ;* V13 cse0 [V13,T08] ( 0, 0 ) int -> zero-ref hoist "CSE - aggressive"
-; V14 rat0 [V14,T04] ( 2, 4 ) int -> ecx "Spilling to split statement for tree"
+;* V14 rat0 [V14,T04] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V15 rat1 [V15,T06] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V16 rat2 [V16,T03] ( 2, 4 ) int -> ecx "fgMakeTemp is creating a new local variable"
+;* V16 rat2 [V16,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 @@ -49,14 +49,8 @@ G_M64146_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 cmp dword ptr [ecx], ecx call [System.Collections.Immutable.ImmutableStack`1[System.__Canon]:GetEnumerator():System.Collections.Immutable.ImmutableStack`1+Enumerator[System.__Canon]:this] ; gcrRegs -[ecx]
- mov ecx, dword ptr [esi] - mov ecx, dword ptr [ecx+0x24] - mov ecx, dword ptr [ecx] - mov ecx, dword ptr [ecx+0x10] - test ecx, ecx - jne SHORT G_M64146_IG04
jmp SHORT G_M64146_IG04
- ;; size=32 bbWeight=1 PerfScore 20.00
+ ;; size=18 bbWeight=1 PerfScore 10.75
G_M64146_IG03: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[edi] cmp gword ptr [ebp-0x0C], 0 @@ -129,6 +123,6 @@ G_M64146_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi} int3 ;; size=28 bbWeight=0 PerfScore 0.00
-Total bytes of code 152, prolog size 16, PerfScore 147.75, instruction count 56, allocated bytes for code 152 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
+Total bytes of code 138, prolog size 16, PerfScore 138.50, instruction count 50, allocated bytes for code 138 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
; ============================================================

-14 (-6.57%) : 22957.dasm - System.Collections.IterateForEach`1[System.Canon]:FrozenSet():System.Canon:this (FullOpts)

@@ -23,10 +23,10 @@ ; V12 tmp7 [V12,T02] ( 3, 6 ) ref -> ecx single-def "argument with side effect" ; V13 EHSlots [V13 ] ( 1, 1 ) struct (16) [ebp-0x18] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar" ;* V14 cse0 [V14,T10] ( 0, 0 ) int -> zero-ref hoist "CSE - aggressive"
-; V15 cse1 [V15,T09] ( 6, 3.20) int -> ecx multi-def "CSE - aggressive" -; V16 rat0 [V16,T05] ( 2, 4 ) int -> edx "Spilling to split statement for tree"
+; V15 cse1 [V15,T09] ( 5, 2.20) int -> ecx multi-def "CSE - aggressive" +;* V16 rat0 [V16,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V17 rat1 [V17,T08] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V18 rat2 [V18,T03] ( 2, 4 ) int -> edx "fgMakeTemp is creating a new local variable"
+;* V18 rat2 [V18,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; V19 rat3 [V19,T04] ( 3, 5.60) int -> eax "fgMakeTemp is creating a new local variable" ; V20 rat4 [V20,T11] ( 3, 0 ) int -> ecx "Spilling to split statement for tree" ; V21 rat5 [V21,T12] ( 3, 0 ) int -> eax "fgMakeTemp is creating a new local variable" @@ -63,14 +63,8 @@ G_M17622_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs +[ecx] mov ecx, dword ptr [ecx] ; gcrRegs -[ecx]
- mov edx, ecx - mov edx, dword ptr [edx+0x24] - mov edx, dword ptr [edx] - mov edx, dword ptr [edx+0x10] - test edx, edx - jne SHORT G_M17622_IG05
jmp SHORT G_M17622_IG05
- ;; size=21 bbWeight=1 PerfScore 12.50
+ ;; size=7 bbWeight=1 PerfScore 5.00
G_M17622_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[esi] mov edx, dword ptr [ebp-0x1C] @@ -174,7 +168,7 @@ G_M17622_IG18: ; bbWeight=1, epilog, nogc, extend ret ;; size=6 bbWeight=1 PerfScore 2.50
-Total bytes of code 213, prolog size 27, PerfScore 162.68, instruction count 80, allocated bytes for code 213 (MethodHash=5937bb29) for method System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (FullOpts)
+Total bytes of code 199, prolog size 27, PerfScore 155.18, instruction count 74, allocated bytes for code 199 (MethodHash=5937bb29) for method System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (FullOpts)
; ============================================================ *************** EH table for System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this

-14 (-6.19%) : 2357.dasm - System.Uri:get_HostNameType():int:this (FullOpts)

@@ -16,8 +16,8 @@ ; V05 tmp3 [V05,T06] ( 3, 3 ) int -> eax "Single return block return value" ; V06 tmp4 [V06,T08] ( 2, 0 ) ref -> edx single-def "argument with side effect" ; V07 cse0 [V07,T05] ( 3, 3 ) ref -> ecx "CSE - moderate"
-; V08 rat0 [V08,T02] ( 8, 5 ) int -> eax "field V01.lo (fldOffset=0x0)" P-INDEP -; V09 rat1 [V09,T03] ( 8, 5 ) int -> ecx "field V01.hi (fldOffset=0x4)" P-INDEP
+; V08 rat0 [V08,T02] ( 7, 4.50) int -> eax "field V01.lo (fldOffset=0x0)" P-INDEP +; V09 rat1 [V09,T03] ( 7, 4.50) int -> ecx "field V01.hi (fldOffset=0x4)" P-INDEP
; V10 rat2 [V10,T01] ( 3, 6 ) byref -> esi "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 0 @@ -76,11 +76,11 @@ G_M8199_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 mov edx, eax xor edx, 0x10000 or edx, ecx
- je SHORT G_M8199_IG11
+ je SHORT G_M8199_IG12
mov edx, eax xor edx, 0x20000 or edx, ecx
- je SHORT G_M8199_IG09
+ je SHORT G_M8199_IG10
xor eax, 0x30000 or eax, ecx jne SHORT G_M8199_IG14 @@ -95,37 +95,32 @@ G_M8199_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, mov edx, eax xor edx, 0xD1FFAB1E or edx, ecx
- je SHORT G_M8199_IG13 - mov edx, eax - xor edx, 0xD1FFAB1E - or edx, ecx - je SHORT G_M8199_IG13
+ je SHORT G_M8199_IG09
xor eax, 0xD1FFAB1E or eax, ecx
- je SHORT G_M8199_IG14 - jmp SHORT G_M8199_IG14 - ;; size=35 bbWeight=0.50 PerfScore 3.50 -G_M8199_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - mov eax, 3 - ;; size=5 bbWeight=0.50 PerfScore 0.12 -G_M8199_IG10: ; bbWeight=0.50, epilog, nogc, extend - pop esi - pop ebp - ret - ;; size=3 bbWeight=0.50 PerfScore 1.00 -G_M8199_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - mov eax, 4 - ;; size=5 bbWeight=0.50 PerfScore 0.12 -G_M8199_IG12: ; bbWeight=0.50, epilog, nogc, extend - pop esi - pop ebp - ret - ;; size=3 bbWeight=0.50 PerfScore 1.00 -G_M8199_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jne SHORT G_M8199_IG14 + ;; size=21 bbWeight=0.50 PerfScore 1.62 +G_M8199_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, 1 jmp SHORT G_M8199_IG15 ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M8199_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M8199_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov eax, 3 + ;; size=5 bbWeight=0.50 PerfScore 0.12 +G_M8199_IG11: ; bbWeight=0.50, epilog, nogc, extend + pop esi + pop ebp + ret + ;; size=3 bbWeight=0.50 PerfScore 1.00 +G_M8199_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + mov eax, 4 + ;; size=5 bbWeight=0.50 PerfScore 0.12 +G_M8199_IG13: ; bbWeight=0.50, epilog, nogc, extend + pop esi + pop ebp + ret + ;; size=3 bbWeight=0.50 PerfScore 1.00 +G_M8199_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M8199_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc @@ -153,6 +148,6 @@ G_M8199_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, by int3 ;; size=36 bbWeight=0 PerfScore 0.00
-Total bytes of code 226, prolog size 4, PerfScore 36.00, instruction count 78, allocated bytes for code 226 (MethodHash=ea4bdff8) for method System.Uri:get_HostNameType():int:this (FullOpts)
+Total bytes of code 212, prolog size 4, PerfScore 34.12, instruction count 73, allocated bytes for code 212 (MethodHash=ea4bdff8) for method System.Uri:get_HostNameType():int:this (FullOpts)
; ============================================================

-2 (-0.28%) : 9759.dasm - System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)

@@ -17,12 +17,12 @@ ;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs> ;* V07 tmp0 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object> ; V08 tmp1 [V08,T04] ( 3, 3 ) ref -> [ebp-0x30] class-hnd exact spill-single-def "NewObj constructor temp" <System.Net.SocketAddress>
-; V09 tmp2 [V09,T17] ( 2, 0 ) ref -> esi class-hnd exact single-def "non-inline candidate call" <System.String> -; V10 tmp3 [V10,T12] ( 3, 0 ) ref -> [ebp-0x34] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>> -; V11 tmp4 [V11,T13] ( 3, 0 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>> -; V12 tmp5 [V12,T14] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V13 tmp6 [V13,T15] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V14 tmp7 [V14,T16] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V09 tmp2 [V09,T18] ( 2, 0 ) ref -> esi class-hnd exact single-def "non-inline candidate call" <System.String> +; V10 tmp3 [V10,T13] ( 3, 0 ) ref -> [ebp-0x34] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>> +; V11 tmp4 [V11,T14] ( 3, 0 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>> +; V12 tmp5 [V12,T15] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V13 tmp6 [V13,T16] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V14 tmp7 [V14,T17] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V16 tmp9 [V16,T09] ( 2, 1 ) ubyte -> eax "Inline return value spill temp" ; V17 tmp10 [V17,T05] ( 3, 3 ) int -> eax "Inlining Arg" @@ -31,16 +31,17 @@ ;* V20 tmp13 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ; V21 tmp14 [V21,T07] ( 3, 2.50) int -> eax "Inline return value spill temp" ; V22 tmp15 [V22,T03] ( 3, 5 ) ref -> edi class-hnd exact single-def "Inlining Arg" <System.Net.Sockets.SafeSocketHandle>
-; V23 tmp16 [V23,T11] ( 1, 1 ) ref -> [ebp+0x08] single-def "field V02._source (fldOffset=0x0)" P-INDEP -; V24 tmp17 [V24,T18] ( 2, 0 ) ref -> esi single-def "argument with side effect" -; V25 tmp18 [V25,T19] ( 2, 0 ) ref -> edi single-def "argument with side effect" -; V26 tmp19 [V26,T20] ( 2, 0 ) ref -> edx single-def "argument with side effect" -; V27 tmp20 [V27,T21] ( 2, 0 ) ref -> edi single-def "argument with side effect"
+; V23 tmp16 [V23,T12] ( 1, 1 ) ref -> [ebp+0x08] single-def "field V02._source (fldOffset=0x0)" P-INDEP +; V24 tmp17 [V24,T11] ( 2, 1 ) ref -> eax single-def "Field obj" +; V25 tmp18 [V25,T19] ( 2, 0 ) ref -> esi single-def "argument with side effect" +; V26 tmp19 [V26,T20] ( 2, 0 ) ref -> edi single-def "argument with side effect" +; V27 tmp20 [V27,T21] ( 2, 0 ) ref -> edx single-def "argument with side effect"
; V28 tmp21 [V28,T22] ( 2, 0 ) ref -> edi single-def "argument with side effect"
-; V29 tmp22 [V29,T23] ( 2, 0 ) ref -> edx single-def "argument with side effect" -; V30 tmp23 [V30,T24] ( 2, 0 ) ref -> esi single-def "argument with side effect" -; V31 EHSlots [V31 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar" -; V32 cse0 [V32,T10] ( 4, 1.50) int -> [ebp-0x28] spill-single-def "CSE - moderate"
+; V29 tmp22 [V29,T23] ( 2, 0 ) ref -> edi single-def "argument with side effect" +; V30 tmp23 [V30,T24] ( 2, 0 ) ref -> edx single-def "argument with side effect" +; V31 tmp24 [V31,T25] ( 2, 0 ) ref -> esi single-def "argument with side effect" +; V32 EHSlots [V32 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar" +; V33 cse0 [V33,T10] ( 4, 1.50) int -> [ebp-0x28] spill-single-def "CSE - moderate"
; ; Lcl frame size = 44 @@ -166,10 +167,10 @@ G_M11429_IG06: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs= G_M11429_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax]
- movsx eax, byte ptr [eax+0x59] - ; gcrRegs -[eax] - ;; size=9 bbWeight=0.50 PerfScore 3.00
+ cmp byte ptr [eax], al + ;; size=7 bbWeight=0.50 PerfScore 2.50
G_M11429_IG08: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
mov edx, gword ptr [esi+0x60] ; gcrRegs +[edx] lea edx, bword ptr [edx+0x04] @@ -398,7 +399,7 @@ G_M11429_IG21: ; bbWeight=0, gcVars=00000001 {V01}, gcrefRegs=00000040 {e int3 ;; size=11 bbWeight=0 PerfScore 0.00
-Total bytes of code 703, prolog size 14, PerfScore 110.50, instruction count 201, allocated bytes for code 703 (MethodHash=8b1ad35a) for method System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
+Total bytes of code 701, prolog size 14, PerfScore 110.00, instruction count 201, allocated bytes for code 701 (MethodHash=8b1ad35a) for method System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
; ============================================================ *************** EH table for System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this

-6 (-0.20%) : 15444.dasm - System.IO.Strategies.BufferedFileStreamStrategy+d__37:MoveNext():this (FullOpts)

@@ -69,12 +69,12 @@ ; V58 tmp39 [V58,T40] ( 3, 6 ) int -> ebx "Inlining Arg" ; V59 tmp40 [V59,T41] ( 3, 6 ) int -> edx "Inlining Arg" ; V60 tmp41 [V60,T05] ( 5, 10 ) ref -> edx class-hnd single-def "Inlining Arg" <ubyte[]>
-; V61 tmp42 [V61,T15] ( 5, 8 ) int -> ecx "Inlining Arg"
+; V61 tmp42 [V61,T18] ( 4, 8 ) int -> ecx "Inlining Arg"
;* V62 tmp43 [V62 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V63 tmp44 [V63 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V64 tmp45 [V64,T26] ( 6, 6 ) byref -> [ebp-0xA8] "Inline stloc first use temp" ; V65 tmp46 [V65,T13] ( 8, 8 ) int -> [ebp-0x68] "Inline stloc first use temp"
-; V66 tmp47 [V66,T16] ( 4, 8 ) byref -> [ebp-0xAC] spill-single-def "Inlining Arg"
+; V66 tmp47 [V66,T15] ( 4, 8 ) byref -> [ebp-0xAC] spill-single-def "Inlining Arg"
; V67 tmp48 [V67,T11] ( 9, 9 ) ref -> [ebp-0xB0] class-hnd spill-single-def "Inline stloc first use temp" <System.Object> ;* V68 tmp49 [V68 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V69 tmp50 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> @@ -90,7 +90,7 @@ ;* V79 tmp60 [V79 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V80 tmp61 [V80 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V81 tmp62 [V81 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V82 tmp63 [V82,T17] ( 4, 8 ) byref -> edx single-def "Inlining Arg"
+; V82 tmp63 [V82,T16] ( 4, 8 ) byref -> edx single-def "Inlining Arg"
;* V83 tmp64 [V83 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]> ; V84 tmp65 [V84,T06] ( 5, 10 ) ref -> [ebp-0xB4] class-hnd spill-single-def "Inlining Arg" <System.Object> ; V85 tmp66 [V85,T76] ( 3, 3 ) int -> registers @@ -173,7 +173,7 @@ ;* V162 tmp143 [V162 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V163 tmp144 [V163,T29] ( 6, 6 ) byref -> [ebp-0xC0] "Inline stloc first use temp" ; V164 tmp145 [V164,T14] ( 8, 8 ) int -> [ebp-0x84] "Inline stloc first use temp"
-; V165 tmp146 [V165,T18] ( 4, 8 ) byref -> [ebp-0xC4] spill-single-def "Inlining Arg"
+; V165 tmp146 [V165,T17] ( 4, 8 ) byref -> [ebp-0xC4] spill-single-def "Inlining Arg"
; V166 tmp147 [V166,T12] ( 9, 9 ) ref -> ebx class-hnd single-def "Inline stloc first use temp" <System.Object> ;* V167 tmp148 [V167 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V168 tmp149 [V168 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> @@ -371,7 +371,7 @@ G_M33324_IG06: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00 lea ecx, [ebp-0x30] call [<unknown method>] ; gcrRegs -[eax edx]
- jmp G_M33324_IG86
+ jmp G_M33324_IG85
;; size=49 bbWeight=1 PerfScore 15.25 G_M33324_IG07: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref ; GC ptr vars +{V01 V02} @@ -428,7 +428,7 @@ G_M33324_IG10: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 mov edx, gword ptr [edi+0x10] ; gcrRegs +[edx] test edx, edx
- je G_M33324_IG71
+ je G_M33324_IG70
cmp dword ptr [edx+0x04], ecx jb G_M33324_IG70 mov eax, dword ptr [edx+0x04] @@ -538,7 +538,7 @@ G_M33324_IG13: ; bbWeight=1, gcVars=00000000200000000000000004000003 {V00 mov ecx, dword ptr [ebp-0x90] mov edx, dword ptr [ebp-0x68] cmp ecx, edx
- ja G_M33324_IG72
+ ja G_M33324_IG71
push ecx mov ecx, bword ptr [ebp-0xA8] ; byrRegs +[ecx] @@ -555,8 +555,8 @@ G_M33324_IG14: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 mov dword ptr [ebp-0x28], ebx mov dword ptr [ebp-0x1C], 0 mov dword ptr [ebp-0x18], 252
- push G_M33324_IG78 - jmp G_M33324_IG76
+ push G_M33324_IG77 + jmp G_M33324_IG75
;; size=32 bbWeight=1 PerfScore 10.00 G_M33324_IG15: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref test ebx, ebx @@ -566,7 +566,7 @@ G_M33324_IG15: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 mov eax, dword ptr [edx+0x08] mov dword ptr [ebp-0x9C], eax cmp ebx, eax
- ja G_M33324_IG73
+ ja G_M33324_IG72
mov ecx, gword ptr [edx] ; gcrRegs +[ecx] mov gword ptr [ebp-0xB4], ecx @@ -827,8 +827,8 @@ G_M33324_IG28: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e mov dword ptr [ebp-0x28], eax mov dword ptr [ebp-0x1C], 0 mov dword ptr [ebp-0x18], 252
- push G_M33324_IG81 - jmp G_M33324_IG76
+ push G_M33324_IG80 + jmp G_M33324_IG75
;; size=30 bbWeight=1 PerfScore 9.00 G_M33324_IG29: ; bbWeight=0.50, gcVars=00000000000000000000000000000043 {V00 V02 V84}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref ; gcrRegs +[edi] @@ -893,8 +893,8 @@ G_M33324_IG34: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e ; gcrRegs -[eax edx] mov dword ptr [ebp-0x1C], 0 mov dword ptr [ebp-0x18], 252
- push G_M33324_IG79 - jmp G_M33324_IG76
+ push G_M33324_IG78 + jmp G_M33324_IG75
;; size=78 bbWeight=1 PerfScore 18.50 G_M33324_IG35: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref add esi, 48 @@ -975,8 +975,8 @@ G_M33324_IG41: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e ; gcrRegs -[eax edx] mov dword ptr [ebp-0x1C], 0 mov dword ptr [ebp-0x18], 252
- push G_M33324_IG80 - jmp G_M33324_IG76
+ push G_M33324_IG79 + jmp G_M33324_IG75
;; size=79 bbWeight=1 PerfScore 19.50 G_M33324_IG42: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref add esi, 56 @@ -1176,8 +1176,8 @@ G_M33324_IG55: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e ; gcrRegs -[eax edx] mov dword ptr [ebp-0x1C], 0 mov dword ptr [ebp-0x18], 252
- push G_M33324_IG82 - jmp G_M33324_IG76
+ push G_M33324_IG81 + jmp G_M33324_IG75
;; size=79 bbWeight=1 PerfScore 19.50 G_M33324_IG56: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref add esi, 56 @@ -1409,7 +1409,7 @@ G_M33324_IG69: ; bbWeight=1, gcVars=00000000000004000000000020000003 {V00 mov ebx, dword ptr [ebp-0x98] mov ecx, dword ptr [ebp-0x84] cmp ebx, ecx
- ja SHORT G_M33324_IG72
+ ja SHORT G_M33324_IG71
push ebx mov ecx, bword ptr [ebp-0xC0] ; byrRegs +[ecx] @@ -1418,7 +1418,7 @@ G_M33324_IG69: ; bbWeight=1, gcVars=00000000000004000000000020000003 {V00 ; GC ptr vars -{V163 V236} call [<unknown method>] ; byrRegs -[ecx edx]
- jmp SHORT G_M33324_IG74
+ jmp SHORT G_M33324_IG73
;; size=54 bbWeight=1 PerfScore 16.00 G_M33324_IG70: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref ; gcrRegs -[edi] @@ -1427,29 +1427,24 @@ G_M33324_IG70: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000040 {e call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] int3 ;; size=13 bbWeight=0 PerfScore 0.00
-G_M33324_IG71: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz - test ecx, ecx - jne SHORT G_M33324_IG70 - jmp SHORT G_M33324_IG70 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M33324_IG72: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M33324_IG71: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
call [System.ThrowHelper:ThrowArgumentException_DestinationTooShort()] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M33324_IG73: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M33324_IG72: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
mov ecx, 33 call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)] int3 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M33324_IG74: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M33324_IG73: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
mov ebx, dword ptr [ebp-0x80] add dword ptr [edi+0x1C], ebx add ebx, dword ptr [esi+0x0C] mov dword ptr [ebp-0x28], ebx ;; size=12 bbWeight=1 PerfScore 8.00
-G_M33324_IG75: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M33324_IG74: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
cmp dword ptr [ebp-0x24], 0
- jge G_M33324_IG84
+ jge G_M33324_IG83
mov ecx, gword ptr [edi+0x04] ; gcrRegs +[ecx] cmp byte ptr [ecx], cl @@ -1457,13 +1452,13 @@ G_M33324_IG75: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 ; GC ptr vars -{V02} call [<unknown method>] ; gcrRegs -[ecx edi]
- jmp G_M33324_IG84
+ jmp G_M33324_IG83
;; size=31 bbWeight=1 PerfScore 13.25
-G_M33324_IG76: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M33324_IG75: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[esi] ; GC ptr vars +{V01 V02} cmp dword ptr [ebp-0x24], 0
- jge SHORT G_M33324_IG77
+ jge SHORT G_M33324_IG76
mov edi, gword ptr [ebp-0xA4] ; gcrRegs +[edi] mov ecx, gword ptr [edi+0x04] @@ -1474,40 +1469,40 @@ G_M33324_IG76: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 call [<unknown method>] ; gcrRegs -[ecx edi] ;; size=28 bbWeight=1 PerfScore 12.25
-G_M33324_IG77: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M33324_IG76: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
pop eax jmp eax ;; size=3 bbWeight=1 PerfScore 2.50
-G_M33324_IG78: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M33324_IG77: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x18], 0 mov esi, bword ptr [ebp-0xA0] ; byrRegs +[esi]
- jmp SHORT G_M33324_IG84
+ jmp SHORT G_M33324_IG83
;; size=15 bbWeight=1 PerfScore 4.00
-G_M33324_IG79: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M33324_IG78: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[esi] ; GC ptr vars -{V00} mov dword ptr [ebp-0x18], 0
- jmp G_M33324_IG86
+ jmp G_M33324_IG85
;; size=12 bbWeight=1 PerfScore 3.00
-G_M33324_IG80: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M33324_IG79: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x18], 0
- jmp G_M33324_IG86
+ jmp G_M33324_IG85
;; size=12 bbWeight=1 PerfScore 3.00
-G_M33324_IG81: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M33324_IG80: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars +{V00} mov dword ptr [ebp-0x18], 0 mov esi, bword ptr [ebp-0xA0] ; byrRegs +[esi]
- jmp SHORT G_M33324_IG84
+ jmp SHORT G_M33324_IG83
;; size=15 bbWeight=1 PerfScore 4.00
-G_M33324_IG82: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M33324_IG81: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[esi] ; GC ptr vars -{V00} mov dword ptr [ebp-0x18], 0
- jmp SHORT G_M33324_IG86
+ jmp SHORT G_M33324_IG85
;; size=9 bbWeight=1 PerfScore 3.00
-G_M33324_IG83: ; bbWeight=0, gcVars=00000000000000000000000000000001 {V00}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M33324_IG82: ; bbWeight=0, gcVars=00000000000000000000000000000001 {V00}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[eax] ; GC ptr vars +{V00} mov edx, eax @@ -1522,15 +1517,15 @@ G_M33324_IG83: ; bbWeight=0, gcVars=00000000000000000000000000000001 {V00 ; gcrRegs -[eax edx] ; byrRegs -[ecx esi] ...

-10 (-0.08%) : 13873.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)

@@ -9,18 +9,18 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] (145,450.50) ref -> ebx class-hnd single-def <System.IO.TextWriter>
-; V01 arg1 [V01,T198] ( 7, 5 ) ref -> [ebp-0x2A0] class-hnd single-def <MicroBenchmarks.Serializers.CollectionsOfPrimitives>
+; V01 arg1 [V01,T198] ( 7, 5 ) ref -> [ebp-0x29C] class-hnd single-def <MicroBenchmarks.Serializers.CollectionsOfPrimitives>
;* V02 arg2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
-; V03 loc0 [V03,T02] (133,212 ) ref -> [ebp-0x2A4] class-hnd exact spill-single-def <ushort[]> -; V04 loc1 [V04,T154] ( 7, 10.50) ref -> [ebp-0x2A8] class-hnd spill-single-def <ubyte[]>
+; V03 loc0 [V03,T02] (133,212 ) ref -> [ebp-0x2A0] class-hnd exact spill-single-def <ushort[]> +; V04 loc1 [V04,T154] ( 7, 10.50) ref -> [ebp-0x2A4] class-hnd spill-single-def <ubyte[]>
; V05 loc2 [V05,T17] ( 10, 29.50) int -> [ebp-0x10] ; V06 loc3 [V06,T13] ( 13, 41.50) int -> [ebp-0x14]
-; V07 loc4 [V07,T155] ( 7, 10.50) ref -> [ebp-0x2AC] class-hnd exact spill-single-def <System.DateTime[]>
+; V07 loc4 [V07,T155] ( 7, 10.50) ref -> [ebp-0x2A8] class-hnd exact spill-single-def <System.DateTime[]>
;* V08 loc5 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.DateTime>
-; V09 loc6 [V09,T314] ( 4, 2 ) ref -> [ebp-0x2B0] class-hnd spill-single-def <System.Collections.Generic.Dictionary`2[int,System.String]>
+; V09 loc6 [V09,T314] ( 4, 2 ) ref -> [ebp-0x2AC] class-hnd spill-single-def <System.Collections.Generic.Dictionary`2[int,System.String]>
; V10 loc7 [V10 ] ( 11, 16 ) struct (24) [ebp-0x2C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+Enumerator[int,System.String]> ;* V11 loc8 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Generic.KeyValuePair`2[int,System.String]>
-; V12 loc9 [V12,T200] ( 6, 6.50) ref -> [ebp-0x2B4] class-hnd spill-single-def <System.Collections.Generic.List`1[int]>
+; V12 loc9 [V12,T200] ( 6, 6.50) ref -> [ebp-0x2B0] class-hnd spill-single-def <System.Collections.Generic.List`1[int]>
; V13 tmp0 [V13,T18] ( 5, 28 ) int -> [ebp-0x30] spill-single-def "impAppendStmt" ;* V14 tmp1 [V14 ] ( 0, 0 ) ref -> zero-ref single-def ; V15 tmp2 [V15 ] ( 3, 3 ) struct ( 8) [ebp-0x38] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <System.DateTime> @@ -107,7 +107,7 @@ ;* V96 tmp83 [V96 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V97 tmp84 [V97 ] ( 4, 12 ) struct ( 8) [ebp-0xA0] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.DateTime> ;* V98 tmp85 [V98 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
-; V99 tmp86 [V99,T163] ( 4, 8 ) ref -> [ebp-0x2B8] class-hnd exact spill-single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
+; V99 tmp86 [V99,T163] ( 4, 8 ) ref -> [ebp-0x2B4] class-hnd exact spill-single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
;* V100 tmp87 [V100 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.DateTime> ;* V101 tmp88 [V101 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V102 tmp89 [V102,T202] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" @@ -231,7 +231,7 @@ ; V220 tmp207 [V220,T194] ( 2, 8 ) int -> edx "Strict ordering of exceptions for Array store" ; V221 tmp208 [V221,T195] ( 2, 8 ) int -> edx "Strict ordering of exceptions for Array store" ; V222 tmp209 [V222,T15] ( 18, 34 ) long -> [ebp-0x154] do-not-enreg[F] "field V08._dateData (fldOffset=0x0)" P-INDEP
-; V223 tmp210 [V223,T44] ( 10, 22.50) ref -> [ebp-0x2BC] "field V11.value (fldOffset=0x0)" P-INDEP
+; V223 tmp210 [V223,T44] ( 10, 22.50) ref -> [ebp-0x2B8] "field V11.value (fldOffset=0x0)" P-INDEP
; V224 tmp211 [V224,T52] ( 10, 16.50) int -> [ebp-0x158] "field V11.key (fldOffset=0x4)" P-INDEP ; V225 tmp212 [V225,T321] ( 3, 2 ) long -> [ebp-0x38] do-not-enreg[H] hidden-struct-arg "field V15._dateData (fldOffset=0x0)" P-DEP ; V226 tmp213 [V226,T61] ( 5, 16 ) long -> [ebp-0x160] do-not-enreg[F] "field V16._dateData (fldOffset=0x0)" P-INDEP @@ -245,7 +245,7 @@ ; V234 tmp221 [V234,T359] ( 3, 1.50) long -> [ebp-0x178] do-not-enreg[F] single-def "field V70._dateData (fldOffset=0x0)" P-INDEP ;* V235 tmp222 [V235 ] ( 0, 0 ) long -> zero-ref single-def "field V71._ticks (fldOffset=0x0)" P-INDEP ;* V236 tmp223 [V236 ] ( 0, 0 ) long -> zero-ref "field V77._dateData (fldOffset=0x0)" P-INDEP
-; V237 tmp224 [V237,T315] ( 4, 2 ) byref -> [ebp-0x2C0] "field V78._reference (fldOffset=0x0)" P-INDEP
+; V237 tmp224 [V237,T315] ( 4, 2 ) byref -> [ebp-0x2BC] "field V78._reference (fldOffset=0x0)" P-INDEP
;* V238 tmp225 [V238,T386] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x4)" P-INDEP ;* V239 tmp226 [V239 ] ( 0, 0 ) byref -> zero-ref single-def "field V79._reference (fldOffset=0x0)" P-INDEP ;* V240 tmp227 [V240 ] ( 0, 0 ) int -> zero-ref single-def "field V79._length (fldOffset=0x4)" P-INDEP @@ -268,7 +268,7 @@ ; V257 tmp244 [V257,T112] ( 3, 12 ) long -> [ebp-0x198] do-not-enreg[F] "field V119._dateData (fldOffset=0x0)" P-INDEP ;* V258 tmp245 [V258 ] ( 0, 0 ) long -> zero-ref "field V120._ticks (fldOffset=0x0)" P-INDEP ;* V259 tmp246 [V259 ] ( 0, 0 ) long -> zero-ref "field V126._dateData (fldOffset=0x0)" P-INDEP
-; V260 tmp247 [V260,T75] ( 4, 12 ) byref -> [ebp-0x2C4] "field V127._reference (fldOffset=0x0)" P-INDEP
+; V260 tmp247 [V260,T75] ( 4, 12 ) byref -> [ebp-0x2C0] "field V127._reference (fldOffset=0x0)" P-INDEP
;* V261 tmp248 [V261,T226] ( 0, 0 ) int -> zero-ref "field V127._length (fldOffset=0x4)" P-INDEP ;* V262 tmp249 [V262 ] ( 0, 0 ) byref -> zero-ref "field V128._reference (fldOffset=0x0)" P-INDEP ;* V263 tmp250 [V263 ] ( 0, 0 ) int -> zero-ref "field V128._length (fldOffset=0x4)" P-INDEP @@ -297,31 +297,31 @@ ; V286 tmp273 [V286,T113] ( 3, 12 ) int -> [ebp-0x1AC] spill-single-def "fgMakeTemp is creating a new local variable" ; V287 tmp274 [V287,T114] ( 3, 12 ) int -> [ebp-0x1B0] spill-single-def "fgMakeTemp is creating a new local variable" ; V288 tmp275 [V288,T76] ( 3, 12 ) ref -> edx "arr expr"
-; V289 tmp276 [V289,T77] ( 3, 12 ) ref -> [ebp-0x2C8] spill-single-def "arr expr" -; V290 tmp277 [V290,T78] ( 3, 12 ) ref -> [ebp-0x2CC] spill-single-def "arr expr"
+; V289 tmp276 [V289,T77] ( 3, 12 ) ref -> [ebp-0x2C4] spill-single-def "arr expr" +; V290 tmp277 [V290,T78] ( 3, 12 ) ref -> [ebp-0x2C8] spill-single-def "arr expr"
; V291 tmp278 [V291,T79] ( 3, 12 ) ref -> eax "arr expr"
-; V292 tmp279 [V292,T80] ( 3, 12 ) ref -> [ebp-0x2D0] spill-single-def "arr expr" -; V293 tmp280 [V293,T81] ( 3, 12 ) ref -> [ebp-0x2D4] spill-single-def "arr expr"
+; V292 tmp279 [V292,T80] ( 3, 12 ) ref -> [ebp-0x2CC] spill-single-def "arr expr" +; V293 tmp280 [V293,T81] ( 3, 12 ) ref -> [ebp-0x2D0] spill-single-def "arr expr"
; V294 tmp281 [V294,T82] ( 3, 12 ) ref -> edx "arr expr" ; V295 tmp282 [V295,T83] ( 3, 12 ) ref -> edx "arr expr" ; V296 tmp283 [V296,T84] ( 3, 12 ) ref -> edx "arr expr"
-; V297 tmp284 [V297,T241] ( 3, 3 ) ref -> [ebp-0x2D8] spill-single-def "arr expr"
+; V297 tmp284 [V297,T241] ( 3, 3 ) ref -> [ebp-0x2D4] spill-single-def "arr expr"
; V298 tmp285 [V298,T242] ( 3, 3 ) byref -> eax single-def "BlockOp address local"
-; V299 tmp286 [V299,T243] ( 3, 3 ) ref -> [ebp-0x2DC] spill-single-def "arr expr"
+; V299 tmp286 [V299,T243] ( 3, 3 ) ref -> [ebp-0x2D8] spill-single-def "arr expr"
; V300 tmp287 [V300,T244] ( 3, 3 ) byref -> ecx single-def "BlockOp address local"
-; V301 tmp288 [V301,T245] ( 3, 3 ) ref -> [ebp-0x2E0] spill-single-def "arr expr"
+; V301 tmp288 [V301,T245] ( 3, 3 ) ref -> [ebp-0x2DC] spill-single-def "arr expr"
; V302 tmp289 [V302,T285] ( 3, 3 ) int -> eax "index expr" ; V303 tmp290 [V303,T246] ( 3, 3 ) byref -> ecx single-def "BlockOp address local"
-; V304 tmp291 [V304,T247] ( 3, 3 ) ref -> [ebp-0x2E4] spill-single-def "arr expr"
+; V304 tmp291 [V304,T247] ( 3, 3 ) ref -> [ebp-0x2E0] spill-single-def "arr expr"
; V305 tmp292 [V305,T286] ( 3, 3 ) int -> eax "index expr" ; V306 tmp293 [V306,T248] ( 3, 3 ) byref -> eax single-def "BlockOp address local"
-; V307 tmp294 [V307,T249] ( 3, 3 ) ref -> [ebp-0x2E8] spill-single-def "arr expr"
+; V307 tmp294 [V307,T249] ( 3, 3 ) ref -> [ebp-0x2E4] spill-single-def "arr expr"
; V308 tmp295 [V308,T287] ( 3, 3 ) int -> ecx "index expr" ; V309 tmp296 [V309,T250] ( 3, 3 ) byref -> eax single-def "BlockOp address local"
-; V310 tmp297 [V310,T251] ( 3, 3 ) ref -> [ebp-0x2EC] spill-single-def "arr expr"
+; V310 tmp297 [V310,T251] ( 3, 3 ) ref -> [ebp-0x2E8] spill-single-def "arr expr"
; V311 tmp298 [V311,T288] ( 3, 3 ) int -> edx "index expr" ; V312 tmp299 [V312,T252] ( 3, 3 ) byref -> eax single-def "BlockOp address local"
-; V313 tmp300 [V313,T253] ( 3, 3 ) ref -> [ebp-0x2F0] spill-single-def "arr expr"
+; V313 tmp300 [V313,T253] ( 3, 3 ) ref -> [ebp-0x2EC] spill-single-def "arr expr"
; V314 tmp301 [V314,T289] ( 3, 3 ) int -> edx "index expr" ; V315 tmp302 [V315,T254] ( 3, 3 ) byref -> ecx single-def "BlockOp address local" ; V316 tmp303 [V316,T255] ( 3, 3 ) ref -> edx single-def "arr expr" @@ -330,23 +330,23 @@ ; V319 tmp306 [V319,T258] ( 3, 3 ) byref -> eax single-def "BlockOp address local" ; V320 tmp307 [V320,T259] ( 3, 3 ) ref -> ecx single-def "arr expr" ; V321 tmp308 [V321,T260] ( 3, 3 ) byref -> ecx single-def "BlockOp address local"
-; V322 tmp309 [V322,T21] ( 3, 24 ) ref -> [ebp-0x2F4] spill-single-def "arr expr"
+; V322 tmp309 [V322,T21] ( 3, 24 ) ref -> [ebp-0x2F0] spill-single-def "arr expr"
; V323 tmp310 [V323,T22] ( 3, 24 ) byref -> eax "BlockOp address local"
-; V324 tmp311 [V324,T23] ( 3, 24 ) ref -> [ebp-0x2F8] spill-single-def "arr expr"
+; V324 tmp311 [V324,T23] ( 3, 24 ) ref -> [ebp-0x2F4] spill-single-def "arr expr"
; V325 tmp312 [V325,T24] ( 3, 24 ) byref -> ecx "BlockOp address local"
-; V326 tmp313 [V326,T25] ( 3, 24 ) ref -> [ebp-0x2FC] spill-single-def "arr expr"
+; V326 tmp313 [V326,T25] ( 3, 24 ) ref -> [ebp-0x2F8] spill-single-def "arr expr"
; V327 tmp314 [V327,T39] ( 3, 24 ) int -> eax "index expr" ; V328 tmp315 [V328,T26] ( 3, 24 ) byref -> ecx "BlockOp address local"
-; V329 tmp316 [V329,T27] ( 3, 24 ) ref -> [ebp-0x300] spill-single-def "arr expr"
+; V329 tmp316 [V329,T27] ( 3, 24 ) ref -> [ebp-0x2FC] spill-single-def "arr expr"
; V330 tmp317 [V330,T40] ( 3, 24 ) int -> eax "index expr" ; V331 tmp318 [V331,T28] ( 3, 24 ) byref -> eax "BlockOp address local"
-; V332 tmp319 [V332,T29] ( 3, 24 ) ref -> [ebp-0x304] spill-single-def "arr expr"
+; V332 tmp319 [V332,T29] ( 3, 24 ) ref -> [ebp-0x300] spill-single-def "arr expr"
; V333 tmp320 [V333,T41] ( 3, 24 ) int -> ecx "index expr" ; V334 tmp321 [V334,T30] ( 3, 24 ) byref -> eax "BlockOp address local"
-; V335 tmp322 [V335,T31] ( 3, 24 ) ref -> [ebp-0x308] spill-single-def "arr expr"
+; V335 tmp322 [V335,T31] ( 3, 24 ) ref -> [ebp-0x304] spill-single-def "arr expr"
; V336 tmp323 [V336,T42] ( 3, 24 ) int -> edx "index expr" ; V337 tmp324 [V337,T32] ( 3, 24 ) byref -> eax "BlockOp address local"
-; V338 tmp325 [V338,T33] ( 3, 24 ) ref -> [ebp-0x30C] spill-single-def "arr expr"
+; V338 tmp325 [V338,T33] ( 3, 24 ) ref -> [ebp-0x308] spill-single-def "arr expr"
; V339 tmp326 [V339,T43] ( 3, 24 ) int -> edx "index expr" ; V340 tmp327 [V340,T34] ( 3, 24 ) byref -> ecx "BlockOp address local" ; V341 tmp328 [V341,T85] ( 3, 12 ) ref -> edx "arr expr" @@ -370,11 +370,11 @@ ; V359 tmp346 [V359,T115] ( 3, 12 ) int -> [ebp-0x1BC] spill-single-def "fgMakeTemp is creating a new local variable" ; V360 tmp347 [V360,T116] ( 3, 12 ) int -> [ebp-0x1C0] spill-single-def "fgMakeTemp is creating a new local variable" ; V361 tmp348 [V361,T91] ( 3, 12 ) ref -> edx "arr expr"
-; V362 tmp349 [V362,T92] ( 3, 12 ) ref -> [ebp-0x310] spill-single-def "arr expr" -; V363 tmp350 [V363,T93] ( 3, 12 ) ref -> [ebp-0x314] spill-single-def "arr expr"
+; V362 tmp349 [V362,T92] ( 3, 12 ) ref -> [ebp-0x30C] spill-single-def "arr expr" +; V363 tmp350 [V363,T93] ( 3, 12 ) ref -> [ebp-0x310] spill-single-def "arr expr"
; V364 tmp351 [V364,T94] ( 3, 12 ) ref -> eax "arr expr"
-; V365 tmp352 [V365,T95] ( 3, 12 ) ref -> [ebp-0x318] spill-single-def "arr expr" -; V366 tmp353 [V366,T96] ( 3, 12 ) ref -> [ebp-0x31C] spill-single-def "arr expr"
+; V365 tmp352 [V365,T95] ( 3, 12 ) ref -> [ebp-0x314] spill-single-def "arr expr" +; V366 tmp353 [V366,T96] ( 3, 12 ) ref -> [ebp-0x318] spill-single-def "arr expr"
; V367 tmp354 [V367,T97] ( 3, 12 ) ref -> ecx "arr expr" ; V368 tmp355 [V368,T98] ( 3, 12 ) ref -> ecx "arr expr" ; V369 tmp356 [V369,T99] ( 3, 12 ) ref -> ecx "arr expr" @@ -393,11 +393,11 @@ ; V382 tmp369 [V382,T117] ( 3, 12 ) int -> [ebp-0x1CC] spill-single-def "fgMakeTemp is creating a new local variable" ; V383 tmp370 [V383,T118] ( 3, 12 ) int -> [ebp-0x1D0] spill-single-def "fgMakeTemp is creating a new local variable" ; V384 tmp371 [V384,T100] ( 3, 12 ) ref -> edx "arr expr"
-; V385 tmp372 [V385,T101] ( 3, 12 ) ref -> [ebp-0x320] spill-single-def "arr expr" -; V386 tmp373 [V386,T102] ( 3, 12 ) ref -> [ebp-0x324] spill-single-def "arr expr"
+; V385 tmp372 [V385,T101] ( 3, 12 ) ref -> [ebp-0x31C] spill-single-def "arr expr" +; V386 tmp373 [V386,T102] ( 3, 12 ) ref -> [ebp-0x320] spill-single-def "arr expr"
; V387 tmp374 [V387,T103] ( 3, 12 ) ref -> edx "arr expr"
-; V388 tmp375 [V388,T104] ( 3, 12 ) ref -> [ebp-0x328] spill-single-def "arr expr" -; V389 tmp376 [V389,T105] ( 3, 12 ) ref -> [ebp-0x32C] spill-single-def "arr expr"
+; V388 tmp375 [V388,T104] ( 3, 12 ) ref -> [ebp-0x324] spill-single-def "arr expr" +; V389 tmp376 [V389,T105] ( 3, 12 ) ref -> [ebp-0x328] spill-single-def "arr expr"
; V390 tmp377 [V390,T106] ( 3, 12 ) ref -> edx "arr expr" ; V391 tmp378 [V391,T107] ( 3, 12 ) ref -> edx "arr expr" ; V392 tmp379 [V392,T108] ( 3, 12 ) ref -> edx "arr expr" @@ -421,76 +421,76 @@ ;* V410 cse17 [V410 ] ( 0, 0 ) long -> zero-ref "CSE - conservative" ; V411 cse18 [V411,T01] (109,396.50) int -> [ebp-0x1E4] multi-def "CSE - aggressive" ; V412 cse19 [V412,T07] ( 38, 54 ) int -> [ebp-0x1E8] multi-def "CSE - moderate"
-; V413 cse20 [V413,T62] ( 4, 16 ) ref -> [ebp-0x330] spill-single-def "CSE - conservative" -; V414 cse21 [V414,T316] ( 4, 2 ) ref -> [ebp-0x334] spill-single-def "CSE - conservative" -; V415 rat0 [V415,T368] ( 3, 1.50) int -> [ebp-0x1EC] spill-single-def "field V51.lo (fldOffset=0x0)" P-INDEP -; V416 rat1 [V416,T369] ( 3, 1.50) int -> eax "field V51.hi (fldOffset=0x4)" P-INDEP -; V417 rat2 [V417,T221] ( 8, 4 ) int -> [ebp-0x1F0] "field V72.lo (fldOffset=0x0)" P-INDEP -; V418 rat3 [V418,T231] ( 7, 3.50) int -> [ebp-0x1F4] "field V72.hi (fldOffset=0x4)" P-INDEP -; V419 rat4 [V419,T213] ( 9, 4.50) int -> [ebp-0x1F8] "field V74.lo (fldOffset=0x0)" P-INDEP -; V420 rat5 [V420,T214] ( 9, 4.50) int -> [ebp-0x1FC] "field V74.hi (fldOffset=0x4)" P-INDEP -; V421 rat6 [V421,T370] ( 2, 1.50) int -> [ebp-0x200] spill-single-def "field V76.lo (fldOffset=0x0)" P-INDEP -; V422 rat7 [V422,T371] ( 2, 1.50) int -> [ebp-0x204] spill-single-def "field V76.hi (fldOffset=0x4)" P-INDEP -; V423 rat8 [V423,T158] ( 3, 10 ) int -> ecx "field V92.lo (fldOffset=0x0)" P-INDEP -; V424 rat9 [V424,T159] ( 3, 10 ) int -> eax "field V92.hi (fldOffset=0x4)" P-INDEP
+; V413 cse20 [V413,T62] ( 4, 16 ) ref -> [ebp-0x32C] spill-single-def "CSE - conservative" +; V414 cse21 [V414,T316] ( 4, 2 ) ref -> [ebp-0x330] spill-single-def "CSE - conservative" +; V415 rat0 [V415,T368] ( 2, 1 ) int -> ecx "field V51.lo (fldOffset=0x0)" P-INDEP +; V416 rat1 [V416,T369] ( 2, 1 ) int -> eax "field V51.hi (fldOffset=0x4)" P-INDEP +; V417 rat2 [V417,T221] ( 8, 4 ) int -> [ebp-0x1EC] "field V72.lo (fldOffset=0x0)" P-INDEP +; V418 rat3 [V418,T231] ( 7, 3.50) int -> [ebp-0x1F0] "field V72.hi (fldOffset=0x4)" P-INDEP +; V419 rat4 [V419,T213] ( 9, 4.50) int -> [ebp-0x1F4] "field V74.lo (fldOffset=0x0)" P-INDEP +; V420 rat5 [V420,T214] ( 9, 4.50) int -> [ebp-0x1F8] "field V74.hi (fldOffset=0x4)" P-INDEP +; V421 rat6 [V421,T370] ( 2, 1.50) int -> [ebp-0x1FC] spill-single-def "field V76.lo (fldOffset=0x0)" P-INDEP +; V422 rat7 [V422,T371] ( 2, 1.50) int -> [ebp-0x200] spill-single-def "field V76.hi (fldOffset=0x4)" P-INDEP +; V423 rat8 [V423,T158] ( 2, 8 ) int -> ecx "field V92.lo (fldOffset=0x0)" P-INDEP +; V424 rat9 [V424,T159] ( 2, 8 ) int -> eax "field V92.hi (fldOffset=0x4)" P-INDEP
; V425 rat10 [V425,T160] ( 3, 10 ) int -> ecx "field V101.lo (fldOffset=0x0)" P-INDEP ; V426 rat11 [V426,T161] ( 3, 10 ) int -> eax "field V101.hi (fldOffset=0x4)" P-INDEP
-; V427 rat12 [V427,T59] ( 8, 16 ) int -> [ebp-0x208] "field V121.lo (fldOffset=0x0)" P-INDEP -; V428 rat13 [V428,T71] ( 7, 14 ) int -> [ebp-0x20C] "field V121.hi (fldOffset=0x4)" P-INDEP -; V429 rat14 [V429,T50] ( 9, 18 ) int -> [ebp-0x210] "field V123.lo (fldOffset=0x0)" P-INDEP -; V430 rat15 [V430,T51] ( 9, 18 ) int -> [ebp-0x214] "field V123.hi (fldOffset=0x4)" P-INDEP -; V431 rat16 [V431,T140] ( 2, 12 ) int -> [ebp-0x218] spill-single-def "field V125.lo (fldOffset=0x0)" P-INDEP -; V432 rat17 [V432,T141] ( 2, 12 ) int -> [ebp-0x21C] spill-single-def "field V125.hi (fldOffset=0x4)" P-INDEP -; V433 rat18 [V433,T64] ( 4, 16 ) int -> [ebp-0x220] spill-single-def "field V409.lo (fldOffset=0x0)" P-INDEP -; V434 rat19 [V434,T65] ( 4, 16 ) int -> [ebp-0x224] spill-single-def "field V409.hi (fldOffset=0x4)" P-INDEP -; V435 rat20 [V435,T319] ( 4, 2 ) int -> [ebp-0x228] spill-single-def "field V410.lo (fldOffset=0x0)" P-INDEP -; V436 rat21 [V436,T320] ( 4, 2 ) int -> [ebp-0x22C] spill-single-def "field V410.hi (fldOffset=0x4)" P-INDEP
+; V427 rat12 [V427,T59] ( 8, 16 ) int -> [ebp-0x204] "field V121.lo (fldOffset=0x0)" P-INDEP +; V428 rat13 [V428,T71] ( 7, 14 ) int -> [ebp-0x208] "field V121.hi (fldOffset=0x4)" P-INDEP +; V429 rat14 [V429,T50] ( 9, 18 ) int -> [ebp-0x20C] "field V123.lo (fldOffset=0x0)" P-INDEP +; V430 rat15 [V430,T51] ( 9, 18 ) int -> [ebp-0x210] "field V123.hi (fldOffset=0x4)" P-INDEP +; V431 rat16 [V431,T140] ( 2, 12 ) int -> [ebp-0x214] spill-single-def "field V125.lo (fldOffset=0x0)" P-INDEP +; V432 rat17 [V432,T141] ( 2, 12 ) int -> [ebp-0x218] spill-single-def "field V125.hi (fldOffset=0x4)" P-INDEP +; V433 rat18 [V433,T64] ( 4, 16 ) int -> [ebp-0x21C] spill-single-def "field V409.lo (fldOffset=0x0)" P-INDEP +; V434 rat19 [V434,T65] ( 4, 16 ) int -> [ebp-0x220] spill-single-def "field V409.hi (fldOffset=0x4)" P-INDEP +; V435 rat20 [V435,T319] ( 4, 2 ) int -> [ebp-0x224] spill-single-def "field V410.lo (fldOffset=0x0)" P-INDEP +; V436 rat21 [V436,T320] ( 4, 2 ) int -> [ebp-0x228] spill-single-def "field V410.hi (fldOffset=0x4)" P-INDEP
; V437 rat22 [V437,T295] ( 3, 3 ) int -> edx "ReplaceWithLclVar is creating a new local variable" ; V438 rat23 [V438,T296] ( 3, 3 ) int -> edx "ReplaceWithLclVar is creating a new local variable" ; V439 rat24 [V439,T122] ( 3, 12 ) int -> edx "ReplaceWithLclVar is creating a new local variable" ; V440 rat25 [V440,T123] ( 3, 12 ) int -> edx "ReplaceWithLclVar is creating a new local variable"
-; V441 rat26 [V441,T279] ( 3, 3 ) byref -> [ebp-0x338] spill-single-def "ReplaceWithLclVar is creating a new local variable" -; V442 rat27 [V442 ] ( 1, 1 ) long -> [ebp-0x234] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V441 rat26 [V441,T279] ( 3, 3 ) byref -> [ebp-0x334] spill-single-def "ReplaceWithLclVar is creating a new local variable" +; V442 rat27 [V442 ] ( 1, 1 ) long -> [ebp-0x230] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V443 rat28 [V443,T322] ( 3, 2 ) int -> ecx "field V442.lo (fldOffset=0x0)" P-INDEP ; V444 rat29 [V444,T388] ( 1, 1 ) int -> edx "field V442.hi (fldOffset=0x4)" P-INDEP
-; V445 rat30 [V445 ] ( 1, 1 ) long -> [ebp-0x23C] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V445 rat30 [V445 ] ( 1, 1 ) long -> [ebp-0x238] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V446 rat31 [V446,T372] ( 2, 1.50) int -> eax "field V445.lo (fldOffset=0x0)" P-INDEP ; V447 rat32 [V447,T373] ( 2, 1.50) int -> edx "field V445.hi (fldOffset=0x4)" P-INDEP
-; V448 rat33 [V448 ] ( 1, 1 ) long -> [ebp-0x244] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V448 rat33 [V448 ] ( 1, 1 ) long -> [ebp-0x240] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V449 rat34 [V449,T374] ( 2, 1.50) int -> eax "field V448.lo (fldOffset=0x0)" P-INDEP ; V450 rat35 [V450,T375] ( 2, 1.50) int -> edx "field V448.hi (fldOffset=0x4)" P-INDEP
-; V451 rat36 [V451 ] ( 1, 1 ) long -> [ebp-0x24C] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V451 rat36 [V451 ] ( 1, 1 ) long -> [ebp-0x248] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V452 rat37 [V452,T323] ( 3, 2 ) int -> ecx "field V451.lo (fldOffset=0x0)" P-INDEP ; V453 rat38 [V453,T389] ( 1, 1 ) int -> edx "field V451.hi (fldOffset=0x4)" P-INDEP
-; V454 rat39 [V454 ] ( 1, 1 ) long -> [ebp-0x254] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V454 rat39 [V454 ] ( 1, 1 ) long -> [ebp-0x250] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V455 rat40 [V455,T376] ( 2, 1.50) int -> eax "field V454.lo (fldOffset=0x0)" P-INDEP ; V456 rat41 [V456,T377] ( 2, 1.50) int -> edx "field V454.hi (fldOffset=0x4)" P-INDEP
-; V457 rat42 [V457 ] ( 1, 1 ) long -> [ebp-0x25C] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V457 rat42 [V457 ] ( 1, 1 ) long -> [ebp-0x258] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V458 rat43 [V458,T378] ( 2, 1.50) int -> eax "field V457.lo (fldOffset=0x0)" P-INDEP ; V459 rat44 [V459,T379] ( 2, 1.50) int -> edx "field V457.hi (fldOffset=0x4)" P-INDEP
-; V460 rat45 [V460 ] ( 1, 1 ) long -> [ebp-0x264] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V460 rat45 [V460 ] ( 1, 1 ) long -> [ebp-0x260] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V461 rat46 [V461,T380] ( 2, 1.50) int -> eax "field V460.lo (fldOffset=0x0)" P-INDEP ...

benchmarks.run_pgo.windows.x86.checked.mch

-14 (-19.18%) : 40689.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)

@@ -9,16 +9,16 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 8, 6.67) ref -> ecx this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
+; V00 this [V00,T00] ( 7, 6.00) ref -> ecx this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
; V01 arg1 [V01,T01] ( 4, 3 ) byref -> edx single-def ; V02 loc0 [V02,T02] ( 5, 4.00) int -> eax ; V03 loc1 [V03,T04] ( 4, 3.33) ref -> esi class-hnd single-def <<unknown class>> ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;* V05 tmp0 [V05 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V06 cse0 [V06,T06] ( 2, 2 ) int -> edi "CSE - aggressive"
-; V07 rat0 [V07,T05] ( 2, 2.67) int -> edx "Spilling to split statement for tree"
+;* V07 rat0 [V07,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V08 rat1 [V08,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V09 rat2 [V09,T03] ( 2, 2.67) int -> edx "fgMakeTemp is creating a new local variable"
+;* V09 rat2 [V09,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -37,7 +37,7 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 ; gcrRegs +[esi] mov edi, dword ptr [esi+0x04] cmp edi, eax
- jbe SHORT G_M49890_IG05
+ jbe SHORT G_M49890_IG04
;; size=14 bbWeight=1 PerfScore 7.50 G_M49890_IG03: ; bbWeight=0.67, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000004 {edx}, byref, isz inc dword ptr [ecx+0x0C] @@ -47,24 +47,16 @@ G_M49890_IG03: ; bbWeight=0.67, gcrefRegs=00000042 {ecx esi}, byrefRegs=0 call CORINFO_HELP_CHECKED_ASSIGN_REF_EDI ; gcrRegs -[edi] ; byrRegs -[edx]
- mov edx, dword ptr [ecx] - mov edx, dword ptr [edx+0x24] - mov edx, dword ptr [edx] - mov edx, dword ptr [edx+0x0C] - test edx, edx - jne SHORT G_M49890_IG07 - ;; size=29 bbWeight=0.67 PerfScore 10.83 -G_M49890_IG04: ; bbWeight=0.13, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M49890_IG07 - ;; size=2 bbWeight=0.13 PerfScore 0.27 -G_M49890_IG05: ; bbWeight=0.33, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 {edx}, byref
+ jmp SHORT G_M49890_IG06 + ;; size=17 bbWeight=0.67 PerfScore 6.00 +G_M49890_IG04: ; bbWeight=0.33, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 {edx}, byref
; gcrRegs -[esi] ; byrRegs +[edx] xor eax, eax ; gcrRegs +[eax] mov gword ptr [edx], eax ;; size=4 bbWeight=0.33 PerfScore 0.42
-G_M49890_IG06: ; bbWeight=0.33, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M49890_IG05: ; bbWeight=0.33, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[eax] ; byrRegs -[edx] pop esi @@ -72,20 +64,20 @@ G_M49890_IG06: ; bbWeight=0.33, gcrefRegs=00000002 {ecx}, byrefRegs=00000 pop ebp ret ;; size=4 bbWeight=0.33 PerfScore 0.83
-G_M49890_IG07: ; bbWeight=0.67, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M49890_IG06: ; bbWeight=0.67, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi] xor edx, edx ; gcrRegs +[edx] mov gword ptr [esi+4*eax+0x08], edx mov eax, 1 ;; size=11 bbWeight=0.67 PerfScore 1.00
-G_M49890_IG08: ; bbWeight=0.67, epilog, nogc, extend
+G_M49890_IG07: ; bbWeight=0.67, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.67 PerfScore 1.67
-Total bytes of code 73, prolog size 5, PerfScore 25.77, instruction count 34, allocated bytes for code 73 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+Total bytes of code 59, prolog size 5, PerfScore 20.67, instruction count 28, allocated bytes for code 59 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================

-14 (-19.18%) : 27115.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)

@@ -9,16 +9,16 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 8, 6.86) ref -> ecx this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
+; V00 this [V00,T00] ( 7, 6.14) ref -> ecx this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
; V01 arg1 [V01,T01] ( 4, 3 ) byref -> edx single-def ; V02 loc0 [V02,T02] ( 5, 4.14) int -> eax ; V03 loc1 [V03,T04] ( 4, 3.43) ref -> esi class-hnd single-def <<unknown class>> ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;* V05 tmp0 [V05 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V06 cse0 [V06,T06] ( 2, 2 ) int -> edi "CSE - aggressive"
-; V07 rat0 [V07,T05] ( 2, 2.86) int -> edx "Spilling to split statement for tree"
+;* V07 rat0 [V07,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V08 rat1 [V08,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V09 rat2 [V09,T03] ( 2, 2.86) int -> edx "fgMakeTemp is creating a new local variable"
+;* V09 rat2 [V09,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -37,7 +37,7 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 ; gcrRegs +[esi] mov edi, dword ptr [esi+0x04] cmp edi, eax
- jbe SHORT G_M49890_IG05
+ jbe SHORT G_M49890_IG04
;; size=14 bbWeight=1 PerfScore 7.50 G_M49890_IG03: ; bbWeight=0.71, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000004 {edx}, byref, isz inc dword ptr [ecx+0x0C] @@ -47,24 +47,16 @@ G_M49890_IG03: ; bbWeight=0.71, gcrefRegs=00000042 {ecx esi}, byrefRegs=0 call CORINFO_HELP_CHECKED_ASSIGN_REF_EDI ; gcrRegs -[edi] ; byrRegs -[edx]
- mov edx, dword ptr [ecx] - mov edx, dword ptr [edx+0x24] - mov edx, dword ptr [edx] - mov edx, dword ptr [edx+0x0C] - test edx, edx - jne SHORT G_M49890_IG07 - ;; size=29 bbWeight=0.71 PerfScore 11.61 -G_M49890_IG04: ; bbWeight=0.14, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M49890_IG07 - ;; size=2 bbWeight=0.14 PerfScore 0.29 -G_M49890_IG05: ; bbWeight=0.29, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 {edx}, byref
+ jmp SHORT G_M49890_IG06 + ;; size=17 bbWeight=0.71 PerfScore 6.43 +G_M49890_IG04: ; bbWeight=0.29, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 {edx}, byref
; gcrRegs -[esi] ; byrRegs +[edx] xor eax, eax ; gcrRegs +[eax] mov gword ptr [edx], eax ;; size=4 bbWeight=0.29 PerfScore 0.36
-G_M49890_IG06: ; bbWeight=0.29, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M49890_IG05: ; bbWeight=0.29, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[eax] ; byrRegs -[edx] pop esi @@ -72,20 +64,20 @@ G_M49890_IG06: ; bbWeight=0.29, gcrefRegs=00000002 {ecx}, byrefRegs=00000 pop ebp ret ;; size=4 bbWeight=0.29 PerfScore 0.71
-G_M49890_IG07: ; bbWeight=0.71, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M49890_IG06: ; bbWeight=0.71, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi] xor edx, edx ; gcrRegs +[edx] mov gword ptr [esi+4*eax+0x08], edx mov eax, 1 ;; size=11 bbWeight=0.71 PerfScore 1.07
-G_M49890_IG08: ; bbWeight=0.71, epilog, nogc, extend
+G_M49890_IG07: ; bbWeight=0.71, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.71 PerfScore 1.79
-Total bytes of code 73, prolog size 5, PerfScore 26.57, instruction count 34, allocated bytes for code 73 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+Total bytes of code 59, prolog size 5, PerfScore 21.11, instruction count 28, allocated bytes for code 59 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================

-14 (-19.18%) : 43876.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)

@@ -9,16 +9,16 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 8, 7.63) ref -> ecx this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
+; V00 this [V00,T00] ( 7, 6.72) ref -> ecx this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
; V01 arg1 [V01,T02] ( 4, 3 ) byref -> edx single-def ; V02 loc0 [V02,T03] ( 5, 4.72) int -> eax ; V03 loc1 [V03,T05] ( 4, 3.82) ref -> esi class-hnd single-def <<unknown class>> ;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;* V05 tmp0 [V05 ] ( 0, 0 ) int -> zero-ref "spilling helperCall" ; V06 cse0 [V06,T06] ( 2, 2 ) int -> edi "CSE - aggressive"
-; V07 rat0 [V07,T04] ( 2, 3.63) int -> edx "Spilling to split statement for tree"
+;* V07 rat0 [V07,T04] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V08 rat1 [V08,T07] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V09 rat2 [V09,T01] ( 2, 3.63) int -> edx "fgMakeTemp is creating a new local variable"
+;* V09 rat2 [V09,T01] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -37,7 +37,7 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 ; gcrRegs +[esi] mov edi, dword ptr [esi+0x04] cmp edi, eax
- jbe SHORT G_M49890_IG05
+ jbe SHORT G_M49890_IG04
;; size=14 bbWeight=1 PerfScore 7.50 G_M49890_IG03: ; bbWeight=0.91, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000004 {edx}, byref, isz inc dword ptr [ecx+0x0C] @@ -47,24 +47,16 @@ G_M49890_IG03: ; bbWeight=0.91, gcrefRegs=00000042 {ecx esi}, byrefRegs=0 call CORINFO_HELP_CHECKED_ASSIGN_REF_EDI ; gcrRegs -[edi] ; byrRegs -[edx]
- mov edx, dword ptr [ecx] - mov edx, dword ptr [edx+0x24] - mov edx, dword ptr [edx] - mov edx, dword ptr [edx+0x0C] - test edx, edx - jne SHORT G_M49890_IG07 - ;; size=29 bbWeight=0.91 PerfScore 14.75 -G_M49890_IG04: ; bbWeight=0.18, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M49890_IG07 - ;; size=2 bbWeight=0.18 PerfScore 0.36 -G_M49890_IG05: ; bbWeight=0.09, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 {edx}, byref
+ jmp SHORT G_M49890_IG06 + ;; size=17 bbWeight=0.91 PerfScore 8.17 +G_M49890_IG04: ; bbWeight=0.09, gcrefRegs=00000002 {ecx}, byrefRegs=00000004 {edx}, byref
; gcrRegs -[esi] ; byrRegs +[edx] xor eax, eax ; gcrRegs +[eax] mov gword ptr [edx], eax ;; size=4 bbWeight=0.09 PerfScore 0.12
-G_M49890_IG06: ; bbWeight=0.09, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M49890_IG05: ; bbWeight=0.09, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[eax] ; byrRegs -[edx] pop esi @@ -72,20 +64,20 @@ G_M49890_IG06: ; bbWeight=0.09, gcrefRegs=00000002 {ecx}, byrefRegs=00000 pop ebp ret ;; size=4 bbWeight=0.09 PerfScore 0.23
-G_M49890_IG07: ; bbWeight=0.91, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M49890_IG06: ; bbWeight=0.91, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi] xor edx, edx ; gcrRegs +[edx] mov gword ptr [esi+4*eax+0x08], edx mov eax, 1 ;; size=11 bbWeight=0.91 PerfScore 1.36
-G_M49890_IG08: ; bbWeight=0.91, epilog, nogc, extend
+G_M49890_IG07: ; bbWeight=0.91, epilog, nogc, extend
pop esi pop edi pop ebp ret ;; size=4 bbWeight=0.91 PerfScore 2.27
-Total bytes of code 73, prolog size 5, PerfScore 29.84, instruction count 34, allocated bytes for code 73 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+Total bytes of code 59, prolog size 5, PerfScore 22.90, instruction count 28, allocated bytes for code 59 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================

-2 (-0.25%) : 38961.dasm - System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)

@@ -12,23 +12,23 @@ ; V00 this [V00,T03] ( 10, 5 ) ref -> edi this class-hnd single-def <System.Net.Sockets.Socket> ; V01 arg1 [V01,T00] ( 25, 17 ) ref -> [ebp-0x28] class-hnd EH-live single-def <System.Net.Sockets.SocketAsyncEventArgs> ;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 4) zero-ref single-def <System.Threading.CancellationToken>
-; V03 loc0 [V03,T05] ( 12, 2 ) ref -> ebx class-hnd <System.Net.EndPoint>
+; V03 loc0 [V03,T06] ( 12, 2 ) ref -> ebx class-hnd <System.Net.EndPoint>
;* V04 loc1 [V04 ] ( 0, 0 ) int -> zero-ref ;* V05 loc2 [V05 ] ( 0, 0 ) ubyte -> zero-ref ;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs> ;* V07 tmp0 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V08 tmp1 [V08,T12] ( 3, 0 ) ref -> [ebp-0x2C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Net.SocketAddress> -; V09 tmp2 [V09,T19] ( 2, 0 ) ref -> esi class-hnd exact single-def "non-inline candidate call" <System.String> -; V10 tmp3 [V10,T13] ( 3, 0 ) ref -> [ebp-0x30] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>> -; V11 tmp4 [V11,T14] ( 3, 0 ) ref -> [ebp-0x34] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>> -; V12 tmp5 [V12,T15] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V13 tmp6 [V13,T16] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V14 tmp7 [V14,T17] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V08 tmp1 [V08,T13] ( 3, 0 ) ref -> [ebp-0x2C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Net.SocketAddress> +; V09 tmp2 [V09,T20] ( 2, 0 ) ref -> esi class-hnd exact single-def "non-inline candidate call" <System.String> +; V10 tmp3 [V10,T14] ( 3, 0 ) ref -> [ebp-0x30] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>> +; V11 tmp4 [V11,T15] ( 3, 0 ) ref -> [ebp-0x34] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>> +; V12 tmp5 [V12,T16] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V13 tmp6 [V13,T17] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V14 tmp7 [V14,T18] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V16 tmp9 [V16,T18] ( 3, 0 ) int -> [ebp-0x24] spill-single-def "Inlining Arg" -; V17 tmp10 [V17,T07] ( 3, 2 ) int -> eax "Inline stloc first use temp"
+; V16 tmp9 [V16,T19] ( 3, 0 ) int -> [ebp-0x24] spill-single-def "Inlining Arg" +; V17 tmp10 [V17,T08] ( 3, 2 ) int -> eax "Inline stloc first use temp"
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V19 tmp12 [V19,T08] ( 3, 2 ) int -> eax "Inline return value spill temp"
+; V19 tmp12 [V19,T09] ( 3, 2 ) int -> eax "Inline return value spill temp"
; V20 tmp13 [V20,T04] ( 3, 4.00) ref -> ebx class-hnd exact single-def "Inlining Arg" <System.Net.Sockets.SafeSocketHandle> ;* V21 tmp14 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V22 tmp15 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.SocketAddress> @@ -38,26 +38,27 @@ ;* V26 tmp19 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ;* V27 tmp20 [V27 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]> ; V28 tmp21 [V28,T02] ( 4, 8.00) int -> ecx "Inlining Arg"
-; V29 tmp22 [V29,T09] ( 3, 2.00) int -> edi "Inline stloc first use temp"
+; V29 tmp22 [V29,T10] ( 3, 2.00) int -> edi "Inline stloc first use temp"
;* V30 tmp23 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.SocketAddress>
-; V31 tmp24 [V31,T11] ( 1, 1 ) ref -> [ebp+0x08] single-def "field V02._source (fldOffset=0x0)" P-INDEP
+; V31 tmp24 [V31,T12] ( 1, 1 ) ref -> [ebp+0x08] single-def "field V02._source (fldOffset=0x0)" P-INDEP
;* V32 tmp25 [V32 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP ;* V33 tmp26 [V33 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x4)" P-INDEP
-; V34 tmp27 [V34,T06] ( 3, 2.00) byref -> edx "field V25._reference (fldOffset=0x0)" P-INDEP -; V35 tmp28 [V35,T10] ( 3, 2.00) int -> ecx "field V25._length (fldOffset=0x4)" P-INDEP
+; V34 tmp27 [V34,T07] ( 3, 2.00) byref -> edx "field V25._reference (fldOffset=0x0)" P-INDEP +; V35 tmp28 [V35,T11] ( 3, 2.00) int -> ecx "field V25._length (fldOffset=0x4)" P-INDEP
;* V36 tmp29 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP ;* V37 tmp30 [V37 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x4)" P-INDEP ;* V38 tmp31 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP ;* V39 tmp32 [V39 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x4)" P-INDEP
-; V40 tmp33 [V40,T27] ( 2, 0 ) int -> edx "argument with side effect" -; V41 tmp34 [V41,T20] ( 2, 0 ) ref -> esi single-def "argument with side effect" -; V42 tmp35 [V42,T21] ( 2, 0 ) ref -> edi single-def "argument with side effect" -; V43 tmp36 [V43,T22] ( 2, 0 ) ref -> edx single-def "argument with side effect" -; V44 tmp37 [V44,T23] ( 2, 0 ) ref -> esi single-def "argument with side effect" -; V45 tmp38 [V45,T24] ( 2, 0 ) ref -> edi single-def "argument with side effect" -; V46 tmp39 [V46,T25] ( 2, 0 ) ref -> edx single-def "argument with side effect" -; V47 tmp40 [V47,T26] ( 2, 0 ) ref -> esi single-def "argument with side effect" -; V48 EHSlots [V48 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"
+; V40 tmp33 [V40,T28] ( 2, 0 ) int -> edx "argument with side effect" +; V41 tmp34 [V41,T05] ( 2, 2 ) ref -> edx single-def "Field obj" +; V42 tmp35 [V42,T21] ( 2, 0 ) ref -> esi single-def "argument with side effect" +; V43 tmp36 [V43,T22] ( 2, 0 ) ref -> edi single-def "argument with side effect" +; V44 tmp37 [V44,T23] ( 2, 0 ) ref -> edx single-def "argument with side effect" +; V45 tmp38 [V45,T24] ( 2, 0 ) ref -> esi single-def "argument with side effect" +; V46 tmp39 [V46,T25] ( 2, 0 ) ref -> edi single-def "argument with side effect" +; V47 tmp40 [V47,T26] ( 2, 0 ) ref -> edx single-def "argument with side effect" +; V48 tmp41 [V48,T27] ( 2, 0 ) ref -> esi single-def "argument with side effect" +; V49 EHSlots [V49 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"
; ; Lcl frame size = 40 @@ -109,10 +110,10 @@ G_M11429_IG03: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs= jne G_M11429_IG26 mov edx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[edx]
- movsx edx, byte ptr [edx+0x59] - ; gcrRegs -[edx] - ;; size=71 bbWeight=1 PerfScore 34.25
+ cmp byte ptr [edx], dl + ;; size=69 bbWeight=1 PerfScore 33.25
G_M11429_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[edx]
mov edx, gword ptr [esi+0x60] ; gcrRegs +[edx] lea edx, bword ptr [edx+0x04] @@ -477,7 +478,7 @@ G_M11429_IG26: ; bbWeight=0, gcVars=00000001 {V01}, gcrefRegs=000000C0 {e jmp G_M11429_IG04 ;; size=19 bbWeight=0 PerfScore 0.00
-Total bytes of code 808, prolog size 14, PerfScore 99.75, instruction count 233, allocated bytes for code 808 (MethodHash=8b1ad35a) for method System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
+Total bytes of code 806, prolog size 14, PerfScore 98.75, instruction count 233, allocated bytes for code 806 (MethodHash=8b1ad35a) for method System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
; ============================================================ *************** EH table for System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this

-2 (-0.22%) : 116667.dasm - System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)

@@ -13,21 +13,21 @@ ; V01 arg1 [V01,T00] ( 18, 14.00) ref -> [ebp-0x30] class-hnd EH-live single-def <System.Net.Sockets.SocketAsyncEventArgs> ;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 4) zero-ref single-def <System.Threading.CancellationToken> ; V03 loc0 [V03,T04] ( 11, 5.99) ref -> edi ld-addr-op class-hnd <System.Net.EndPoint>
-; V04 loc1 [V04,T23] ( 3, 0 ) ref -> [ebp-0x34] class-hnd EH-live single-def <System.Net.EndPoint>
+; V04 loc1 [V04,T24] ( 3, 0 ) ref -> [ebp-0x34] class-hnd EH-live single-def <System.Net.EndPoint>
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref ;* V06 tmp0 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V07 tmp1 [V07,T24] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V07 tmp1 [V07,T25] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V08 tmp2 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V09 tmp3 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Net.SocketAddress>
-; V10 tmp4 [V10,T13] ( 4, 2.99) ref -> ebx class-hnd single-def "Inline stloc first use temp" <System.Net.IPEndPoint> -; V11 tmp5 [V11,T25] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V12 tmp6 [V12,T15] ( 5, 2.00) ref -> [ebp-0x38] class-hnd "Inline stloc first use temp" <System.Net.IPAddress> -; V13 tmp7 [V13,T26] ( 3, 0 ) ref -> [ebp-0x3C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Net.IPEndPoint> -; V14 tmp8 [V14,T16] ( 3, 2.00) ref -> ebx "guarded devirt return temp"
+; V10 tmp4 [V10,T14] ( 4, 2.99) ref -> ebx class-hnd single-def "Inline stloc first use temp" <System.Net.IPEndPoint> +; V11 tmp5 [V11,T26] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V12 tmp6 [V12,T16] ( 5, 2.00) ref -> [ebp-0x38] class-hnd "Inline stloc first use temp" <System.Net.IPAddress> +; V13 tmp7 [V13,T27] ( 3, 0 ) ref -> [ebp-0x3C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Net.IPEndPoint> +; V14 tmp8 [V14,T17] ( 3, 2.00) ref -> ebx "guarded devirt return temp"
;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp" ;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Net.IPEndPoint>
-;* V17 tmp11 [V17,T22] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V18 tmp12 [V18,T21] ( 2, 0 ) ubyte -> eax "Inline return value spill temp"
+;* V17 tmp11 [V17,T23] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +; V18 tmp12 [V18,T22] ( 2, 0 ) ubyte -> eax "Inline return value spill temp"
; V19 tmp13 [V19,T08] ( 2, 3.99) ref -> ebx class-hnd single-def "impAppendStmt" <System.Net.IPAddress> ; V20 tmp14 [V20,T02] ( 4, 7.99) ref -> [ebp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <System.Net.SocketAddress> ; V21 tmp15 [V21,T07] ( 3, 3.99) int -> [ebp-0x24] spill-single-def "Inlining Arg" @@ -43,19 +43,19 @@ ;* 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 ) ushort -> zero-ref "Inlining Arg"
-; V34 tmp28 [V34,T18] ( 3, 2.00) ushort -> eax ld-addr-op "Inline stloc first use temp"
+; V34 tmp28 [V34,T19] ( 3, 2.00) ushort -> eax ld-addr-op "Inline stloc first use temp"
;* V35 tmp29 [V35 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> ;* V36 tmp30 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V37 tmp31 [V37,T14] ( 3, 2 ) int -> eax "Inline stloc first use temp"
+; V37 tmp31 [V37,T15] ( 3, 2 ) int -> eax "Inline stloc first use temp"
;* V38 tmp32 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ; V39 tmp33 [V39,T10] ( 6, 3 ) int -> ebx "Inline return value spill temp" ; V40 tmp34 [V40,T06] ( 3, 4 ) ref -> edx class-hnd exact single-def "Inlining Arg" <System.Net.Sockets.SafeSocketHandle>
-;* V41 tmp35 [V41,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V42 tmp36 [V42,T20] ( 1, 1 ) ref -> [ebp+0x08] single-def "field V02._source (fldOffset=0x0)" P-INDEP
+;* V41 tmp35 [V41,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V42 tmp36 [V42,T21] ( 1, 1 ) ref -> [ebp+0x08] single-def "field V02._source (fldOffset=0x0)" P-INDEP
;* V43 tmp37 [V43 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP ;* V44 tmp38 [V44 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x4)" P-INDEP
-; V45 tmp39 [V45,T17] ( 3, 2.00) byref -> ecx "field V24._reference (fldOffset=0x0)" P-INDEP -; V46 tmp40 [V46,T12] ( 5, 2.99) int -> eax "field V24._length (fldOffset=0x4)" P-INDEP
+; V45 tmp39 [V45,T18] ( 3, 2.00) byref -> ecx "field V24._reference (fldOffset=0x0)" P-INDEP +; V46 tmp40 [V46,T13] ( 5, 2.99) int -> eax "field V24._length (fldOffset=0x4)" P-INDEP
;* V47 tmp41 [V47 ] ( 0, 0 ) byref -> zero-ref single-def "field V25._reference (fldOffset=0x0)" P-INDEP ;* V48 tmp42 [V48 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x4)" P-INDEP ;* V49 tmp43 [V49 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP @@ -66,14 +66,15 @@ ;* V54 tmp48 [V54 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x4)" P-INDEP ;* V55 tmp49 [V55 ] ( 0, 0 ) byref -> zero-ref single-def "field V36._reference (fldOffset=0x0)" P-INDEP ;* V56 tmp50 [V56 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x4)" P-INDEP
-; V57 tmp51 [V57,T27] ( 2, 0 ) ref -> edi single-def "argument with side effect" -; V58 tmp52 [V58,T28] ( 2, 0 ) ref -> edx single-def "argument with side effect" -; V59 tmp53 [V59,T29] ( 2, 0 ) ref -> edi single-def "argument with side effect" -; V60 tmp54 [V60,T30] ( 2, 0 ) ref -> esi single-def "argument with side effect" -; V61 tmp55 [V61,T31] ( 2, 0 ) ref -> edx single-def "argument with side effect" -; V62 tmp56 [V62,T32] ( 2, 0 ) ref -> ebx single-def "argument with side effect" -; V63 EHSlots [V63 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar" -; V64 cse0 [V64,T11] ( 3, 3 ) ref -> edx "CSE - conservative"
+; V57 tmp51 [V57,T28] ( 2, 0 ) ref -> edi single-def "argument with side effect" +; V58 tmp52 [V58,T29] ( 2, 0 ) ref -> edx single-def "argument with side effect" +; V59 tmp53 [V59,T30] ( 2, 0 ) ref -> edi single-def "argument with side effect" +; V60 tmp54 [V60,T11] ( 2, 2 ) ref -> edx single-def "Field obj" +; V61 tmp55 [V61,T31] ( 2, 0 ) ref -> esi single-def "argument with side effect" +; V62 tmp56 [V62,T32] ( 2, 0 ) ref -> edx single-def "argument with side effect" +; V63 tmp57 [V63,T33] ( 2, 0 ) ref -> ebx single-def "argument with side effect" +; V64 EHSlots [V64 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar" +; V65 cse0 [V65,T12] ( 3, 3 ) ref -> edx "CSE - conservative"
; ; Lcl frame size = 56 @@ -209,10 +210,10 @@ G_M38239_IG08: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 jne G_M38239_IG27 mov edx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[edx]
- movsx edx, byte ptr [edx+0x59] - ; gcrRegs -[edx] - ;; size=66 bbWeight=1 PerfScore 33.75
+ cmp byte ptr [edx], dl + ;; size=64 bbWeight=1 PerfScore 32.75
G_M38239_IG09: ; bbWeight=1, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[edx]
mov edx, gword ptr [esi+0x60] ; gcrRegs +[edx] lea edx, bword ptr [edx+0x04] @@ -227,7 +228,7 @@ G_M38239_IG09: ; bbWeight=1, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs= test edx, edx je G_M38239_IG28 ;; size=25 bbWeight=1 PerfScore 7.75
-G_M38239_IG10: ; bbWeight=1, gcVars=0000000000800003 {V00 V01 V04}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M38239_IG10: ; bbWeight=1, gcVars=0000000001000003 {V00 V01 V04}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[edx edi] mov edx, gword ptr [ecx+0x04] ; gcrRegs +[edx] @@ -271,13 +272,13 @@ G_M38239_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} call CORINFO_HELP_RETHROW int3 ;; size=34 bbWeight=0 PerfScore 0.00
-G_M38239_IG13: ; bbWeight=1, gcVars=0000000000800002 {V00 V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; GC ptr vars +{V00 V01 V04 V23}
+G_M38239_IG13: ; bbWeight=1, gcVars=0000000001000002 {V00 V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; GC ptr vars +{V00 V01 V04}
test ebx, ebx jne G_M38239_IG29 ;; size=8 bbWeight=1 PerfScore 1.25 G_M38239_IG14: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars -{V00 V01 V04 V23}
+ ; GC ptr vars -{V00 V01 V04}
xor eax, eax cmp ebx, 997 sete al @@ -345,7 +346,7 @@ G_M38239_IG18: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} call CORINFO_HELP_THROW ; gcrRegs -[ecx edi] ;; size=80 bbWeight=0 PerfScore 0.00
-G_M38239_IG19: ; bbWeight=0, gcVars=0000000000008003 {V00 V01 V12}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M38239_IG19: ; bbWeight=0, gcVars=0000000000010003 {V00 V01 V12}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[ebx esi edi] ; GC ptr vars +{V00 V01 V12} mov ecx, gword ptr [ebp-0x2C] @@ -502,8 +503,8 @@ G_M38239_IG27: ; bbWeight=0, gcVars=0000000000000003 {V00 V01}, gcrefRegs ; gcrRegs +[ecx] jmp G_M38239_IG09 ;; size=22 bbWeight=0 PerfScore 0.00
-G_M38239_IG28: ; bbWeight=0, gcVars=0000000000800003 {V00 V01 V04}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; GC ptr vars +{V04 V23}
+G_M38239_IG28: ; bbWeight=0, gcVars=0000000001000003 {V00 V01 V04}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref + ; GC ptr vars +{V04}
lea edx, bword ptr [ecx+0x08] ; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_EDI @@ -513,9 +514,9 @@ G_M38239_IG28: ; bbWeight=0, gcVars=0000000000800003 {V00 V01 V04}, gcref ; gcrRegs +[ecx] jmp G_M38239_IG10 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M38239_IG29: ; bbWeight=0, gcVars=0000000000800002 {V00 V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M38239_IG29: ; bbWeight=0, gcVars=0000000001000002 {V00 V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx esi]
- ; GC ptr vars -{V00 V01 V23}
+ ; GC ptr vars -{V00 V01}
cmp ebx, 997 je G_M38239_IG14 push 1 @@ -540,7 +541,7 @@ G_M38239_IG29: ; bbWeight=0, gcVars=0000000000800002 {V00 V04}, gcrefRegs jmp G_M38239_IG14 ;; size=49 bbWeight=0 PerfScore 0.00
-Total bytes of code 893, prolog size 14, PerfScore 131.16, instruction count 246, allocated bytes for code 893 (MethodHash=86656aa0) for method System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
+Total bytes of code 891, prolog size 14, PerfScore 130.16, instruction count 246, allocated bytes for code 891 (MethodHash=86656aa0) for method System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
; ============================================================ *************** EH table for System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this

-10 (-0.08%) : 44983.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)

@@ -9,18 +9,18 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] (145,450.50) ref -> ebx class-hnd single-def <System.IO.TextWriter>
-; V01 arg1 [V01,T198] ( 7, 5 ) ref -> [ebp-0x2A0] class-hnd single-def <MicroBenchmarks.Serializers.CollectionsOfPrimitives>
+; V01 arg1 [V01,T198] ( 7, 5 ) ref -> [ebp-0x29C] class-hnd single-def <MicroBenchmarks.Serializers.CollectionsOfPrimitives>
;* V02 arg2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
-; V03 loc0 [V03,T02] (133,212 ) ref -> [ebp-0x2A4] class-hnd exact spill-single-def <ushort[]> -; V04 loc1 [V04,T154] ( 7, 10.50) ref -> [ebp-0x2A8] class-hnd spill-single-def <ubyte[]>
+; V03 loc0 [V03,T02] (133,212 ) ref -> [ebp-0x2A0] class-hnd exact spill-single-def <ushort[]> +; V04 loc1 [V04,T154] ( 7, 10.50) ref -> [ebp-0x2A4] class-hnd spill-single-def <ubyte[]>
; V05 loc2 [V05,T17] ( 10, 29.50) int -> [ebp-0x10] ; V06 loc3 [V06,T13] ( 13, 41.50) int -> [ebp-0x14]
-; V07 loc4 [V07,T155] ( 7, 10.50) ref -> [ebp-0x2AC] class-hnd exact spill-single-def <System.DateTime[]>
+; V07 loc4 [V07,T155] ( 7, 10.50) ref -> [ebp-0x2A8] class-hnd exact spill-single-def <System.DateTime[]>
;* V08 loc5 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.DateTime>
-; V09 loc6 [V09,T314] ( 4, 2 ) ref -> [ebp-0x2B0] class-hnd spill-single-def <System.Collections.Generic.Dictionary`2[int,System.String]>
+; V09 loc6 [V09,T314] ( 4, 2 ) ref -> [ebp-0x2AC] class-hnd spill-single-def <System.Collections.Generic.Dictionary`2[int,System.String]>
; V10 loc7 [V10 ] ( 11, 16 ) struct (24) [ebp-0x2C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+Enumerator[int,System.String]> ;* V11 loc8 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Generic.KeyValuePair`2[int,System.String]>
-; V12 loc9 [V12,T200] ( 6, 6.50) ref -> [ebp-0x2B4] class-hnd spill-single-def <System.Collections.Generic.List`1[int]>
+; V12 loc9 [V12,T200] ( 6, 6.50) ref -> [ebp-0x2B0] class-hnd spill-single-def <System.Collections.Generic.List`1[int]>
; V13 tmp0 [V13,T18] ( 5, 28 ) int -> [ebp-0x30] spill-single-def "impAppendStmt" ;* V14 tmp1 [V14 ] ( 0, 0 ) ref -> zero-ref single-def ; V15 tmp2 [V15 ] ( 3, 3 ) struct ( 8) [ebp-0x38] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <System.DateTime> @@ -107,7 +107,7 @@ ;* V96 tmp83 [V96 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V97 tmp84 [V97 ] ( 4, 12 ) struct ( 8) [ebp-0xA0] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.DateTime> ;* V98 tmp85 [V98 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
-; V99 tmp86 [V99,T163] ( 4, 8 ) ref -> [ebp-0x2B8] class-hnd exact spill-single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
+; V99 tmp86 [V99,T163] ( 4, 8 ) ref -> [ebp-0x2B4] class-hnd exact spill-single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
;* V100 tmp87 [V100 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.DateTime> ;* V101 tmp88 [V101 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V102 tmp89 [V102,T202] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" @@ -231,7 +231,7 @@ ; V220 tmp207 [V220,T194] ( 2, 8 ) int -> edx "Strict ordering of exceptions for Array store" ; V221 tmp208 [V221,T195] ( 2, 8 ) int -> edx "Strict ordering of exceptions for Array store" ; V222 tmp209 [V222,T15] ( 18, 34 ) long -> [ebp-0x154] do-not-enreg[F] "field V08._dateData (fldOffset=0x0)" P-INDEP
-; V223 tmp210 [V223,T44] ( 10, 22.50) ref -> [ebp-0x2BC] "field V11.value (fldOffset=0x0)" P-INDEP
+; V223 tmp210 [V223,T44] ( 10, 22.50) ref -> [ebp-0x2B8] "field V11.value (fldOffset=0x0)" P-INDEP
; V224 tmp211 [V224,T52] ( 10, 16.50) int -> [ebp-0x158] "field V11.key (fldOffset=0x4)" P-INDEP ; V225 tmp212 [V225,T321] ( 3, 2 ) long -> [ebp-0x38] do-not-enreg[H] hidden-struct-arg "field V15._dateData (fldOffset=0x0)" P-DEP ; V226 tmp213 [V226,T61] ( 5, 16 ) long -> [ebp-0x160] do-not-enreg[F] "field V16._dateData (fldOffset=0x0)" P-INDEP @@ -245,7 +245,7 @@ ; V234 tmp221 [V234,T359] ( 3, 1.50) long -> [ebp-0x178] do-not-enreg[F] single-def "field V70._dateData (fldOffset=0x0)" P-INDEP ;* V235 tmp222 [V235 ] ( 0, 0 ) long -> zero-ref single-def "field V71._ticks (fldOffset=0x0)" P-INDEP ;* V236 tmp223 [V236 ] ( 0, 0 ) long -> zero-ref "field V77._dateData (fldOffset=0x0)" P-INDEP
-; V237 tmp224 [V237,T315] ( 4, 2 ) byref -> [ebp-0x2C0] "field V78._reference (fldOffset=0x0)" P-INDEP
+; V237 tmp224 [V237,T315] ( 4, 2 ) byref -> [ebp-0x2BC] "field V78._reference (fldOffset=0x0)" P-INDEP
;* V238 tmp225 [V238,T386] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x4)" P-INDEP ;* V239 tmp226 [V239 ] ( 0, 0 ) byref -> zero-ref single-def "field V79._reference (fldOffset=0x0)" P-INDEP ;* V240 tmp227 [V240 ] ( 0, 0 ) int -> zero-ref single-def "field V79._length (fldOffset=0x4)" P-INDEP @@ -268,7 +268,7 @@ ; V257 tmp244 [V257,T112] ( 3, 12 ) long -> [ebp-0x198] do-not-enreg[F] "field V119._dateData (fldOffset=0x0)" P-INDEP ;* V258 tmp245 [V258 ] ( 0, 0 ) long -> zero-ref "field V120._ticks (fldOffset=0x0)" P-INDEP ;* V259 tmp246 [V259 ] ( 0, 0 ) long -> zero-ref "field V126._dateData (fldOffset=0x0)" P-INDEP
-; V260 tmp247 [V260,T75] ( 4, 12 ) byref -> [ebp-0x2C4] "field V127._reference (fldOffset=0x0)" P-INDEP
+; V260 tmp247 [V260,T75] ( 4, 12 ) byref -> [ebp-0x2C0] "field V127._reference (fldOffset=0x0)" P-INDEP
;* V261 tmp248 [V261,T226] ( 0, 0 ) int -> zero-ref "field V127._length (fldOffset=0x4)" P-INDEP ;* V262 tmp249 [V262 ] ( 0, 0 ) byref -> zero-ref "field V128._reference (fldOffset=0x0)" P-INDEP ;* V263 tmp250 [V263 ] ( 0, 0 ) int -> zero-ref "field V128._length (fldOffset=0x4)" P-INDEP @@ -297,31 +297,31 @@ ; V286 tmp273 [V286,T113] ( 3, 12 ) int -> [ebp-0x1AC] spill-single-def "fgMakeTemp is creating a new local variable" ; V287 tmp274 [V287,T114] ( 3, 12 ) int -> [ebp-0x1B0] spill-single-def "fgMakeTemp is creating a new local variable" ; V288 tmp275 [V288,T76] ( 3, 12 ) ref -> edx "arr expr"
-; V289 tmp276 [V289,T77] ( 3, 12 ) ref -> [ebp-0x2C8] spill-single-def "arr expr" -; V290 tmp277 [V290,T78] ( 3, 12 ) ref -> [ebp-0x2CC] spill-single-def "arr expr"
+; V289 tmp276 [V289,T77] ( 3, 12 ) ref -> [ebp-0x2C4] spill-single-def "arr expr" +; V290 tmp277 [V290,T78] ( 3, 12 ) ref -> [ebp-0x2C8] spill-single-def "arr expr"
; V291 tmp278 [V291,T79] ( 3, 12 ) ref -> eax "arr expr"
-; V292 tmp279 [V292,T80] ( 3, 12 ) ref -> [ebp-0x2D0] spill-single-def "arr expr" -; V293 tmp280 [V293,T81] ( 3, 12 ) ref -> [ebp-0x2D4] spill-single-def "arr expr"
+; V292 tmp279 [V292,T80] ( 3, 12 ) ref -> [ebp-0x2CC] spill-single-def "arr expr" +; V293 tmp280 [V293,T81] ( 3, 12 ) ref -> [ebp-0x2D0] spill-single-def "arr expr"
; V294 tmp281 [V294,T82] ( 3, 12 ) ref -> edx "arr expr" ; V295 tmp282 [V295,T83] ( 3, 12 ) ref -> edx "arr expr" ; V296 tmp283 [V296,T84] ( 3, 12 ) ref -> edx "arr expr"
-; V297 tmp284 [V297,T241] ( 3, 3 ) ref -> [ebp-0x2D8] spill-single-def "arr expr"
+; V297 tmp284 [V297,T241] ( 3, 3 ) ref -> [ebp-0x2D4] spill-single-def "arr expr"
; V298 tmp285 [V298,T242] ( 3, 3 ) byref -> eax single-def "BlockOp address local"
-; V299 tmp286 [V299,T243] ( 3, 3 ) ref -> [ebp-0x2DC] spill-single-def "arr expr"
+; V299 tmp286 [V299,T243] ( 3, 3 ) ref -> [ebp-0x2D8] spill-single-def "arr expr"
; V300 tmp287 [V300,T244] ( 3, 3 ) byref -> ecx single-def "BlockOp address local"
-; V301 tmp288 [V301,T245] ( 3, 3 ) ref -> [ebp-0x2E0] spill-single-def "arr expr"
+; V301 tmp288 [V301,T245] ( 3, 3 ) ref -> [ebp-0x2DC] spill-single-def "arr expr"
; V302 tmp289 [V302,T285] ( 3, 3 ) int -> eax "index expr" ; V303 tmp290 [V303,T246] ( 3, 3 ) byref -> ecx single-def "BlockOp address local"
-; V304 tmp291 [V304,T247] ( 3, 3 ) ref -> [ebp-0x2E4] spill-single-def "arr expr"
+; V304 tmp291 [V304,T247] ( 3, 3 ) ref -> [ebp-0x2E0] spill-single-def "arr expr"
; V305 tmp292 [V305,T286] ( 3, 3 ) int -> eax "index expr" ; V306 tmp293 [V306,T248] ( 3, 3 ) byref -> eax single-def "BlockOp address local"
-; V307 tmp294 [V307,T249] ( 3, 3 ) ref -> [ebp-0x2E8] spill-single-def "arr expr"
+; V307 tmp294 [V307,T249] ( 3, 3 ) ref -> [ebp-0x2E4] spill-single-def "arr expr"
; V308 tmp295 [V308,T287] ( 3, 3 ) int -> ecx "index expr" ; V309 tmp296 [V309,T250] ( 3, 3 ) byref -> eax single-def "BlockOp address local"
-; V310 tmp297 [V310,T251] ( 3, 3 ) ref -> [ebp-0x2EC] spill-single-def "arr expr"
+; V310 tmp297 [V310,T251] ( 3, 3 ) ref -> [ebp-0x2E8] spill-single-def "arr expr"
; V311 tmp298 [V311,T288] ( 3, 3 ) int -> edx "index expr" ; V312 tmp299 [V312,T252] ( 3, 3 ) byref -> eax single-def "BlockOp address local"
-; V313 tmp300 [V313,T253] ( 3, 3 ) ref -> [ebp-0x2F0] spill-single-def "arr expr"
+; V313 tmp300 [V313,T253] ( 3, 3 ) ref -> [ebp-0x2EC] spill-single-def "arr expr"
; V314 tmp301 [V314,T289] ( 3, 3 ) int -> edx "index expr" ; V315 tmp302 [V315,T254] ( 3, 3 ) byref -> ecx single-def "BlockOp address local" ; V316 tmp303 [V316,T255] ( 3, 3 ) ref -> edx single-def "arr expr" @@ -330,23 +330,23 @@ ; V319 tmp306 [V319,T258] ( 3, 3 ) byref -> eax single-def "BlockOp address local" ; V320 tmp307 [V320,T259] ( 3, 3 ) ref -> ecx single-def "arr expr" ; V321 tmp308 [V321,T260] ( 3, 3 ) byref -> ecx single-def "BlockOp address local"
-; V322 tmp309 [V322,T21] ( 3, 24 ) ref -> [ebp-0x2F4] spill-single-def "arr expr"
+; V322 tmp309 [V322,T21] ( 3, 24 ) ref -> [ebp-0x2F0] spill-single-def "arr expr"
; V323 tmp310 [V323,T22] ( 3, 24 ) byref -> eax "BlockOp address local"
-; V324 tmp311 [V324,T23] ( 3, 24 ) ref -> [ebp-0x2F8] spill-single-def "arr expr"
+; V324 tmp311 [V324,T23] ( 3, 24 ) ref -> [ebp-0x2F4] spill-single-def "arr expr"
; V325 tmp312 [V325,T24] ( 3, 24 ) byref -> ecx "BlockOp address local"
-; V326 tmp313 [V326,T25] ( 3, 24 ) ref -> [ebp-0x2FC] spill-single-def "arr expr"
+; V326 tmp313 [V326,T25] ( 3, 24 ) ref -> [ebp-0x2F8] spill-single-def "arr expr"
; V327 tmp314 [V327,T39] ( 3, 24 ) int -> eax "index expr" ; V328 tmp315 [V328,T26] ( 3, 24 ) byref -> ecx "BlockOp address local"
-; V329 tmp316 [V329,T27] ( 3, 24 ) ref -> [ebp-0x300] spill-single-def "arr expr"
+; V329 tmp316 [V329,T27] ( 3, 24 ) ref -> [ebp-0x2FC] spill-single-def "arr expr"
; V330 tmp317 [V330,T40] ( 3, 24 ) int -> eax "index expr" ; V331 tmp318 [V331,T28] ( 3, 24 ) byref -> eax "BlockOp address local"
-; V332 tmp319 [V332,T29] ( 3, 24 ) ref -> [ebp-0x304] spill-single-def "arr expr"
+; V332 tmp319 [V332,T29] ( 3, 24 ) ref -> [ebp-0x300] spill-single-def "arr expr"
; V333 tmp320 [V333,T41] ( 3, 24 ) int -> ecx "index expr" ; V334 tmp321 [V334,T30] ( 3, 24 ) byref -> eax "BlockOp address local"
-; V335 tmp322 [V335,T31] ( 3, 24 ) ref -> [ebp-0x308] spill-single-def "arr expr"
+; V335 tmp322 [V335,T31] ( 3, 24 ) ref -> [ebp-0x304] spill-single-def "arr expr"
; V336 tmp323 [V336,T42] ( 3, 24 ) int -> edx "index expr" ; V337 tmp324 [V337,T32] ( 3, 24 ) byref -> eax "BlockOp address local"
-; V338 tmp325 [V338,T33] ( 3, 24 ) ref -> [ebp-0x30C] spill-single-def "arr expr"
+; V338 tmp325 [V338,T33] ( 3, 24 ) ref -> [ebp-0x308] spill-single-def "arr expr"
; V339 tmp326 [V339,T43] ( 3, 24 ) int -> edx "index expr" ; V340 tmp327 [V340,T34] ( 3, 24 ) byref -> ecx "BlockOp address local" ; V341 tmp328 [V341,T85] ( 3, 12 ) ref -> edx "arr expr" @@ -370,11 +370,11 @@ ; V359 tmp346 [V359,T115] ( 3, 12 ) int -> [ebp-0x1BC] spill-single-def "fgMakeTemp is creating a new local variable" ; V360 tmp347 [V360,T116] ( 3, 12 ) int -> [ebp-0x1C0] spill-single-def "fgMakeTemp is creating a new local variable" ; V361 tmp348 [V361,T91] ( 3, 12 ) ref -> edx "arr expr"
-; V362 tmp349 [V362,T92] ( 3, 12 ) ref -> [ebp-0x310] spill-single-def "arr expr" -; V363 tmp350 [V363,T93] ( 3, 12 ) ref -> [ebp-0x314] spill-single-def "arr expr"
+; V362 tmp349 [V362,T92] ( 3, 12 ) ref -> [ebp-0x30C] spill-single-def "arr expr" +; V363 tmp350 [V363,T93] ( 3, 12 ) ref -> [ebp-0x310] spill-single-def "arr expr"
; V364 tmp351 [V364,T94] ( 3, 12 ) ref -> eax "arr expr"
-; V365 tmp352 [V365,T95] ( 3, 12 ) ref -> [ebp-0x318] spill-single-def "arr expr" -; V366 tmp353 [V366,T96] ( 3, 12 ) ref -> [ebp-0x31C] spill-single-def "arr expr"
+; V365 tmp352 [V365,T95] ( 3, 12 ) ref -> [ebp-0x314] spill-single-def "arr expr" +; V366 tmp353 [V366,T96] ( 3, 12 ) ref -> [ebp-0x318] spill-single-def "arr expr"
; V367 tmp354 [V367,T97] ( 3, 12 ) ref -> ecx "arr expr" ; V368 tmp355 [V368,T98] ( 3, 12 ) ref -> ecx "arr expr" ; V369 tmp356 [V369,T99] ( 3, 12 ) ref -> ecx "arr expr" @@ -393,11 +393,11 @@ ; V382 tmp369 [V382,T117] ( 3, 12 ) int -> [ebp-0x1CC] spill-single-def "fgMakeTemp is creating a new local variable" ; V383 tmp370 [V383,T118] ( 3, 12 ) int -> [ebp-0x1D0] spill-single-def "fgMakeTemp is creating a new local variable" ; V384 tmp371 [V384,T100] ( 3, 12 ) ref -> edx "arr expr"
-; V385 tmp372 [V385,T101] ( 3, 12 ) ref -> [ebp-0x320] spill-single-def "arr expr" -; V386 tmp373 [V386,T102] ( 3, 12 ) ref -> [ebp-0x324] spill-single-def "arr expr"
+; V385 tmp372 [V385,T101] ( 3, 12 ) ref -> [ebp-0x31C] spill-single-def "arr expr" +; V386 tmp373 [V386,T102] ( 3, 12 ) ref -> [ebp-0x320] spill-single-def "arr expr"
; V387 tmp374 [V387,T103] ( 3, 12 ) ref -> edx "arr expr"
-; V388 tmp375 [V388,T104] ( 3, 12 ) ref -> [ebp-0x328] spill-single-def "arr expr" -; V389 tmp376 [V389,T105] ( 3, 12 ) ref -> [ebp-0x32C] spill-single-def "arr expr"
+; V388 tmp375 [V388,T104] ( 3, 12 ) ref -> [ebp-0x324] spill-single-def "arr expr" +; V389 tmp376 [V389,T105] ( 3, 12 ) ref -> [ebp-0x328] spill-single-def "arr expr"
; V390 tmp377 [V390,T106] ( 3, 12 ) ref -> edx "arr expr" ; V391 tmp378 [V391,T107] ( 3, 12 ) ref -> edx "arr expr" ; V392 tmp379 [V392,T108] ( 3, 12 ) ref -> edx "arr expr" @@ -421,76 +421,76 @@ ;* V410 cse17 [V410 ] ( 0, 0 ) long -> zero-ref "CSE - conservative" ; V411 cse18 [V411,T01] (109,396.50) int -> [ebp-0x1E4] multi-def "CSE - aggressive" ; V412 cse19 [V412,T07] ( 38, 54 ) int -> [ebp-0x1E8] multi-def "CSE - moderate"
-; V413 cse20 [V413,T62] ( 4, 16 ) ref -> [ebp-0x330] spill-single-def "CSE - conservative" -; V414 cse21 [V414,T316] ( 4, 2 ) ref -> [ebp-0x334] spill-single-def "CSE - conservative" -; V415 rat0 [V415,T368] ( 3, 1.50) int -> [ebp-0x1EC] spill-single-def "field V51.lo (fldOffset=0x0)" P-INDEP -; V416 rat1 [V416,T369] ( 3, 1.50) int -> eax "field V51.hi (fldOffset=0x4)" P-INDEP -; V417 rat2 [V417,T221] ( 8, 4 ) int -> [ebp-0x1F0] "field V72.lo (fldOffset=0x0)" P-INDEP -; V418 rat3 [V418,T231] ( 7, 3.50) int -> [ebp-0x1F4] "field V72.hi (fldOffset=0x4)" P-INDEP -; V419 rat4 [V419,T213] ( 9, 4.50) int -> [ebp-0x1F8] "field V74.lo (fldOffset=0x0)" P-INDEP -; V420 rat5 [V420,T214] ( 9, 4.50) int -> [ebp-0x1FC] "field V74.hi (fldOffset=0x4)" P-INDEP -; V421 rat6 [V421,T370] ( 2, 1.50) int -> [ebp-0x200] spill-single-def "field V76.lo (fldOffset=0x0)" P-INDEP -; V422 rat7 [V422,T371] ( 2, 1.50) int -> [ebp-0x204] spill-single-def "field V76.hi (fldOffset=0x4)" P-INDEP -; V423 rat8 [V423,T158] ( 3, 10 ) int -> ecx "field V92.lo (fldOffset=0x0)" P-INDEP -; V424 rat9 [V424,T159] ( 3, 10 ) int -> eax "field V92.hi (fldOffset=0x4)" P-INDEP
+; V413 cse20 [V413,T62] ( 4, 16 ) ref -> [ebp-0x32C] spill-single-def "CSE - conservative" +; V414 cse21 [V414,T316] ( 4, 2 ) ref -> [ebp-0x330] spill-single-def "CSE - conservative" +; V415 rat0 [V415,T368] ( 2, 1 ) int -> ecx "field V51.lo (fldOffset=0x0)" P-INDEP +; V416 rat1 [V416,T369] ( 2, 1 ) int -> eax "field V51.hi (fldOffset=0x4)" P-INDEP +; V417 rat2 [V417,T221] ( 8, 4 ) int -> [ebp-0x1EC] "field V72.lo (fldOffset=0x0)" P-INDEP +; V418 rat3 [V418,T231] ( 7, 3.50) int -> [ebp-0x1F0] "field V72.hi (fldOffset=0x4)" P-INDEP +; V419 rat4 [V419,T213] ( 9, 4.50) int -> [ebp-0x1F4] "field V74.lo (fldOffset=0x0)" P-INDEP +; V420 rat5 [V420,T214] ( 9, 4.50) int -> [ebp-0x1F8] "field V74.hi (fldOffset=0x4)" P-INDEP +; V421 rat6 [V421,T370] ( 2, 1.50) int -> [ebp-0x1FC] spill-single-def "field V76.lo (fldOffset=0x0)" P-INDEP +; V422 rat7 [V422,T371] ( 2, 1.50) int -> [ebp-0x200] spill-single-def "field V76.hi (fldOffset=0x4)" P-INDEP +; V423 rat8 [V423,T158] ( 2, 8 ) int -> ecx "field V92.lo (fldOffset=0x0)" P-INDEP +; V424 rat9 [V424,T159] ( 2, 8 ) int -> eax "field V92.hi (fldOffset=0x4)" P-INDEP
; V425 rat10 [V425,T160] ( 3, 10 ) int -> ecx "field V101.lo (fldOffset=0x0)" P-INDEP ; V426 rat11 [V426,T161] ( 3, 10 ) int -> eax "field V101.hi (fldOffset=0x4)" P-INDEP
-; V427 rat12 [V427,T59] ( 8, 16 ) int -> [ebp-0x208] "field V121.lo (fldOffset=0x0)" P-INDEP -; V428 rat13 [V428,T71] ( 7, 14 ) int -> [ebp-0x20C] "field V121.hi (fldOffset=0x4)" P-INDEP -; V429 rat14 [V429,T50] ( 9, 18 ) int -> [ebp-0x210] "field V123.lo (fldOffset=0x0)" P-INDEP -; V430 rat15 [V430,T51] ( 9, 18 ) int -> [ebp-0x214] "field V123.hi (fldOffset=0x4)" P-INDEP -; V431 rat16 [V431,T140] ( 2, 12 ) int -> [ebp-0x218] spill-single-def "field V125.lo (fldOffset=0x0)" P-INDEP -; V432 rat17 [V432,T141] ( 2, 12 ) int -> [ebp-0x21C] spill-single-def "field V125.hi (fldOffset=0x4)" P-INDEP -; V433 rat18 [V433,T64] ( 4, 16 ) int -> [ebp-0x220] spill-single-def "field V409.lo (fldOffset=0x0)" P-INDEP -; V434 rat19 [V434,T65] ( 4, 16 ) int -> [ebp-0x224] spill-single-def "field V409.hi (fldOffset=0x4)" P-INDEP -; V435 rat20 [V435,T319] ( 4, 2 ) int -> [ebp-0x228] spill-single-def "field V410.lo (fldOffset=0x0)" P-INDEP -; V436 rat21 [V436,T320] ( 4, 2 ) int -> [ebp-0x22C] spill-single-def "field V410.hi (fldOffset=0x4)" P-INDEP
+; V427 rat12 [V427,T59] ( 8, 16 ) int -> [ebp-0x204] "field V121.lo (fldOffset=0x0)" P-INDEP +; V428 rat13 [V428,T71] ( 7, 14 ) int -> [ebp-0x208] "field V121.hi (fldOffset=0x4)" P-INDEP +; V429 rat14 [V429,T50] ( 9, 18 ) int -> [ebp-0x20C] "field V123.lo (fldOffset=0x0)" P-INDEP +; V430 rat15 [V430,T51] ( 9, 18 ) int -> [ebp-0x210] "field V123.hi (fldOffset=0x4)" P-INDEP +; V431 rat16 [V431,T140] ( 2, 12 ) int -> [ebp-0x214] spill-single-def "field V125.lo (fldOffset=0x0)" P-INDEP +; V432 rat17 [V432,T141] ( 2, 12 ) int -> [ebp-0x218] spill-single-def "field V125.hi (fldOffset=0x4)" P-INDEP +; V433 rat18 [V433,T64] ( 4, 16 ) int -> [ebp-0x21C] spill-single-def "field V409.lo (fldOffset=0x0)" P-INDEP +; V434 rat19 [V434,T65] ( 4, 16 ) int -> [ebp-0x220] spill-single-def "field V409.hi (fldOffset=0x4)" P-INDEP +; V435 rat20 [V435,T319] ( 4, 2 ) int -> [ebp-0x224] spill-single-def "field V410.lo (fldOffset=0x0)" P-INDEP +; V436 rat21 [V436,T320] ( 4, 2 ) int -> [ebp-0x228] spill-single-def "field V410.hi (fldOffset=0x4)" P-INDEP
; V437 rat22 [V437,T295] ( 3, 3 ) int -> edx "ReplaceWithLclVar is creating a new local variable" ; V438 rat23 [V438,T296] ( 3, 3 ) int -> edx "ReplaceWithLclVar is creating a new local variable" ; V439 rat24 [V439,T122] ( 3, 12 ) int -> edx "ReplaceWithLclVar is creating a new local variable" ; V440 rat25 [V440,T123] ( 3, 12 ) int -> edx "ReplaceWithLclVar is creating a new local variable"
-; V441 rat26 [V441,T279] ( 3, 3 ) byref -> [ebp-0x338] spill-single-def "ReplaceWithLclVar is creating a new local variable" -; V442 rat27 [V442 ] ( 1, 1 ) long -> [ebp-0x234] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V441 rat26 [V441,T279] ( 3, 3 ) byref -> [ebp-0x334] spill-single-def "ReplaceWithLclVar is creating a new local variable" +; V442 rat27 [V442 ] ( 1, 1 ) long -> [ebp-0x230] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V443 rat28 [V443,T322] ( 3, 2 ) int -> ecx "field V442.lo (fldOffset=0x0)" P-INDEP ; V444 rat29 [V444,T388] ( 1, 1 ) int -> edx "field V442.hi (fldOffset=0x4)" P-INDEP
-; V445 rat30 [V445 ] ( 1, 1 ) long -> [ebp-0x23C] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V445 rat30 [V445 ] ( 1, 1 ) long -> [ebp-0x238] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V446 rat31 [V446,T372] ( 2, 1.50) int -> eax "field V445.lo (fldOffset=0x0)" P-INDEP ; V447 rat32 [V447,T373] ( 2, 1.50) int -> edx "field V445.hi (fldOffset=0x4)" P-INDEP
-; V448 rat33 [V448 ] ( 1, 1 ) long -> [ebp-0x244] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V448 rat33 [V448 ] ( 1, 1 ) long -> [ebp-0x240] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V449 rat34 [V449,T374] ( 2, 1.50) int -> eax "field V448.lo (fldOffset=0x0)" P-INDEP ; V450 rat35 [V450,T375] ( 2, 1.50) int -> edx "field V448.hi (fldOffset=0x4)" P-INDEP
-; V451 rat36 [V451 ] ( 1, 1 ) long -> [ebp-0x24C] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V451 rat36 [V451 ] ( 1, 1 ) long -> [ebp-0x248] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V452 rat37 [V452,T323] ( 3, 2 ) int -> ecx "field V451.lo (fldOffset=0x0)" P-INDEP ; V453 rat38 [V453,T389] ( 1, 1 ) int -> edx "field V451.hi (fldOffset=0x4)" P-INDEP
-; V454 rat39 [V454 ] ( 1, 1 ) long -> [ebp-0x254] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V454 rat39 [V454 ] ( 1, 1 ) long -> [ebp-0x250] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V455 rat40 [V455,T376] ( 2, 1.50) int -> eax "field V454.lo (fldOffset=0x0)" P-INDEP ; V456 rat41 [V456,T377] ( 2, 1.50) int -> edx "field V454.hi (fldOffset=0x4)" P-INDEP
-; V457 rat42 [V457 ] ( 1, 1 ) long -> [ebp-0x25C] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V457 rat42 [V457 ] ( 1, 1 ) long -> [ebp-0x258] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V458 rat43 [V458,T378] ( 2, 1.50) int -> eax "field V457.lo (fldOffset=0x0)" P-INDEP ; V459 rat44 [V459,T379] ( 2, 1.50) int -> edx "field V457.hi (fldOffset=0x4)" P-INDEP
-; V460 rat45 [V460 ] ( 1, 1 ) long -> [ebp-0x264] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V460 rat45 [V460 ] ( 1, 1 ) long -> [ebp-0x260] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V461 rat46 [V461,T380] ( 2, 1.50) int -> eax "field V460.lo (fldOffset=0x0)" P-INDEP ...

benchmarks.run_tiered.windows.x86.checked.mch

-14 (-9.21%) : 44466.dasm - System.Collections.IterateForEach`1[System.Canon]:ImmutableStack():System.Canon:this (Tier0-FullOpts)

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 4, 4 ) ref -> esi this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
+; V00 this [V00,T02] ( 3, 3 ) ref -> esi this class-hnd single-def <System.Collections.IterateForEach`1[System.__Canon]>
; V01 loc0 [V01,T05] ( 3, 4 ) ref -> edi ld-addr-op class-hnd <System.__Canon> ;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Collections.Immutable.ImmutableStack`1[System.__Canon]> ; V03 loc2 [V03 ] ( 10, 31 ) struct ( 8) [ebp-0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableStack`1+Enumerator[System.__Canon]> @@ -22,9 +22,9 @@ ; V11 tmp6 [V11 ] ( 2, 3 ) ref -> [ebp-0x10] do-not-enreg[X] addr-exposed "field V03._originalStack (fldOffset=0x0)" P-DEP ; V12 tmp7 [V12 ] ( 9, 29 ) ref -> [ebp-0x0C] do-not-enreg[X] addr-exposed "field V03._remainingStack (fldOffset=0x4)" P-DEP ;* V13 cse0 [V13,T08] ( 0, 0 ) int -> zero-ref hoist "CSE - aggressive"
-; V14 rat0 [V14,T04] ( 2, 4 ) int -> ecx "Spilling to split statement for tree"
+;* V14 rat0 [V14,T04] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V15 rat1 [V15,T06] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V16 rat2 [V16,T03] ( 2, 4 ) int -> ecx "fgMakeTemp is creating a new local variable"
+;* V16 rat2 [V16,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 8 @@ -49,14 +49,8 @@ G_M64146_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 cmp dword ptr [ecx], ecx call [System.Collections.Immutable.ImmutableStack`1[System.__Canon]:GetEnumerator():System.Collections.Immutable.ImmutableStack`1+Enumerator[System.__Canon]:this] ; gcrRegs -[ecx]
- mov ecx, dword ptr [esi] - mov ecx, dword ptr [ecx+0x24] - mov ecx, dword ptr [ecx] - mov ecx, dword ptr [ecx+0x10] - test ecx, ecx - jne SHORT G_M64146_IG04
jmp SHORT G_M64146_IG04
- ;; size=32 bbWeight=1 PerfScore 20.00
+ ;; size=18 bbWeight=1 PerfScore 10.75
G_M64146_IG03: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[edi] cmp gword ptr [ebp-0x0C], 0 @@ -129,6 +123,6 @@ G_M64146_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi} int3 ;; size=28 bbWeight=0 PerfScore 0.00
-Total bytes of code 152, prolog size 16, PerfScore 147.75, instruction count 56, allocated bytes for code 152 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (Tier0-FullOpts)
+Total bytes of code 138, prolog size 16, PerfScore 138.50, instruction count 50, allocated bytes for code 138 (MethodHash=fec7056d) for method System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (Tier0-FullOpts)
; ============================================================

-14 (-6.57%) : 45666.dasm - System.Collections.IterateForEach`1[System.Canon]:FrozenSet():System.Canon:this (Tier0-FullOpts)

@@ -23,10 +23,10 @@ ; V12 tmp7 [V12,T02] ( 3, 6 ) ref -> ecx single-def "argument with side effect" ; V13 EHSlots [V13 ] ( 1, 1 ) struct (16) [ebp-0x18] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar" ;* V14 cse0 [V14,T10] ( 0, 0 ) int -> zero-ref hoist "CSE - aggressive"
-; V15 cse1 [V15,T09] ( 6, 3.20) int -> ecx multi-def "CSE - aggressive" -; V16 rat0 [V16,T05] ( 2, 4 ) int -> edx "Spilling to split statement for tree"
+; V15 cse1 [V15,T09] ( 5, 2.20) int -> ecx multi-def "CSE - aggressive" +;* V16 rat0 [V16,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V17 rat1 [V17,T08] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V18 rat2 [V18,T03] ( 2, 4 ) int -> edx "fgMakeTemp is creating a new local variable"
+;* V18 rat2 [V18,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; V19 rat3 [V19,T04] ( 3, 5.60) int -> eax "fgMakeTemp is creating a new local variable" ; V20 rat4 [V20,T11] ( 3, 0 ) int -> ecx "Spilling to split statement for tree" ; V21 rat5 [V21,T12] ( 3, 0 ) int -> eax "fgMakeTemp is creating a new local variable" @@ -63,14 +63,8 @@ G_M17622_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs +[ecx] mov ecx, dword ptr [ecx] ; gcrRegs -[ecx]
- mov edx, ecx - mov edx, dword ptr [edx+0x24] - mov edx, dword ptr [edx] - mov edx, dword ptr [edx+0x10] - test edx, edx - jne SHORT G_M17622_IG05
jmp SHORT G_M17622_IG05
- ;; size=21 bbWeight=1 PerfScore 12.50
+ ;; size=7 bbWeight=1 PerfScore 5.00
G_M17622_IG04: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[esi] mov edx, dword ptr [ebp-0x1C] @@ -174,7 +168,7 @@ G_M17622_IG18: ; bbWeight=1, epilog, nogc, extend ret ;; size=6 bbWeight=1 PerfScore 2.50
-Total bytes of code 213, prolog size 27, PerfScore 162.68, instruction count 80, allocated bytes for code 213 (MethodHash=5937bb29) for method System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (Tier0-FullOpts)
+Total bytes of code 199, prolog size 27, PerfScore 155.18, instruction count 74, allocated bytes for code 199 (MethodHash=5937bb29) for method System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (Tier0-FullOpts)
; ============================================================ *************** EH table for System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this

-6 (-6.12%) : 30516.dasm - System.Collections.Generic.PriorityQueue2[int,int]:MoveUpDefaultComparer(System.ValueTuple2[int,int],int):this (Tier0-FullOpts)

@@ -15,11 +15,11 @@ ; V04 loc1 [V04,T05] ( 4, 16 ) int -> ecx ;* V05 loc2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.ValueTuple`2[int,int]> ;* V06 tmp0 [V06 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V07 tmp1 [V07,T03] ( 3, 20 ) int -> ebx ld-addr-op "Inlining Arg"
+; V07 tmp1 [V07,T03] ( 2, 16 ) int -> ebx ld-addr-op "Inlining Arg"
;* V08 tmp2 [V08 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V09 tmp3 [V09,T08] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ; V10 tmp4 [V10,T07] ( 2, 8 ) int -> edi "field V05.Item1 (fldOffset=0x0)" P-INDEP
-; V11 tmp5 [V11,T06] ( 4, 14 ) int -> esi "field V05.Item2 (fldOffset=0x4)" P-INDEP
+; V11 tmp5 [V11,T06] ( 3, 12 ) int -> esi "field V05.Item2 (fldOffset=0x4)" P-INDEP
; V12 tmp6 [V12,T01] ( 3, 24 ) byref -> esi "BlockOp address local" ; V13 tmp7 [V13,T02] ( 3, 24 ) byref -> edx "BlockOp address local" ; @@ -37,14 +37,14 @@ G_M9068_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 mov eax, gword ptr [ecx+0x04] ; gcrRegs +[eax] test edx, edx
- jle SHORT G_M9068_IG06
+ jle SHORT G_M9068_IG04
;; size=7 bbWeight=1 PerfScore 3.25 G_M9068_IG03: ; bbWeight=4, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[ecx] lea ecx, [edx-0x01] sar ecx, 2 cmp ecx, dword ptr [eax+0x04]
- jae SHORT G_M9068_IG08
+ jae SHORT G_M9068_IG06
lea esi, bword ptr [eax+8*ecx+0x08] ; byrRegs +[esi] mov edi, dword ptr [esi] @@ -52,16 +52,9 @@ G_M9068_IG03: ; bbWeight=4, gcrefRegs=00000001 {eax}, byrefRegs=00000000 ; byrRegs -[esi] mov ebx, dword ptr [ebp+0x0C] cmp ebx, esi
- jl SHORT G_M9068_IG05 - ;; size=27 bbWeight=4 PerfScore 49.00 -G_M9068_IG04: ; bbWeight=2, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz - cmp ebx, esi - jle SHORT G_M9068_IG06 - jmp SHORT G_M9068_IG06 - ;; size=6 bbWeight=2 PerfScore 6.50 -G_M9068_IG05: ; bbWeight=4, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+ jge SHORT G_M9068_IG04
cmp edx, dword ptr [eax+0x04]
- jae SHORT G_M9068_IG08
+ jae SHORT G_M9068_IG06
lea edx, bword ptr [eax+8*edx+0x08] ; byrRegs +[edx] mov dword ptr [edx], edi @@ -70,28 +63,28 @@ G_M9068_IG05: ; bbWeight=4, gcrefRegs=00000001 {eax}, byrefRegs=00000000 ; byrRegs -[edx] test edx, edx jg SHORT G_M9068_IG03
- ;; size=20 bbWeight=4 PerfScore 34.00 -G_M9068_IG06: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+ ;; size=47 bbWeight=4 PerfScore 83.00 +G_M9068_IG04: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
cmp edx, dword ptr [eax+0x04]
- jae SHORT G_M9068_IG08
+ jae SHORT G_M9068_IG06
mov ecx, dword ptr [ebp+0x08] mov dword ptr [eax+8*edx+0x08], ecx mov ecx, dword ptr [ebp+0x0C] mov dword ptr [eax+8*edx+0x0C], ecx ;; size=19 bbWeight=1 PerfScore 8.00
-G_M9068_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M9068_IG05: ; bbWeight=1, epilog, nogc, extend
pop ebx pop esi pop edi pop ebp ret 8 ;; size=7 bbWeight=1 PerfScore 4.00
-G_M9068_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M9068_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax] call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 98, prolog size 6, PerfScore 109.00, instruction count 42, allocated bytes for code 98 (MethodHash=d4dadc93) for method System.Collections.Generic.PriorityQueue`2[int,int]:MoveUpDefaultComparer(System.ValueTuple`2[int,int],int):this (Tier0-FullOpts)
+Total bytes of code 92, prolog size 6, PerfScore 102.50, instruction count 39, allocated bytes for code 92 (MethodHash=d4dadc93) for method System.Collections.Generic.PriorityQueue`2[int,int]:MoveUpDefaultComparer(System.ValueTuple`2[int,int],int):this (Tier0-FullOpts)
; ============================================================

-2 (-0.28%) : 21670.dasm - System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)

@@ -17,12 +17,12 @@ ;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Net.Sockets.SocketAsyncEventArgs> ;* V07 tmp0 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object> ; V08 tmp1 [V08,T04] ( 3, 3 ) ref -> [ebp-0x30] class-hnd exact spill-single-def "NewObj constructor temp" <System.Net.SocketAddress>
-; V09 tmp2 [V09,T17] ( 2, 0 ) ref -> esi class-hnd exact single-def "non-inline candidate call" <System.String> -; V10 tmp3 [V10,T12] ( 3, 0 ) ref -> [ebp-0x34] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>> -; V11 tmp4 [V11,T13] ( 3, 0 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>> -; V12 tmp5 [V12,T14] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V13 tmp6 [V13,T15] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V14 tmp7 [V14,T16] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V09 tmp2 [V09,T18] ( 2, 0 ) ref -> esi class-hnd exact single-def "non-inline candidate call" <System.String> +; V10 tmp3 [V10,T13] ( 3, 0 ) ref -> [ebp-0x34] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>> +; V11 tmp4 [V11,T14] ( 3, 0 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "Single-def Box Helper" <<unknown class>> +; V12 tmp5 [V12,T15] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V13 tmp6 [V13,T16] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V14 tmp7 [V14,T17] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V15 tmp8 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V16 tmp9 [V16,T09] ( 2, 1 ) ubyte -> eax "Inline return value spill temp" ; V17 tmp10 [V17,T05] ( 3, 3 ) int -> eax "Inlining Arg" @@ -31,16 +31,17 @@ ;* V20 tmp13 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>> ; V21 tmp14 [V21,T07] ( 3, 2.50) int -> eax "Inline return value spill temp" ; V22 tmp15 [V22,T03] ( 3, 5 ) ref -> edi class-hnd exact single-def "Inlining Arg" <System.Net.Sockets.SafeSocketHandle>
-; V23 tmp16 [V23,T11] ( 1, 1 ) ref -> [ebp+0x08] single-def "field V02._source (fldOffset=0x0)" P-INDEP -; V24 tmp17 [V24,T18] ( 2, 0 ) ref -> esi single-def "argument with side effect" -; V25 tmp18 [V25,T19] ( 2, 0 ) ref -> edi single-def "argument with side effect" -; V26 tmp19 [V26,T20] ( 2, 0 ) ref -> edx single-def "argument with side effect" -; V27 tmp20 [V27,T21] ( 2, 0 ) ref -> edi single-def "argument with side effect"
+; V23 tmp16 [V23,T12] ( 1, 1 ) ref -> [ebp+0x08] single-def "field V02._source (fldOffset=0x0)" P-INDEP +; V24 tmp17 [V24,T11] ( 2, 1 ) ref -> eax single-def "Field obj" +; V25 tmp18 [V25,T19] ( 2, 0 ) ref -> esi single-def "argument with side effect" +; V26 tmp19 [V26,T20] ( 2, 0 ) ref -> edi single-def "argument with side effect" +; V27 tmp20 [V27,T21] ( 2, 0 ) ref -> edx single-def "argument with side effect"
; V28 tmp21 [V28,T22] ( 2, 0 ) ref -> edi single-def "argument with side effect"
-; V29 tmp22 [V29,T23] ( 2, 0 ) ref -> edx single-def "argument with side effect" -; V30 tmp23 [V30,T24] ( 2, 0 ) ref -> esi single-def "argument with side effect" -; V31 EHSlots [V31 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar" -; V32 cse0 [V32,T10] ( 4, 1.50) int -> [ebp-0x28] spill-single-def "CSE - moderate"
+; V29 tmp22 [V29,T23] ( 2, 0 ) ref -> edi single-def "argument with side effect" +; V30 tmp23 [V30,T24] ( 2, 0 ) ref -> edx single-def "argument with side effect" +; V31 tmp24 [V31,T25] ( 2, 0 ) ref -> esi single-def "argument with side effect" +; V32 EHSlots [V32 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar" +; V33 cse0 [V33,T10] ( 4, 1.50) int -> [ebp-0x28] spill-single-def "CSE - moderate"
; ; Lcl frame size = 44 @@ -166,10 +167,10 @@ G_M11429_IG06: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs= G_M11429_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax]
- movsx eax, byte ptr [eax+0x59] - ; gcrRegs -[eax] - ;; size=9 bbWeight=0.50 PerfScore 3.00
+ cmp byte ptr [eax], al + ;; size=7 bbWeight=0.50 PerfScore 2.50
G_M11429_IG08: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ ; gcrRegs -[eax]
mov edx, gword ptr [esi+0x60] ; gcrRegs +[edx] lea edx, bword ptr [edx+0x04] @@ -398,7 +399,7 @@ G_M11429_IG21: ; bbWeight=0, gcVars=00000001 {V01}, gcrefRegs=00000040 {e int3 ;; size=11 bbWeight=0 PerfScore 0.00
-Total bytes of code 703, prolog size 14, PerfScore 110.50, instruction count 201, allocated bytes for code 703 (MethodHash=8b1ad35a) for method System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
+Total bytes of code 701, prolog size 14, PerfScore 110.00, instruction count 201, allocated bytes for code 701 (MethodHash=8b1ad35a) for method System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
; ============================================================ *************** EH table for System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this

-6 (-0.20%) : 44477.dasm - System.IO.Strategies.BufferedFileStreamStrategy+d__37:MoveNext():this (Tier1)

@@ -69,12 +69,12 @@ ; V58 tmp39 [V58,T40] ( 3, 6 ) int -> ebx "Inlining Arg" ; V59 tmp40 [V59,T41] ( 3, 6 ) int -> edx "Inlining Arg" ; V60 tmp41 [V60,T05] ( 5, 10 ) ref -> edx class-hnd single-def "Inlining Arg" <ubyte[]>
-; V61 tmp42 [V61,T15] ( 5, 8 ) int -> ecx "Inlining Arg"
+; V61 tmp42 [V61,T18] ( 4, 8 ) int -> ecx "Inlining Arg"
;* V62 tmp43 [V62 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V63 tmp44 [V63 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V64 tmp45 [V64,T26] ( 6, 6 ) byref -> [ebp-0xA8] "Inline stloc first use temp" ; V65 tmp46 [V65,T13] ( 8, 8 ) int -> [ebp-0x68] "Inline stloc first use temp"
-; V66 tmp47 [V66,T16] ( 4, 8 ) byref -> [ebp-0xAC] spill-single-def "Inlining Arg"
+; V66 tmp47 [V66,T15] ( 4, 8 ) byref -> [ebp-0xAC] spill-single-def "Inlining Arg"
; V67 tmp48 [V67,T11] ( 9, 9 ) ref -> [ebp-0xB0] class-hnd spill-single-def "Inline stloc first use temp" <System.Object> ;* V68 tmp49 [V68 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V69 tmp50 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> @@ -90,7 +90,7 @@ ;* V79 tmp60 [V79 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V80 tmp61 [V80 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V81 tmp62 [V81 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V82 tmp63 [V82,T17] ( 4, 8 ) byref -> edx single-def "Inlining Arg"
+; V82 tmp63 [V82,T16] ( 4, 8 ) byref -> edx single-def "Inlining Arg"
;* V83 tmp64 [V83 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]> ; V84 tmp65 [V84,T06] ( 5, 10 ) ref -> [ebp-0xB4] class-hnd spill-single-def "Inlining Arg" <System.Object> ; V85 tmp66 [V85,T76] ( 3, 3 ) int -> registers @@ -173,7 +173,7 @@ ;* V162 tmp143 [V162 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]> ; V163 tmp144 [V163,T29] ( 6, 6 ) byref -> [ebp-0xC0] "Inline stloc first use temp" ; V164 tmp145 [V164,T14] ( 8, 8 ) int -> [ebp-0x84] "Inline stloc first use temp"
-; V165 tmp146 [V165,T18] ( 4, 8 ) byref -> [ebp-0xC4] spill-single-def "Inlining Arg"
+; V165 tmp146 [V165,T17] ( 4, 8 ) byref -> [ebp-0xC4] spill-single-def "Inlining Arg"
; V166 tmp147 [V166,T12] ( 9, 9 ) ref -> ebx class-hnd single-def "Inline stloc first use temp" <System.Object> ;* V167 tmp148 [V167 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V168 tmp149 [V168 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>> @@ -371,7 +371,7 @@ G_M33324_IG06: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00 lea ecx, [ebp-0x30] call [<unknown method>] ; gcrRegs -[eax edx]
- jmp G_M33324_IG86
+ jmp G_M33324_IG85
;; size=49 bbWeight=1 PerfScore 15.25 G_M33324_IG07: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref ; GC ptr vars +{V01 V02} @@ -428,7 +428,7 @@ G_M33324_IG10: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 mov edx, gword ptr [edi+0x10] ; gcrRegs +[edx] test edx, edx
- je G_M33324_IG71
+ je G_M33324_IG70
cmp dword ptr [edx+0x04], ecx jb G_M33324_IG70 mov eax, dword ptr [edx+0x04] @@ -538,7 +538,7 @@ G_M33324_IG13: ; bbWeight=1, gcVars=00000000200000000000000004000003 {V00 mov ecx, dword ptr [ebp-0x90] mov edx, dword ptr [ebp-0x68] cmp ecx, edx
- ja G_M33324_IG72
+ ja G_M33324_IG71
push ecx mov ecx, bword ptr [ebp-0xA8] ; byrRegs +[ecx] @@ -555,8 +555,8 @@ G_M33324_IG14: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 mov dword ptr [ebp-0x28], ebx mov dword ptr [ebp-0x1C], 0 mov dword ptr [ebp-0x18], 252
- push G_M33324_IG78 - jmp G_M33324_IG76
+ push G_M33324_IG77 + jmp G_M33324_IG75
;; size=32 bbWeight=1 PerfScore 10.00 G_M33324_IG15: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref test ebx, ebx @@ -566,7 +566,7 @@ G_M33324_IG15: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 mov eax, dword ptr [edx+0x08] mov dword ptr [ebp-0x9C], eax cmp ebx, eax
- ja G_M33324_IG73
+ ja G_M33324_IG72
mov ecx, gword ptr [edx] ; gcrRegs +[ecx] mov gword ptr [ebp-0xB4], ecx @@ -827,8 +827,8 @@ G_M33324_IG28: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e mov dword ptr [ebp-0x28], eax mov dword ptr [ebp-0x1C], 0 mov dword ptr [ebp-0x18], 252
- push G_M33324_IG81 - jmp G_M33324_IG76
+ push G_M33324_IG80 + jmp G_M33324_IG75
;; size=30 bbWeight=1 PerfScore 9.00 G_M33324_IG29: ; bbWeight=0.50, gcVars=00000000000000000000000000000043 {V00 V02 V84}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref ; gcrRegs +[edi] @@ -893,8 +893,8 @@ G_M33324_IG34: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e ; gcrRegs -[eax edx] mov dword ptr [ebp-0x1C], 0 mov dword ptr [ebp-0x18], 252
- push G_M33324_IG79 - jmp G_M33324_IG76
+ push G_M33324_IG78 + jmp G_M33324_IG75
;; size=78 bbWeight=1 PerfScore 18.50 G_M33324_IG35: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref add esi, 48 @@ -975,8 +975,8 @@ G_M33324_IG41: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e ; gcrRegs -[eax edx] mov dword ptr [ebp-0x1C], 0 mov dword ptr [ebp-0x18], 252
- push G_M33324_IG80 - jmp G_M33324_IG76
+ push G_M33324_IG79 + jmp G_M33324_IG75
;; size=79 bbWeight=1 PerfScore 19.50 G_M33324_IG42: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref add esi, 56 @@ -1176,8 +1176,8 @@ G_M33324_IG55: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e ; gcrRegs -[eax edx] mov dword ptr [ebp-0x1C], 0 mov dword ptr [ebp-0x18], 252
- push G_M33324_IG82 - jmp G_M33324_IG76
+ push G_M33324_IG81 + jmp G_M33324_IG75
;; size=79 bbWeight=1 PerfScore 19.50 G_M33324_IG56: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref add esi, 56 @@ -1409,7 +1409,7 @@ G_M33324_IG69: ; bbWeight=1, gcVars=00000000000004000000000020000003 {V00 mov ebx, dword ptr [ebp-0x98] mov ecx, dword ptr [ebp-0x84] cmp ebx, ecx
- ja SHORT G_M33324_IG72
+ ja SHORT G_M33324_IG71
push ebx mov ecx, bword ptr [ebp-0xC0] ; byrRegs +[ecx] @@ -1418,7 +1418,7 @@ G_M33324_IG69: ; bbWeight=1, gcVars=00000000000004000000000020000003 {V00 ; GC ptr vars -{V163 V236} call [<unknown method>] ; byrRegs -[ecx edx]
- jmp SHORT G_M33324_IG74
+ jmp SHORT G_M33324_IG73
;; size=54 bbWeight=1 PerfScore 16.00 G_M33324_IG70: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref ; gcrRegs -[edi] @@ -1427,29 +1427,24 @@ G_M33324_IG70: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000040 {e call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] int3 ;; size=13 bbWeight=0 PerfScore 0.00
-G_M33324_IG71: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz - test ecx, ecx - jne SHORT G_M33324_IG70 - jmp SHORT G_M33324_IG70 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M33324_IG72: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M33324_IG71: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
call [System.ThrowHelper:ThrowArgumentException_DestinationTooShort()] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M33324_IG73: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M33324_IG72: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
mov ecx, 33 call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)] int3 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M33324_IG74: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M33324_IG73: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
mov ebx, dword ptr [ebp-0x80] add dword ptr [edi+0x1C], ebx add ebx, dword ptr [esi+0x0C] mov dword ptr [ebp-0x28], ebx ;; size=12 bbWeight=1 PerfScore 8.00
-G_M33324_IG75: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
+G_M33324_IG74: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
cmp dword ptr [ebp-0x24], 0
- jge G_M33324_IG84
+ jge G_M33324_IG83
mov ecx, gword ptr [edi+0x04] ; gcrRegs +[ecx] cmp byte ptr [ecx], cl @@ -1457,13 +1452,13 @@ G_M33324_IG75: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 ; GC ptr vars -{V02} call [<unknown method>] ; gcrRegs -[ecx edi]
- jmp SHORT G_M33324_IG84
+ jmp SHORT G_M33324_IG83
;; size=28 bbWeight=1 PerfScore 13.25
-G_M33324_IG76: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M33324_IG75: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[esi] ; GC ptr vars +{V01 V02} cmp dword ptr [ebp-0x24], 0
- jge SHORT G_M33324_IG77
+ jge SHORT G_M33324_IG76
mov edi, gword ptr [ebp-0xA4] ; gcrRegs +[edi] mov ecx, gword ptr [edi+0x04] @@ -1474,40 +1469,40 @@ G_M33324_IG76: ; bbWeight=1, gcVars=00000000000000000000000000000003 {V00 call [<unknown method>] ; gcrRegs -[ecx edi] ;; size=28 bbWeight=1 PerfScore 12.25
-G_M33324_IG77: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M33324_IG76: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
pop eax jmp eax ;; size=3 bbWeight=1 PerfScore 2.50
-G_M33324_IG78: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M33324_IG77: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x18], 0 mov esi, bword ptr [ebp-0xA0] ; byrRegs +[esi]
- jmp SHORT G_M33324_IG84
+ jmp SHORT G_M33324_IG83
;; size=15 bbWeight=1 PerfScore 4.00
-G_M33324_IG79: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M33324_IG78: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[esi] ; GC ptr vars -{V00} mov dword ptr [ebp-0x18], 0
- jmp SHORT G_M33324_IG86
+ jmp SHORT G_M33324_IG85
;; size=9 bbWeight=1 PerfScore 3.00
-G_M33324_IG80: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M33324_IG79: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x18], 0
- jmp SHORT G_M33324_IG86
+ jmp SHORT G_M33324_IG85
;; size=9 bbWeight=1 PerfScore 3.00
-G_M33324_IG81: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M33324_IG80: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars +{V00} mov dword ptr [ebp-0x18], 0 mov esi, bword ptr [ebp-0xA0] ; byrRegs +[esi]
- jmp SHORT G_M33324_IG84
+ jmp SHORT G_M33324_IG83
;; size=15 bbWeight=1 PerfScore 4.00
-G_M33324_IG82: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M33324_IG81: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[esi] ; GC ptr vars -{V00} mov dword ptr [ebp-0x18], 0
- jmp SHORT G_M33324_IG86
+ jmp SHORT G_M33324_IG85
;; size=9 bbWeight=1 PerfScore 3.00
-G_M33324_IG83: ; bbWeight=0, gcVars=00000000000000000000000000000001 {V00}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M33324_IG82: ; bbWeight=0, gcVars=00000000000000000000000000000001 {V00}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[eax] ; GC ptr vars +{V00} mov edx, eax @@ -1522,16 +1517,16 @@ G_M33324_IG83: ; bbWeight=0, gcVars=00000000000000000000000000000001 {V00 ; gcrRegs -[eax edx] ; byrRegs -[ecx esi] ...

-10 (-0.08%) : 28020.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)

@@ -9,18 +9,18 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] (145,450.50) ref -> ebx class-hnd single-def <System.IO.TextWriter>
-; V01 arg1 [V01,T198] ( 7, 5 ) ref -> [ebp-0x2A0] class-hnd single-def <MicroBenchmarks.Serializers.CollectionsOfPrimitives>
+; V01 arg1 [V01,T198] ( 7, 5 ) ref -> [ebp-0x29C] class-hnd single-def <MicroBenchmarks.Serializers.CollectionsOfPrimitives>
;* V02 arg2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
-; V03 loc0 [V03,T02] (133,212 ) ref -> [ebp-0x2A4] class-hnd exact spill-single-def <ushort[]> -; V04 loc1 [V04,T154] ( 7, 10.50) ref -> [ebp-0x2A8] class-hnd spill-single-def <ubyte[]>
+; V03 loc0 [V03,T02] (133,212 ) ref -> [ebp-0x2A0] class-hnd exact spill-single-def <ushort[]> +; V04 loc1 [V04,T154] ( 7, 10.50) ref -> [ebp-0x2A4] class-hnd spill-single-def <ubyte[]>
; V05 loc2 [V05,T17] ( 10, 29.50) int -> [ebp-0x10] ; V06 loc3 [V06,T13] ( 13, 41.50) int -> [ebp-0x14]
-; V07 loc4 [V07,T155] ( 7, 10.50) ref -> [ebp-0x2AC] class-hnd exact spill-single-def <System.DateTime[]>
+; V07 loc4 [V07,T155] ( 7, 10.50) ref -> [ebp-0x2A8] class-hnd exact spill-single-def <System.DateTime[]>
;* V08 loc5 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.DateTime>
-; V09 loc6 [V09,T314] ( 4, 2 ) ref -> [ebp-0x2B0] class-hnd spill-single-def <System.Collections.Generic.Dictionary`2[int,System.String]>
+; V09 loc6 [V09,T314] ( 4, 2 ) ref -> [ebp-0x2AC] class-hnd spill-single-def <System.Collections.Generic.Dictionary`2[int,System.String]>
; V10 loc7 [V10 ] ( 11, 16 ) struct (24) [ebp-0x2C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+Enumerator[int,System.String]> ;* V11 loc8 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Generic.KeyValuePair`2[int,System.String]>
-; V12 loc9 [V12,T200] ( 6, 6.50) ref -> [ebp-0x2B4] class-hnd spill-single-def <System.Collections.Generic.List`1[int]>
+; V12 loc9 [V12,T200] ( 6, 6.50) ref -> [ebp-0x2B0] class-hnd spill-single-def <System.Collections.Generic.List`1[int]>
; V13 tmp0 [V13,T18] ( 5, 28 ) int -> [ebp-0x30] spill-single-def "impAppendStmt" ;* V14 tmp1 [V14 ] ( 0, 0 ) ref -> zero-ref single-def ; V15 tmp2 [V15 ] ( 3, 3 ) struct ( 8) [ebp-0x38] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <System.DateTime> @@ -107,7 +107,7 @@ ;* V96 tmp83 [V96 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V97 tmp84 [V97 ] ( 4, 12 ) struct ( 8) [ebp-0xA0] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.DateTime> ;* V98 tmp85 [V98 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime>
-; V99 tmp86 [V99,T163] ( 4, 8 ) ref -> [ebp-0x2B8] class-hnd exact spill-single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
+; V99 tmp86 [V99,T163] ( 4, 8 ) ref -> [ebp-0x2B4] class-hnd exact spill-single-def "Inline stloc first use temp" <System.TimeZoneInfo+CachedData>
;* V100 tmp87 [V100 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.DateTime> ;* V101 tmp88 [V101 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V102 tmp89 [V102,T202] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" @@ -231,7 +231,7 @@ ; V220 tmp207 [V220,T194] ( 2, 8 ) int -> edx "Strict ordering of exceptions for Array store" ; V221 tmp208 [V221,T195] ( 2, 8 ) int -> edx "Strict ordering of exceptions for Array store" ; V222 tmp209 [V222,T15] ( 18, 34 ) long -> [ebp-0x154] do-not-enreg[F] "field V08._dateData (fldOffset=0x0)" P-INDEP
-; V223 tmp210 [V223,T44] ( 10, 22.50) ref -> [ebp-0x2BC] "field V11.value (fldOffset=0x0)" P-INDEP
+; V223 tmp210 [V223,T44] ( 10, 22.50) ref -> [ebp-0x2B8] "field V11.value (fldOffset=0x0)" P-INDEP
; V224 tmp211 [V224,T52] ( 10, 16.50) int -> [ebp-0x158] "field V11.key (fldOffset=0x4)" P-INDEP ; V225 tmp212 [V225,T321] ( 3, 2 ) long -> [ebp-0x38] do-not-enreg[H] hidden-struct-arg "field V15._dateData (fldOffset=0x0)" P-DEP ; V226 tmp213 [V226,T61] ( 5, 16 ) long -> [ebp-0x160] do-not-enreg[F] "field V16._dateData (fldOffset=0x0)" P-INDEP @@ -245,7 +245,7 @@ ; V234 tmp221 [V234,T359] ( 3, 1.50) long -> [ebp-0x178] do-not-enreg[F] single-def "field V70._dateData (fldOffset=0x0)" P-INDEP ;* V235 tmp222 [V235 ] ( 0, 0 ) long -> zero-ref single-def "field V71._ticks (fldOffset=0x0)" P-INDEP ;* V236 tmp223 [V236 ] ( 0, 0 ) long -> zero-ref "field V77._dateData (fldOffset=0x0)" P-INDEP
-; V237 tmp224 [V237,T315] ( 4, 2 ) byref -> [ebp-0x2C0] "field V78._reference (fldOffset=0x0)" P-INDEP
+; V237 tmp224 [V237,T315] ( 4, 2 ) byref -> [ebp-0x2BC] "field V78._reference (fldOffset=0x0)" P-INDEP
;* V238 tmp225 [V238,T386] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x4)" P-INDEP ;* V239 tmp226 [V239 ] ( 0, 0 ) byref -> zero-ref single-def "field V79._reference (fldOffset=0x0)" P-INDEP ;* V240 tmp227 [V240 ] ( 0, 0 ) int -> zero-ref single-def "field V79._length (fldOffset=0x4)" P-INDEP @@ -268,7 +268,7 @@ ; V257 tmp244 [V257,T112] ( 3, 12 ) long -> [ebp-0x198] do-not-enreg[F] "field V119._dateData (fldOffset=0x0)" P-INDEP ;* V258 tmp245 [V258 ] ( 0, 0 ) long -> zero-ref "field V120._ticks (fldOffset=0x0)" P-INDEP ;* V259 tmp246 [V259 ] ( 0, 0 ) long -> zero-ref "field V126._dateData (fldOffset=0x0)" P-INDEP
-; V260 tmp247 [V260,T75] ( 4, 12 ) byref -> [ebp-0x2C4] "field V127._reference (fldOffset=0x0)" P-INDEP
+; V260 tmp247 [V260,T75] ( 4, 12 ) byref -> [ebp-0x2C0] "field V127._reference (fldOffset=0x0)" P-INDEP
;* V261 tmp248 [V261,T226] ( 0, 0 ) int -> zero-ref "field V127._length (fldOffset=0x4)" P-INDEP ;* V262 tmp249 [V262 ] ( 0, 0 ) byref -> zero-ref "field V128._reference (fldOffset=0x0)" P-INDEP ;* V263 tmp250 [V263 ] ( 0, 0 ) int -> zero-ref "field V128._length (fldOffset=0x4)" P-INDEP @@ -297,31 +297,31 @@ ; V286 tmp273 [V286,T113] ( 3, 12 ) int -> [ebp-0x1AC] spill-single-def "fgMakeTemp is creating a new local variable" ; V287 tmp274 [V287,T114] ( 3, 12 ) int -> [ebp-0x1B0] spill-single-def "fgMakeTemp is creating a new local variable" ; V288 tmp275 [V288,T76] ( 3, 12 ) ref -> edx "arr expr"
-; V289 tmp276 [V289,T77] ( 3, 12 ) ref -> [ebp-0x2C8] spill-single-def "arr expr" -; V290 tmp277 [V290,T78] ( 3, 12 ) ref -> [ebp-0x2CC] spill-single-def "arr expr"
+; V289 tmp276 [V289,T77] ( 3, 12 ) ref -> [ebp-0x2C4] spill-single-def "arr expr" +; V290 tmp277 [V290,T78] ( 3, 12 ) ref -> [ebp-0x2C8] spill-single-def "arr expr"
; V291 tmp278 [V291,T79] ( 3, 12 ) ref -> eax "arr expr"
-; V292 tmp279 [V292,T80] ( 3, 12 ) ref -> [ebp-0x2D0] spill-single-def "arr expr" -; V293 tmp280 [V293,T81] ( 3, 12 ) ref -> [ebp-0x2D4] spill-single-def "arr expr"
+; V292 tmp279 [V292,T80] ( 3, 12 ) ref -> [ebp-0x2CC] spill-single-def "arr expr" +; V293 tmp280 [V293,T81] ( 3, 12 ) ref -> [ebp-0x2D0] spill-single-def "arr expr"
; V294 tmp281 [V294,T82] ( 3, 12 ) ref -> edx "arr expr" ; V295 tmp282 [V295,T83] ( 3, 12 ) ref -> edx "arr expr" ; V296 tmp283 [V296,T84] ( 3, 12 ) ref -> edx "arr expr"
-; V297 tmp284 [V297,T241] ( 3, 3 ) ref -> [ebp-0x2D8] spill-single-def "arr expr"
+; V297 tmp284 [V297,T241] ( 3, 3 ) ref -> [ebp-0x2D4] spill-single-def "arr expr"
; V298 tmp285 [V298,T242] ( 3, 3 ) byref -> eax single-def "BlockOp address local"
-; V299 tmp286 [V299,T243] ( 3, 3 ) ref -> [ebp-0x2DC] spill-single-def "arr expr"
+; V299 tmp286 [V299,T243] ( 3, 3 ) ref -> [ebp-0x2D8] spill-single-def "arr expr"
; V300 tmp287 [V300,T244] ( 3, 3 ) byref -> ecx single-def "BlockOp address local"
-; V301 tmp288 [V301,T245] ( 3, 3 ) ref -> [ebp-0x2E0] spill-single-def "arr expr"
+; V301 tmp288 [V301,T245] ( 3, 3 ) ref -> [ebp-0x2DC] spill-single-def "arr expr"
; V302 tmp289 [V302,T285] ( 3, 3 ) int -> eax "index expr" ; V303 tmp290 [V303,T246] ( 3, 3 ) byref -> ecx single-def "BlockOp address local"
-; V304 tmp291 [V304,T247] ( 3, 3 ) ref -> [ebp-0x2E4] spill-single-def "arr expr"
+; V304 tmp291 [V304,T247] ( 3, 3 ) ref -> [ebp-0x2E0] spill-single-def "arr expr"
; V305 tmp292 [V305,T286] ( 3, 3 ) int -> eax "index expr" ; V306 tmp293 [V306,T248] ( 3, 3 ) byref -> eax single-def "BlockOp address local"
-; V307 tmp294 [V307,T249] ( 3, 3 ) ref -> [ebp-0x2E8] spill-single-def "arr expr"
+; V307 tmp294 [V307,T249] ( 3, 3 ) ref -> [ebp-0x2E4] spill-single-def "arr expr"
; V308 tmp295 [V308,T287] ( 3, 3 ) int -> ecx "index expr" ; V309 tmp296 [V309,T250] ( 3, 3 ) byref -> eax single-def "BlockOp address local"
-; V310 tmp297 [V310,T251] ( 3, 3 ) ref -> [ebp-0x2EC] spill-single-def "arr expr"
+; V310 tmp297 [V310,T251] ( 3, 3 ) ref -> [ebp-0x2E8] spill-single-def "arr expr"
; V311 tmp298 [V311,T288] ( 3, 3 ) int -> edx "index expr" ; V312 tmp299 [V312,T252] ( 3, 3 ) byref -> eax single-def "BlockOp address local"
-; V313 tmp300 [V313,T253] ( 3, 3 ) ref -> [ebp-0x2F0] spill-single-def "arr expr"
+; V313 tmp300 [V313,T253] ( 3, 3 ) ref -> [ebp-0x2EC] spill-single-def "arr expr"
; V314 tmp301 [V314,T289] ( 3, 3 ) int -> edx "index expr" ; V315 tmp302 [V315,T254] ( 3, 3 ) byref -> ecx single-def "BlockOp address local" ; V316 tmp303 [V316,T255] ( 3, 3 ) ref -> edx single-def "arr expr" @@ -330,23 +330,23 @@ ; V319 tmp306 [V319,T258] ( 3, 3 ) byref -> eax single-def "BlockOp address local" ; V320 tmp307 [V320,T259] ( 3, 3 ) ref -> ecx single-def "arr expr" ; V321 tmp308 [V321,T260] ( 3, 3 ) byref -> ecx single-def "BlockOp address local"
-; V322 tmp309 [V322,T21] ( 3, 24 ) ref -> [ebp-0x2F4] spill-single-def "arr expr"
+; V322 tmp309 [V322,T21] ( 3, 24 ) ref -> [ebp-0x2F0] spill-single-def "arr expr"
; V323 tmp310 [V323,T22] ( 3, 24 ) byref -> eax "BlockOp address local"
-; V324 tmp311 [V324,T23] ( 3, 24 ) ref -> [ebp-0x2F8] spill-single-def "arr expr"
+; V324 tmp311 [V324,T23] ( 3, 24 ) ref -> [ebp-0x2F4] spill-single-def "arr expr"
; V325 tmp312 [V325,T24] ( 3, 24 ) byref -> ecx "BlockOp address local"
-; V326 tmp313 [V326,T25] ( 3, 24 ) ref -> [ebp-0x2FC] spill-single-def "arr expr"
+; V326 tmp313 [V326,T25] ( 3, 24 ) ref -> [ebp-0x2F8] spill-single-def "arr expr"
; V327 tmp314 [V327,T39] ( 3, 24 ) int -> eax "index expr" ; V328 tmp315 [V328,T26] ( 3, 24 ) byref -> ecx "BlockOp address local"
-; V329 tmp316 [V329,T27] ( 3, 24 ) ref -> [ebp-0x300] spill-single-def "arr expr"
+; V329 tmp316 [V329,T27] ( 3, 24 ) ref -> [ebp-0x2FC] spill-single-def "arr expr"
; V330 tmp317 [V330,T40] ( 3, 24 ) int -> eax "index expr" ; V331 tmp318 [V331,T28] ( 3, 24 ) byref -> eax "BlockOp address local"
-; V332 tmp319 [V332,T29] ( 3, 24 ) ref -> [ebp-0x304] spill-single-def "arr expr"
+; V332 tmp319 [V332,T29] ( 3, 24 ) ref -> [ebp-0x300] spill-single-def "arr expr"
; V333 tmp320 [V333,T41] ( 3, 24 ) int -> ecx "index expr" ; V334 tmp321 [V334,T30] ( 3, 24 ) byref -> eax "BlockOp address local"
-; V335 tmp322 [V335,T31] ( 3, 24 ) ref -> [ebp-0x308] spill-single-def "arr expr"
+; V335 tmp322 [V335,T31] ( 3, 24 ) ref -> [ebp-0x304] spill-single-def "arr expr"
; V336 tmp323 [V336,T42] ( 3, 24 ) int -> edx "index expr" ; V337 tmp324 [V337,T32] ( 3, 24 ) byref -> eax "BlockOp address local"
-; V338 tmp325 [V338,T33] ( 3, 24 ) ref -> [ebp-0x30C] spill-single-def "arr expr"
+; V338 tmp325 [V338,T33] ( 3, 24 ) ref -> [ebp-0x308] spill-single-def "arr expr"
; V339 tmp326 [V339,T43] ( 3, 24 ) int -> edx "index expr" ; V340 tmp327 [V340,T34] ( 3, 24 ) byref -> ecx "BlockOp address local" ; V341 tmp328 [V341,T85] ( 3, 12 ) ref -> edx "arr expr" @@ -370,11 +370,11 @@ ; V359 tmp346 [V359,T115] ( 3, 12 ) int -> [ebp-0x1BC] spill-single-def "fgMakeTemp is creating a new local variable" ; V360 tmp347 [V360,T116] ( 3, 12 ) int -> [ebp-0x1C0] spill-single-def "fgMakeTemp is creating a new local variable" ; V361 tmp348 [V361,T91] ( 3, 12 ) ref -> edx "arr expr"
-; V362 tmp349 [V362,T92] ( 3, 12 ) ref -> [ebp-0x310] spill-single-def "arr expr" -; V363 tmp350 [V363,T93] ( 3, 12 ) ref -> [ebp-0x314] spill-single-def "arr expr"
+; V362 tmp349 [V362,T92] ( 3, 12 ) ref -> [ebp-0x30C] spill-single-def "arr expr" +; V363 tmp350 [V363,T93] ( 3, 12 ) ref -> [ebp-0x310] spill-single-def "arr expr"
; V364 tmp351 [V364,T94] ( 3, 12 ) ref -> eax "arr expr"
-; V365 tmp352 [V365,T95] ( 3, 12 ) ref -> [ebp-0x318] spill-single-def "arr expr" -; V366 tmp353 [V366,T96] ( 3, 12 ) ref -> [ebp-0x31C] spill-single-def "arr expr"
+; V365 tmp352 [V365,T95] ( 3, 12 ) ref -> [ebp-0x314] spill-single-def "arr expr" +; V366 tmp353 [V366,T96] ( 3, 12 ) ref -> [ebp-0x318] spill-single-def "arr expr"
; V367 tmp354 [V367,T97] ( 3, 12 ) ref -> ecx "arr expr" ; V368 tmp355 [V368,T98] ( 3, 12 ) ref -> ecx "arr expr" ; V369 tmp356 [V369,T99] ( 3, 12 ) ref -> ecx "arr expr" @@ -393,11 +393,11 @@ ; V382 tmp369 [V382,T117] ( 3, 12 ) int -> [ebp-0x1CC] spill-single-def "fgMakeTemp is creating a new local variable" ; V383 tmp370 [V383,T118] ( 3, 12 ) int -> [ebp-0x1D0] spill-single-def "fgMakeTemp is creating a new local variable" ; V384 tmp371 [V384,T100] ( 3, 12 ) ref -> edx "arr expr"
-; V385 tmp372 [V385,T101] ( 3, 12 ) ref -> [ebp-0x320] spill-single-def "arr expr" -; V386 tmp373 [V386,T102] ( 3, 12 ) ref -> [ebp-0x324] spill-single-def "arr expr"
+; V385 tmp372 [V385,T101] ( 3, 12 ) ref -> [ebp-0x31C] spill-single-def "arr expr" +; V386 tmp373 [V386,T102] ( 3, 12 ) ref -> [ebp-0x320] spill-single-def "arr expr"
; V387 tmp374 [V387,T103] ( 3, 12 ) ref -> edx "arr expr"
-; V388 tmp375 [V388,T104] ( 3, 12 ) ref -> [ebp-0x328] spill-single-def "arr expr" -; V389 tmp376 [V389,T105] ( 3, 12 ) ref -> [ebp-0x32C] spill-single-def "arr expr"
+; V388 tmp375 [V388,T104] ( 3, 12 ) ref -> [ebp-0x324] spill-single-def "arr expr" +; V389 tmp376 [V389,T105] ( 3, 12 ) ref -> [ebp-0x328] spill-single-def "arr expr"
; V390 tmp377 [V390,T106] ( 3, 12 ) ref -> edx "arr expr" ; V391 tmp378 [V391,T107] ( 3, 12 ) ref -> edx "arr expr" ; V392 tmp379 [V392,T108] ( 3, 12 ) ref -> edx "arr expr" @@ -421,76 +421,76 @@ ;* V410 cse17 [V410 ] ( 0, 0 ) long -> zero-ref "CSE - conservative" ; V411 cse18 [V411,T01] (109,396.50) int -> [ebp-0x1E4] multi-def "CSE - aggressive" ; V412 cse19 [V412,T07] ( 38, 54 ) int -> [ebp-0x1E8] multi-def "CSE - moderate"
-; V413 cse20 [V413,T62] ( 4, 16 ) ref -> [ebp-0x330] spill-single-def "CSE - conservative" -; V414 cse21 [V414,T316] ( 4, 2 ) ref -> [ebp-0x334] spill-single-def "CSE - conservative" -; V415 rat0 [V415,T368] ( 3, 1.50) int -> [ebp-0x1EC] spill-single-def "field V51.lo (fldOffset=0x0)" P-INDEP -; V416 rat1 [V416,T369] ( 3, 1.50) int -> eax "field V51.hi (fldOffset=0x4)" P-INDEP -; V417 rat2 [V417,T221] ( 8, 4 ) int -> [ebp-0x1F0] "field V72.lo (fldOffset=0x0)" P-INDEP -; V418 rat3 [V418,T231] ( 7, 3.50) int -> [ebp-0x1F4] "field V72.hi (fldOffset=0x4)" P-INDEP -; V419 rat4 [V419,T213] ( 9, 4.50) int -> [ebp-0x1F8] "field V74.lo (fldOffset=0x0)" P-INDEP -; V420 rat5 [V420,T214] ( 9, 4.50) int -> [ebp-0x1FC] "field V74.hi (fldOffset=0x4)" P-INDEP -; V421 rat6 [V421,T370] ( 2, 1.50) int -> [ebp-0x200] spill-single-def "field V76.lo (fldOffset=0x0)" P-INDEP -; V422 rat7 [V422,T371] ( 2, 1.50) int -> [ebp-0x204] spill-single-def "field V76.hi (fldOffset=0x4)" P-INDEP -; V423 rat8 [V423,T158] ( 3, 10 ) int -> ecx "field V92.lo (fldOffset=0x0)" P-INDEP -; V424 rat9 [V424,T159] ( 3, 10 ) int -> eax "field V92.hi (fldOffset=0x4)" P-INDEP
+; V413 cse20 [V413,T62] ( 4, 16 ) ref -> [ebp-0x32C] spill-single-def "CSE - conservative" +; V414 cse21 [V414,T316] ( 4, 2 ) ref -> [ebp-0x330] spill-single-def "CSE - conservative" +; V415 rat0 [V415,T368] ( 2, 1 ) int -> ecx "field V51.lo (fldOffset=0x0)" P-INDEP +; V416 rat1 [V416,T369] ( 2, 1 ) int -> eax "field V51.hi (fldOffset=0x4)" P-INDEP +; V417 rat2 [V417,T221] ( 8, 4 ) int -> [ebp-0x1EC] "field V72.lo (fldOffset=0x0)" P-INDEP +; V418 rat3 [V418,T231] ( 7, 3.50) int -> [ebp-0x1F0] "field V72.hi (fldOffset=0x4)" P-INDEP +; V419 rat4 [V419,T213] ( 9, 4.50) int -> [ebp-0x1F4] "field V74.lo (fldOffset=0x0)" P-INDEP +; V420 rat5 [V420,T214] ( 9, 4.50) int -> [ebp-0x1F8] "field V74.hi (fldOffset=0x4)" P-INDEP +; V421 rat6 [V421,T370] ( 2, 1.50) int -> [ebp-0x1FC] spill-single-def "field V76.lo (fldOffset=0x0)" P-INDEP +; V422 rat7 [V422,T371] ( 2, 1.50) int -> [ebp-0x200] spill-single-def "field V76.hi (fldOffset=0x4)" P-INDEP +; V423 rat8 [V423,T158] ( 2, 8 ) int -> ecx "field V92.lo (fldOffset=0x0)" P-INDEP +; V424 rat9 [V424,T159] ( 2, 8 ) int -> eax "field V92.hi (fldOffset=0x4)" P-INDEP
; V425 rat10 [V425,T160] ( 3, 10 ) int -> ecx "field V101.lo (fldOffset=0x0)" P-INDEP ; V426 rat11 [V426,T161] ( 3, 10 ) int -> eax "field V101.hi (fldOffset=0x4)" P-INDEP
-; V427 rat12 [V427,T59] ( 8, 16 ) int -> [ebp-0x208] "field V121.lo (fldOffset=0x0)" P-INDEP -; V428 rat13 [V428,T71] ( 7, 14 ) int -> [ebp-0x20C] "field V121.hi (fldOffset=0x4)" P-INDEP -; V429 rat14 [V429,T50] ( 9, 18 ) int -> [ebp-0x210] "field V123.lo (fldOffset=0x0)" P-INDEP -; V430 rat15 [V430,T51] ( 9, 18 ) int -> [ebp-0x214] "field V123.hi (fldOffset=0x4)" P-INDEP -; V431 rat16 [V431,T140] ( 2, 12 ) int -> [ebp-0x218] spill-single-def "field V125.lo (fldOffset=0x0)" P-INDEP -; V432 rat17 [V432,T141] ( 2, 12 ) int -> [ebp-0x21C] spill-single-def "field V125.hi (fldOffset=0x4)" P-INDEP -; V433 rat18 [V433,T64] ( 4, 16 ) int -> [ebp-0x220] spill-single-def "field V409.lo (fldOffset=0x0)" P-INDEP -; V434 rat19 [V434,T65] ( 4, 16 ) int -> [ebp-0x224] spill-single-def "field V409.hi (fldOffset=0x4)" P-INDEP -; V435 rat20 [V435,T319] ( 4, 2 ) int -> [ebp-0x228] spill-single-def "field V410.lo (fldOffset=0x0)" P-INDEP -; V436 rat21 [V436,T320] ( 4, 2 ) int -> [ebp-0x22C] spill-single-def "field V410.hi (fldOffset=0x4)" P-INDEP
+; V427 rat12 [V427,T59] ( 8, 16 ) int -> [ebp-0x204] "field V121.lo (fldOffset=0x0)" P-INDEP +; V428 rat13 [V428,T71] ( 7, 14 ) int -> [ebp-0x208] "field V121.hi (fldOffset=0x4)" P-INDEP +; V429 rat14 [V429,T50] ( 9, 18 ) int -> [ebp-0x20C] "field V123.lo (fldOffset=0x0)" P-INDEP +; V430 rat15 [V430,T51] ( 9, 18 ) int -> [ebp-0x210] "field V123.hi (fldOffset=0x4)" P-INDEP +; V431 rat16 [V431,T140] ( 2, 12 ) int -> [ebp-0x214] spill-single-def "field V125.lo (fldOffset=0x0)" P-INDEP +; V432 rat17 [V432,T141] ( 2, 12 ) int -> [ebp-0x218] spill-single-def "field V125.hi (fldOffset=0x4)" P-INDEP +; V433 rat18 [V433,T64] ( 4, 16 ) int -> [ebp-0x21C] spill-single-def "field V409.lo (fldOffset=0x0)" P-INDEP +; V434 rat19 [V434,T65] ( 4, 16 ) int -> [ebp-0x220] spill-single-def "field V409.hi (fldOffset=0x4)" P-INDEP +; V435 rat20 [V435,T319] ( 4, 2 ) int -> [ebp-0x224] spill-single-def "field V410.lo (fldOffset=0x0)" P-INDEP +; V436 rat21 [V436,T320] ( 4, 2 ) int -> [ebp-0x228] spill-single-def "field V410.hi (fldOffset=0x4)" P-INDEP
; V437 rat22 [V437,T295] ( 3, 3 ) int -> edx "ReplaceWithLclVar is creating a new local variable" ; V438 rat23 [V438,T296] ( 3, 3 ) int -> edx "ReplaceWithLclVar is creating a new local variable" ; V439 rat24 [V439,T122] ( 3, 12 ) int -> edx "ReplaceWithLclVar is creating a new local variable" ; V440 rat25 [V440,T123] ( 3, 12 ) int -> edx "ReplaceWithLclVar is creating a new local variable"
-; V441 rat26 [V441,T279] ( 3, 3 ) byref -> [ebp-0x338] spill-single-def "ReplaceWithLclVar is creating a new local variable" -; V442 rat27 [V442 ] ( 1, 1 ) long -> [ebp-0x234] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V441 rat26 [V441,T279] ( 3, 3 ) byref -> [ebp-0x334] spill-single-def "ReplaceWithLclVar is creating a new local variable" +; V442 rat27 [V442 ] ( 1, 1 ) long -> [ebp-0x230] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V443 rat28 [V443,T322] ( 3, 2 ) int -> ecx "field V442.lo (fldOffset=0x0)" P-INDEP ; V444 rat29 [V444,T388] ( 1, 1 ) int -> edx "field V442.hi (fldOffset=0x4)" P-INDEP
-; V445 rat30 [V445 ] ( 1, 1 ) long -> [ebp-0x23C] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V445 rat30 [V445 ] ( 1, 1 ) long -> [ebp-0x238] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V446 rat31 [V446,T372] ( 2, 1.50) int -> eax "field V445.lo (fldOffset=0x0)" P-INDEP ; V447 rat32 [V447,T373] ( 2, 1.50) int -> edx "field V445.hi (fldOffset=0x4)" P-INDEP
-; V448 rat33 [V448 ] ( 1, 1 ) long -> [ebp-0x244] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V448 rat33 [V448 ] ( 1, 1 ) long -> [ebp-0x240] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V449 rat34 [V449,T374] ( 2, 1.50) int -> eax "field V448.lo (fldOffset=0x0)" P-INDEP ; V450 rat35 [V450,T375] ( 2, 1.50) int -> edx "field V448.hi (fldOffset=0x4)" P-INDEP
-; V451 rat36 [V451 ] ( 1, 1 ) long -> [ebp-0x24C] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V451 rat36 [V451 ] ( 1, 1 ) long -> [ebp-0x248] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V452 rat37 [V452,T323] ( 3, 2 ) int -> ecx "field V451.lo (fldOffset=0x0)" P-INDEP ; V453 rat38 [V453,T389] ( 1, 1 ) int -> edx "field V451.hi (fldOffset=0x4)" P-INDEP
-; V454 rat39 [V454 ] ( 1, 1 ) long -> [ebp-0x254] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V454 rat39 [V454 ] ( 1, 1 ) long -> [ebp-0x250] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V455 rat40 [V455,T376] ( 2, 1.50) int -> eax "field V454.lo (fldOffset=0x0)" P-INDEP ; V456 rat41 [V456,T377] ( 2, 1.50) int -> edx "field V454.hi (fldOffset=0x4)" P-INDEP
-; V457 rat42 [V457 ] ( 1, 1 ) long -> [ebp-0x25C] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V457 rat42 [V457 ] ( 1, 1 ) long -> [ebp-0x258] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V458 rat43 [V458,T378] ( 2, 1.50) int -> eax "field V457.lo (fldOffset=0x0)" P-INDEP ; V459 rat44 [V459,T379] ( 2, 1.50) int -> edx "field V457.hi (fldOffset=0x4)" P-INDEP
-; V460 rat45 [V460 ] ( 1, 1 ) long -> [ebp-0x264] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V460 rat45 [V460 ] ( 1, 1 ) long -> [ebp-0x260] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V461 rat46 [V461,T380] ( 2, 1.50) int -> eax "field V460.lo (fldOffset=0x0)" P-INDEP ...

coreclr_tests.run.windows.x86.checked.mch

-43 (-60.56%) : 230235.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_1():float (FullOpts)

@@ -2,58 +2,34 @@ ; 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; 5 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T00] ( 6, 4.50) float -> mm0 single-def -; V01 tmp0 [V01,T01] ( 2, 4 ) float -> mm0 "Single return block return value" -; V02 cse0 [V02,T02] ( 5, 3.50) float -> mm1 "CSE - aggressive" -; TEMP_01 float -> [ebp-0x04]
+;* V00 loc0 [V00 ] ( 0, 0 ) float -> zero-ref +; V01 tmp0 [V01,T00] ( 2, 4 ) float -> mm0 "Single return block return value" +; TEMP_01 float -> [esp+0x00]
; ; Lcl frame size = 4 G_M53791_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp
push eax vzeroupper
- ;; size=7 bbWeight=1 PerfScore 3.25 -G_M53791_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=4 bbWeight=1 PerfScore 2.00 +G_M53791_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call [Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float]
- fstp dword ptr [ebp-0x04] - vmovss xmm0, dword ptr [ebp-0x04] - vmovss xmm1, dword ptr [@RWD00] - vucomiss xmm0, xmm1 - jbe SHORT G_M53791_IG04 - ;; size=28 bbWeight=1 PerfScore 12.50 -G_M53791_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M53791_IG05 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M53791_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - vucomiss xmm1, xmm0 - ja SHORT G_M53791_IG03 - vucomiss xmm0, xmm1 - jp SHORT G_M53791_IG03 - jne SHORT G_M53791_IG03 - vucomiss xmm1, xmm0 - jbe SHORT G_M53791_IG03 - jmp SHORT G_M53791_IG03 - ;; size=22 bbWeight=0.50 PerfScore 6.00 -G_M53791_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - vmovss dword ptr [ebp-0x04], xmm0 - fld dword ptr [ebp-0x04] - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M53791_IG06: ; bbWeight=1, epilog, nogc, extend - mov esp, ebp - pop ebp
+ fstp dword ptr [esp] + vmovss xmm0, dword ptr [esp] + vmovss dword ptr [esp], xmm0 + fld dword ptr [esp] + ;; size=22 bbWeight=1 PerfScore 8.00 +G_M53791_IG03: ; bbWeight=1, epilog, nogc, extend + pop ecx
ret
- ;; size=4 bbWeight=1 PerfScore 1.75 -RWD00 dd 41200000h ; 10
+ ;; size=2 bbWeight=1 PerfScore 1.50
- -Total bytes of code 71, prolog size 7, PerfScore 27.00, instruction count 24, allocated bytes for code 71 (MethodHash=03ff2de0) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+Total bytes of code 28, prolog size 4, PerfScore 11.50, instruction count 9, allocated bytes for code 32 (MethodHash=03ff2de0) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================

-35 (-55.56%) : 226111.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111_1():float (FullOpts)

@@ -2,54 +2,36 @@ ; 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; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T00] ( 5, 4 ) float -> mm0 single-def
+; V00 loc0 [V00,T00] ( 2, 2 ) float -> mm0 single-def
;* V01 loc1 [V01 ] ( 0, 0 ) float -> zero-ref ;* V02 loc2 [V02 ] ( 0, 0 ) float -> zero-ref
-; V03 cse0 [V03,T01] ( 4, 3 ) float -> mm1 "CSE - aggressive" -; TEMP_01 float -> [ebp-0x04]
+;* V03 cse0 [V03,T01] ( 0, 0 ) float -> zero-ref "CSE - aggressive" +; TEMP_01 float -> [esp+0x00]
; ; Lcl frame size = 4 G_M53663_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp
push eax vzeroupper
- ;; size=7 bbWeight=1 PerfScore 3.25 -G_M53663_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=4 bbWeight=1 PerfScore 2.00 +G_M53663_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call [Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float]
- fstp dword ptr [ebp-0x04] - vmovss xmm0, dword ptr [ebp-0x04] - vmovss xmm1, dword ptr [@RWD00] - vucomiss xmm1, xmm0 - jbe SHORT G_M53663_IG05 - ;; size=28 bbWeight=1 PerfScore 12.50 -G_M53663_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - vmovss dword ptr [ebp-0x04], xmm0 - fld dword ptr [ebp-0x04] - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M53663_IG04: ; bbWeight=1, epilog, nogc, extend - mov esp, ebp - pop ebp
+ fstp dword ptr [esp] + vmovss xmm0, dword ptr [esp] + vmovss dword ptr [esp], xmm0 + fld dword ptr [esp] + ;; size=22 bbWeight=1 PerfScore 8.00 +G_M53663_IG03: ; bbWeight=1, epilog, nogc, extend + pop ecx
ret
- ;; size=4 bbWeight=1 PerfScore 1.75 -G_M53663_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz - vucomiss xmm0, xmm1 - jp SHORT G_M53663_IG03 - jne SHORT G_M53663_IG03 - vucomiss xmm0, xmm1 - jbe SHORT G_M53663_IG03 - jmp SHORT G_M53663_IG03 - ;; size=16 bbWeight=0.50 PerfScore 4.50 -RWD00 dd 41200000h ; 10
+ ;; size=2 bbWeight=1 PerfScore 1.50
- -Total bytes of code 63, prolog size 7, PerfScore 23.50, instruction count 21, allocated bytes for code 63 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+Total bytes of code 28, prolog size 4, PerfScore 11.50, instruction count 9, allocated bytes for code 32 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================

-29 (-50.88%) : 230183.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111_1():float (FullOpts)

@@ -2,50 +2,33 @@ ; 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; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T00] ( 4, 3.50) float -> mm0 single-def -; V01 cse0 [V01,T01] ( 3, 2.50) float -> mm1 "CSE - aggressive" -; TEMP_01 float -> [ebp-0x04]
+;* V00 loc0 [V00 ] ( 0, 0 ) float -> zero-ref +; TEMP_01 float -> [esp+0x00]
; ; Lcl frame size = 4 G_M53663_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp
push eax vzeroupper
- ;; size=7 bbWeight=1 PerfScore 3.25 -G_M53663_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ;; size=4 bbWeight=1 PerfScore 2.00 +G_M53663_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call [Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float]
- fstp dword ptr [ebp-0x04] - vmovss xmm0, dword ptr [ebp-0x04] - vmovss xmm1, dword ptr [@RWD00] - vucomiss xmm1, xmm0 - jbe SHORT G_M53663_IG05 - ;; size=28 bbWeight=1 PerfScore 12.50 -G_M53663_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - vmovss dword ptr [ebp-0x04], xmm0 - fld dword ptr [ebp-0x04] - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M53663_IG04: ; bbWeight=1, epilog, nogc, extend - mov esp, ebp - pop ebp
+ fstp dword ptr [esp] + vmovss xmm0, dword ptr [esp] + vmovss dword ptr [esp], xmm0 + fld dword ptr [esp] + ;; size=22 bbWeight=1 PerfScore 8.00 +G_M53663_IG03: ; bbWeight=1, epilog, nogc, extend + pop ecx
ret
- ;; size=4 bbWeight=1 PerfScore 1.75 -G_M53663_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz - vucomiss xmm0, xmm1 - jp SHORT G_M53663_IG03 - jne SHORT G_M53663_IG03 - jmp SHORT G_M53663_IG03 - ;; size=10 bbWeight=0.50 PerfScore 3.00 -RWD00 dd 41200000h ; 10
+ ;; size=2 bbWeight=1 PerfScore 1.50
- -Total bytes of code 57, prolog size 7, PerfScore 22.00, instruction count 19, allocated bytes for code 57 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+Total bytes of code 28, prolog size 4, PerfScore 11.50, instruction count 9, allocated bytes for code 32 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================

+7 (+4.90%) : 15776.dasm - testout1:SubFunclet183():int (FullOpts)

@@ -15,55 +15,55 @@ ;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref ; V05 loc5 [V05,T01] ( 4, 4 ) ref -> esi class-hnd exact single-def <testout1> ;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V07 loc7 [V07,T05] ( 3, 3 ) ref -> eax class-hnd exact single-def <<unknown class>>
+; V07 loc7 [V07,T04] ( 3, 3 ) ref -> eax class-hnd exact single-def <<unknown class>>
; V08 loc8 [V08,T00] ( 6, 6 ) ref -> eax class-hnd exact single-def <<unknown class>> ;* V09 tmp0 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1> ;* V10 tmp1 [V10 ] ( 0, 0 ) int -> zero-ref single-def ;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref ;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref
-; V13 tmp4 [V13,T08] ( 2, 2 ) int -> edx single-def
+; V13 tmp4 [V13,T09] ( 2, 2 ) int -> ecx single-def
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref ;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref
-; V16 tmp7 [V16,T09] ( 2, 2 ) int -> edx single-def
+; V16 tmp7 [V16,T10] ( 2, 2 ) int -> ecx single-def
;* V17 tmp8 [V17 ] ( 0, 0 ) int -> zero-ref ;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref
-; V19 tmp10 [V19,T10] ( 2, 2 ) int -> edx single-def
+; V19 tmp10 [V19,T11] ( 2, 2 ) int -> ecx single-def
;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref ;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref
-; V22 tmp13 [V22,T11] ( 2, 2 ) int -> edx single-def
+;* V22 tmp13 [V22,T12] ( 0, 0 ) int -> zero-ref single-def
;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref ;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref
-; V25 tmp16 [V25,T12] ( 2, 2 ) int -> edx single-def
+;* V25 tmp16 [V25,T13] ( 0, 0 ) int -> zero-ref single-def
;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref ;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
-;* V28 tmp19 [V28,T13] ( 0, 0 ) int -> zero-ref single-def
+;* V28 tmp19 [V28 ] ( 0, 0 ) int -> zero-ref
;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref ;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref ;* V31 tmp22 [V31,T22] ( 0, 0 ) int -> zero-ref single-def ;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref ;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
-;* V34 tmp25 [V34,T14] ( 0, 0 ) int -> zero-ref single-def
+; V34 tmp25 [V34,T14] ( 2, 2 ) int -> ecx single-def
;* V35 tmp26 [V35 ] ( 0, 0 ) int -> zero-ref ;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref
-;* V37 tmp28 [V37,T15] ( 0, 0 ) int -> zero-ref single-def
+; V37 tmp28 [V37,T15] ( 2, 2 ) int -> edx single-def
;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref ;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref
-;* V40 tmp31 [V40,T16] ( 0, 0 ) int -> zero-ref single-def
+; V40 tmp31 [V40,T16] ( 2, 2 ) int -> edx single-def
;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref ;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref
-;* V43 tmp34 [V43,T23] ( 0, 0 ) int -> zero-ref single-def
+; V43 tmp34 [V43,T17] ( 2, 2 ) int -> edx single-def
;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref ;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref
-; V46 tmp37 [V46,T17] ( 2, 2 ) int -> edx single-def
+; V46 tmp37 [V46,T18] ( 2, 2 ) int -> eax single-def
;* V47 tmp38 [V47 ] ( 0, 0 ) int -> zero-ref ;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref
-; V49 tmp40 [V49,T18] ( 2, 2 ) int -> edx single-def
+; V49 tmp40 [V49,T19] ( 2, 2 ) int -> eax single-def
;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref ;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref
-;* V52 tmp43 [V52,T19] ( 0, 0 ) int -> zero-ref single-def
+;* V52 tmp43 [V52,T23] ( 0, 0 ) int -> zero-ref single-def
;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref ;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
-;* V55 tmp46 [V55,T24] ( 0, 0 ) int -> zero-ref single-def
+;* V55 tmp46 [V55 ] ( 0, 0 ) int -> zero-ref
;* V56 tmp47 [V56 ] ( 0, 0 ) int -> zero-ref ;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref ;* V58 tmp49 [V58,T20] ( 0, 0 ) int -> zero-ref single-def @@ -72,17 +72,18 @@ ;* V61 tmp52 [V61,T21] ( 0, 0 ) int -> zero-ref single-def ;* V62 tmp53 [V62 ] ( 0, 0 ) int -> zero-ref ;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref
-;* V64 tmp55 [V64,T25] ( 0, 0 ) int -> zero-ref single-def
+;* V64 tmp55 [V64,T24] ( 0, 0 ) int -> zero-ref single-def
;* V65 tmp56 [V65 ] ( 0, 0 ) int -> zero-ref ;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref
-;* V67 tmp58 [V67,T26] ( 0, 0 ) int -> zero-ref single-def
+;* V67 tmp58 [V67,T25] ( 0, 0 ) int -> zero-ref single-def
;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref ;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref
-; V70 cse0 [V70,T06] ( 2, 2 ) int -> edx "CSE - aggressive" -; V71 cse1 [V71,T02] ( 2, 2 ) int -> edx "CSE - aggressive"
+; V70 cse0 [V70,T05] ( 2, 2 ) int -> ecx "CSE - aggressive" +; V71 cse1 [V71,T06] ( 2, 2 ) int -> eax "CSE - aggressive"
; V72 cse2 [V72,T07] ( 2, 2 ) int -> eax "CSE - aggressive"
-; V73 cse3 [V73,T03] ( 2, 2 ) int -> ecx "CSE - aggressive" -; V74 cse4 [V74,T04] ( 2, 2 ) int -> edx "CSE - aggressive"
+; V73 cse3 [V73,T02] ( 3, 3 ) int -> esi "CSE - aggressive" +; V74 cse4 [V74,T03] ( 3, 3 ) int -> edx "CSE - aggressive" +; V75 cse5 [V75,T08] ( 3, 3 ) int -> eax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -114,22 +115,27 @@ G_M39164_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov dword ptr [esi+0x04], -13 mov word ptr [esi+0x08], 256 mov edx, dword ptr [esi+0x04]
- add edx, 17 - mov ecx, dword ptr [eax+0x0C] - add edx, ecx - add edx, dword ptr [eax+0x08] - add edx, 3 - add edx, -5 - add edx, 3 - lea eax, [edx-0x05]
+ mov ecx, edx + add ecx, 17 + mov esi, dword ptr [eax+0x0C] + ; gcrRegs -[esi] + add ecx, esi + mov eax, dword ptr [eax+0x08]
; gcrRegs -[eax]
- ;; size=136 bbWeight=1 PerfScore 23.25
+ add ecx, eax + add edx, ecx + add edx, 17 + add edx, esi + add eax, edx + add eax, 3 + add eax, -5 + ;; size=143 bbWeight=1 PerfScore 23.00
G_M39164_IG03: ; bbWeight=1, epilog, nogc, extend pop esi pop ebp ret ;; size=3 bbWeight=1 PerfScore 2.00
-Total bytes of code 143, prolog size 4, PerfScore 27.50, instruction count 34, allocated bytes for code 143 (MethodHash=17766703) for method testout1:Sub_Funclet_183():int (FullOpts)
+Total bytes of code 150, prolog size 4, PerfScore 27.25, instruction count 38, allocated bytes for code 150 (MethodHash=17766703) for method testout1:Sub_Funclet_183():int (FullOpts)
; ============================================================

+7 (+5.11%) : 16117.dasm - testout1:SubFunclet106():int (FullOpts)

@@ -18,7 +18,7 @@ ;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref single-def ;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref ;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref
-;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref single-def
+;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref
;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref ;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref ;* V13 tmp8 [V13 ] ( 0, 0 ) int -> zero-ref single-def @@ -30,55 +30,56 @@ ;* V19 tmp14 [V19,T19] ( 0, 0 ) int -> zero-ref single-def ;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref ;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref
-; V22 tmp17 [V22,T07] ( 2, 2 ) int -> edx single-def
+; V22 tmp17 [V22,T08] ( 2, 2 ) int -> ecx single-def
;* V23 tmp18 [V23 ] ( 0, 0 ) int -> zero-ref ;* V24 tmp19 [V24 ] ( 0, 0 ) int -> zero-ref
-; V25 tmp20 [V25,T08] ( 2, 2 ) int -> edx single-def
+; V25 tmp20 [V25,T09] ( 2, 2 ) int -> ecx single-def
;* V26 tmp21 [V26 ] ( 0, 0 ) int -> zero-ref ;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref
-; V28 tmp23 [V28,T09] ( 2, 2 ) int -> edx single-def
+; V28 tmp23 [V28,T10] ( 2, 2 ) int -> ecx single-def
;* V29 tmp24 [V29 ] ( 0, 0 ) int -> zero-ref ;* V30 tmp25 [V30 ] ( 0, 0 ) int -> zero-ref
-; V31 tmp26 [V31,T10] ( 2, 2 ) int -> edx single-def
+;* V31 tmp26 [V31,T11] ( 0, 0 ) int -> zero-ref single-def
;* V32 tmp27 [V32 ] ( 0, 0 ) int -> zero-ref ;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref
-; V34 tmp29 [V34,T11] ( 2, 2 ) int -> edx single-def
+;* V34 tmp29 [V34,T12] ( 0, 0 ) int -> zero-ref single-def
;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref ;* V36 tmp31 [V36 ] ( 0, 0 ) int -> zero-ref
-;* V37 tmp32 [V37,T12] ( 0, 0 ) int -> zero-ref single-def
+;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref
;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref ;* V39 tmp34 [V39 ] ( 0, 0 ) int -> zero-ref ;* V40 tmp35 [V40,T20] ( 0, 0 ) int -> zero-ref single-def ;* V41 tmp36 [V41 ] ( 0, 0 ) int -> zero-ref ;* V42 tmp37 [V42 ] ( 0, 0 ) int -> zero-ref
-;* V43 tmp38 [V43,T13] ( 0, 0 ) int -> zero-ref single-def
+; V43 tmp38 [V43,T13] ( 2, 2 ) int -> ecx single-def
;* V44 tmp39 [V44 ] ( 0, 0 ) int -> zero-ref ;* V45 tmp40 [V45 ] ( 0, 0 ) int -> zero-ref
-;* V46 tmp41 [V46,T14] ( 0, 0 ) int -> zero-ref single-def
+; V46 tmp41 [V46,T14] ( 2, 2 ) int -> edx single-def
;* V47 tmp42 [V47 ] ( 0, 0 ) int -> zero-ref ;* V48 tmp43 [V48 ] ( 0, 0 ) int -> zero-ref
-;* V49 tmp44 [V49,T15] ( 0, 0 ) int -> zero-ref single-def
+; V49 tmp44 [V49,T15] ( 2, 2 ) int -> edx single-def
;* V50 tmp45 [V50 ] ( 0, 0 ) int -> zero-ref ;* V51 tmp46 [V51 ] ( 0, 0 ) int -> zero-ref
-;* V52 tmp47 [V52,T21] ( 0, 0 ) int -> zero-ref single-def
+; V52 tmp47 [V52,T16] ( 2, 2 ) int -> edx single-def
;* V53 tmp48 [V53 ] ( 0, 0 ) int -> zero-ref ;* V54 tmp49 [V54 ] ( 0, 0 ) int -> zero-ref
-;* V55 tmp50 [V55,T16] ( 0, 0 ) int -> zero-ref single-def
+;* V55 tmp50 [V55,T17] ( 0, 0 ) int -> zero-ref single-def
;* V56 tmp51 [V56 ] ( 0, 0 ) int -> zero-ref ;* V57 tmp52 [V57 ] ( 0, 0 ) int -> zero-ref
-;* V58 tmp53 [V58,T17] ( 0, 0 ) int -> zero-ref single-def
+;* V58 tmp53 [V58,T18] ( 0, 0 ) int -> zero-ref single-def
;* V59 tmp54 [V59 ] ( 0, 0 ) int -> zero-ref ;* V60 tmp55 [V60 ] ( 0, 0 ) int -> zero-ref
-;* V61 tmp56 [V61,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V61 tmp56 [V61,T21] ( 0, 0 ) int -> zero-ref single-def
;* V62 tmp57 [V62 ] ( 0, 0 ) int -> zero-ref ;* V63 tmp58 [V63 ] ( 0, 0 ) int -> zero-ref
-;* V64 tmp59 [V64,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V64 tmp59 [V64 ] ( 0, 0 ) int -> zero-ref
;* V65 tmp60 [V65 ] ( 0, 0 ) int -> zero-ref ;* V66 tmp61 [V66 ] ( 0, 0 ) int -> zero-ref
-; V67 cse0 [V67,T04] ( 2, 2 ) int -> edx "CSE - aggressive" -; V68 cse1 [V68,T03] ( 2, 2 ) int -> eax "CSE - aggressive" -; V69 cse2 [V69,T05] ( 2, 2 ) int -> edx "CSE - aggressive" -; V70 cse3 [V70,T06] ( 2, 2 ) int -> ecx "CSE - aggressive"
+; V67 cse0 [V67,T03] ( 2, 2 ) int -> ecx "CSE - aggressive" +; V68 cse1 [V68,T04] ( 2, 2 ) int -> eax "CSE - aggressive" +; V69 cse2 [V69,T05] ( 3, 3 ) int -> edx "CSE - aggressive" +; V70 cse3 [V70,T06] ( 3, 3 ) int -> esi "CSE - aggressive" +; V71 cse4 [V71,T07] ( 3, 3 ) int -> eax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -110,20 +111,25 @@ G_M50161_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov dword ptr [esi+0x04], -13 mov word ptr [esi+0x08], 256 mov edx, dword ptr [esi+0x04]
- add edx, 17 - mov ecx, dword ptr [eax+0x0C] - add edx, ecx - add edx, dword ptr [eax+0x08] - add edx, 3 - lea eax, [edx-0x05]
+ mov ecx, edx + add ecx, 17 + mov esi, dword ptr [eax+0x0C] + ; gcrRegs -[esi] + add ecx, esi + mov eax, dword ptr [eax+0x08]
; gcrRegs -[eax]
- ;; size=130 bbWeight=1 PerfScore 22.75
+ add ecx, eax + add edx, ecx + add edx, 17 + add edx, esi + add eax, edx + ;; size=137 bbWeight=1 PerfScore 22.50
G_M50161_IG03: ; bbWeight=1, epilog, nogc, extend pop esi pop ebp ret ;; size=3 bbWeight=1 PerfScore 2.00
-Total bytes of code 137, prolog size 4, PerfScore 27.00, instruction count 32, allocated bytes for code 137 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
+Total bytes of code 144, prolog size 4, PerfScore 26.75, instruction count 36, allocated bytes for code 144 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
; ============================================================

+7 (+5.11%) : 15700.dasm - testout1:SubFunclet106():int (FullOpts)

@@ -15,13 +15,13 @@ ;* V04 loc4 [V04 ] ( 0, 0 ) ubyte -> zero-ref ; V05 loc5 [V05,T01] ( 4, 4 ) ref -> esi class-hnd exact single-def <testout1> ;* V06 loc6 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V07 loc7 [V07,T03] ( 3, 3 ) ref -> eax class-hnd exact single-def <<unknown class>>
+; V07 loc7 [V07,T02] ( 3, 3 ) ref -> eax class-hnd exact single-def <<unknown class>>
; V08 loc8 [V08,T00] ( 6, 6 ) ref -> eax class-hnd exact single-def <<unknown class>> ;* V09 tmp0 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <testout1> ;* V10 tmp1 [V10 ] ( 0, 0 ) int -> zero-ref single-def ;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref ;* V12 tmp3 [V12 ] ( 0, 0 ) int -> zero-ref
-;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref single-def
+;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
;* V14 tmp5 [V14 ] ( 0, 0 ) int -> zero-ref ;* V15 tmp6 [V15 ] ( 0, 0 ) int -> zero-ref ;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref single-def @@ -33,55 +33,56 @@ ;* V22 tmp13 [V22,T19] ( 0, 0 ) int -> zero-ref single-def ;* V23 tmp14 [V23 ] ( 0, 0 ) int -> zero-ref ;* V24 tmp15 [V24 ] ( 0, 0 ) int -> zero-ref
-; V25 tmp16 [V25,T07] ( 2, 2 ) int -> edx single-def
+; V25 tmp16 [V25,T08] ( 2, 2 ) int -> ecx single-def
;* V26 tmp17 [V26 ] ( 0, 0 ) int -> zero-ref ;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref
-; V28 tmp19 [V28,T08] ( 2, 2 ) int -> edx single-def
+; V28 tmp19 [V28,T09] ( 2, 2 ) int -> ecx single-def
;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref ;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref
-; V31 tmp22 [V31,T09] ( 2, 2 ) int -> edx single-def
+; V31 tmp22 [V31,T10] ( 2, 2 ) int -> ecx single-def
;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref ;* V33 tmp24 [V33 ] ( 0, 0 ) int -> zero-ref
-; V34 tmp25 [V34,T10] ( 2, 2 ) int -> edx single-def
+;* V34 tmp25 [V34,T11] ( 0, 0 ) int -> zero-ref single-def
;* V35 tmp26 [V35 ] ( 0, 0 ) int -> zero-ref ;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref
-; V37 tmp28 [V37,T11] ( 2, 2 ) int -> edx single-def
+;* V37 tmp28 [V37,T12] ( 0, 0 ) int -> zero-ref single-def
;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref ;* V39 tmp30 [V39 ] ( 0, 0 ) int -> zero-ref
-;* V40 tmp31 [V40,T12] ( 0, 0 ) int -> zero-ref single-def
+;* V40 tmp31 [V40 ] ( 0, 0 ) int -> zero-ref
;* V41 tmp32 [V41 ] ( 0, 0 ) int -> zero-ref ;* V42 tmp33 [V42 ] ( 0, 0 ) int -> zero-ref ;* V43 tmp34 [V43,T20] ( 0, 0 ) int -> zero-ref single-def ;* V44 tmp35 [V44 ] ( 0, 0 ) int -> zero-ref ;* V45 tmp36 [V45 ] ( 0, 0 ) int -> zero-ref
-;* V46 tmp37 [V46,T13] ( 0, 0 ) int -> zero-ref single-def
+; V46 tmp37 [V46,T13] ( 2, 2 ) int -> ecx single-def
;* V47 tmp38 [V47 ] ( 0, 0 ) int -> zero-ref ;* V48 tmp39 [V48 ] ( 0, 0 ) int -> zero-ref
-;* V49 tmp40 [V49,T14] ( 0, 0 ) int -> zero-ref single-def
+; V49 tmp40 [V49,T14] ( 2, 2 ) int -> edx single-def
;* V50 tmp41 [V50 ] ( 0, 0 ) int -> zero-ref ;* V51 tmp42 [V51 ] ( 0, 0 ) int -> zero-ref
-;* V52 tmp43 [V52,T15] ( 0, 0 ) int -> zero-ref single-def
+; V52 tmp43 [V52,T15] ( 2, 2 ) int -> edx single-def
;* V53 tmp44 [V53 ] ( 0, 0 ) int -> zero-ref ;* V54 tmp45 [V54 ] ( 0, 0 ) int -> zero-ref
-;* V55 tmp46 [V55,T21] ( 0, 0 ) int -> zero-ref single-def
+; V55 tmp46 [V55,T16] ( 2, 2 ) int -> edx single-def
;* V56 tmp47 [V56 ] ( 0, 0 ) int -> zero-ref ;* V57 tmp48 [V57 ] ( 0, 0 ) int -> zero-ref
-;* V58 tmp49 [V58,T16] ( 0, 0 ) int -> zero-ref single-def
+;* V58 tmp49 [V58,T17] ( 0, 0 ) int -> zero-ref single-def
;* V59 tmp50 [V59 ] ( 0, 0 ) int -> zero-ref ;* V60 tmp51 [V60 ] ( 0, 0 ) int -> zero-ref
-;* V61 tmp52 [V61,T17] ( 0, 0 ) int -> zero-ref single-def
+;* V61 tmp52 [V61,T18] ( 0, 0 ) int -> zero-ref single-def
;* V62 tmp53 [V62 ] ( 0, 0 ) int -> zero-ref ;* V63 tmp54 [V63 ] ( 0, 0 ) int -> zero-ref
-;* V64 tmp55 [V64,T18] ( 0, 0 ) int -> zero-ref single-def
+;* V64 tmp55 [V64,T21] ( 0, 0 ) int -> zero-ref single-def
;* V65 tmp56 [V65 ] ( 0, 0 ) int -> zero-ref ;* V66 tmp57 [V66 ] ( 0, 0 ) int -> zero-ref
-;* V67 tmp58 [V67,T22] ( 0, 0 ) int -> zero-ref single-def
+;* V67 tmp58 [V67 ] ( 0, 0 ) int -> zero-ref
;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref ;* V69 tmp60 [V69 ] ( 0, 0 ) int -> zero-ref
-; V70 cse0 [V70,T04] ( 2, 2 ) int -> edx "CSE - aggressive" -; V71 cse1 [V71,T02] ( 2, 2 ) int -> eax "CSE - aggressive" -; V72 cse2 [V72,T05] ( 2, 2 ) int -> edx "CSE - aggressive" -; V73 cse3 [V73,T06] ( 2, 2 ) int -> ecx "CSE - aggressive"
+; V70 cse0 [V70,T03] ( 2, 2 ) int -> ecx "CSE - aggressive" +; V71 cse1 [V71,T04] ( 2, 2 ) int -> eax "CSE - aggressive" +; V72 cse2 [V72,T05] ( 3, 3 ) int -> edx "CSE - aggressive" +; V73 cse3 [V73,T06] ( 3, 3 ) int -> esi "CSE - aggressive" +; V74 cse4 [V74,T07] ( 3, 3 ) int -> eax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -113,20 +114,25 @@ G_M50161_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov dword ptr [esi+0x04], -13 mov word ptr [esi+0x08], 256 mov edx, dword ptr [esi+0x04]
- add edx, 17 - mov ecx, dword ptr [eax+0x0C] - add edx, ecx - add edx, dword ptr [eax+0x08] - add edx, 3 - lea eax, [edx-0x05]
+ mov ecx, edx + add ecx, 17 + mov esi, dword ptr [eax+0x0C] + ; gcrRegs -[esi] + add ecx, esi + mov eax, dword ptr [eax+0x08]
; gcrRegs -[eax]
- ;; size=130 bbWeight=1 PerfScore 22.75
+ add ecx, eax + add edx, ecx + add edx, 17 + add edx, esi + add eax, edx + ;; size=137 bbWeight=1 PerfScore 22.50
G_M50161_IG03: ; bbWeight=1, epilog, nogc, extend pop esi pop ebp ret ;; size=3 bbWeight=1 PerfScore 2.00
-Total bytes of code 137, prolog size 4, PerfScore 27.00, instruction count 32, allocated bytes for code 137 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
+Total bytes of code 144, prolog size 4, PerfScore 26.75, instruction count 36, allocated bytes for code 144 (MethodHash=55db3c0e) for method testout1:Sub_Funclet_106():int (FullOpts)
; ============================================================

libraries.crossgen2.windows.x86.checked.mch

-19 (-37.25%) : 230237.dasm - System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)

@@ -8,9 +8,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 3.50) int -> ecx single-def
+; V00 arg0 [V00,T01] ( 3, 3 ) int -> ecx single-def
; V01 loc0 [V01,T02] ( 3, 2 ) ubyte -> eax
-; V02 rat0 [V02,T00] ( 3, 6 ) int -> eax "ReplaceWithLclVar is creating a new local variable"
+; V02 rat0 [V02,T00] ( 3, 6 ) int -> ecx "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 0 @@ -19,54 +19,25 @@ G_M3102_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, mov ebp, esp ;; size=3 bbWeight=1 PerfScore 1.25 G_M3102_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- lea eax, [ecx-0x02] - cmp eax, 19 - ja SHORT G_M3102_IG03 - lea edx, [reloc @RWD00] - mov edx, dword ptr [edx+4*eax] - lea ecx, G_M3102_IG02 - add edx, ecx - jmp edx - ;; size=27 bbWeight=1 PerfScore 7.50
+ add ecx, -2 + cmp ecx, 19 + ja SHORT G_M3102_IG04 + mov eax, 0x3C003 + bt eax, ecx + jae SHORT G_M3102_IG04 + ;; size=18 bbWeight=1 PerfScore 3.25
G_M3102_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- add ecx, -101 - cmp ecx, 2 - jbe SHORT G_M3102_IG05 - jmp SHORT G_M3102_IG05 - ;; size=10 bbWeight=0.50 PerfScore 1.75 -G_M3102_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, 1
- jmp SHORT G_M3102_IG06
+ jmp SHORT G_M3102_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M3102_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M3102_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3102_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M3102_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
pop ebp ret ;; size=2 bbWeight=1 PerfScore 1.50
-RWD00 dd G_M3102_IG04 - G_M3102_IG02 - dd G_M3102_IG04 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG04 - G_M3102_IG02 - dd G_M3102_IG04 - G_M3102_IG02 - dd G_M3102_IG04 - G_M3102_IG02 - dd G_M3102_IG04 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02
- -Total bytes of code 51, prolog size 3, PerfScore 13.25, instruction count 19, allocated bytes for code 51 (MethodHash=6afef3e1) for method System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
+Total bytes of code 32, prolog size 3, PerfScore 7.25, instruction count 13, allocated bytes for code 32 (MethodHash=6afef3e1) for method System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
; ============================================================

-30 (-22.73%) : 208048.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)

@@ -8,7 +8,7 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 9, 4 ) int -> esi single-def
+; V00 arg0 [V00,T00] ( 6, 4 ) int -> esi single-def
; V01 arg1 [V01,T01] ( 4, 2 ) ref -> edi class-hnd single-def <System.String> ; V02 tmp0 [V02,T02] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V03 tmp1 [V03,T03] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> @@ -28,9 +28,9 @@ G_M20631_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=10 bbWeight=1 PerfScore 4.75 G_M20631_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz cmp esi, 452
- jg SHORT G_M20631_IG07
+ jg SHORT G_M20631_IG04
cmp esi, 250
- jne SHORT G_M20631_IG06
+ jne SHORT G_M20631_IG04
;; size=16 bbWeight=1 PerfScore 2.50 G_M20631_IG03: ; bbWeight=1, epilog, nogc, extend pop ebx @@ -76,22 +76,9 @@ G_M20631_IG05: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 ; gcrRegs +[ecx] call [CORINFO_HELP_THROW] ; gcrRegs -[ecx ebx]
- ;; size=29 bbWeight=0 PerfScore 0.00 -G_M20631_IG06: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[edi] - lea eax, [esi-0x1C3] - cmp eax, 1 - jbe SHORT G_M20631_IG04 - jmp SHORT G_M20631_IG04 - ;; size=13 bbWeight=0 PerfScore 0.00 -G_M20631_IG07: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz - cmp esi, 552 - je SHORT G_M20631_IG04 - cmp esi, 554 - je SHORT G_M20631_IG04 - jmp SHORT G_M20631_IG04 - ;; size=18 bbWeight=0 PerfScore 0.00
+ int3 + ;; size=30 bbWeight=0 PerfScore 0.00
-Total bytes of code 132, prolog size 6, PerfScore 10.25, instruction count 45, allocated bytes for code 132 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
+Total bytes of code 102, prolog size 6, PerfScore 10.25, instruction count 37, allocated bytes for code 102 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
; ============================================================

-20 (-17.54%) : 207885.dasm - System.Net.Mail.MailCommand:CheckResponse(int,System.String) (FullOpts)

@@ -8,7 +8,7 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 7, 3 ) int -> esi single-def
+; V00 arg0 [V00,T00] ( 5, 3 ) int -> esi single-def
; V01 arg1 [V01,T01] ( 4, 2 ) ref -> edi class-hnd single-def <System.String> ; V02 tmp0 [V02,T02] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V03 tmp1 [V03,T03] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> @@ -28,7 +28,7 @@ G_M8758_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, ;; size=10 bbWeight=1 PerfScore 4.75 G_M8758_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz cmp esi, 250
- jne SHORT G_M8758_IG06
+ jne SHORT G_M8758_IG04
;; size=8 bbWeight=1 PerfScore 1.25 G_M8758_IG03: ; bbWeight=1, epilog, nogc, extend pop ebx @@ -74,17 +74,9 @@ G_M8758_IG05: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 ; gcrRegs +[ecx] call [CORINFO_HELP_THROW] ; gcrRegs -[ecx ebx]
- ;; size=29 bbWeight=0 PerfScore 0.00 -G_M8758_IG06: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[edi] - lea eax, [esi-0x1C3] - cmp eax, 1 - jbe SHORT G_M8758_IG04 - cmp esi, 552 - je SHORT G_M8758_IG04 - jmp SHORT G_M8758_IG04 - ;; size=21 bbWeight=0 PerfScore 0.00
+ int3 + ;; size=30 bbWeight=0 PerfScore 0.00
-Total bytes of code 114, prolog size 6, PerfScore 9.00, instruction count 40, allocated bytes for code 114 (MethodHash=cf4bddc9) for method System.Net.Mail.MailCommand:CheckResponse(int,System.String) (FullOpts)
+Total bytes of code 94, prolog size 6, PerfScore 9.00, instruction count 35, allocated bytes for code 94 (MethodHash=cf4bddc9) for method System.Net.Mail.MailCommand:CheckResponse(int,System.String) (FullOpts)
; ============================================================

+0 (0.00%) : 149276.dasm - System.Xml.XmlConvert:CreateException(System.String,int,int,int):System.Exception (FullOpts)

@@ -29,9 +29,30 @@ G_M24551_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b ;; size=7 bbWeight=1 PerfScore 3.50 G_M24551_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz test edx, edx
- je SHORT G_M24551_IG05
+ jne SHORT G_M24551_IG05
;; size=4 bbWeight=1 PerfScore 1.25 G_M24551_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ call [CORINFO_HELP_READYTORUN_NEW] + ; gcrRegs +[eax] + mov edi, eax + ; gcrRegs +[edi] + mov ecx, edi + ; gcrRegs +[ecx] + mov edx, esi + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[eax ecx edx esi] + mov eax, edi + ; gcrRegs +[eax] + ;; size=20 bbWeight=0.50 PerfScore 3.50 +G_M24551_IG04: ; bbWeight=0.50, epilog, nogc, extend + pop esi + pop edi + pop ebp + ret 8 + ;; size=6 bbWeight=0.50 PerfScore 1.75 +G_M24551_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[eax edi] +[esi]
call [CORINFO_HELP_READYTORUN_NEW] ; gcrRegs +[eax] mov edi, eax @@ -60,27 +81,6 @@ G_M24551_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov eax, edi ; gcrRegs +[eax] ;; size=59 bbWeight=0.50 PerfScore 11.38
-G_M24551_IG04: ; bbWeight=0.50, epilog, nogc, extend - pop esi - pop edi - pop ebp - ret 8 - ;; size=6 bbWeight=0.50 PerfScore 1.75 -G_M24551_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[eax edi] +[esi] - call [CORINFO_HELP_READYTORUN_NEW] - ; gcrRegs +[eax] - mov edi, eax - ; gcrRegs +[edi] - mov ecx, edi - ; gcrRegs +[ecx] - mov edx, esi - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[eax ecx edx esi] - mov eax, edi - ; gcrRegs +[eax] - ;; size=20 bbWeight=0.50 PerfScore 3.50
G_M24551_IG06: ; bbWeight=0.50, epilog, nogc, extend pop esi pop edi

+16 (+3.80%) : 142285.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)

@@ -48,16 +48,16 @@ G_M11729_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[edi] mov ebx, dword ptr [ebp+0x08] ;; size=14 bbWeight=1 PerfScore 6.75
-G_M11729_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11729_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [esi+0x2C] cmp ecx, 10
- ja SHORT G_M11729_IG06
+ ja G_M11729_IG14
lea edx, [reloc @RWD00] mov edx, dword ptr [edx+4*ecx] lea eax, G_M11729_IG02 add edx, eax jmp edx
- ;; size=27 bbWeight=1 PerfScore 9.00
+ ;; size=31 bbWeight=1 PerfScore 9.00
G_M11729_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz cmp byte ptr [esi+0x40], 0 jne SHORT G_M11729_IG04 @@ -74,40 +74,27 @@ G_M11729_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 mov eax, dword ptr [eax+0x18] ; gcrRegs -[eax] ;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M11729_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11729_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
dec eax cmp eax, 2
- ja SHORT G_M11729_IG06
+ ja G_M11729_IG14
mov ecx, eax lea edx, [reloc @RWD44] mov edx, dword ptr [edx+4*ecx] lea eax, G_M11729_IG02 add edx, eax jmp edx
- ;; size=27 bbWeight=0.50 PerfScore 3.75 -G_M11729_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi edi] - xor eax, eax - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M11729_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop ecx - pop ebx - pop esi - pop edi - pop ebp - ret 8 - ;; size=8 bbWeight=0.50 PerfScore 2.25 -G_M11729_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[esi edi]
+ ;; size=31 bbWeight=0.50 PerfScore 3.75 +G_M11729_IG06: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [esi+0x34], -1
- je G_M11729_IG11
+ je G_M11729_IG09
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx] test eax, eax
- je G_M11729_IG11
+ je G_M11729_IG09
push ebx mov ecx, edi ; gcrRegs +[ecx] @@ -115,30 +102,30 @@ G_M11729_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e call [System.Xml.XmlSubtreeReader:CheckBuffer(System.Array,int,int)] ; gcrRegs -[ecx] test ebx, ebx
- je SHORT G_M11729_IG06
+ je G_M11729_IG14
cmp dword ptr [esi+0x38], 0
- jne SHORT G_M11729_IG10
+ jne SHORT G_M11729_IG08
mov edx, gword ptr [esi+0x1C] ; gcrRegs +[edx] mov gword ptr [ebp-0x10], edx ; GC ptr vars +{V19} test edx, edx
- je SHORT G_M11729_IG09
+ je SHORT G_M11729_IG07
mov ecx, edx ; gcrRegs +[ecx] call [CORINFO_HELP_READYTORUN_ISINSTANCEOF] ; gcrRegs -[ecx edx] +[eax] test eax, eax
- je SHORT G_M11729_IG09
+ je SHORT G_M11729_IG07
mov ecx, gword ptr [ebp-0x10] ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx ; GC ptr vars -{V19} call [<unknown method>] ; gcrRegs -[eax ecx]
- jmp SHORT G_M11729_IG10 - ;; size=86 bbWeight=0.50 PerfScore 20.75 -G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M11729_IG08 + ;; size=90 bbWeight=0.50 PerfScore 20.75 +G_M11729_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
call [CORINFO_HELP_READYTORUN_NEW] ; gcrRegs +[eax] lea edx, bword ptr [esi+0x1C] @@ -147,13 +134,13 @@ G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[eax] ; byrRegs -[edx] ;; size=15 bbWeight=0.50 PerfScore 3.25
-G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11729_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [esi+0x38] mov edx, gword ptr [esi+0x20] ; gcrRegs +[edx] mov edx, gword ptr [edx+0x14] cmp ecx, dword ptr [edx+0x04]
- je SHORT G_M11729_IG06
+ je G_M11729_IG14
mov ecx, gword ptr [esi+0x1C] ; gcrRegs +[ecx] push dword ptr [ebp+0x0C] @@ -188,9 +175,9 @@ G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [<unknown method>] ; gcrRegs -[ecx esi] mov edi, eax
- jmp SHORT G_M11729_IG14 - ;; size=82 bbWeight=0.50 PerfScore 25.25 -G_M11729_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M11729_IG12 + ;; size=86 bbWeight=0.50 PerfScore 25.25 +G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi edi] mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] @@ -202,13 +189,13 @@ G_M11729_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [<unknown method>] ; gcrRegs -[ecx edx esi edi] mov edi, eax
- jmp SHORT G_M11729_IG14
+ jmp SHORT G_M11729_IG12
;; size=21 bbWeight=0.50 PerfScore 6.25
-G_M11729_IG12: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi edi] mov dword ptr [esi+0x2C], 9 ;; size=7 bbWeight=0.50 PerfScore 0.50
-G_M11729_IG13: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11729_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] push dword ptr [ebp+0x0C] @@ -220,16 +207,27 @@ G_M11729_IG13: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[ecx edx edi] mov edi, eax test edi, edi
- jne SHORT G_M11729_IG14
+ jne SHORT G_M11729_IG12
mov dword ptr [esi+0x2C], 1 mov ecx, esi ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx esi] ;; size=38 bbWeight=0.50 PerfScore 8.00
-G_M11729_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M11729_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, edi ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M11729_IG13: ; bbWeight=0.50, epilog, nogc, extend + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 8 + ;; size=8 bbWeight=0.50 PerfScore 2.25 +G_M11729_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M11729_IG15: ; bbWeight=0.50, epilog, nogc, extend pop ecx pop ebx @@ -272,22 +270,22 @@ G_M11729_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs -[ecx edi] int3 ;; size=35 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M11729_IG06 - G_M11729_IG02 - dd G_M11729_IG12 - G_M11729_IG02 - dd G_M11729_IG06 - G_M11729_IG02 - dd G_M11729_IG06 - G_M11729_IG02 - dd G_M11729_IG06 - G_M11729_IG02
+RWD00 dd G_M11729_IG14 - G_M11729_IG02 + dd G_M11729_IG10 - G_M11729_IG02 + dd G_M11729_IG14 - G_M11729_IG02 + dd G_M11729_IG14 - G_M11729_IG02 + dd G_M11729_IG14 - G_M11729_IG02
dd G_M11729_IG03 - G_M11729_IG02 dd G_M11729_IG03 - G_M11729_IG02 dd G_M11729_IG17 - G_M11729_IG02 dd G_M11729_IG17 - G_M11729_IG02
- dd G_M11729_IG13 - G_M11729_IG02
+ dd G_M11729_IG11 - G_M11729_IG02
dd G_M11729_IG17 - G_M11729_IG02 RWD44 dd G_M11729_IG16 - G_M11729_IG02
- dd G_M11729_IG08 - G_M11729_IG02 - dd G_M11729_IG11 - G_M11729_IG02
+ dd G_M11729_IG06 - G_M11729_IG02 + dd G_M11729_IG09 - G_M11729_IG02
-Total bytes of code 421, prolog size 7, PerfScore 97.25, instruction count 145, allocated bytes for code 421 (MethodHash=f333d22e) for method System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
+Total bytes of code 437, prolog size 7, PerfScore 97.25, instruction count 145, allocated bytes for code 437 (MethodHash=f333d22e) for method System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
; ============================================================

+16 (+3.80%) : 142287.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)

@@ -48,16 +48,16 @@ G_M57654_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[edi] mov ebx, dword ptr [ebp+0x08] ;; size=14 bbWeight=1 PerfScore 6.75
-G_M57654_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M57654_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [esi+0x2C] cmp ecx, 10
- ja SHORT G_M57654_IG06
+ ja G_M57654_IG14
lea edx, [reloc @RWD00] mov edx, dword ptr [edx+4*ecx] lea eax, G_M57654_IG02 add edx, eax jmp edx
- ;; size=27 bbWeight=1 PerfScore 9.00
+ ;; size=31 bbWeight=1 PerfScore 9.00
G_M57654_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz cmp byte ptr [esi+0x40], 0 jne SHORT G_M57654_IG04 @@ -74,40 +74,27 @@ G_M57654_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 mov eax, dword ptr [eax+0x18] ; gcrRegs -[eax] ;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
dec eax cmp eax, 2
- ja SHORT G_M57654_IG06
+ ja G_M57654_IG14
mov ecx, eax lea edx, [reloc @RWD44] mov edx, dword ptr [edx+4*ecx] lea eax, G_M57654_IG02 add edx, eax jmp edx
- ;; size=27 bbWeight=0.50 PerfScore 3.75 -G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi edi] - xor eax, eax - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M57654_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop ecx - pop ebx - pop esi - pop edi - pop ebp - ret 8 - ;; size=8 bbWeight=0.50 PerfScore 2.25 -G_M57654_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[esi edi]
+ ;; size=31 bbWeight=0.50 PerfScore 3.75 +G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [esi+0x34], -1
- je G_M57654_IG11
+ je G_M57654_IG09
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx] test eax, eax
- je G_M57654_IG11
+ je G_M57654_IG09
push ebx mov ecx, edi ; gcrRegs +[ecx] @@ -115,30 +102,30 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e call [System.Xml.XmlSubtreeReader:CheckBuffer(System.Array,int,int)] ; gcrRegs -[ecx] test ebx, ebx
- je SHORT G_M57654_IG06
+ je G_M57654_IG14
cmp dword ptr [esi+0x38], 0
- jne SHORT G_M57654_IG10
+ jne SHORT G_M57654_IG08
mov edx, gword ptr [esi+0x1C] ; gcrRegs +[edx] mov gword ptr [ebp-0x10], edx ; GC ptr vars +{V19} test edx, edx
- je SHORT G_M57654_IG09
+ je SHORT G_M57654_IG07
mov ecx, edx ; gcrRegs +[ecx] call [CORINFO_HELP_READYTORUN_ISINSTANCEOF] ; gcrRegs -[ecx edx] +[eax] test eax, eax
- je SHORT G_M57654_IG09
+ je SHORT G_M57654_IG07
mov ecx, gword ptr [ebp-0x10] ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx ; GC ptr vars -{V19} call [<unknown method>] ; gcrRegs -[eax ecx]
- jmp SHORT G_M57654_IG10 - ;; size=86 bbWeight=0.50 PerfScore 20.75 -G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M57654_IG08 + ;; size=90 bbWeight=0.50 PerfScore 20.75 +G_M57654_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
call [CORINFO_HELP_READYTORUN_NEW] ; gcrRegs +[eax] lea edx, bword ptr [esi+0x1C] @@ -147,13 +134,13 @@ G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[eax] ; byrRegs -[edx] ;; size=15 bbWeight=0.50 PerfScore 3.25
-G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M57654_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [esi+0x38] mov edx, gword ptr [esi+0x20] ; gcrRegs +[edx] mov edx, gword ptr [edx+0x14] cmp ecx, dword ptr [edx+0x04]
- je SHORT G_M57654_IG06
+ je G_M57654_IG14
mov ecx, gword ptr [esi+0x1C] ; gcrRegs +[ecx] push dword ptr [ebp+0x0C] @@ -188,9 +175,9 @@ G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [<unknown method>] ; gcrRegs -[ecx esi] mov edi, eax
- jmp SHORT G_M57654_IG14 - ;; size=82 bbWeight=0.50 PerfScore 25.25 -G_M57654_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M57654_IG12 + ;; size=86 bbWeight=0.50 PerfScore 25.25 +G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi edi] mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] @@ -202,13 +189,13 @@ G_M57654_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [<unknown method>] ; gcrRegs -[ecx edx esi edi] mov edi, eax
- jmp SHORT G_M57654_IG14
+ jmp SHORT G_M57654_IG12
;; size=21 bbWeight=0.50 PerfScore 6.25
-G_M57654_IG12: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi edi] mov dword ptr [esi+0x2C], 10 ;; size=7 bbWeight=0.50 PerfScore 0.50
-G_M57654_IG13: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M57654_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] push dword ptr [ebp+0x0C] @@ -220,16 +207,27 @@ G_M57654_IG13: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[ecx edx edi] mov edi, eax test edi, edi
- jne SHORT G_M57654_IG14
+ jne SHORT G_M57654_IG12
mov dword ptr [esi+0x2C], 1 mov ecx, esi ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx esi] ;; size=38 bbWeight=0.50 PerfScore 8.00
-G_M57654_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M57654_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, edi ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M57654_IG13: ; bbWeight=0.50, epilog, nogc, extend + pop ecx + pop ebx + pop esi + pop edi + pop ebp + ret 8 + ;; size=8 bbWeight=0.50 PerfScore 2.25 +G_M57654_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M57654_IG15: ; bbWeight=0.50, epilog, nogc, extend pop ecx pop ebx @@ -272,22 +270,22 @@ G_M57654_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs -[ecx edi] int3 ;; size=35 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M57654_IG06 - G_M57654_IG02 - dd G_M57654_IG12 - G_M57654_IG02 - dd G_M57654_IG06 - G_M57654_IG02 - dd G_M57654_IG06 - G_M57654_IG02 - dd G_M57654_IG06 - G_M57654_IG02
+RWD00 dd G_M57654_IG14 - G_M57654_IG02 + dd G_M57654_IG10 - G_M57654_IG02 + dd G_M57654_IG14 - G_M57654_IG02 + dd G_M57654_IG14 - G_M57654_IG02 + dd G_M57654_IG14 - G_M57654_IG02
dd G_M57654_IG03 - G_M57654_IG02 dd G_M57654_IG03 - G_M57654_IG02 dd G_M57654_IG17 - G_M57654_IG02 dd G_M57654_IG17 - G_M57654_IG02 dd G_M57654_IG17 - G_M57654_IG02
- dd G_M57654_IG13 - G_M57654_IG02 -RWD44 dd G_M57654_IG16 - G_M57654_IG02 - dd G_M57654_IG08 - G_M57654_IG02
dd G_M57654_IG11 - G_M57654_IG02
+RWD44 dd G_M57654_IG16 - G_M57654_IG02 + dd G_M57654_IG06 - G_M57654_IG02 + dd G_M57654_IG09 - G_M57654_IG02
-Total bytes of code 421, prolog size 7, PerfScore 97.25, instruction count 145, allocated bytes for code 421 (MethodHash=18cc1ec9) for method System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
+Total bytes of code 437, prolog size 7, PerfScore 97.25, instruction count 145, allocated bytes for code 437 (MethodHash=18cc1ec9) for method System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
; ============================================================

libraries.pmi.windows.x86.checked.mch

-7 (-41.18%) : 243633.dasm - System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (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 ; 1 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data @@ -15,9 +15,7 @@ ; Lcl frame size = 0 G_M40773_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp - ;; size=3 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M40773_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ecx] test dl, dl @@ -25,16 +23,14 @@ G_M40773_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 ;; size=4 bbWeight=1 PerfScore 1.25 G_M40773_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc ; gcrRegs -[ecx]
- pop ebp
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M40773_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs +[ecx]
- cmp gword ptr [ecx+0x08], 0 - je SHORT G_M40773_IG03
+ mov eax, dword ptr [ecx+0x08]
jmp SHORT G_M40773_IG03
- ;; size=8 bbWeight=0.50 PerfScore 3.00
+ ;; size=5 bbWeight=0.50 PerfScore 2.00
-Total bytes of code 17, prolog size 3, PerfScore 7.00, instruction count 9, allocated bytes for code 17 (MethodHash=8a3760ba) for method System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
+Total bytes of code 10, prolog size 0, PerfScore 4.25, instruction count 5, allocated bytes for code 10 (MethodHash=8a3760ba) for method System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
; ============================================================

-19 (-37.25%) : 255602.dasm - System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)

@@ -7,9 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 3.50) int -> ecx single-def
+; V00 arg0 [V00,T01] ( 3, 3 ) int -> ecx single-def
; V01 loc0 [V01,T02] ( 3, 2 ) ubyte -> eax
-; V02 rat0 [V02,T00] ( 3, 6 ) int -> eax "ReplaceWithLclVar is creating a new local variable"
+; V02 rat0 [V02,T00] ( 3, 6 ) int -> ecx "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 0 @@ -18,54 +18,25 @@ G_M3102_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, mov ebp, esp ;; size=3 bbWeight=1 PerfScore 1.25 G_M3102_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- lea eax, [ecx-0x02] - cmp eax, 19 - ja SHORT G_M3102_IG03 - lea edx, [@RWD00] - mov edx, dword ptr [edx+4*eax] - lea ecx, G_M3102_IG02 - add edx, ecx - jmp edx - ;; size=27 bbWeight=1 PerfScore 7.50
+ add ecx, -2 + cmp ecx, 19 + ja SHORT G_M3102_IG04 + mov eax, 0x3C003 + bt eax, ecx + jae SHORT G_M3102_IG04 + ;; size=18 bbWeight=1 PerfScore 3.25
G_M3102_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- add ecx, -101 - cmp ecx, 2 - jbe SHORT G_M3102_IG05 - jmp SHORT G_M3102_IG05 - ;; size=10 bbWeight=0.50 PerfScore 1.75 -G_M3102_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, 1
- jmp SHORT G_M3102_IG06
+ jmp SHORT G_M3102_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M3102_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M3102_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3102_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M3102_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
pop ebp ret ;; size=2 bbWeight=1 PerfScore 1.50
-RWD00 dd G_M3102_IG04 - G_M3102_IG02 - dd G_M3102_IG04 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG04 - G_M3102_IG02 - dd G_M3102_IG04 - G_M3102_IG02 - dd G_M3102_IG04 - G_M3102_IG02 - dd G_M3102_IG04 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02
- -Total bytes of code 51, prolog size 3, PerfScore 13.25, instruction count 19, allocated bytes for code 51 (MethodHash=6afef3e1) for method System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
+Total bytes of code 32, prolog size 3, PerfScore 7.25, instruction count 13, allocated bytes for code 32 (MethodHash=6afef3e1) for method System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
; ============================================================

-30 (-21.74%) : 260426.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)

@@ -7,7 +7,7 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 9, 4 ) int -> esi single-def
+; V00 arg0 [V00,T00] ( 6, 4 ) int -> esi single-def
; V01 arg1 [V01,T01] ( 4, 2 ) ref -> edi class-hnd single-def <System.String> ; V02 tmp0 [V02,T02] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V03 tmp1 [V03,T03] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> @@ -27,9 +27,9 @@ G_M20631_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=10 bbWeight=1 PerfScore 4.75 G_M20631_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz cmp esi, 452
- jg SHORT G_M20631_IG07
+ jg SHORT G_M20631_IG04
cmp esi, 250
- jne SHORT G_M20631_IG06
+ jne SHORT G_M20631_IG04
;; size=16 bbWeight=1 PerfScore 2.50 G_M20631_IG03: ; bbWeight=1, epilog, nogc, extend pop ebx @@ -77,22 +77,9 @@ G_M20631_IG05: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 ; gcrRegs +[ecx] call CORINFO_HELP_THROW ; gcrRegs -[ecx ebx]
- ;; size=32 bbWeight=0 PerfScore 0.00 -G_M20631_IG06: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[edi] - lea ecx, [esi-0x1C3] - cmp ecx, 1 - jbe SHORT G_M20631_IG04 - jmp SHORT G_M20631_IG04 - ;; size=13 bbWeight=0 PerfScore 0.00 -G_M20631_IG07: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz - cmp esi, 552 - je SHORT G_M20631_IG04 - cmp esi, 554 - je SHORT G_M20631_IG04 - jmp SHORT G_M20631_IG04 - ;; size=18 bbWeight=0 PerfScore 0.00
+ int3 + ;; size=33 bbWeight=0 PerfScore 0.00
-Total bytes of code 138, prolog size 6, PerfScore 10.25, instruction count 47, allocated bytes for code 138 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
+Total bytes of code 108, prolog size 6, PerfScore 10.25, instruction count 39, allocated bytes for code 108 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
; ============================================================

+14 (+2.11%) : 83077.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourcePropertyAccessorSymbol:GetReturnType(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceModuleSymbol,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)

@@ -66,7 +66,7 @@ ; V55 tmp47 [V55,T12] ( 5, 2.50) ref -> eax ; V56 tmp48 [V56,T02] ( 5, 5 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V57 tmp49 [V57,T07] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V58 tmp50 [V58,T44] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V58 tmp50 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V59 tmp51 [V59,T30] ( 2, 1 ) ubyte -> eax "Inline return value spill temp" ;* V60 tmp52 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.DiagnosticInfo> ;* V61 tmp53 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>> @@ -99,8 +99,8 @@ ;* V88 tmp80 [V88 ] ( 0, 0 ) int -> zero-ref single-def "field V51.<Start>k__BackingField (fldOffset=0x0)" P-INDEP ;* V89 tmp81 [V89 ] ( 0, 0 ) int -> zero-ref single-def "field V51.<Length>k__BackingField (fldOffset=0x4)" P-INDEP ; V90 tmp82 [V90,T16] ( 4, 2 ) ref -> [ebp-0x24] spill-single-def "field V54.DiagnosticInfo (fldOffset=0x0)" P-INDEP
-; V91 tmp83 [V91,T25] ( 3, 1.50) ref -> [ebp-0x28] spill-single-def "field V54.PrimaryDependency (fldOffset=0x4)" P-INDEP -; V92 tmp84 [V92,T37] ( 2, 1 ) ref -> edi single-def "field V54.SecondaryDependencies (fldOffset=0x8)" P-INDEP
+; V91 tmp83 [V91,T25] ( 3, 1.50) ref -> [ebp-0x28] single-def "field V54.PrimaryDependency (fldOffset=0x4)" P-INDEP +; V92 tmp84 [V92,T37] ( 2, 1 ) ref -> registers single-def "field V54.SecondaryDependencies (fldOffset=0x8)" P-INDEP
;* V93 tmp85 [V93 ] ( 0, 0 ) ref -> zero-ref single-def "V13.[000..004)" ;* V94 tmp86 [V94 ] ( 0, 0 ) ref -> zero-ref single-def "V13.[004..008)" ;* V95 tmp87 [V95 ] ( 0, 0 ) int -> zero-ref single-def "V13.[008..012)" @@ -112,7 +112,7 @@ ;* V101 tmp93 [V101,T42] ( 0, 0 ) ref -> zero-ref single-def "V34.[000..004)" ;* V102 tmp94 [V102,T43] ( 0, 0 ) ref -> zero-ref single-def "V34.[004..008)" ;* V103 tmp95 [V103 ] ( 0, 0 ) int -> zero-ref single-def "V34.[008..012)"
-;* V104 tmp96 [V104,T45] ( 0, 0 ) int -> zero-ref single-def "V34.[012..016)"
+;* V104 tmp96 [V104,T44] ( 0, 0 ) int -> zero-ref single-def "V34.[012..016)"
;* V105 tmp97 [V105 ] ( 0, 0 ) ref -> zero-ref single-def "V22.[000..004)" ;* V106 tmp98 [V106 ] ( 0, 0 ) ref -> zero-ref single-def "V22.[004..008)" ;* V107 tmp99 [V107 ] ( 0, 0 ) int -> zero-ref single-def "V22.[008..012)" @@ -124,8 +124,8 @@ ; V113 tmp105 [V113,T21] ( 2, 2 ) int -> edx "argument with side effect" ; V114 tmp106 [V114,T20] ( 2, 2 ) ref -> edi single-def "argument with side effect" ; V115 tmp107 [V115,T08] ( 3, 3 ) ref -> ecx single-def "argument with side effect"
-; V116 tmp108 [V116,T47] ( 2, 0 ) ref -> ecx single-def "argument with side effect" -;* V117 cse0 [V117,T46] ( 0, 0 ) int -> zero-ref "CSE - conservative"
+; V116 tmp108 [V116,T46] ( 2, 0 ) ref -> ecx single-def "argument with side effect" +;* V117 cse0 [V117,T45] ( 0, 0 ) int -> zero-ref "CSE - conservative"
; V118 cse1 [V118,T32] ( 3, 1.50) int -> edi "CSE - conservative" ; V119 cse2 [V119,T27] ( 3, 1.50) ref -> ecx "CSE - conservative" ; V120 cse3 [V120,T28] ( 3, 1.50) ref -> ecx "CSE - conservative" @@ -162,7 +162,7 @@ G_M60394_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs= ;; size=19 bbWeight=1 PerfScore 7.50 G_M60394_IG03: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref cmp eax, 12
- jne G_M60394_IG30
+ jne G_M60394_IG31
mov ecx, gword ptr [esi+0x14] ; gcrRegs +[ecx] test ecx, ecx @@ -232,7 +232,7 @@ G_M60394_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe cmp dword ptr [ebp-0x1C], 0 jl G_M60394_IG25 test byte ptr [D1FFAB1EH], 1 ; global ptr
- je G_M60394_IG31
+ je G_M60394_IG32
;; size=67 bbWeight=0.50 PerfScore 11.38 G_M60394_IG07: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref ; gcrRegs -[ecx esi] @@ -264,7 +264,7 @@ G_M60394_IG08: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=0 mov ecx, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[ecx] test ecx, ecx
- je G_M60394_IG32
+ je G_M60394_IG33
lea edx, bword ptr [eax+0x04] ; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_ECX @@ -482,17 +482,30 @@ G_M60394_IG28: ; bbWeight=0.50, gcVars=0000000002810000 {V26 V90 V91}, gc mov edi, gword ptr [ebp-0x20] jmp G_M60394_IG12 ;; size=21 bbWeight=0.50 PerfScore 4.00
-G_M60394_IG29: ; bbWeight=0.50, gcVars=0000000002800000 {V26 V91}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M60394_IG29: ; bbWeight=0.50, gcVars=0000000002800000 {V26 V91}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[edx] ; GC ptr vars -{V16 V90} test eax, eax
- je G_M60394_IG10
+ jne SHORT G_M60394_IG30 + mov ecx, edi + ; gcrRegs +[ecx] + mov esi, gword ptr [ebp-0x28] + ; gcrRegs +[esi]
mov edi, gword ptr [ebp-0x20]
+ mov gword ptr [ebp-0x28], esi + mov edi, ecx + jmp G_M60394_IG10 + ;; size=22 bbWeight=0.50 PerfScore 3.38 +G_M60394_IG30: ; bbWeight=0.25, gcVars=0000000000800000 {V26}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[ecx ebx esi edi] + ; GC ptr vars -{V91} + mov edi, gword ptr [ebp-0x20] + ; gcrRegs +[edi]
jmp G_M60394_IG12
- ;; size=16 bbWeight=0.50 PerfScore 2.12 -G_M60394_IG30: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[ebx edi] - ; GC ptr vars -{V26 V91}
+ ;; size=8 bbWeight=0.25 PerfScore 0.75 +G_M60394_IG31: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[edi] + ; GC ptr vars -{V26}
mov ecx, 0x3070 mov edx, 0xD1FFAB1E call CORINFO_HELP_STRCNS @@ -507,7 +520,7 @@ G_M60394_IG30: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=000000 call CORINFO_HELP_THROW ; gcrRegs -[eax ecx] ;; size=35 bbWeight=0 PerfScore 0.00
-G_M60394_IG31: ; bbWeight=0, gcVars=0000000000800000 {V26}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
+G_M60394_IG32: ; bbWeight=0, gcVars=0000000000800000 {V26}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[ebx] ; GC ptr vars +{V26} mov ecx, 0xD1FFAB1E @@ -515,13 +528,13 @@ G_M60394_IG31: ; bbWeight=0, gcVars=0000000000800000 {V26}, gcrefRegs=000 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE jmp G_M60394_IG07 ;; size=20 bbWeight=0 PerfScore 0.00
-G_M60394_IG32: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M60394_IG33: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ebx] ; GC ptr vars -{V26} call [System.MulticastDelegate:ThrowNullThisInDelegateToInstance()] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 665, prolog size 20, PerfScore 123.00, instruction count 205, allocated bytes for code 665 (MethodHash=89851415) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.SourcePropertyAccessorSymbol:GetReturnType(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceModuleSymbol,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
+Total bytes of code 679, prolog size 20, PerfScore 125.00, instruction count 211, allocated bytes for code 679 (MethodHash=89851415) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.SourcePropertyAccessorSymbol:GetReturnType(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceModuleSymbol,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
; ============================================================

+16 (+3.80%) : 167334.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)

@@ -54,16 +54,16 @@ G_M11729_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[edi] mov ebx, dword ptr [ebp+0x08] ;; size=13 bbWeight=1 PerfScore 5.75
-G_M11729_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11729_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [esi+0x2C] cmp ecx, 10
- ja SHORT G_M11729_IG06
+ ja G_M11729_IG14
lea edx, [@RWD00] mov edx, dword ptr [edx+4*ecx] lea eax, G_M11729_IG02 add edx, eax jmp edx
- ;; size=27 bbWeight=1 PerfScore 9.00
+ ;; size=31 bbWeight=1 PerfScore 9.00
G_M11729_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz cmp byte ptr [esi+0x40], 0 jne SHORT G_M11729_IG04 @@ -81,32 +81,20 @@ G_M11729_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 mov eax, dword ptr [eax+0x18] ; gcrRegs -[eax] ;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M11729_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11729_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
dec eax cmp eax, 2
- ja SHORT G_M11729_IG06
+ ja G_M11729_IG14
mov ecx, eax lea edx, [@RWD44] mov edx, dword ptr [edx+4*ecx] lea eax, G_M11729_IG02 add edx, eax jmp edx
- ;; size=27 bbWeight=0.50 PerfScore 3.75 -G_M11729_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi edi] - xor eax, eax - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M11729_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop ebx - pop esi - pop edi - pop ebp - ret 8 - ;; size=7 bbWeight=0.50 PerfScore 2.00 -G_M11729_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[esi edi]
+ ;; size=31 bbWeight=0.50 PerfScore 3.75 +G_M11729_IG06: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [esi+0x34], -1
- je G_M11729_IG11
+ je G_M11729_IG09
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] mov eax, dword ptr [ecx] @@ -114,7 +102,7 @@ G_M11729_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e call [eax+0x0C]<unknown method> ; gcrRegs -[ecx] test eax, eax
- je G_M11729_IG11
+ je G_M11729_IG09
push ebx mov ecx, edi ; gcrRegs +[ecx] @@ -122,25 +110,25 @@ G_M11729_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e call [System.Xml.XmlSubtreeReader:CheckBuffer(System.Array,int,int)] ; gcrRegs -[ecx] test ebx, ebx
- je SHORT G_M11729_IG06
+ je G_M11729_IG14
cmp dword ptr [esi+0x38], 0
- jne SHORT G_M11729_IG10
+ jne SHORT G_M11729_IG08
mov ecx, gword ptr [esi+0x1C] ; gcrRegs +[ecx] test ecx, ecx
- je SHORT G_M11729_IG09
+ je SHORT G_M11729_IG07
mov edx, ecx ; gcrRegs +[edx] mov edx, dword ptr [edx] ; gcrRegs -[edx] cmp edx, 0xD1FFAB1E
- jne SHORT G_M11729_IG09
+ jne SHORT G_M11729_IG07
mov edx, dword ptr [edx+0x30] call [edx+0x04]<unknown method> ; gcrRegs -[ecx]
- jmp SHORT G_M11729_IG10 - ;; size=78 bbWeight=0.50 PerfScore 19.25 -G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M11729_IG08 + ;; size=82 bbWeight=0.50 PerfScore 19.25 +G_M11729_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; System.Xml.Base64Decoder call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax] @@ -150,13 +138,13 @@ G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[eax] ; byrRegs -[edx] ;; size=18 bbWeight=0.50 PerfScore 1.38
-G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11729_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [esi+0x38] mov edx, gword ptr [esi+0x20] ; gcrRegs +[edx] mov edx, gword ptr [edx+0x14] cmp ecx, dword ptr [edx+0x04]
- je SHORT G_M11729_IG06
+ je G_M11729_IG14
mov ecx, gword ptr [esi+0x1C] ; gcrRegs +[ecx] push dword ptr [ebp+0x0C] @@ -195,9 +183,9 @@ G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [eax+0x10]<unknown method> ; gcrRegs -[ecx esi] mov edi, eax
- jmp SHORT G_M11729_IG14 - ;; size=81 bbWeight=0.50 PerfScore 26.75 -G_M11729_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M11729_IG12 + ;; size=85 bbWeight=0.50 PerfScore 26.75 +G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi edi] mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] @@ -210,13 +198,13 @@ G_M11729_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [eax+0x10]<unknown method> ; gcrRegs -[ecx edx esi edi] mov edi, eax
- jmp SHORT G_M11729_IG14
+ jmp SHORT G_M11729_IG12
;; size=21 bbWeight=0.50 PerfScore 6.75
-G_M11729_IG12: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi edi] mov dword ptr [esi+0x2C], 9 ;; size=7 bbWeight=0.50 PerfScore 0.50
-G_M11729_IG13: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11729_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] push dword ptr [ebp+0x0C] @@ -229,16 +217,26 @@ G_M11729_IG13: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[ecx edx edi] mov edi, eax test edi, edi
- jne SHORT G_M11729_IG14
+ jne SHORT G_M11729_IG12
mov dword ptr [esi+0x2C], 1 mov ecx, esi ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx esi] ;; size=38 bbWeight=0.50 PerfScore 8.50
-G_M11729_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M11729_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, edi ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M11729_IG13: ; bbWeight=0.50, epilog, nogc, extend + pop ebx + pop esi + pop edi + pop ebp + ret 8 + ;; size=7 bbWeight=0.50 PerfScore 2.00 +G_M11729_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M11729_IG15: ; bbWeight=0.50, epilog, nogc, extend pop ebx pop esi @@ -282,22 +280,22 @@ G_M11729_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs -[ecx esi] int3 ;; size=36 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M11729_IG06 - G_M11729_IG02 - dd G_M11729_IG12 - G_M11729_IG02 - dd G_M11729_IG06 - G_M11729_IG02 - dd G_M11729_IG06 - G_M11729_IG02 - dd G_M11729_IG06 - G_M11729_IG02
+RWD00 dd G_M11729_IG14 - G_M11729_IG02 + dd G_M11729_IG10 - G_M11729_IG02 + dd G_M11729_IG14 - G_M11729_IG02 + dd G_M11729_IG14 - G_M11729_IG02 + dd G_M11729_IG14 - G_M11729_IG02
dd G_M11729_IG03 - G_M11729_IG02 dd G_M11729_IG03 - G_M11729_IG02 dd G_M11729_IG17 - G_M11729_IG02 dd G_M11729_IG17 - G_M11729_IG02
- dd G_M11729_IG13 - G_M11729_IG02
+ dd G_M11729_IG11 - G_M11729_IG02
dd G_M11729_IG17 - G_M11729_IG02 RWD44 dd G_M11729_IG16 - G_M11729_IG02
- dd G_M11729_IG08 - G_M11729_IG02 - dd G_M11729_IG11 - G_M11729_IG02
+ dd G_M11729_IG06 - G_M11729_IG02 + dd G_M11729_IG09 - G_M11729_IG02
-Total bytes of code 421, prolog size 6, PerfScore 95.38, instruction count 150, allocated bytes for code 421 (MethodHash=f333d22e) for method System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
+Total bytes of code 437, prolog size 6, PerfScore 95.38, instruction count 150, allocated bytes for code 437 (MethodHash=f333d22e) for method System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
; ============================================================

+16 (+3.80%) : 167336.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)

@@ -54,16 +54,16 @@ G_M57654_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[edi] mov ebx, dword ptr [ebp+0x08] ;; size=13 bbWeight=1 PerfScore 5.75
-G_M57654_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M57654_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [esi+0x2C] cmp ecx, 10
- ja SHORT G_M57654_IG06
+ ja G_M57654_IG14
lea edx, [@RWD00] mov edx, dword ptr [edx+4*ecx] lea eax, G_M57654_IG02 add edx, eax jmp edx
- ;; size=27 bbWeight=1 PerfScore 9.00
+ ;; size=31 bbWeight=1 PerfScore 9.00
G_M57654_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz cmp byte ptr [esi+0x40], 0 jne SHORT G_M57654_IG04 @@ -81,32 +81,20 @@ G_M57654_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 mov eax, dword ptr [eax+0x18] ; gcrRegs -[eax] ;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
dec eax cmp eax, 2
- ja SHORT G_M57654_IG06
+ ja G_M57654_IG14
mov ecx, eax lea edx, [@RWD44] mov edx, dword ptr [edx+4*ecx] lea eax, G_M57654_IG02 add edx, eax jmp edx
- ;; size=27 bbWeight=0.50 PerfScore 3.75 -G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi edi] - xor eax, eax - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M57654_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop ebx - pop esi - pop edi - pop ebp - ret 8 - ;; size=7 bbWeight=0.50 PerfScore 2.00 -G_M57654_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[esi edi]
+ ;; size=31 bbWeight=0.50 PerfScore 3.75 +G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [esi+0x34], -1
- je G_M57654_IG11
+ je G_M57654_IG09
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] mov eax, dword ptr [ecx] @@ -114,7 +102,7 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e call [eax+0x0C]<unknown method> ; gcrRegs -[ecx] test eax, eax
- je G_M57654_IG11
+ je G_M57654_IG09
push ebx mov ecx, edi ; gcrRegs +[ecx] @@ -122,25 +110,25 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e call [System.Xml.XmlSubtreeReader:CheckBuffer(System.Array,int,int)] ; gcrRegs -[ecx] test ebx, ebx
- je SHORT G_M57654_IG06
+ je G_M57654_IG14
cmp dword ptr [esi+0x38], 0
- jne SHORT G_M57654_IG10
+ jne SHORT G_M57654_IG08
mov ecx, gword ptr [esi+0x1C] ; gcrRegs +[ecx] test ecx, ecx
- je SHORT G_M57654_IG09
+ je SHORT G_M57654_IG07
mov edx, ecx ; gcrRegs +[edx] mov edx, dword ptr [edx] ; gcrRegs -[edx] cmp edx, 0xD1FFAB1E
- jne SHORT G_M57654_IG09
+ jne SHORT G_M57654_IG07
mov edx, dword ptr [edx+0x30] call [edx+0x04]<unknown method> ; gcrRegs -[ecx]
- jmp SHORT G_M57654_IG10 - ;; size=78 bbWeight=0.50 PerfScore 19.25 -G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M57654_IG08 + ;; size=82 bbWeight=0.50 PerfScore 19.25 +G_M57654_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; System.Xml.BinHexDecoder call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax] @@ -150,13 +138,13 @@ G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[eax] ; byrRegs -[edx] ;; size=18 bbWeight=0.50 PerfScore 1.38
-G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M57654_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [esi+0x38] mov edx, gword ptr [esi+0x20] ; gcrRegs +[edx] mov edx, gword ptr [edx+0x14] cmp ecx, dword ptr [edx+0x04]
- je SHORT G_M57654_IG06
+ je G_M57654_IG14
mov ecx, gword ptr [esi+0x1C] ; gcrRegs +[ecx] push dword ptr [ebp+0x0C] @@ -195,9 +183,9 @@ G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [eax+0x10]<unknown method> ; gcrRegs -[ecx esi] mov edi, eax
- jmp SHORT G_M57654_IG14 - ;; size=81 bbWeight=0.50 PerfScore 26.75 -G_M57654_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M57654_IG12 + ;; size=85 bbWeight=0.50 PerfScore 26.75 +G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi edi] mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] @@ -210,13 +198,13 @@ G_M57654_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [eax+0x18]<unknown method> ; gcrRegs -[ecx edx esi edi] mov edi, eax
- jmp SHORT G_M57654_IG14
+ jmp SHORT G_M57654_IG12
;; size=21 bbWeight=0.50 PerfScore 6.75
-G_M57654_IG12: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi edi] mov dword ptr [esi+0x2C], 10 ;; size=7 bbWeight=0.50 PerfScore 0.50
-G_M57654_IG13: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M57654_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] push dword ptr [ebp+0x0C] @@ -229,16 +217,26 @@ G_M57654_IG13: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[ecx edx edi] mov edi, eax test edi, edi
- jne SHORT G_M57654_IG14
+ jne SHORT G_M57654_IG12
mov dword ptr [esi+0x2C], 1 mov ecx, esi ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx esi] ;; size=38 bbWeight=0.50 PerfScore 8.50
-G_M57654_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M57654_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, edi ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M57654_IG13: ; bbWeight=0.50, epilog, nogc, extend + pop ebx + pop esi + pop edi + pop ebp + ret 8 + ;; size=7 bbWeight=0.50 PerfScore 2.00 +G_M57654_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M57654_IG15: ; bbWeight=0.50, epilog, nogc, extend pop ebx pop esi @@ -282,22 +280,22 @@ G_M57654_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs -[ecx esi] int3 ;; size=36 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M57654_IG06 - G_M57654_IG02 - dd G_M57654_IG12 - G_M57654_IG02 - dd G_M57654_IG06 - G_M57654_IG02 - dd G_M57654_IG06 - G_M57654_IG02 - dd G_M57654_IG06 - G_M57654_IG02
+RWD00 dd G_M57654_IG14 - G_M57654_IG02 + dd G_M57654_IG10 - G_M57654_IG02 + dd G_M57654_IG14 - G_M57654_IG02 + dd G_M57654_IG14 - G_M57654_IG02 + dd G_M57654_IG14 - G_M57654_IG02
dd G_M57654_IG03 - G_M57654_IG02 dd G_M57654_IG03 - G_M57654_IG02 dd G_M57654_IG17 - G_M57654_IG02 dd G_M57654_IG17 - G_M57654_IG02 dd G_M57654_IG17 - G_M57654_IG02
- dd G_M57654_IG13 - G_M57654_IG02 -RWD44 dd G_M57654_IG16 - G_M57654_IG02 - dd G_M57654_IG08 - G_M57654_IG02
dd G_M57654_IG11 - G_M57654_IG02
+RWD44 dd G_M57654_IG16 - G_M57654_IG02 + dd G_M57654_IG06 - G_M57654_IG02 + dd G_M57654_IG09 - G_M57654_IG02
-Total bytes of code 421, prolog size 6, PerfScore 95.38, instruction count 150, allocated bytes for code 421 (MethodHash=18cc1ec9) for method System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
+Total bytes of code 437, prolog size 6, PerfScore 95.38, instruction count 150, allocated bytes for code 437 (MethodHash=18cc1ec9) for method System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
; ============================================================

libraries_tests.run.windows.x86.Release.mch

-37 (-50.00%) : 539785.dasm - System.Text.Json.JsonSerializerOptions:ConfigureForJsonSerializer():this (Tier1)

@@ -10,14 +10,13 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 5.57) ref -> esi this class-hnd single-def <System.Text.Json.JsonSerializerOptions>
-; V01 loc0 [V01,T03] ( 2, 1.57) ref -> eax class-hnd single-def <System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver>
+; V01 loc0 [V01,T01] ( 2, 1.57) ref -> eax class-hnd single-def <System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.Json.JsonSerializerOptions+CachingContext> ;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-; V04 loc3 [V04,T02] ( 4, 2.43) ref -> edx class-hnd single-def <System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver>
+;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver>
;* V05 loc4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver> ;* V06 loc5 [V06 ] ( 0, 0 ) ubyte -> zero-ref ;* V07 tmp0 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.Text.Json.Serialization.Metadata.IJsonTypeInfoResolver[]>
-; V08 rat0 [V08,T01] ( 6, 3.45) ref -> ecx class-hnd "replacement local" <<unknown class>>
; ; Lcl frame size = 0 @@ -31,13 +30,10 @@ G_M49072_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} G_M49072_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz call [System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver:get_DefaultInstance():System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver] ; gcrRegs +[eax]
- mov edx, gword ptr [esi+0x10] - ; gcrRegs +[edx] - test edx, edx - jne SHORT G_M49072_IG06 - ;; size=13 bbWeight=1 PerfScore 6.25
+ cmp gword ptr [esi+0x10], 0 + jne SHORT G_M49072_IG04 + ;; size=12 bbWeight=1 PerfScore 7.00
G_M49072_IG03: ; bbWeight=0.57, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edx]
lea edx, bword ptr [esi+0x10] ; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_EAX @@ -53,40 +49,7 @@ G_M49072_IG05: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=3 bbWeight=1 PerfScore 2.00
-G_M49072_IG06: ; bbWeight=0.43, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[edx] - mov ecx, edx - ; gcrRegs +[ecx] - test ecx, ecx - je SHORT G_M49072_IG10 - ;; size=6 bbWeight=0.43 PerfScore 0.65 -G_M49072_IG07: ; bbWeight=0.22, gcrefRegs=00000046 {ecx edx esi}, byrefRegs=00000000 {}, byref, isz - cmp dword ptr [ecx], 0xD1FFAB1E - je SHORT G_M49072_IG09 - ;; size=8 bbWeight=0.22 PerfScore 0.86 -G_M49072_IG08: ; bbWeight=0, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx] - mov ecx, 0xD1FFAB1E ; <unknown class> - call CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[edx] +[eax] - mov ecx, eax - ; gcrRegs +[ecx] - jmp SHORT G_M49072_IG10 - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M49072_IG09: ; bbWeight=0.22, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax ecx] - xor ecx, ecx - ; gcrRegs +[ecx] - ;; size=2 bbWeight=0.22 PerfScore 0.05 -G_M49072_IG10: ; bbWeight=0.43, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz - test ecx, ecx - jne SHORT G_M49072_IG04 - ;; size=4 bbWeight=0.43 PerfScore 0.54 -G_M49072_IG11: ; bbWeight=0.42, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[ecx] - jmp SHORT G_M49072_IG04 - ;; size=2 bbWeight=0.42 PerfScore 0.84
-Total bytes of code 74, prolog size 4, PerfScore 16.54, instruction count 28, allocated bytes for code 74 (MethodHash=7b2a404f) for method System.Text.Json.JsonSerializerOptions:ConfigureForJsonSerializer():this (Tier1)
+Total bytes of code 37, prolog size 4, PerfScore 14.35, instruction count 14, allocated bytes for code 37 (MethodHash=7b2a404f) for method System.Text.Json.JsonSerializerOptions:ConfigureForJsonSerializer():this (Tier1)
; ============================================================

-37 (-37.76%) : 48649.dasm - Roslyn.Utilities.AsyncLazy1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task1[System.Canon]):System.Threading.Tasks.Task`1[System.Canon]:this (Tier1)

@@ -11,7 +11,7 @@ ; ; V00 this [V00,T00] ( 6, 4.67) ref -> ecx this class-hnd single-def <Roslyn.Utilities.AsyncLazy`1[System.__Canon]> ; V01 arg1 [V01,T01] ( 5, 3.67) ref -> eax class-hnd single-def <System.Threading.Tasks.Task`1[System.__Canon]>
-; V02 tmp0 [V02,T03] ( 8, 2.33) int -> esi "Inline stloc first use temp"
+; V02 tmp0 [V02,T03] ( 4, 2.23) int -> edx "Inline stloc first use temp"
;* V03 tmp1 [V03,T04] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V04 cse0 [V04,T02] ( 3, 2.44) ref -> edx "CSE - aggressive" ; @@ -20,10 +20,9 @@ G_M21386_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp mov ebp, esp
- push esi
mov eax, edx ; gcrRegs +[eax]
- ;; size=6 bbWeight=1 PerfScore 2.50
+ ;; size=5 bbWeight=1 PerfScore 1.50
G_M21386_IG02: ; bbWeight=1, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ecx] mov edx, gword ptr [ecx+0x0C] @@ -37,19 +36,18 @@ G_M21386_IG03: ; bbWeight=0.44, gcrefRegs=00000004 {edx}, byrefRegs=00000 ; gcrRegs +[eax] ;; size=2 bbWeight=0.44 PerfScore 0.11 G_M21386_IG04: ; bbWeight=0.44, epilog, nogc, extend
- pop esi
pop ebp ret
- ;; size=3 bbWeight=0.44 PerfScore 0.88
+ ;; size=2 bbWeight=0.44 PerfScore 0.66
G_M21386_IG05: ; bbWeight=0.56, gcVars=00000000 {}, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[edx] +[ecx]
- mov esi, dword ptr [eax+0x1C] - test esi, 0xD1FFAB1E
+ mov edx, dword ptr [eax+0x1C] + test edx, 0xD1FFAB1E
jne SHORT G_M21386_IG07
- test esi, 0xD1FFAB1E
+ test edx, 0xD1FFAB1E
jne SHORT G_M21386_IG07
- test esi, 0xD1FFAB1E - je SHORT G_M21386_IG08
+ test edx, 0xD1FFAB1E + je SHORT G_M21386_IG07
lea edx, bword ptr [ecx+0x0C] ; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_EAX @@ -64,22 +62,10 @@ G_M21386_IG06: ; bbWeight=0.56, gcrefRegs=00000003 {eax ecx}, byrefRegs=0 ;; size=3 bbWeight=0.56 PerfScore 0.56 G_M21386_IG07: ; bbWeight=0.56, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc ; gcrRegs -[ecx]
- pop esi
pop ebp ret
- ;; size=3 bbWeight=0.56 PerfScore 1.12 -G_M21386_IG08: ; bbWeight=0.02, gcVars=00000000 {}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz - test esi, 0xD1FFAB1E - jne SHORT G_M21386_IG07 - test esi, 0x20000 - jne SHORT G_M21386_IG07 - test esi, 0x10000 - jne SHORT G_M21386_IG07 - test esi, 0xD1FFAB1E - je SHORT G_M21386_IG07 - jmp SHORT G_M21386_IG07 - ;; size=34 bbWeight=0.02 PerfScore 0.17
+ ;; size=2 bbWeight=0.56 PerfScore 0.84
-Total bytes of code 98, prolog size 4, PerfScore 13.33, instruction count 35, allocated bytes for code 98 (MethodHash=7308ac75) for method Roslyn.Utilities.AsyncLazy`1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (Tier1)
+Total bytes of code 61, prolog size 3, PerfScore 11.66, instruction count 23, allocated bytes for code 61 (MethodHash=7308ac75) for method Roslyn.Utilities.AsyncLazy`1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (Tier1)
; ============================================================

-37 (-37.76%) : 149146.dasm - Roslyn.Utilities.AsyncLazy1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)

@@ -11,29 +11,28 @@ ; ; V00 this [V00,T00] ( 7, 6 ) ref -> ecx this class-hnd single-def <Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]> ; V01 arg1 [V01,T01] ( 5, 5 ) ref -> eax class-hnd single-def <System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]>
-; V02 tmp0 [V02,T02] ( 8, 4 ) int -> esi "Inline stloc first use temp"
+; V02 tmp0 [V02,T02] ( 4, 4 ) int -> edx "Inline stloc first use temp"
;* V03 tmp1 [V03,T03] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; ; Lcl frame size = 0
-G_M46606_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M46606_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp mov ebp, esp
- push esi
mov eax, edx ; gcrRegs +[eax]
- ;; size=6 bbWeight=1 PerfScore 2.50
+ ;; size=5 bbWeight=1 PerfScore 1.50
G_M46606_IG02: ; bbWeight=1, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[ecx] cmp gword ptr [ecx+0x0C], 0 jne SHORT G_M46606_IG05
- mov esi, dword ptr [eax+0x1C] - test esi, 0xD1FFAB1E
+ mov edx, dword ptr [eax+0x1C] + test edx, 0xD1FFAB1E
jne SHORT G_M46606_IG04
- test esi, 0xD1FFAB1E
+ test edx, 0xD1FFAB1E
jne SHORT G_M46606_IG04
- test esi, 0xD1FFAB1E - je SHORT G_M46606_IG07
+ test edx, 0xD1FFAB1E + je SHORT G_M46606_IG04
lea edx, bword ptr [ecx+0x0C] ; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_EAX @@ -48,33 +47,19 @@ G_M46606_IG03: ; bbWeight=1, gcrefRegs=00000003 {eax ecx}, byrefRegs=0000 ;; size=3 bbWeight=1 PerfScore 1.00 G_M46606_IG04: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc ; gcrRegs -[ecx]
- pop esi
pop ebp ret
- ;; size=3 bbWeight=1 PerfScore 2.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
G_M46606_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[eax] +[ecx] mov eax, gword ptr [ecx+0x0C] ; gcrRegs +[eax] ;; size=3 bbWeight=0 PerfScore 0.00 G_M46606_IG06: ; bbWeight=0, epilog, nogc, extend
- pop esi
pop ebp ret
- ;; size=3 bbWeight=0 PerfScore 0.00 -G_M46606_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[ecx] - test esi, 0xD1FFAB1E - jne SHORT G_M46606_IG04 - test esi, 0x20000 - jne SHORT G_M46606_IG04 - test esi, 0x10000 - jne SHORT G_M46606_IG04 - test esi, 0xD1FFAB1E - je SHORT G_M46606_IG04 - jmp SHORT G_M46606_IG04 - ;; size=34 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=0 PerfScore 0.00
-Total bytes of code 98, prolog size 4, PerfScore 18.00, instruction count 34, allocated bytes for code 98 (MethodHash=b9a349f1) for method Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
+Total bytes of code 61, prolog size 3, PerfScore 16.50, instruction count 22, allocated bytes for code 61 (MethodHash=b9a349f1) for method Roslyn.Utilities.AsyncLazy`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]):System.Threading.Tasks.Task`1[Microsoft.CodeAnalysis.ProjectState+AnalyzerConfigOptionsCache]:this (Tier1)
; ============================================================

+32 (+2.11%) : 592876.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex30978_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -57,21 +57,21 @@ ;* V46 tmp30 [V46 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ; V47 tmp31 [V47,T21] ( 3, 24 ) int -> [ebp-0x40] spill-single-def "Inlining Arg" ; V48 tmp32 [V48,T31] ( 2, 16 ) byref -> [ebp-0x80] spill-single-def "Inlining Arg"
-; V49 tmp33 [V49,T09] ( 3, 48 ) int -> eax "Inline stloc first use temp"
+; V49 tmp33 [V49,T09] ( 3, 48 ) int -> ecx "Inline stloc first use temp"
; V50 tmp34 [V50,T06] ( 4, 64 ) int -> eax "Inline stloc first use temp" ; V51 tmp35 [V51,T03] ( 3, 96 ) ref -> ecx class-hnd "impAppendStmt" <<unknown class>> ;* V52 tmp36 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V53 tmp37 [V53,T04] ( 3, 96 ) byref -> eax "dup spill"
+; V53 tmp37 [V53,T04] ( 3, 96 ) byref -> ecx "dup spill"
; V54 tmp38 [V54,T74] ( 4, 3.01) int -> [ebp-0x44] "Inlining Arg" ; V55 tmp39 [V55,T70] ( 5, 4.01) int -> [ebp-0x48] "Inlining Arg" ;* V56 tmp40 [V56 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" ; V57 tmp41 [V57,T81] ( 4, 2 ) int -> edi single-def "Inline stloc first use temp" ; V58 tmp42 [V58,T76] ( 3, 3 ) ref -> ecx class-hnd single-def "impAppendStmt" <<unknown class>>
-; V59 tmp43 [V59,T68] ( 3, 6 ) int -> ecx "Inline stloc first use temp" -; V60 tmp44 [V60,T51] ( 4, 8 ) int -> edx "Inline stloc first use temp" -; V61 tmp45 [V61,T39] ( 3, 12 ) ref -> ecx class-hnd "impAppendStmt" <<unknown class>>
+; V59 tmp43 [V59,T68] ( 3, 6 ) int -> edx "Inline stloc first use temp" +; V60 tmp44 [V60,T51] ( 4, 8 ) int -> ecx "Inline stloc first use temp" +; V61 tmp45 [V61,T39] ( 3, 12 ) ref -> edx class-hnd "impAppendStmt" <<unknown class>>
;* V62 tmp46 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V63 tmp47 [V63,T40] ( 3, 12 ) byref -> ecx "dup spill"
+; V63 tmp47 [V63,T40] ( 3, 12 ) byref -> edx "dup spill"
; V64 tmp48 [V64,T16] ( 7, 27 ) byref -> [ebp-0x84] spill-single-def "field V02._reference (fldOffset=0x0)" P-INDEP ; V65 tmp49 [V65,T12] ( 12, 37 ) int -> [ebp-0x4C] spill-single-def "field V02._length (fldOffset=0x4)" P-INDEP ; V66 tmp50 [V66,T15] ( 5, 28.50) byref -> [ebp-0x88] "field V05._reference (fldOffset=0x0)" P-INDEP @@ -103,8 +103,8 @@ ; V92 tmp76 [V92,T18] ( 3, 24 ) ref -> ecx "arr expr" ; V93 tmp77 [V93,T35] ( 2, 16 ) ref -> edi "arr expr" ; V94 tmp78 [V94,T19] ( 3, 24 ) ref -> edi "arr expr"
-; V95 tmp79 [V95,T05] ( 3, 96 ) ref -> ecx "arr expr" -; V96 tmp80 [V96,T41] ( 3, 12 ) ref -> edx "arr expr"
+; V95 tmp79 [V95,T05] ( 3, 96 ) ref -> eax "arr expr" +; V96 tmp80 [V96,T41] ( 3, 12 ) ref -> ecx "arr expr"
; V97 tmp81 [V97,T85] ( 2, 2 ) ref -> ecx single-def "argument with side effect" ; V98 cse0 [V98,T62] ( 3, 7.47) int -> edx "CSE - conservative" ; V99 cse1 [V99,T37] ( 4, 9.74) int -> [ebp-0x58] spill-single-def "CSE - conservative" @@ -145,7 +145,7 @@ G_M20866_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 xor ecx, ecx mov dword ptr [ebp-0x18], ecx cmp edx, ebx
- ja G_M20866_IG47
+ ja G_M20866_IG48
lea eax, bword ptr [edi+2*edx] ; byrRegs +[eax] mov bword ptr [ebp-0x68], eax @@ -159,19 +159,19 @@ G_M20866_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 shr ecx, 31 call [<unknown method>] cmp dword ptr [ebp-0x2C], 0
- je G_M20866_IG21
+ je G_M20866_IG42
;; size=72 bbWeight=1 PerfScore 19.75 G_M20866_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref mov ecx, bword ptr [ebp-0x68] ; byrRegs +[ecx] cmp word ptr [ecx], 89
- jne G_M20866_IG21
+ jne G_M20866_IG42
mov eax, dword ptr [ebp-0x10] lea ecx, [eax+0x01] ; byrRegs -[ecx] mov edx, ecx cmp edx, ebx
- ja G_M20866_IG47
+ ja G_M20866_IG48
lea ecx, bword ptr [edi+2*edx] ; byrRegs +[ecx] mov bword ptr [ebp-0x6C], ecx @@ -190,14 +190,14 @@ G_M20866_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov ecx, dword ptr [ebp-0x14] mov eax, ecx cmp eax, edx
- jl G_M20866_IG38
+ jl G_M20866_IG46
;; size=74 bbWeight=0.50 PerfScore 9.75 G_M20866_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref cmp dword ptr [esi+0x3C], 0 mov dword ptr [ebp-0x14], ecx mov dword ptr [ebp-0x38], edx mov dword ptr [ebp-0x34], eax
- je G_M20866_IG34
+ je G_M20866_IG45
;; size=19 bbWeight=0.50 PerfScore 3.50 G_M20866_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref mov eax, gword ptr [esi+0x18] @@ -211,7 +211,7 @@ G_M20866_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov edx, gword ptr [ebp-0x70] ; gcrRegs +[edx] cmp eax, dword ptr [edx+0x04]
- jae G_M20866_IG46
+ jae G_M20866_IG47
mov dword ptr [edx+4*eax+0x08], 1 mov edx, gword ptr [esi+0x1C] mov gword ptr [ebp-0x8C], edx @@ -230,15 +230,15 @@ G_M20866_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [<unknown method>] ; gcrRegs -[ecx] cmp dword ptr [ebp-0x30], 0
- je G_M20866_IG21
+ je G_M20866_IG42
mov ecx, bword ptr [ebp-0x6C] ; byrRegs +[ecx] cmp word ptr [ecx], 88
- jne G_M20866_IG21
+ jne G_M20866_IG42
mov eax, dword ptr [ebp-0x14] inc eax cmp eax, ebx
- ja G_M20866_IG47
+ ja G_M20866_IG48
lea edx, bword ptr [edi+2*eax] ; byrRegs +[edx] mov bword ptr [ebp-0x74], edx @@ -305,7 +305,7 @@ G_M20866_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov dword ptr [ebp-0x60], edi mov eax, dword ptr [ebp-0x18] cmp eax, edi
- jae G_M20866_IG46
+ jae G_M20866_IG47
mov edi, gword ptr [ebp-0x64] ; gcrRegs +[edi] mov edx, dword ptr [ebp-0x28] @@ -315,7 +315,7 @@ G_M20866_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov edx, edi ; gcrRegs +[edx] cmp eax, dword ptr [ebp-0x60]
- jae G_M20866_IG46
+ jae G_M20866_IG47
mov edi, dword ptr [ebp-0x20] ; gcrRegs -[edi] mov dword ptr [edx+4*eax+0x08], edi @@ -323,7 +323,7 @@ G_M20866_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov edi, gword ptr [ebp-0xA8] ; gcrRegs +[edi] cmp eax, dword ptr [ebp-0x60]
- jae G_M20866_IG46
+ jae G_M20866_IG47
mov edx, dword ptr [ebp-0x14] ; gcrRegs -[edx] mov dword ptr [edi+4*eax+0x08], edx @@ -338,7 +338,7 @@ G_M20866_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; GC ptr vars +{V33} mov edi, gword ptr [edi+0x2C] cmp dword ptr [edi+0x04], 1
- jbe G_M20866_IG31
+ jbe G_M20866_IG35
;; size=135 bbWeight=4 PerfScore 190.00 G_M20866_IG09: ; bbWeight=2, gcVars=000000000000000001018000 {V33 V64 V66}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref ; GC ptr vars -{V16 V103} @@ -346,14 +346,14 @@ G_M20866_IG09: ; bbWeight=2, gcVars=000000000000000001018000 {V33 V64 V66 ; gcrRegs -[edi] mov dword ptr [ebp-0x58], edi test edi, edi
- jle G_M20866_IG30
+ jle G_M20866_IG34
;; size=14 bbWeight=2 PerfScore 8.50 G_M20866_IG10: ; bbWeight=1.74, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref mov edi, gword ptr [ebp-0x78] ; gcrRegs +[edi] mov edi, gword ptr [edi+0x28] cmp dword ptr [edi+0x04], 1
- jbe G_M20866_IG46
+ jbe G_M20866_IG47
mov edi, gword ptr [edi+0x0C] mov gword ptr [ebp-0xA0], edi ; GC ptr vars +{V100} @@ -370,22 +370,22 @@ G_M20866_IG10: ; bbWeight=1.74, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov dword ptr [ebp-0x5C], edi mov edi, dword ptr [ebp-0x54] cmp edi, dword ptr [ebp-0x5C]
- jae G_M20866_IG46
+ jae G_M20866_IG47
mov edx, gword ptr [ebp-0x90] ; gcrRegs +[edx] mov edx, dword ptr [edx+4*edi+0x08] ; gcrRegs -[edx] cmp edx, -2
- je G_M20866_IG29
+ je G_M20866_IG33
;; size=87 bbWeight=1.74 PerfScore 44.74 G_M20866_IG11: ; bbWeight=4, gcVars=000000000000004000018000 {V64 V66 V100}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref ; GC ptr vars -{V33 V81} test edx, edx
- jl G_M20866_IG33
+ jl G_M20866_IG44
;; size=8 bbWeight=4 PerfScore 5.00 G_M20866_IG12: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref cmp dword ptr [ebp-0x50], edx
- jl G_M20866_IG28
+ jl G_M20866_IG32
mov edi, gword ptr [ebp-0xA0] ; gcrRegs +[edi] mov gword ptr [ebp-0x98], edi @@ -394,38 +394,38 @@ G_M20866_IG12: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs -[edi] lea edi, [2*edi-0x02] cmp edi, dword ptr [ebp-0x5C]
- jae G_M20866_IG46
+ jae G_M20866_IG47
mov ecx, gword ptr [ebp-0x98] ; gcrRegs +[ecx] mov ecx, dword ptr [ecx+4*edi+0x08] ; gcrRegs -[ecx] test ecx, ecx
- jl G_M20866_IG32
+ jl G_M20866_IG43
;; size=58 bbWeight=4 PerfScore 55.00 G_M20866_IG13: ; bbWeight=4, gcVars=000000000000000000018000 {V64 V66}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref ; GC ptr vars -{V88 V100} mov dword ptr [ebp-0x24], ecx xor edi, edi test edx, edx
- jle G_M20866_IG27
+ jle G_M20866_IG31
;; size=13 bbWeight=4 PerfScore 10.00 G_M20866_IG14: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref add ecx, edi cmp ecx, ebx
- jae G_M20866_IG46
+ jae G_M20866_IG47
mov ebx, bword ptr [ebp-0x84] ; byrRegs +[ebx] movzx ecx, word ptr [ebx+2*ecx] cmp edi, dword ptr [ebp-0x50]
- jae G_M20866_IG46
+ jae G_M20866_IG47
mov ebx, bword ptr [ebp-0x88] cmp cx, word ptr [ebx+2*edi]
- jne G_M20866_IG18
+ jne G_M20866_IG19
inc edi cmp edi, edx mov bword ptr [ebp-0x88], ebx mov ecx, dword ptr [ebp-0x24]
- jl G_M20866_IG26
+ jl G_M20866_IG30
;; size=63 bbWeight=16 PerfScore 256.00 G_M20866_IG15: ; bbWeight=4, gcVars=000000000000000000010000 {V64}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz ; byrRegs -[ebx] @@ -434,7 +434,7 @@ G_M20866_IG15: ; bbWeight=4, gcVars=000000000000000000010000 {V64}, gcref mov ebx, edx mov edx, dword ptr [ebp-0x4C] cmp ebx, edx
- ja G_M20866_IG47
+ ja G_M20866_IG48
mov ecx, bword ptr [ebp-0x84] ; byrRegs +[ecx] ...

+33 (+2.62%) : 592913.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31023_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -54,21 +54,21 @@ ;* V43 tmp27 [V43 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ; V44 tmp28 [V44,T21] ( 3, 24 ) int -> [ebp-0x34] spill-single-def "Inlining Arg" ; V45 tmp29 [V45,T31] ( 2, 16 ) byref -> [ebp-0x60] spill-single-def "Inlining Arg"
-; V46 tmp30 [V46,T09] ( 3, 48 ) int -> eax "Inline stloc first use temp"
+; V46 tmp30 [V46,T09] ( 3, 48 ) int -> ecx "Inline stloc first use temp"
; V47 tmp31 [V47,T06] ( 4, 64 ) int -> eax "Inline stloc first use temp" ; V48 tmp32 [V48,T03] ( 3, 96 ) ref -> ecx class-hnd "impAppendStmt" <<unknown class>> ;* V49 tmp33 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V50 tmp34 [V50,T04] ( 3, 96 ) byref -> eax "dup spill"
+; V50 tmp34 [V50,T04] ( 3, 96 ) byref -> ecx "dup spill"
; V51 tmp35 [V51,T73] ( 4, 3.01) int -> [ebp-0x38] "Inlining Arg" ; V52 tmp36 [V52,T69] ( 5, 4.01) int -> registers "Inlining Arg" ;* V53 tmp37 [V53 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" ; V54 tmp38 [V54,T78] ( 4, 2 ) int -> edx single-def "Inline stloc first use temp" ; V55 tmp39 [V55,T75] ( 3, 3 ) ref -> ecx class-hnd single-def "impAppendStmt" <<unknown class>>
-; V56 tmp40 [V56,T66] ( 3, 6 ) int -> ecx "Inline stloc first use temp" -; V57 tmp41 [V57,T51] ( 4, 8 ) int -> edx "Inline stloc first use temp" -; V58 tmp42 [V58,T39] ( 3, 12 ) ref -> ecx class-hnd "impAppendStmt" <<unknown class>>
+; V56 tmp40 [V56,T66] ( 3, 6 ) int -> edx "Inline stloc first use temp" +; V57 tmp41 [V57,T51] ( 4, 8 ) int -> ecx "Inline stloc first use temp" +; V58 tmp42 [V58,T39] ( 3, 12 ) ref -> edx class-hnd "impAppendStmt" <<unknown class>>
;* V59 tmp43 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V60 tmp44 [V60,T40] ( 3, 12 ) byref -> ecx "dup spill"
+; V60 tmp44 [V60,T40] ( 3, 12 ) byref -> edx "dup spill"
; V61 tmp45 [V61,T16] ( 6, 26.50) byref -> [ebp-0x64] spill-single-def "field V02._reference (fldOffset=0x0)" P-INDEP ; V62 tmp46 [V62,T13] ( 10, 36 ) int -> [ebp-0x3C] spill-single-def "field V02._length (fldOffset=0x4)" P-INDEP ; V63 tmp47 [V63,T15] ( 5, 28.50) byref -> [ebp-0x68] "field V05._reference (fldOffset=0x0)" P-INDEP @@ -98,8 +98,8 @@ ; V87 tmp71 [V87,T18] ( 3, 24 ) ref -> eax "arr expr" ; V88 tmp72 [V88,T35] ( 2, 16 ) ref -> edi "arr expr" ; V89 tmp73 [V89,T19] ( 3, 24 ) ref -> edi "arr expr"
-; V90 tmp74 [V90,T05] ( 3, 96 ) ref -> ecx "arr expr" -; V91 tmp75 [V91,T41] ( 3, 12 ) ref -> edx "arr expr"
+; V90 tmp74 [V90,T05] ( 3, 96 ) ref -> eax "arr expr" +; V91 tmp75 [V91,T41] ( 3, 12 ) ref -> ecx "arr expr"
; V92 tmp76 [V92,T81] ( 2, 2 ) ref -> ecx single-def "argument with side effect" ; V93 cse0 [V93,T62] ( 3, 7.47) int -> eax "CSE - conservative" ; V94 cse1 [V94,T37] ( 4, 9.74) int -> [ebp-0x44] spill-single-def "CSE - conservative" @@ -139,7 +139,7 @@ G_M32068_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 xor edx, edx mov dword ptr [ebp-0x18], edx cmp eax, ebx
- ja G_M32068_IG43
+ ja G_M32068_IG45
lea ecx, bword ptr [edi+2*eax] ; byrRegs +[ecx] mov bword ptr [ebp-0x50], ecx @@ -152,20 +152,20 @@ G_M32068_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 shr ecx, 31 call [<unknown method>] cmp dword ptr [ebp-0x10], 0
- jne G_M32068_IG20
+ jne G_M32068_IG40
;; size=65 bbWeight=1 PerfScore 19.25 G_M32068_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref cmp dword ptr [ebp-0x2C], 1
- jbe G_M32068_IG20
+ jbe G_M32068_IG40
mov ecx, bword ptr [ebp-0x50] ; byrRegs +[ecx] cmp word ptr [ecx], 10
- je G_M32068_IG20
+ je G_M32068_IG40
cmp word ptr [ecx+0x02], 10
- je G_M32068_IG20
+ je G_M32068_IG40
mov dword ptr [ebp-0x14], 2 cmp ebx, 2
- jb G_M32068_IG43
+ jb G_M32068_IG45
lea edx, bword ptr [edi+0x04] ; byrRegs +[edx] mov bword ptr [ebp-0x54], edx @@ -185,7 +185,7 @@ G_M32068_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; GC ptr vars +{V63} mov dword ptr [ebp-0x40], edx cmp dword ptr [esi+0x3C], 0
- je G_M32068_IG32
+ je G_M32068_IG43
;; size=95 bbWeight=0.50 PerfScore 14.50 G_M32068_IG04: ; bbWeight=0.50, gcVars=000000000000000000018000 {V61 V63}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref ; byrRegs -[eax] @@ -201,7 +201,7 @@ G_M32068_IG04: ; bbWeight=0.50, gcVars=000000000000000000018000 {V61 V63} mov edi, gword ptr [ebp-0x58] ; gcrRegs +[edi] cmp ecx, dword ptr [edi+0x04]
- jae G_M32068_IG42
+ jae G_M32068_IG44
mov dword ptr [edi+4*ecx+0x08], 1 mov ecx, gword ptr [esi+0x1C] ; gcrRegs +[ecx] @@ -252,7 +252,7 @@ G_M32068_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov dword ptr [ebp-0x4C], edx mov ecx, dword ptr [ebp-0x18] cmp ecx, edx
- jae G_M32068_IG42
+ jae G_M32068_IG44
mov edx, dword ptr [ebp-0x28] mov dword ptr [eax+4*ecx+0x08], edx inc ecx @@ -260,7 +260,7 @@ G_M32068_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs +[edx] mov eax, edx cmp ecx, dword ptr [ebp-0x4C]
- jae G_M32068_IG42
+ jae G_M32068_IG44
mov edx, dword ptr [ebp-0x20] ; gcrRegs -[edx] mov dword ptr [eax+4*ecx+0x08], edx @@ -268,7 +268,7 @@ G_M32068_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov edx, gword ptr [ebp-0x84] ; gcrRegs +[edx] cmp ecx, dword ptr [ebp-0x4C]
- jae G_M32068_IG42
+ jae G_M32068_IG44
mov eax, dword ptr [ebp-0x14] ; gcrRegs -[eax] mov dword ptr [edx+4*ecx+0x08], eax @@ -281,7 +281,7 @@ G_M32068_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs +[eax] mov edx, gword ptr [eax+0x2C] cmp dword ptr [edx+0x04], 1
- jbe G_M32068_IG29
+ jbe G_M32068_IG33
;; size=122 bbWeight=4 PerfScore 171.00 G_M32068_IG08: ; bbWeight=2, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref ; GC ptr vars -{V98} @@ -289,12 +289,12 @@ G_M32068_IG08: ; bbWeight=2, gcrefRegs=00000045 {eax edx esi}, byrefRegs= ; gcrRegs -[edx] mov dword ptr [ebp-0x44], edx test edx, edx
- jle G_M32068_IG28
+ jle G_M32068_IG32
;; size=14 bbWeight=2 PerfScore 8.50 G_M32068_IG09: ; bbWeight=1.74, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref mov eax, gword ptr [eax+0x28] cmp dword ptr [eax+0x04], 1
- jbe G_M32068_IG42
+ jbe G_M32068_IG44
mov eax, gword ptr [eax+0x0C] mov gword ptr [ebp-0x7C], eax ; GC ptr vars +{V95} @@ -305,22 +305,22 @@ G_M32068_IG09: ; bbWeight=1.74, gcrefRegs=00000041 {eax esi}, byrefRegs=0 ; gcrRegs -[eax] mov dword ptr [ebp-0x48], eax cmp edx, eax
- jae G_M32068_IG42
+ jae G_M32068_IG44
mov eax, gword ptr [ebp-0x6C] ; gcrRegs +[eax] mov eax, dword ptr [eax+4*edx+0x08] ; gcrRegs -[eax] cmp eax, -2
- je G_M32068_IG27
+ je G_M32068_IG31
;; size=59 bbWeight=1.74 PerfScore 33.01 G_M32068_IG10: ; bbWeight=4, gcVars=000000000000004000018000 {V61 V63 V95}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref ; GC ptr vars -{V76} test eax, eax
- jl G_M32068_IG31
+ jl G_M32068_IG42
;; size=8 bbWeight=4 PerfScore 5.00 G_M32068_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref cmp dword ptr [ebp-0x40], eax
- jl G_M32068_IG26
+ jl G_M32068_IG30
mov edi, gword ptr [ebp-0x7C] ; gcrRegs +[edi] mov gword ptr [ebp-0x74], edi @@ -329,38 +329,38 @@ G_M32068_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs -[edi] lea edi, [2*edi-0x02] cmp edi, dword ptr [ebp-0x48]
- jae G_M32068_IG42
+ jae G_M32068_IG44
mov edx, gword ptr [ebp-0x74] ; gcrRegs +[edx] mov edx, dword ptr [edx+4*edi+0x08] ; gcrRegs -[edx] test edx, edx
- jl G_M32068_IG30
+ jl G_M32068_IG41
;; size=49 bbWeight=4 PerfScore 55.00 G_M32068_IG12: ; bbWeight=4, gcVars=000000000000000000018000 {V61 V63}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref ; GC ptr vars -{V83 V95} mov dword ptr [ebp-0x24], edx xor edi, edi test eax, eax
- jle G_M32068_IG25
+ jle G_M32068_IG29
;; size=13 bbWeight=4 PerfScore 10.00 G_M32068_IG13: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref add edx, edi cmp edx, ebx
- jae G_M32068_IG42
+ jae G_M32068_IG44
mov ebx, bword ptr [ebp-0x64] ; byrRegs +[ebx] movzx edx, word ptr [ebx+2*edx] cmp edi, dword ptr [ebp-0x40]
- jae G_M32068_IG42
+ jae G_M32068_IG44
mov ebx, bword ptr [ebp-0x68] cmp dx, word ptr [ebx+2*edi]
- jne G_M32068_IG17
+ jne G_M32068_IG18
inc edi cmp edi, eax mov bword ptr [ebp-0x68], ebx mov edx, dword ptr [ebp-0x24]
- jl G_M32068_IG24
+ jl G_M32068_IG28
;; size=54 bbWeight=16 PerfScore 256.00 G_M32068_IG14: ; bbWeight=4, gcVars=000000000000000000010000 {V61}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz ; byrRegs -[ebx] @@ -369,7 +369,7 @@ G_M32068_IG14: ; bbWeight=4, gcVars=000000000000000000010000 {V61}, gcref mov ebx, eax mov eax, dword ptr [ebp-0x3C] cmp ebx, eax
- ja G_M32068_IG43
+ ja G_M32068_IG45
mov edx, bword ptr [ebp-0x64] ; byrRegs +[edx] lea edx, bword ptr [edx+2*ebx] @@ -415,27 +415,33 @@ G_M32068_IG15: ; bbWeight=2, gcVars=000000000000000000018000 {V61 V63}, g G_M32068_IG16: ; bbWeight=0.50, gcVars=000000000000000000010000 {V61}, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, gcvars, byref ; GC ptr vars -{V63} test edi, edi
- mov dword ptr [ebp-0x1C], edx - jne G_M32068_IG34 - ;; size=11 bbWeight=0.50 PerfScore 1.12 -G_M32068_IG17: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x14], ebx + mov bword ptr [ebp-0x68], eax + ; GC ptr vars +{V63} + jne G_M32068_IG27 + ;; size=14 bbWeight=0.50 PerfScore 1.62 +G_M32068_IG17: ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; byrRegs -[eax]
+ ; GC ptr vars -{V63} + mov dword ptr [ebp-0x1C], edx + ;; size=3 bbWeight=0.25 PerfScore 0.25 +G_M32068_IG18: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edx, dword ptr [ebp-0x1C] dec edx mov dword ptr [ebp-0x1C], edx test edx, edx
- jl G_M32068_IG20
+ jl G_M32068_IG40
...

+21 (+10.34%) : 442763.dasm - System.Xml.XmlConvert:CreateInvalidNameCharException(System.String,int,int):System.Exception (Tier1)

@@ -9,12 +9,12 @@ ; 1 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T04] ( 3, 3 ) ref -> edi class-hnd single-def <System.String> -; V01 arg1 [V01,T01] ( 5, 5 ) int -> esi single-def -; V02 arg2 [V02,T08] ( 1, 1 ) int -> [ebp+0x08] single-def
+; V00 arg0 [V00,T04] ( 4, 3 ) ref -> edi class-hnd single-def <System.String> +; V01 arg1 [V01,T01] ( 6, 5 ) int -> esi single-def +; V02 arg2 [V02,T08] ( 2, 1 ) int -> [ebp+0x08] single-def
; V03 tmp0 [V03,T06] ( 5, 3 ) ref -> ebx ; V04 tmp1 [V04,T07] ( 3, 2 ) ref -> eax class-hnd "Inline return value spill temp" <System.Exception>
-; V05 tmp2 [V05,T02] ( 4, 6 ) ref -> edi class-hnd exact single-def "Inlining Arg" <System.String[]>
+; V05 tmp2 [V05,T02] ( 5, 6 ) ref -> edi class-hnd exact single-def "Inlining Arg" <System.String[]>
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String[]> ; V07 tmp4 [V07,T09] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" @@ -44,20 +44,21 @@ G_M2230_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 ; gcrRegs +[eax] mov ebx, eax ; gcrRegs +[ebx]
- ;; size=16 bbWeight=1 PerfScore 4.50 -G_M2230_IG03: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax]
mov ecx, edi ; gcrRegs +[ecx] mov edx, esi call [<unknown method>]
- ; gcrRegs -[ecx edi] +[eax]
+ ; gcrRegs -[ecx edi]
mov edi, eax ; gcrRegs +[edi] cmp dword ptr [ebp+0x08], 0
- je SHORT G_M2230_IG07
+ je G_M2230_IG07 + ;; size=38 bbWeight=1 PerfScore 11.25 +G_M2230_IG03: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax]
mov ecx, 0xD1FFAB1E ; System.Xml.XmlException call CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[eax]
mov gword ptr [ebp-0x10], eax ; GC ptr vars +{V09} inc esi @@ -103,7 +104,7 @@ G_M2230_IG03: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000 xor ecx, ecx ; gcrRegs +[ecx] mov gword ptr [eax+0x48], ecx
- ;; size=104 bbWeight=1 PerfScore 29.75
+ ;; size=86 bbWeight=1 PerfScore 23.00
G_M2230_IG04: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref ; gcrRegs -[ecx] mov dword ptr [eax+0x50], ecx @@ -126,8 +127,16 @@ G_M2230_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, ; gcrRegs -[ecx] +[eax] mov ebx, eax ; gcrRegs +[ebx]
- jmp G_M2230_IG03 - ;; size=18 bbWeight=0 PerfScore 0.00
+ mov ecx, edi + ; gcrRegs +[ecx] + mov edx, esi + call [<unknown method>] + ; gcrRegs -[ecx edi] + mov edi, eax + ; gcrRegs +[edi] + cmp dword ptr [ebp+0x08], 0 + jne G_M2230_IG03 + ;; size=35 bbWeight=0 PerfScore 0.00
G_M2230_IG07: ; bbWeight=0, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[eax] mov ecx, 0xD1FFAB1E ; <unknown class> @@ -152,6 +161,6 @@ G_M2230_IG07: ; bbWeight=0, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000 jmp SHORT G_M2230_IG05 ;; size=36 bbWeight=0 PerfScore 0.00
-Total bytes of code 203, prolog size 9, PerfScore 45.75, instruction count 66, allocated bytes for code 203 (MethodHash=55e8f749) for method System.Xml.XmlConvert:CreateInvalidNameCharException(System.String,int,int):System.Exception (Tier1)
+Total bytes of code 224, prolog size 9, PerfScore 45.75, instruction count 71, allocated bytes for code 224 (MethodHash=55e8f749) for method System.Xml.XmlConvert:CreateInvalidNameCharException(System.String,int,int):System.Exception (Tier1)
; ============================================================

librariestestsnotieredcompilation.run.windows.x86.Release.mch

-19 (-37.25%) : 147565.dasm - System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)

@@ -7,9 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 4, 3.50) int -> ecx single-def
+; V00 arg0 [V00,T01] ( 3, 3 ) int -> ecx single-def
; V01 loc0 [V01,T02] ( 3, 2 ) ubyte -> eax
-; V02 rat0 [V02,T00] ( 3, 6 ) int -> eax "ReplaceWithLclVar is creating a new local variable"
+; V02 rat0 [V02,T00] ( 3, 6 ) int -> ecx "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 0 @@ -18,54 +18,25 @@ G_M3102_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, mov ebp, esp ;; size=3 bbWeight=1 PerfScore 1.25 G_M3102_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- lea eax, [ecx-0x02] - cmp eax, 19 - ja SHORT G_M3102_IG03 - lea edx, [@RWD00] - mov edx, dword ptr [edx+4*eax] - lea ecx, G_M3102_IG02 - add edx, ecx - jmp edx - ;; size=27 bbWeight=1 PerfScore 7.50
+ add ecx, -2 + cmp ecx, 19 + ja SHORT G_M3102_IG04 + mov eax, 0x3C003 + bt eax, ecx + jae SHORT G_M3102_IG04 + ;; size=18 bbWeight=1 PerfScore 3.25
G_M3102_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- add ecx, -101 - cmp ecx, 2 - jbe SHORT G_M3102_IG05 - jmp SHORT G_M3102_IG05 - ;; size=10 bbWeight=0.50 PerfScore 1.75 -G_M3102_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, 1
- jmp SHORT G_M3102_IG06
+ jmp SHORT G_M3102_IG05
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M3102_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M3102_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3102_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M3102_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
pop ebp ret ;; size=2 bbWeight=1 PerfScore 1.50
-RWD00 dd G_M3102_IG04 - G_M3102_IG02 - dd G_M3102_IG04 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG04 - G_M3102_IG02 - dd G_M3102_IG04 - G_M3102_IG02 - dd G_M3102_IG04 - G_M3102_IG02 - dd G_M3102_IG04 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02 - dd G_M3102_IG05 - G_M3102_IG02
- -Total bytes of code 51, prolog size 3, PerfScore 13.25, instruction count 19, allocated bytes for code 51 (MethodHash=6afef3e1) for method System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
+Total bytes of code 32, prolog size 3, PerfScore 7.25, instruction count 13, allocated bytes for code 32 (MethodHash=6afef3e1) for method System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
; ============================================================

-17 (-25.00%) : 5400.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)

@@ -8,7 +8,7 @@ ; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 5, 4 ) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T00] ( 4, 3.50) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> edx class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference> ; V02 loc0 [V02,T06] ( 3, 1.50) int -> edx ld-addr-op ;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> @@ -19,9 +19,9 @@ ; V08 tmp3 [V08,T04] ( 3, 2.50) byref -> eax single-def "Inline stloc first use temp" ;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V10 tmp5 [V10,T07] ( 3, 1.50) ref -> ecx single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V11 rat0 [V11,T05] ( 2, 2 ) int -> eax "Spilling to split statement for tree"
+;* V11 rat0 [V11,T05] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V12 rat1 [V12,T09] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V13 rat2 [V13,T03] ( 2, 2 ) int -> eax "fgMakeTemp is creating a new local variable"
+;* V13 rat2 [V13,T03] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 0 @@ -41,51 +41,43 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=0000 ; gcrRegs -[ecx edx] ; byrRegs +[eax] test eax, eax
- je SHORT G_M43979_IG05
+ je SHORT G_M43979_IG04
;; size=15 bbWeight=1 PerfScore 9.25 G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref, isz mov edx, dword ptr [eax] mov ecx, gword ptr [esi+0x44] ; gcrRegs +[ecx]
- mov eax, dword ptr [esi] - ; byrRegs -[eax] - mov eax, dword ptr [eax+0x24] - mov eax, dword ptr [eax] - mov eax, dword ptr [eax+0x80] - test eax, eax - jne SHORT G_M43979_IG07 - ;; size=22 bbWeight=0.50 PerfScore 6.62 -G_M43979_IG04: ; bbWeight=0.10, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M43979_IG07 - ;; size=2 bbWeight=0.10 PerfScore 0.20 -G_M43979_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M43979_IG06 + ;; size=7 bbWeight=0.50 PerfScore 3.00 +G_M43979_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
+ ; byrRegs -[eax]
xor eax, eax ; gcrRegs +[eax] ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M43979_IG06: ; bbWeight=0.50, epilog, nogc, extend
+G_M43979_IG05: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop ebp ret ;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M43979_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M43979_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[ecx] cmp edx, dword ptr [ecx+0x04]
- jae SHORT G_M43979_IG09
+ jae SHORT G_M43979_IG08
mov eax, gword ptr [ecx+4*edx+0x08] ; gcrRegs +[eax] ;; size=9 bbWeight=0.50 PerfScore 3.00
-G_M43979_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M43979_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop ebp ret ;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M43979_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M43979_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax ecx] call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 68, prolog size 4, PerfScore 23.70, instruction count 30, allocated bytes for code 68 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
+Total bytes of code 51, prolog size 4, PerfScore 19.88, instruction count 24, allocated bytes for code 51 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
; ============================================================

-30 (-21.74%) : 158982.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)

@@ -7,7 +7,7 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 9, 4 ) int -> esi single-def
+; V00 arg0 [V00,T00] ( 6, 4 ) int -> esi single-def
; V01 arg1 [V01,T01] ( 4, 2 ) ref -> edi class-hnd single-def <System.String> ; V02 tmp0 [V02,T02] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V03 tmp1 [V03,T03] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> @@ -27,9 +27,9 @@ G_M20631_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=10 bbWeight=1 PerfScore 4.75 G_M20631_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz cmp esi, 452
- jg SHORT G_M20631_IG07
+ jg SHORT G_M20631_IG04
cmp esi, 250
- jne SHORT G_M20631_IG06
+ jne SHORT G_M20631_IG04
;; size=16 bbWeight=1 PerfScore 2.50 G_M20631_IG03: ; bbWeight=1, epilog, nogc, extend pop ebx @@ -77,22 +77,9 @@ G_M20631_IG05: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 ; gcrRegs +[ecx] call CORINFO_HELP_THROW ; gcrRegs -[ecx ebx]
- ;; size=32 bbWeight=0 PerfScore 0.00 -G_M20631_IG06: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[edi] - lea ecx, [esi-0x1C3] - cmp ecx, 1 - jbe SHORT G_M20631_IG04 - jmp SHORT G_M20631_IG04 - ;; size=13 bbWeight=0 PerfScore 0.00 -G_M20631_IG07: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz - cmp esi, 552 - je SHORT G_M20631_IG04 - cmp esi, 554 - je SHORT G_M20631_IG04 - jmp SHORT G_M20631_IG04 - ;; size=18 bbWeight=0 PerfScore 0.00
+ int3 + ;; size=33 bbWeight=0 PerfScore 0.00
-Total bytes of code 138, prolog size 6, PerfScore 10.25, instruction count 47, allocated bytes for code 138 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
+Total bytes of code 108, prolog size 6, PerfScore 10.25, instruction count 39, allocated bytes for code 108 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
; ============================================================

+25 (+1.54%) : 282324.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1346_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -8,29 +8,29 @@ ; 7 inlinees with PGO data; 39 single block inlinees; 17 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 60, 902.50) ref -> [ebp-0x78] class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
+; V00 arg0 [V00,T01] ( 60, 902.50) ref -> [ebp-0x80] class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
; V01 arg1 [V01,T89] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]> ;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V03 loc1 [V03,T74] ( 6, 5 ) int -> [ebp-0x10] spill-single-def
-; V04 loc2 [V04,T15] ( 26, 156 ) int -> [ebp-0x14]
+; V04 loc2 [V04,T16] ( 25, 152 ) int -> [ebp-0x14]
;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V06 loc4 [V06,T00] ( 60,1049 ) int -> [ebp-0x18] ;* V07 loc5 [V07 ] ( 0, 0 ) int -> zero-ref ; V08 loc6 [V08,T13] ( 10, 169 ) int -> [ebp-0x1C]
-; V09 loc7 [V09,T27] ( 8, 61 ) int -> [ebp-0x20] -; V10 loc8 [V10,T16] ( 5, 154 ) int -> [ebp-0x24]
+; V09 loc7 [V09,T28] ( 7, 57 ) int -> [ebp-0x20] +; V10 loc8 [V10,T15] ( 5, 154 ) int -> [ebp-0x24]
; V11 loc9 [V11,T44] ( 4, 32 ) int -> [ebp-0x28] ; V12 loc10 [V12,T40] ( 7, 38 ) int -> [ebp-0x2C] ; V13 loc11 [V13,T24] ( 3, 80 ) int -> [ebp-0x30] spill-single-def ; V14 loc12 [V14,T17] ( 10, 146 ) int -> [ebp-0x34]
-; V15 loc13 [V15,T41] ( 4, 33.50) int -> [ebp-0x38] spill-single-def -; V16 tmp0 [V16,T30] ( 3, 48 ) ref -> [ebp-0x7C] class-hnd spill-single-def "impAppendStmt" <<unknown class>> -; V17 tmp1 [V17,T55] ( 2, 32 ) int -> [ebp-0x3C] spill-single-def "Strict ordering of exceptions for Array store" -; V18 tmp2 [V18,T48] ( 2, 32 ) ref -> [ebp-0x80] class-hnd spill-single-def "impAppendStmt" <<unknown class>>
+; V15 loc13 [V15,T41] ( 4, 33.50) int -> edi +; V16 tmp0 [V16,T30] ( 3, 48 ) ref -> [ebp-0x84] class-hnd spill-single-def "impAppendStmt" <<unknown class>> +; V17 tmp1 [V17,T55] ( 2, 32 ) int -> [ebp-0x38] spill-single-def "Strict ordering of exceptions for Array store" +; V18 tmp2 [V18,T48] ( 2, 32 ) ref -> [ebp-0x88] class-hnd spill-single-def "impAppendStmt" <<unknown class>>
; V19 tmp3 [V19,T56] ( 2, 32 ) int -> edx "Strict ordering of exceptions for Array store" ;* V20 tmp4 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V21 tmp5 [V21,T72] ( 3, 6 ) int -> [ebp-0x40] spill-single-def "Inlining Arg" -; V22 tmp6 [V22,T79] ( 2, 4 ) byref -> [ebp-0x84] spill-single-def "Inlining Arg"
+; V21 tmp5 [V21,T72] ( 3, 6 ) int -> [ebp-0x3C] spill-single-def "Inlining Arg" +; V22 tmp6 [V22,T79] ( 2, 4 ) byref -> [ebp-0x8C] spill-single-def "Inlining Arg"
;* V23 tmp7 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp8 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V25 tmp9 [V25 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" @@ -55,8 +55,8 @@ ;* V44 tmp28 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V45 tmp29 [V45 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg" ;* V46 tmp30 [V46 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V47 tmp31 [V47,T38] ( 3, 48 ) int -> [ebp-0x44] spill-single-def "Inlining Arg" -; V48 tmp32 [V48,T49] ( 2, 32 ) byref -> [ebp-0x88] spill-single-def "Inlining Arg"
+; V47 tmp31 [V47,T38] ( 3, 48 ) int -> [ebp-0x40] spill-single-def "Inlining Arg" +; V48 tmp32 [V48,T49] ( 2, 32 ) byref -> [ebp-0x90] spill-single-def "Inlining Arg"
;* V49 tmp33 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V50 tmp34 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V51 tmp35 [V51,T11] ( 3, 192 ) int -> ecx "Inline stloc first use temp" @@ -65,22 +65,22 @@ ;* V54 tmp38 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match> ; V55 tmp39 [V55,T04] ( 3, 384 ) byref -> ecx "dup spill" ;* V56 tmp40 [V56 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V57 tmp41 [V57,T68] ( 3, 12 ) int -> edi "Inlining Arg" -; V58 tmp42 [V58,T70] ( 2, 8 ) byref -> [ebp-0x8C] spill-single-def "Inlining Arg"
+; V57 tmp41 [V57,T68] ( 3, 12 ) int -> [ebp-0x44] spill-single-def "Inlining Arg" +; V58 tmp42 [V58,T70] ( 2, 8 ) byref -> [ebp-0x94] spill-single-def "Inlining Arg"
;* V59 tmp43 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V60 tmp44 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V61 tmp45 [V61,T29] ( 4, 52 ) int -> [ebp-0x48] "Inlining Arg" ; V62 tmp46 [V62,T25] ( 5, 68 ) int -> [ebp-0x4C] "Inlining Arg" ;* V63 tmp47 [V63 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V64 tmp48 [V64,T45] ( 4, 32 ) int -> ecx "Inline stloc first use temp" -; V65 tmp49 [V65,T31] ( 3, 48 ) ref -> [ebp-0x90] class-hnd spill-single-def "impAppendStmt" <<unknown class>>
+; V64 tmp48 [V64,T45] ( 4, 32 ) int -> edx "Inline stloc first use temp" +; V65 tmp49 [V65,T31] ( 3, 48 ) ref -> [ebp-0x98] class-hnd spill-single-def "impAppendStmt" <<unknown class>>
;* V66 tmp50 [V66 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ; V67 tmp51 [V67,T22] ( 3, 96 ) int -> [ebp-0x50] spill-single-def "Inlining Arg"
-; V68 tmp52 [V68,T26] ( 2, 64 ) byref -> [ebp-0x94] spill-single-def "Inlining Arg"
+; V68 tmp52 [V68,T26] ( 2, 64 ) byref -> [ebp-0x9C] spill-single-def "Inlining Arg"
;* V69 tmp53 [V69 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V70 tmp54 [V70 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V71 tmp55 [V71,T12] ( 3, 192 ) int -> ecx "Inline stloc first use temp"
-; V72 tmp56 [V72,T10] ( 4, 256 ) int -> edx "Inline stloc first use temp"
+; V72 tmp56 [V72,T10] ( 4, 256 ) int -> edi "Inline stloc first use temp"
; V73 tmp57 [V73,T05] ( 3, 384 ) ref -> ecx class-hnd "impAppendStmt" <<unknown class>> ;* V74 tmp58 [V74 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match> ; V75 tmp59 [V75,T06] ( 3, 384 ) byref -> ecx "dup spill" @@ -90,26 +90,26 @@ ;* V79 tmp63 [V79 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V80 tmp64 [V80 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V81 tmp65 [V81,T77] ( 4, 4 ) int -> [ebp-0x54] "Inlining Arg"
-; V82 tmp66 [V82,T75] ( 5, 5 ) int -> ebx "Inlining Arg"
+; V82 tmp66 [V82,T75] ( 5, 5 ) int -> [ebp-0x58] "Inlining Arg"
;* V83 tmp67 [V83 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V84 tmp68 [V84,T84] ( 4, 2 ) int -> edx single-def "Inline stloc first use temp"
+; V84 tmp68 [V84,T84] ( 4, 2 ) int -> edi single-def "Inline stloc first use temp"
; V85 tmp69 [V85,T82] ( 3, 3 ) ref -> ecx class-hnd single-def "impAppendStmt" <<unknown class>>
-; V86 tmp70 [V86,T78] ( 4, 4 ) int -> [ebp-0x58] "Inlining Arg" -; V87 tmp71 [V87,T76] ( 5, 5 ) int -> [ebp-0x5C] "Inlining Arg"
+; V86 tmp70 [V86,T78] ( 4, 4 ) int -> [ebp-0x5C] "Inlining Arg" +; V87 tmp71 [V87,T76] ( 5, 5 ) int -> [ebp-0x60] "Inlining Arg"
;* V88 tmp72 [V88 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V89 tmp73 [V89,T85] ( 4, 2 ) int -> edi single-def "Inline stloc first use temp"
+; V89 tmp73 [V89,T85] ( 4, 2 ) int -> ebx single-def "Inline stloc first use temp"
; V90 tmp74 [V90,T83] ( 3, 3 ) ref -> ecx class-hnd single-def "impAppendStmt" <<unknown class>> ; V91 tmp75 [V91,T73] ( 3, 6 ) int -> ecx "Inline stloc first use temp" ; V92 tmp76 [V92,T69] ( 4, 8 ) int -> edx "Inline stloc first use temp" ; V93 tmp77 [V93,T65] ( 3, 12 ) ref -> ecx class-hnd "impAppendStmt" <<unknown class>> ;* V94 tmp78 [V94 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match> ; V95 tmp79 [V95,T66] ( 3, 12 ) byref -> ecx "dup spill"
-; V96 tmp80 [V96,T59] ( 4, 20 ) byref -> [ebp-0x98] spill-single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V97 tmp81 [V97,T39] ( 9, 40 ) int -> [ebp-0x60] spill-single-def "field V02._length (fldOffset=0x4)" P-INDEP -; V98 tmp82 [V98,T28] ( 7, 59 ) byref -> [ebp-0x9C] "field V05._reference (fldOffset=0x0)" P-INDEP -; V99 tmp83 [V99,T23] ( 9, 85 ) int -> [ebp-0x64] "field V05._length (fldOffset=0x4)" P-INDEP -; V100 tmp84 [V100,T86] ( 2, 2 ) byref -> [ebp-0xA0] spill-single-def "field V20._reference (fldOffset=0x0)" P-INDEP -; V101 tmp85 [V101,T90] ( 2, 2 ) int -> [ebp-0x68] spill-single-def "field V20._length (fldOffset=0x4)" P-INDEP
+; V96 tmp80 [V96,T59] ( 4, 20 ) byref -> [ebp-0xA0] spill-single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V97 tmp81 [V97,T39] ( 9, 40 ) int -> [ebp-0x64] spill-single-def "field V02._length (fldOffset=0x4)" P-INDEP +; V98 tmp82 [V98,T27] ( 7, 59 ) byref -> [ebp-0xA4] "field V05._reference (fldOffset=0x0)" P-INDEP +; V99 tmp83 [V99,T23] ( 9, 85 ) int -> [ebp-0x68] "field V05._length (fldOffset=0x4)" P-INDEP +; V100 tmp84 [V100,T86] ( 2, 2 ) byref -> [ebp-0xA8] spill-single-def "field V20._reference (fldOffset=0x0)" P-INDEP +; V101 tmp85 [V101,T90] ( 2, 2 ) int -> [ebp-0x6C] spill-single-def "field V20._length (fldOffset=0x4)" P-INDEP
;* V102 tmp86 [V102 ] ( 0, 0 ) byref -> zero-ref "field V26._reference (fldOffset=0x0)" P-INDEP ;* V103 tmp87 [V103 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x4)" P-INDEP ;* V104 tmp88 [V104 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP @@ -118,23 +118,23 @@ ;* V107 tmp91 [V107 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x4)" P-INDEP ; V108 tmp92 [V108,T60] ( 2, 16 ) byref -> ecx "field V46._reference (fldOffset=0x0)" P-INDEP ; V109 tmp93 [V109,T62] ( 2, 16 ) int -> edx "field V46._length (fldOffset=0x4)" P-INDEP
-; V110 tmp94 [V110,T80] ( 2, 4 ) byref -> esi "field V56._reference (fldOffset=0x0)" P-INDEP -; V111 tmp95 [V111,T81] ( 2, 4 ) int -> edi "field V56._length (fldOffset=0x4)" P-INDEP
+; V110 tmp94 [V110,T80] ( 2, 4 ) byref -> [ebp-0xAC] spill-single-def "field V56._reference (fldOffset=0x0)" P-INDEP +; V111 tmp95 [V111,T81] ( 2, 4 ) int -> [ebp-0x70] spill-single-def "field V56._length (fldOffset=0x4)" P-INDEP
; V112 tmp96 [V112,T50] ( 2, 32 ) byref -> ecx "field V66._reference (fldOffset=0x0)" P-INDEP
-; V113 tmp97 [V113,T57] ( 2, 32 ) int -> eax "field V66._length (fldOffset=0x4)" P-INDEP
+; V113 tmp97 [V113,T57] ( 2, 32 ) int -> edx "field V66._length (fldOffset=0x4)" P-INDEP
;* V114 tmp98 [V114 ] ( 0, 0 ) byref -> zero-ref "field V76._reference (fldOffset=0x0)" P-INDEP ;* V115 tmp99 [V115 ] ( 0, 0 ) int -> zero-ref "field V76._length (fldOffset=0x4)" P-INDEP ; V116 tmp100 [V116,T51] ( 2, 32 ) ref -> edi "arr expr" ; V117 tmp101 [V117,T52] ( 2, 32 ) ref -> edx "arr expr"
-; V118 tmp102 [V118,T32] ( 3, 48 ) ref -> [ebp-0xA4] spill-single-def "arr expr"
+; V118 tmp102 [V118,T32] ( 3, 48 ) ref -> [ebp-0xB0] spill-single-def "arr expr"
; V119 tmp103 [V119,T53] ( 2, 32 ) ref -> edx "arr expr"
-; V120 tmp104 [V120,T54] ( 2, 32 ) ref -> [ebp-0xA8] spill-single-def "argument with side effect"
+; V120 tmp104 [V120,T54] ( 2, 32 ) ref -> [ebp-0xB4] spill-single-def "argument with side effect"
; V121 tmp105 [V121,T33] ( 3, 48 ) ref -> ecx "arr expr"
-; V122 tmp106 [V122,T02] ( 3, 768 ) ref -> eax "arr expr" -; V123 tmp107 [V123,T34] ( 3, 48 ) ref -> edx "arr expr"
+; V122 tmp106 [V122,T02] ( 3, 768 ) ref -> ecx "arr expr" +; V123 tmp107 [V123,T34] ( 3, 48 ) ref -> ecx "arr expr"
; V124 tmp108 [V124,T07] ( 3, 384 ) ref -> edx "arr expr" ; V125 tmp109 [V125,T35] ( 3, 48 ) ref -> ecx "arr expr"
-; V126 tmp110 [V126,T36] ( 3, 48 ) ref -> edx "arr expr"
+; V126 tmp110 [V126,T36] ( 3, 48 ) ref -> ecx "arr expr"
; V127 tmp111 [V127,T19] ( 3, 96 ) ref -> ecx "arr expr" ; V128 tmp112 [V128,T20] ( 3, 96 ) ref -> ecx "arr expr" ; V129 tmp113 [V129,T21] ( 3, 96 ) ref -> ecx "arr expr" @@ -142,17 +142,17 @@ ; V131 tmp115 [V131,T67] ( 3, 12 ) ref -> edx "arr expr" ; V132 tmp116 [V132,T87] ( 2, 2 ) ref -> ecx single-def "argument with side effect" ; V133 tmp117 [V133,T88] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
-; V134 cse0 [V134,T18] ( 4, 144 ) ref -> [ebp-0xAC] spill-single-def "CSE - conservative" -; V135 cse1 [V135,T14] ( 4, 160 ) ref -> [ebp-0xB0] spill-single-def "CSE - moderate" -; V136 cse2 [V136,T42] ( 4, 32 ) ref -> [ebp-0xB4] spill-single-def "CSE - conservative" -; V137 cse3 [V137,T43] ( 4, 32 ) ref -> [ebp-0xB8] spill-single-def "CSE - conservative" -; V138 cse4 [V138,T37] ( 3, 48 ) ref -> [ebp-0xBC] spill-single-def "CSE - conservative" -; V139 cse5 [V139,T58] ( 3, 24 ) int -> [ebp-0x6C] spill-single-def "CSE - conservative"
+; V134 cse0 [V134,T18] ( 4, 144 ) ref -> [ebp-0xB8] spill-single-def "CSE - conservative" +; V135 cse1 [V135,T14] ( 4, 160 ) ref -> [ebp-0xBC] spill-single-def "CSE - moderate" +; V136 cse2 [V136,T42] ( 4, 32 ) ref -> [ebp-0xC0] spill-single-def "CSE - conservative" +; V137 cse3 [V137,T43] ( 4, 32 ) ref -> [ebp-0xC4] spill-single-def "CSE - conservative" +; V138 cse4 [V138,T37] ( 3, 48 ) ref -> [ebp-0xC8] spill-single-def "CSE - conservative" +; V139 cse5 [V139,T58] ( 3, 24 ) int -> [ebp-0x74] spill-single-def "CSE - conservative"
; V140 cse6 [V140,T71] ( 3, 7 ) ref -> eax hoist "CSE - conservative"
-; V141 cse7 [V141,T46] ( 4, 32 ) int -> [ebp-0x70] spill-single-def "CSE - conservative" -; V142 cse8 [V142,T47] ( 4, 32 ) int -> [ebp-0x74] spill-single-def "CSE - conservative"
+; V141 cse7 [V141,T46] ( 4, 32 ) int -> [ebp-0x78] spill-single-def "CSE - conservative" +; V142 cse8 [V142,T47] ( 4, 32 ) int -> [ebp-0x7C] spill-single-def "CSE - conservative"
;
-; Lcl frame size = 176
+; Lcl frame size = 188
G_M38423_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -160,17 +160,17 @@ G_M38423_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 176
+ sub esp, 188
mov esi, ecx ; gcrRegs +[esi] ;; size=14 bbWeight=1 PerfScore 4.75 G_M38423_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz mov edi, bword ptr [ebp+0x08] ; byrRegs +[edi]
- mov bword ptr [ebp-0x98], edi
+ mov bword ptr [ebp-0xA0], edi
; GC ptr vars +{V96} mov ebx, dword ptr [ebp+0x0C]
- mov dword ptr [ebp-0x60], ebx
+ mov dword ptr [ebp-0x64], ebx
mov eax, dword ptr [esi+0x30] mov dword ptr [ebp-0x14], eax mov edx, eax @@ -181,12 +181,12 @@ G_M38423_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ja G_M38423_IG49 lea edx, bword ptr [edi+2*edx] ; byrRegs +[edx]
- mov bword ptr [ebp-0x84], edx
+ mov bword ptr [ebp-0x8C], edx
; GC ptr vars +{V22} mov edx, ebx ; byrRegs -[edx] sub edx, dword ptr [ebp-0x10]
- mov dword ptr [ebp-0x40], edx
+ mov dword ptr [ebp-0x3C], edx
test edx, edx jge SHORT G_M38423_IG04 ;; size=60 bbWeight=1 PerfScore 16.75 @@ -200,25 +200,25 @@ G_M38423_IG03: ; bbWeight=0.50, gcVars=000080000800000000000000 {V22 V96} ; gcrRegs -[ecx edx] ;; size=16 bbWeight=0.50 PerfScore 1.75 G_M38423_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- mov edx, bword ptr [ebp-0x84]
+ mov edx, bword ptr [ebp-0x8C]
; byrRegs +[edx]
- mov bword ptr [ebp-0xA0], edx
+ mov bword ptr [ebp-0xA8], edx
; GC ptr vars +{V100}
- mov edx, dword ptr [ebp-0x40]
+ mov edx, dword ptr [ebp-0x3C]
; byrRegs -[edx]
- mov dword ptr [ebp-0x68], edx - mov edx, bword ptr [ebp-0xA0]
+ mov dword ptr [ebp-0x6C], edx + mov edx, bword ptr [ebp-0xA8]
; byrRegs +[edx]
- mov bword ptr [ebp-0x9C], edx
+ mov bword ptr [ebp-0xA4], edx
; GC ptr vars +{V98}
- mov edi, dword ptr [ebp-0x68] - mov dword ptr [ebp-0x64], edi
+ mov edi, dword ptr [ebp-0x6C] + mov dword ptr [ebp-0x68], edi
xor ebx, ebx xor edx, edx ; byrRegs -[edx] mov dword ptr [ebp-0x20], edx ;; size=43 bbWeight=1 PerfScore 9.50
-G_M38423_IG05: ; bbWeight=8, gcVars=000000000800000010000000 {V96 V98}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M38423_IG05: ; bbWeight=8, gcVars=000000000800000008000000 {V96 V98}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V22 V100} mov edx, gword ptr [esi+0x14] ; gcrRegs +[edx] @@ -242,40 +242,40 @@ G_M38423_IG06: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 G_M38423_IG07: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz ...

+16 (+3.80%) : 183238.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)

@@ -54,16 +54,16 @@ G_M57654_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[edi] mov ebx, dword ptr [ebp+0x08] ;; size=13 bbWeight=1 PerfScore 5.75
-G_M57654_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M57654_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [esi+0x2C] cmp ecx, 10
- ja SHORT G_M57654_IG06
+ ja G_M57654_IG14
lea edx, [@RWD00] mov edx, dword ptr [edx+4*ecx] lea eax, G_M57654_IG02 add edx, eax jmp edx
- ;; size=27 bbWeight=1 PerfScore 9.00
+ ;; size=31 bbWeight=1 PerfScore 9.00
G_M57654_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz cmp byte ptr [esi+0x40], 0 jne SHORT G_M57654_IG04 @@ -81,32 +81,20 @@ G_M57654_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 mov eax, dword ptr [eax+0x18] ; gcrRegs -[eax] ;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M57654_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
dec eax cmp eax, 2
- ja SHORT G_M57654_IG06
+ ja G_M57654_IG14
mov ecx, eax lea edx, [@RWD44] mov edx, dword ptr [edx+4*ecx] lea eax, G_M57654_IG02 add edx, eax jmp edx
- ;; size=27 bbWeight=0.50 PerfScore 3.75 -G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi edi] - xor eax, eax - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M57654_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop ebx - pop esi - pop edi - pop ebp - ret 8 - ;; size=7 bbWeight=0.50 PerfScore 2.00 -G_M57654_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[esi edi]
+ ;; size=31 bbWeight=0.50 PerfScore 3.75 +G_M57654_IG06: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [esi+0x34], -1
- je G_M57654_IG11
+ je G_M57654_IG09
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] mov eax, dword ptr [ecx] @@ -114,7 +102,7 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e call [eax+0x0C]<unknown method> ; gcrRegs -[ecx] test eax, eax
- je G_M57654_IG11
+ je G_M57654_IG09
push ebx mov ecx, edi ; gcrRegs +[ecx] @@ -122,25 +110,25 @@ G_M57654_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e call [System.Xml.XmlSubtreeReader:CheckBuffer(System.Array,int,int)] ; gcrRegs -[ecx] test ebx, ebx
- je SHORT G_M57654_IG06
+ je G_M57654_IG14
cmp dword ptr [esi+0x38], 0
- jne SHORT G_M57654_IG10
+ jne SHORT G_M57654_IG08
mov ecx, gword ptr [esi+0x1C] ; gcrRegs +[ecx] test ecx, ecx
- je SHORT G_M57654_IG09
+ je SHORT G_M57654_IG07
mov edx, ecx ; gcrRegs +[edx] mov edx, dword ptr [edx] ; gcrRegs -[edx] cmp edx, 0xD1FFAB1E
- jne SHORT G_M57654_IG09
+ jne SHORT G_M57654_IG07
mov edx, dword ptr [edx+0x30] call [edx+0x04]<unknown method> ; gcrRegs -[ecx]
- jmp SHORT G_M57654_IG10 - ;; size=78 bbWeight=0.50 PerfScore 19.25 -G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M57654_IG08 + ;; size=82 bbWeight=0.50 PerfScore 19.25 +G_M57654_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; System.Xml.BinHexDecoder call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax] @@ -150,13 +138,13 @@ G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[eax] ; byrRegs -[edx] ;; size=18 bbWeight=0.50 PerfScore 1.38
-G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M57654_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [esi+0x38] mov edx, gword ptr [esi+0x20] ; gcrRegs +[edx] mov edx, gword ptr [edx+0x14] cmp ecx, dword ptr [edx+0x04]
- je SHORT G_M57654_IG06
+ je G_M57654_IG14
mov ecx, gword ptr [esi+0x1C] ; gcrRegs +[ecx] push dword ptr [ebp+0x0C] @@ -195,9 +183,9 @@ G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [eax+0x10]<unknown method> ; gcrRegs -[ecx esi] mov edi, eax
- jmp SHORT G_M57654_IG14 - ;; size=81 bbWeight=0.50 PerfScore 26.75 -G_M57654_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M57654_IG12 + ;; size=85 bbWeight=0.50 PerfScore 26.75 +G_M57654_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi edi] mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] @@ -210,13 +198,13 @@ G_M57654_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [eax+0x18]<unknown method> ; gcrRegs -[ecx edx esi edi] mov edi, eax
- jmp SHORT G_M57654_IG14
+ jmp SHORT G_M57654_IG12
;; size=21 bbWeight=0.50 PerfScore 6.75
-G_M57654_IG12: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M57654_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi edi] mov dword ptr [esi+0x2C], 10 ;; size=7 bbWeight=0.50 PerfScore 0.50
-G_M57654_IG13: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M57654_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] push dword ptr [ebp+0x0C] @@ -229,16 +217,26 @@ G_M57654_IG13: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[ecx edx edi] mov edi, eax test edi, edi
- jne SHORT G_M57654_IG14
+ jne SHORT G_M57654_IG12
mov dword ptr [esi+0x2C], 1 mov ecx, esi ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx esi] ;; size=38 bbWeight=0.50 PerfScore 8.50
-G_M57654_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M57654_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, edi ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M57654_IG13: ; bbWeight=0.50, epilog, nogc, extend + pop ebx + pop esi + pop edi + pop ebp + ret 8 + ;; size=7 bbWeight=0.50 PerfScore 2.00 +G_M57654_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M57654_IG15: ; bbWeight=0.50, epilog, nogc, extend pop ebx pop esi @@ -282,22 +280,22 @@ G_M57654_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs -[ecx esi] int3 ;; size=36 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M57654_IG06 - G_M57654_IG02 - dd G_M57654_IG12 - G_M57654_IG02 - dd G_M57654_IG06 - G_M57654_IG02 - dd G_M57654_IG06 - G_M57654_IG02 - dd G_M57654_IG06 - G_M57654_IG02
+RWD00 dd G_M57654_IG14 - G_M57654_IG02 + dd G_M57654_IG10 - G_M57654_IG02 + dd G_M57654_IG14 - G_M57654_IG02 + dd G_M57654_IG14 - G_M57654_IG02 + dd G_M57654_IG14 - G_M57654_IG02
dd G_M57654_IG03 - G_M57654_IG02 dd G_M57654_IG03 - G_M57654_IG02 dd G_M57654_IG17 - G_M57654_IG02 dd G_M57654_IG17 - G_M57654_IG02 dd G_M57654_IG17 - G_M57654_IG02
- dd G_M57654_IG13 - G_M57654_IG02 -RWD44 dd G_M57654_IG16 - G_M57654_IG02 - dd G_M57654_IG08 - G_M57654_IG02
dd G_M57654_IG11 - G_M57654_IG02
+RWD44 dd G_M57654_IG16 - G_M57654_IG02 + dd G_M57654_IG06 - G_M57654_IG02 + dd G_M57654_IG09 - G_M57654_IG02
-Total bytes of code 421, prolog size 6, PerfScore 95.38, instruction count 150, allocated bytes for code 421 (MethodHash=18cc1ec9) for method System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
+Total bytes of code 437, prolog size 6, PerfScore 95.38, instruction count 150, allocated bytes for code 437 (MethodHash=18cc1ec9) for method System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
; ============================================================

+16 (+3.80%) : 183236.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)

@@ -54,16 +54,16 @@ G_M11729_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[edi] mov ebx, dword ptr [ebp+0x08] ;; size=13 bbWeight=1 PerfScore 5.75
-G_M11729_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11729_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [esi+0x2C] cmp ecx, 10
- ja SHORT G_M11729_IG06
+ ja G_M11729_IG14
lea edx, [@RWD00] mov edx, dword ptr [edx+4*ecx] lea eax, G_M11729_IG02 add edx, eax jmp edx
- ;; size=27 bbWeight=1 PerfScore 9.00
+ ;; size=31 bbWeight=1 PerfScore 9.00
G_M11729_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz cmp byte ptr [esi+0x40], 0 jne SHORT G_M11729_IG04 @@ -81,32 +81,20 @@ G_M11729_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 mov eax, dword ptr [eax+0x18] ; gcrRegs -[eax] ;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M11729_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11729_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
dec eax cmp eax, 2
- ja SHORT G_M11729_IG06
+ ja G_M11729_IG14
mov ecx, eax lea edx, [@RWD44] mov edx, dword ptr [edx+4*ecx] lea eax, G_M11729_IG02 add edx, eax jmp edx
- ;; size=27 bbWeight=0.50 PerfScore 3.75 -G_M11729_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi edi] - xor eax, eax - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M11729_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop ebx - pop esi - pop edi - pop ebp - ret 8 - ;; size=7 bbWeight=0.50 PerfScore 2.00 -G_M11729_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs +[esi edi]
+ ;; size=31 bbWeight=0.50 PerfScore 3.75 +G_M11729_IG06: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [esi+0x34], -1
- je G_M11729_IG11
+ je G_M11729_IG09
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] mov eax, dword ptr [ecx] @@ -114,7 +102,7 @@ G_M11729_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e call [eax+0x0C]<unknown method> ; gcrRegs -[ecx] test eax, eax
- je G_M11729_IG11
+ je G_M11729_IG09
push ebx mov ecx, edi ; gcrRegs +[ecx] @@ -122,25 +110,25 @@ G_M11729_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e call [System.Xml.XmlSubtreeReader:CheckBuffer(System.Array,int,int)] ; gcrRegs -[ecx] test ebx, ebx
- je SHORT G_M11729_IG06
+ je G_M11729_IG14
cmp dword ptr [esi+0x38], 0
- jne SHORT G_M11729_IG10
+ jne SHORT G_M11729_IG08
mov ecx, gword ptr [esi+0x1C] ; gcrRegs +[ecx] test ecx, ecx
- je SHORT G_M11729_IG09
+ je SHORT G_M11729_IG07
mov edx, ecx ; gcrRegs +[edx] mov edx, dword ptr [edx] ; gcrRegs -[edx] cmp edx, 0xD1FFAB1E
- jne SHORT G_M11729_IG09
+ jne SHORT G_M11729_IG07
mov edx, dword ptr [edx+0x30] call [edx+0x04]<unknown method> ; gcrRegs -[ecx]
- jmp SHORT G_M11729_IG10 - ;; size=78 bbWeight=0.50 PerfScore 19.25 -G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M11729_IG08 + ;; size=82 bbWeight=0.50 PerfScore 19.25 +G_M11729_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; System.Xml.Base64Decoder call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax] @@ -150,13 +138,13 @@ G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[eax] ; byrRegs -[edx] ;; size=18 bbWeight=0.50 PerfScore 1.38
-G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11729_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [esi+0x38] mov edx, gword ptr [esi+0x20] ; gcrRegs +[edx] mov edx, gword ptr [edx+0x14] cmp ecx, dword ptr [edx+0x04]
- je SHORT G_M11729_IG06
+ je G_M11729_IG14
mov ecx, gword ptr [esi+0x1C] ; gcrRegs +[ecx] push dword ptr [ebp+0x0C] @@ -195,9 +183,9 @@ G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [eax+0x10]<unknown method> ; gcrRegs -[ecx esi] mov edi, eax
- jmp SHORT G_M11729_IG14 - ;; size=81 bbWeight=0.50 PerfScore 26.75 -G_M11729_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M11729_IG12 + ;; size=85 bbWeight=0.50 PerfScore 26.75 +G_M11729_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi edi] mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] @@ -210,13 +198,13 @@ G_M11729_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 call [eax+0x10]<unknown method> ; gcrRegs -[ecx edx esi edi] mov edi, eax
- jmp SHORT G_M11729_IG14
+ jmp SHORT G_M11729_IG12
;; size=21 bbWeight=0.50 PerfScore 6.75
-G_M11729_IG12: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M11729_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi edi] mov dword ptr [esi+0x2C], 9 ;; size=7 bbWeight=0.50 PerfScore 0.50
-G_M11729_IG13: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M11729_IG11: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] push dword ptr [ebp+0x0C] @@ -229,16 +217,26 @@ G_M11729_IG13: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[ecx edx edi] mov edi, eax test edi, edi
- jne SHORT G_M11729_IG14
+ jne SHORT G_M11729_IG12
mov dword ptr [esi+0x2C], 1 mov ecx, esi ; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx esi] ;; size=38 bbWeight=0.50 PerfScore 8.50
-G_M11729_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M11729_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, edi ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M11729_IG13: ; bbWeight=0.50, epilog, nogc, extend + pop ebx + pop esi + pop edi + pop ebp + ret 8 + ;; size=7 bbWeight=0.50 PerfScore 2.00 +G_M11729_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + xor eax, eax + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M11729_IG15: ; bbWeight=0.50, epilog, nogc, extend pop ebx pop esi @@ -282,22 +280,22 @@ G_M11729_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs -[ecx esi] int3 ;; size=36 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M11729_IG06 - G_M11729_IG02 - dd G_M11729_IG12 - G_M11729_IG02 - dd G_M11729_IG06 - G_M11729_IG02 - dd G_M11729_IG06 - G_M11729_IG02 - dd G_M11729_IG06 - G_M11729_IG02
+RWD00 dd G_M11729_IG14 - G_M11729_IG02 + dd G_M11729_IG10 - G_M11729_IG02 + dd G_M11729_IG14 - G_M11729_IG02 + dd G_M11729_IG14 - G_M11729_IG02 + dd G_M11729_IG14 - G_M11729_IG02
dd G_M11729_IG03 - G_M11729_IG02 dd G_M11729_IG03 - G_M11729_IG02 dd G_M11729_IG17 - G_M11729_IG02 dd G_M11729_IG17 - G_M11729_IG02
- dd G_M11729_IG13 - G_M11729_IG02
+ dd G_M11729_IG11 - G_M11729_IG02
dd G_M11729_IG17 - G_M11729_IG02 RWD44 dd G_M11729_IG16 - G_M11729_IG02
- dd G_M11729_IG08 - G_M11729_IG02 - dd G_M11729_IG11 - G_M11729_IG02
+ dd G_M11729_IG06 - G_M11729_IG02 + dd G_M11729_IG09 - G_M11729_IG02
-Total bytes of code 421, prolog size 6, PerfScore 95.38, instruction count 150, allocated bytes for code 421 (MethodHash=f333d22e) for method System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
+Total bytes of code 437, prolog size 6, PerfScore 95.38, instruction count 150, allocated bytes for code 437 (MethodHash=f333d22e) for method System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
; ============================================================

realworld.run.windows.x86.checked.mch

-18 (-24.66%) : 9890.dasm - FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)

@@ -8,8 +8,8 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 7, 5 ) ref -> esi this class-hnd single-def <FSharp.Compiler.Infos+PropInfo> -;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <FSharp.Compiler.Infos+PropInfo>
+; V00 this [V00,T00] ( 6, 4.50) ref -> esi this class-hnd single-def <FSharp.Compiler.Infos+PropInfo> +;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <FSharp.Compiler.Infos+PropInfo>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ; V03 loc2 [V03,T04] ( 2, 1 ) ref -> ecx class-hnd exact single-def <<unknown class>> ;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <FSharp.Compiler.TypedTree+ValRef> @@ -34,47 +34,36 @@ G_M3270_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 call CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[edx] +[eax] test eax, eax
- jne SHORT G_M3270_IG04
+ je SHORT G_M3270_IG05
;; size=16 bbWeight=1 PerfScore 2.75 G_M3270_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[eax]
- mov edx, esi - ; gcrRegs +[edx] - mov ecx, 0xD1FFAB1E ; <unknown class> - call CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[edx esi] +[eax] - test eax, eax - jne SHORT G_M3270_IG06 - jmp SHORT G_M3270_IG06 - ;; size=18 bbWeight=0.50 PerfScore 2.38 -G_M3270_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax] +[esi]
mov ecx, gword ptr [esi+0x0C] ; gcrRegs +[ecx] test ecx, ecx
- je SHORT G_M3270_IG06
+ je SHORT G_M3270_IG05
cmp gword ptr [esi+0x10], 0
- jne SHORT G_M3270_IG06
+ jne SHORT G_M3270_IG05
mov ecx, gword ptr [ecx+0x04] mov edx, gword ptr [esi+0x04] ; gcrRegs +[edx] call [FSharp.Compiler.Infos:ValRef.IsFSharpEventProperty(FSharp.Compiler.TypedTree+ValRef,FSharp.Compiler.TcGlobals+TcGlobals):ubyte] ; gcrRegs -[ecx edx esi] ;; size=25 bbWeight=0.50 PerfScore 7.12
-G_M3270_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M3270_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop ebp ret ;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M3270_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M3270_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M3270_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M3270_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop esi pop ebp ret ;; size=3 bbWeight=0.50 PerfScore 1.00
-Total bytes of code 73, prolog size 4, PerfScore 16.88, instruction count 30, allocated bytes for code 73 (MethodHash=cb2ef339) for method FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
+Total bytes of code 55, prolog size 4, PerfScore 14.50, instruction count 24, allocated bytes for code 55 (MethodHash=cb2ef339) for method FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
; ============================================================

-37 (-12.67%) : 29135.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)

@@ -8,12 +8,12 @@ ; 0 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 6, 4 ) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator>
+; V00 this [V00,T01] ( 6, 4 ) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator>
; V01 arg1 [V01,T00] ( 6, 5 ) ref -> edx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator> ; V02 arg2 [V02,T06] ( 4, 2 ) ubyte -> ebx single-def ; V03 loc0 [V03,T05] ( 4, 2 ) ref -> ecx class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> ;* V04 loc1 [V04 ] ( 0, 0 ) byte -> zero-ref
-; V05 loc2 [V05,T01] ( 10, 6 ) int -> ecx single-def
+; V05 loc2 [V05,T02] ( 7, 4.50) int -> ecx single-def
;* V06 tmp0 [V06 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V08 tmp2 [V08 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" @@ -48,48 +48,37 @@ G_M22690_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=0000 ;; size=23 bbWeight=1 PerfScore 5.75 G_M22690_IG03: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz cmp ecx, 0x1115
- je SHORT G_M22690_IG06
+ je SHORT G_M22690_IG05
cmp ecx, 0x1116
- je SHORT G_M22690_IG07
+ je SHORT G_M22690_IG06
add ecx, -0x1214 cmp ecx, 1
- jbe SHORT G_M22690_IG06 - jmp G_M22690_IG13
+ jbe SHORT G_M22690_IG05 + jmp G_M22690_IG12
;; size=32 bbWeight=0.50 PerfScore 3.00 G_M22690_IG04: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz cmp ecx, 0x1D14
- jg SHORT G_M22690_IG05
+ jg G_M22690_IG12
cmp ecx, 0x1216
- je SHORT G_M22690_IG07 - cmp ecx, 0x1D14 - je G_M22690_IG13 - jmp G_M22690_IG13 - ;; size=33 bbWeight=0.50 PerfScore 2.88 -G_M22690_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[edx esi] - cmp ecx, 0x1E14 - je G_M22690_IG13 - cmp ecx, 0x1F14 - je G_M22690_IG13 - jmp G_M22690_IG13 - ;; size=29 bbWeight=0.50 PerfScore 2.25 -G_M22690_IG06: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[edx esi]
+ je SHORT G_M22690_IG06 + jmp G_M22690_IG12 + ;; size=25 bbWeight=0.50 PerfScore 2.25 +G_M22690_IG05: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
mov edx, gword ptr [edx+0x10] mov ecx, gword ptr [edx+0x0C] ; gcrRegs +[ecx]
- jmp SHORT G_M22690_IG08
+ jmp SHORT G_M22690_IG07
;; size=8 bbWeight=0.50 PerfScore 3.00
-G_M22690_IG07: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
+G_M22690_IG06: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx] mov ecx, gword ptr [edx+0x14] ; gcrRegs +[ecx] mov ecx, gword ptr [ecx+0x0C] ;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M22690_IG08: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M22690_IG07: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edx] test ecx, ecx
- je G_M22690_IG13
+ je G_M22690_IG12
call [Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:GetEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol] ; gcrRegs -[ecx] +[eax] mov ecx, eax @@ -101,14 +90,14 @@ G_M22690_IG08: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=0 ; gcrRegs -[ecx] add eax, -9 cmp eax, 3
- ja SHORT G_M22690_IG13
+ ja SHORT G_M22690_IG12
lea ecx, [@RWD00] mov ecx, dword ptr [ecx+4*eax] lea edx, G_M22690_IG02 add ecx, edx jmp ecx ;; size=51 bbWeight=0.50 PerfScore 9.38
-G_M22690_IG09: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M22690_IG08: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [esi+0x10] ; gcrRegs +[ecx] push 12 @@ -118,9 +107,9 @@ G_M22690_IG09: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx esi]
- jmp SHORT G_M22690_IG13
+ jmp SHORT G_M22690_IG12
;; size=24 bbWeight=0.50 PerfScore 6.25
-G_M22690_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M22690_IG09: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi] mov ecx, gword ptr [esi+0x10] ; gcrRegs +[ecx] @@ -131,9 +120,9 @@ G_M22690_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx esi]
- jmp SHORT G_M22690_IG13
+ jmp SHORT G_M22690_IG12
;; size=24 bbWeight=0.50 PerfScore 6.25
-G_M22690_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M22690_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi] mov ecx, gword ptr [esi+0x10] ; gcrRegs +[ecx] @@ -144,9 +133,9 @@ G_M22690_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx esi]
- jmp SHORT G_M22690_IG13
+ jmp SHORT G_M22690_IG12
;; size=24 bbWeight=0.50 PerfScore 6.25
-G_M22690_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M22690_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi] mov ecx, gword ptr [esi+0x10] ; gcrRegs +[ecx] @@ -158,18 +147,18 @@ G_M22690_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [<unknown method>] ; gcrRegs -[ecx esi] ;; size=22 bbWeight=0.50 PerfScore 5.25
-G_M22690_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M22690_IG12: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
pop ebx pop esi pop ebp ret 4 ;; size=6 bbWeight=1 PerfScore 3.50
-RWD00 dd G_M22690_IG10 - G_M22690_IG02 - dd G_M22690_IG09 - G_M22690_IG02
+RWD00 dd G_M22690_IG09 - G_M22690_IG02 + dd G_M22690_IG08 - G_M22690_IG02 + dd G_M22690_IG10 - G_M22690_IG02
dd G_M22690_IG11 - G_M22690_IG02
- dd G_M22690_IG12 - G_M22690_IG02
-Total bytes of code 292, prolog size 5, PerfScore 60.25, instruction count 87, allocated bytes for code 292 (MethodHash=a8a6a75d) for method Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
+Total bytes of code 255, prolog size 5, PerfScore 57.38, instruction count 80, allocated bytes for code 255 (MethodHash=a8a6a75d) for method Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
; ============================================================

-14 (-9.86%) : 25071.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System._Canon]:getHasAnyApplicableMember():ubyte:this (FullOpts)

@@ -27,10 +27,10 @@ ;* V16 tmp12 [V16 ] ( 0, 0 ) ubyte -> zero-ref "V03.[004..005)" ; V17 tmp13 [V17,T04] ( 2, 8 ) ref -> ecx "argument with side effect" ;* V18 cse0 [V18,T14] ( 0, 0 ) int -> zero-ref hoist "CSE - aggressive"
-; V19 cse1 [V19,T09] ( 2, 2 ) int -> edi "CSE - moderate" -; V20 rat0 [V20,T10] ( 2, 4 ) int -> ecx "Spilling to split statement for tree"
+; V19 cse1 [V19,T09] ( 1, 1 ) int -> edi "CSE - moderate" +;* V20 rat0 [V20,T10] ( 0, 0 ) int -> zero-ref "Spilling to split statement for tree"
;* V21 rat1 [V21,T11] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V22 rat2 [V22,T08] ( 2, 4 ) int -> ecx "fgMakeTemp is creating a new local variable"
+;* V22 rat2 [V22,T08] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
;* V23 rat3 [V23,T13] ( 0, 0 ) int -> zero-ref "runtime lookup" ;* V24 rat4 [V24,T02] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable" ; @@ -59,14 +59,8 @@ G_M864_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 { call [Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:GetEnumerator():Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:this] ; gcrRegs -[ecx] mov edi, dword ptr [esi]
- mov ecx, edi - mov ecx, dword ptr [ecx+0x24] - mov ecx, dword ptr [ecx] - mov ecx, dword ptr [ecx+0x18] - test ecx, ecx - jne SHORT G_M864_IG04
jmp SHORT G_M864_IG04
- ;; size=32 bbWeight=1 PerfScore 20.00
+ ;; size=18 bbWeight=1 PerfScore 12.50
G_M864_IG03: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz mov ecx, gword ptr [ebp-0x10] ; gcrRegs +[ecx] @@ -117,6 +111,6 @@ G_M864_IG08: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=7 bbWeight=0.50 PerfScore 1.50
-Total bytes of code 142, prolog size 28, PerfScore 138.08, instruction count 57, allocated bytes for code 142 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
+Total bytes of code 128, prolog size 28, PerfScore 130.58, instruction count 51, allocated bytes for code 128 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
; ============================================================

+0 (0.00%) : 18079.dasm - Microsoft.CodeAnalysis.RuleSetInclude:g_resolveIncludePath|80(System.String,System.String):System.String (FullOpts)

@@ -10,7 +10,7 @@ ; ; V00 arg0 [V00,T00] ( 3, 3 ) ref -> ecx class-hnd single-def <System.String> ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> edx class-hnd single-def <System.String>
-; V02 loc0 [V02,T02] ( 2, 2 ) ref -> eax class-hnd single-def <System.String>
+;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
; ; Lcl frame size = 0

+0 (0.00%) : 23484.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldNativeIntegerOverflowingUnaryOperator(int,Microsoft.CodeAnalysis.ConstantValue):System.Object (FullOpts)

@@ -23,21 +23,9 @@ G_M35943_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=7 bbWeight=1 PerfScore 3.50 G_M35943_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz cmp ecx, 0x1509
- je SHORT G_M35943_IG05
+ jne SHORT G_M35943_IG05
;; size=8 bbWeight=1 PerfScore 1.25
-G_M35943_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - ; gcrRegs -[esi] - xor eax, eax - ; gcrRegs +[eax] - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend - pop esi - pop edi - pop ebp - ret - ;; size=4 bbWeight=0.50 PerfScore 1.25 -G_M35943_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] +[esi]
+G_M35943_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax] @@ -57,6 +45,17 @@ G_M35943_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {e mov eax, edi ; gcrRegs +[eax] ;; size=33 bbWeight=0.50 PerfScore 5.75
+G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend + pop esi + pop edi + pop ebp + ret + ;; size=4 bbWeight=0.50 PerfScore 1.25 +G_M35943_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[eax edi] + xor eax, eax + ; gcrRegs +[eax] + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M35943_IG06: ; bbWeight=0.50, epilog, nogc, extend pop esi pop edi @@ -64,7 +63,7 @@ G_M35943_IG06: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=4 bbWeight=0.50 PerfScore 1.25 G_M35943_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax edi]
+ ; gcrRegs -[eax]
call CORINFO_HELP_OVERFLOW int3 ;; size=6 bbWeight=0 PerfScore 0.00

+1 (+0.02%) : 29667.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:LowerEvaluation(Microsoft.CodeAnalysis.CSharp.BoundDagEvaluation):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)

@@ -104,7 +104,7 @@ ; V93 tmp46 [V93,T107] ( 2, 2 ) ref -> [ebp-0x160] class-hnd spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode> ; V94 tmp47 [V94,T31] ( 8, 8 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BoundDagTemp> ;* V95 tmp48 [V95 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter+DagTempAllocator>
-;* V96 tmp49 [V96,T210] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+;* V96 tmp49 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
; V97 tmp50 [V97 ] ( 3, 1.50) struct (12) [ebp-0x34] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations> ; V98 tmp51 [V98,T151] ( 3, 1.50) ref -> [ebp-0x164] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> ; V99 tmp52 [V99,T54] ( 4, 4 ) ref -> ecx class-hnd single-def "dup spill" <<unknown class>> @@ -423,19 +423,19 @@ G_M26377_IG02: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000 cmp edx, 0xD1FFAB1E jne SHORT G_M26377_IG04 ;; size=26 bbWeight=1 PerfScore 13.50
-G_M26377_IG03: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M26377_IG03: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] mov gword ptr [ebp-0xDC], esi ; GC ptr vars +{V03}
- jmp G_M26377_IG18 - ;; size=11 bbWeight=0.50 PerfScore 1.50
+ jmp SHORT G_M26377_IG10 + ;; size=8 bbWeight=0.50 PerfScore 1.50
G_M26377_IG04: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz ; GC ptr vars -{V03} cmp edx, 0xD1FFAB1E jne SHORT G_M26377_IG05 mov gword ptr [ebp-0xE0], esi ; GC ptr vars +{V04}
- jmp G_M26377_IG31
+ jmp G_M26377_IG23
;; size=19 bbWeight=0.50 PerfScore 2.12 G_M26377_IG05: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz ; GC ptr vars -{V04} @@ -443,7 +443,7 @@ G_M26377_IG05: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe jne SHORT G_M26377_IG06 mov gword ptr [ebp-0xE4], esi ; GC ptr vars +{V05}
- jmp G_M26377_IG37
+ jmp G_M26377_IG29
;; size=19 bbWeight=0.50 PerfScore 2.12 G_M26377_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz ; GC ptr vars -{V05} @@ -451,214 +451,25 @@ G_M26377_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe jne SHORT G_M26377_IG07 mov gword ptr [ebp-0xE8], esi ; GC ptr vars +{V06}
- jmp G_M26377_IG61
+ jmp G_M26377_IG53
;; size=19 bbWeight=0.50 PerfScore 2.12 G_M26377_IG07: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz ; GC ptr vars -{V06} cmp edx, 0xD1FFAB1E jne SHORT G_M26377_IG08
- jmp G_M26377_IG72
+ jmp G_M26377_IG64
;; size=13 bbWeight=0.50 PerfScore 1.62 G_M26377_IG08: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz cmp edx, 0xD1FFAB1E jne SHORT G_M26377_IG09
- jmp G_M26377_IG74
+ jmp G_M26377_IG66
;; size=13 bbWeight=0.50 PerfScore 1.62
-G_M26377_IG09: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M26377_IG09: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
cmp edx, 0xD1FFAB1E
- jne G_M26377_IG89 - mov eax, gword ptr [esi+0x18] - ; gcrRegs +[eax] - mov gword ptr [ebp-0x124], eax - ; GC ptr vars +{V42} - mov ecx, eax - ; gcrRegs +[ecx] - mov gword ptr [ebp-0x128], ecx - ; GC ptr vars +{V43} - test ecx, ecx - je SHORT G_M26377_IG11 - ;; size=33 bbWeight=0.50 PerfScore 3.38 -G_M26377_IG10: ; bbWeight=0.25, gcVars=00000000000000000001000000000000000000200000000000000000 {V42 V43}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[eax] - cmp dword ptr [ecx], 0xD1FFAB1E - je G_M26377_IG85 - ;; size=12 bbWeight=0.25 PerfScore 1.00 -G_M26377_IG11: ; bbWeight=0.50, gcVars=00000000000000000000000000000000000000200000000000000000 {V42}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[ecx] - ; GC ptr vars -{V43} - mov ecx, 0xD1FFAB1E - mov edx, 359 - call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS - mov ecx, gword ptr [D1FFAB1EH] ; static handle - ; gcrRegs +[ecx] - cmp dword ptr [ecx], ecx - call [Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this] - ; gcrRegs -[ecx] +[eax] - mov gword ptr [ebp-0x15C], eax - ; GC ptr vars +{V88} - mov edx, gword ptr [esi+0x1C] - ; gcrRegs +[edx] - cmp byte ptr [eax], al - push edi - push 2 - mov ecx, eax - ; gcrRegs +[ecx] - call [<unknown method>] - ; gcrRegs -[eax ecx edx edi] - mov ecx, eax - call [<unknown method>] - mov edi, gword ptr [esi+0x20] - ; gcrRegs +[edi] - mov ecx, ebx - ; gcrRegs +[ecx] - mov edx, esi - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[ecx edx] +[eax] - push eax - push 2 - mov ecx, gword ptr [ebp-0x15C] - ; gcrRegs +[ecx] - mov edx, edi - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[eax ecx edx edi] - mov ecx, eax - call [<unknown method>] - mov ecx, gword ptr [ebp-0x15C] - ; gcrRegs +[ecx] - mov edx, gword ptr [ebp-0x124] - ; gcrRegs +[edx] - ; GC ptr vars -{V42} - call [Microsoft.CodeAnalysis.CSharp.LocalRewriter+PlaceholderReplacer:Replace(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.BoundEarlyValuePlaceholderBase,Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression] - ; gcrRegs -[ecx edx] +[eax] - mov edi, eax - ; gcrRegs +[edi] - mov ecx, gword ptr [ebp-0x15C] - ; gcrRegs +[ecx] - call [System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Clear():this] - ; gcrRegs -[eax ecx] - mov eax, gword ptr [ebp-0x15C] - ; gcrRegs +[eax] - mov ecx, gword ptr [eax+0x28] - ; gcrRegs +[ecx] - test ecx, ecx - je SHORT G_M26377_IG12 - cmp gword ptr [ecx+0x04], 0 - jne G_M26377_IG86 - lea edx, bword ptr [ecx+0x04] - ; byrRegs +[edx] - ; GC ptr vars -{V88} - call CORINFO_HELP_ASSIGN_REF_EAX - ; gcrRegs -[eax ecx] - ; byrRegs -[edx] - ;; size=160 bbWeight=0.50 PerfScore 29.00 -G_M26377_IG12: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz - mov ecx, gword ptr [ebx+0x04] - ; gcrRegs +[ecx] - mov edx, edi - ; gcrRegs +[edx] - cmp dword ptr [ecx], ecx - call [Microsoft.CodeAnalysis.CSharp.LocalRewriter:Visit(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this] - ; gcrRegs -[ecx edx edi] +[eax] - mov edi, eax - ; gcrRegs +[edi] - test edi, edi - je SHORT G_M26377_IG15 - ;; size=19 bbWeight=0.50 PerfScore 4.88 -G_M26377_IG13: ; bbWeight=0.25, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz - mov ecx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundExpression - cmp dword ptr [edi], ecx - je SHORT G_M26377_IG15 - ;; size=9 bbWeight=0.25 PerfScore 1.06 -G_M26377_IG14: ; bbWeight=0.12, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[edi] - mov edx, eax - ; gcrRegs +[edx] - call CORINFO_HELP_CHKCASTCLASS_SPECIAL - ; gcrRegs -[edx] - mov edi, eax - ; gcrRegs +[edi] - ;; size=9 bbWeight=0.12 PerfScore 0.19 -G_M26377_IG15: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax] - mov gword ptr [ebp-0x12C], edi - ; GC ptr vars +{V44} - mov eax, gword ptr [esi+0x04] - ; gcrRegs +[eax] - mov gword ptr [ebp-0x160], eax - ; GC ptr vars +{V93} - mov ecx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundDagTemp - call CORINFO_HELP_NEWSFAST - ; gcrRegs -[edi] - mov ecx, gword ptr [esi+0x10] - ; gcrRegs +[ecx] - mov edx, gword ptr [ebp-0x160] - ; gcrRegs +[edx] - mov gword ptr [ebp-0x1A4], edx - ; GC ptr vars +{V292} - movsx edi, word ptr [esi+0x08] - and edi, 1 - mov edx, edi - ; gcrRegs -[edx] - mov dword ptr [ebp-0xC4], edx - mov byte ptr [eax+0x0A], 132 - lea edx, bword ptr [eax+0x04] - ; byrRegs +[edx] - mov edi, gword ptr [ebp-0x1A4] - ; gcrRegs +[edi] - ; GC ptr vars -{V93 V292} - call CORINFO_HELP_ASSIGN_REF_EDI - ; gcrRegs -[edi] - ; byrRegs -[edx] - cmp byte ptr [ebp-0xC4], 0 - je SHORT G_M26377_IG16 - mov word ptr [eax+0x08], 1 - ;; size=88 bbWeight=0.50 PerfScore 11.12 -G_M26377_IG16: ; bbWeight=0.50, gcrefRegs=0000004B {eax ecx ebx esi}, byrefRegs=00000000 {}, byref - lea edx, bword ptr [eax+0x0C] - ; byrRegs +[edx] - call CORINFO_HELP_ASSIGN_REF_ECX - ; gcrRegs -[ecx] - ; byrRegs -[edx] - lea edx, bword ptr [eax+0x10] - ; byrRegs +[edx] - call CORINFO_HELP_ASSIGN_REF_ESI - ; gcrRegs -[esi] - ; byrRegs -[edx] - xor ecx, ecx - mov dword ptr [eax+0x14], ecx - mov ecx, gword ptr [ebx+0x0C] - ; gcrRegs +[ecx] - mov edx, eax - ; gcrRegs +[edx] - cmp dword ptr [ecx], ecx - call [Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter+DagTempAllocator:GetTemp(Microsoft.CodeAnalysis.CSharp.BoundDagTemp):Microsoft.CodeAnalysis.CSharp.BoundExpression:this] - ; gcrRegs -[ecx edx] - mov ecx, gword ptr [ebx+0x08] - ; gcrRegs +[ecx] - mov edx, gword ptr [ecx+0x04] - ; gcrRegs +[edx] - push eax - push gword ptr [ebp-0x12C] - push gword ptr [eax+0x0C] - push 0 - push 0 - push 1 - ; GC ptr vars -{V44} - call [<unknown method>] - ; gcrRegs -[ecx edx ebx] - ;; size=62 bbWeight=0.50 PerfScore 13.25 -G_M26377_IG17: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc - lea esp, [ebp-0x0C]
...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.x86.checked.mch 23 23 0 0 -250 +0
benchmarks.run_pgo.windows.x86.checked.mch 89 89 0 0 -1,049 +0
benchmarks.run_tiered.windows.x86.checked.mch 20 20 0 0 -197 +0
coreclr_tests.run.windows.x86.checked.mch 408 223 9 176 -3,709 +50
libraries.crossgen2.windows.x86.checked.mch 57 51 2 4 -1,372 +32
libraries.pmi.windows.x86.checked.mch 167 160 4 3 -2,445 +47
libraries_tests.run.windows.x86.Release.mch 440 418 17 5 -7,672 +334
librariestestsnotieredcompilation.run.windows.x86.Release.mch 261 251 4 6 -3,777 +58
realworld.run.windows.x86.checked.mch 61 58 1 2 -932 +1
1,526 1,293 37 196 -21,403 +522

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x86.checked.mch 24,486 4 24,482 3 (0.01%) 4 (0.02%)
benchmarks.run_pgo.windows.x86.checked.mch 118,208 42,036 76,172 35 (0.03%) 35 (0.03%)
benchmarks.run_tiered.windows.x86.checked.mch 48,025 28,739 19,286 3 (0.01%) 4 (0.01%)
coreclr_tests.run.windows.x86.checked.mch 574,596 319,944 254,652 76 (0.01%) 79 (0.01%)
libraries.crossgen2.windows.x86.checked.mch 242,541 15 242,526 47 (0.02%) 47 (0.02%)
libraries.pmi.windows.x86.checked.mch 305,643 6 305,637 72 (0.02%) 75 (0.02%)
libraries_tests.run.windows.x86.Release.mch 624,865 425,508 199,357 481 (0.08%) 493 (0.08%)
librariestestsnotieredcompilation.run.windows.x86.Release.mch 316,394 21,910 294,484 64 (0.02%) 78 (0.02%)
realworld.run.windows.x86.checked.mch 35,963 3 35,960 27 (0.08%) 27 (0.08%)
2,290,721 838,165 1,452,556 808 (0.04%) 842 (0.04%)

jit-analyze output

benchmarks.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: 7120835 (overridden on cmd)
Total bytes of diff: 7120585 (overridden on cmd)
Total bytes of delta: -250 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


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: 45138363 (overridden on cmd)
Total bytes of diff: 45137314 (overridden on cmd)
Total bytes of delta: -1049 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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


benchmarks.run_tiered.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: 9473048 (overridden on cmd)
Total bytes of diff: 9472851 (overridden on cmd)
Total bytes of delta: -197 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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

0 total methods with Code Size differences (0 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: 309362652 (overridden on cmd)
Total bytes of diff: 309358993 (overridden on cmd)
Total bytes of delta: -3659 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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


libraries.crossgen2.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: 31674641 (overridden on cmd)
Total bytes of diff: 31673301 (overridden on cmd)
Total bytes of delta: -1340 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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


libraries.pmi.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: 49151190 (overridden on cmd)
Total bytes of diff: 49148792 (overridden on cmd)
Total bytes of delta: -2398 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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


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: 184732225 (overridden on cmd)
Total bytes of diff: 184724887 (overridden on cmd)
Total bytes of delta: -7338 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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


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: 103708178 (overridden on cmd)
Total bytes of diff: 103704459 (overridden on cmd)
Total bytes of delta: -3719 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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


realworld.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: 11283258 (overridden on cmd)
Total bytes of diff: 11282327 (overridden on cmd)
Total bytes of delta: -931 (-0.01 % of base)
    relative diff is a regression.

Detail diffs



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