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