Assembly Diffs
linux arm
Diffs are based on 2,239,391 contexts (829,328 MinOpts, 1,410,063 FullOpts).
MISSED contexts: 71,273 (3.08%)
Overall (-27,144 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.arm.checked.mch |
15,292,190 |
-366 |
| benchmarks.run_pgo.linux.arm.checked.mch |
63,957,952 |
-1,014 |
| benchmarks.run_tiered.linux.arm.checked.mch |
21,548,230 |
-266 |
| coreclr_tests.run.linux.arm.checked.mch |
321,754,792 |
-4,920 |
| libraries.crossgen2.linux.arm.checked.mch |
34,522,432 |
-590 |
| libraries.pmi.linux.arm.checked.mch |
49,857,080 |
-2,900 |
| libraries_tests.run.linux.arm.Release.mch |
243,858,436 |
-12,512 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
94,524,880 |
-3,542 |
| realworld.run.linux.arm.checked.mch |
13,606,712 |
-1,034 |
FullOpts (-27,144 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.arm.checked.mch |
14,902,988 |
-366 |
| benchmarks.run_pgo.linux.arm.checked.mch |
52,757,986 |
-1,014 |
| benchmarks.run_tiered.linux.arm.checked.mch |
12,895,230 |
-266 |
| coreclr_tests.run.linux.arm.checked.mch |
109,277,204 |
-4,920 |
| libraries.crossgen2.linux.arm.checked.mch |
34,521,202 |
-590 |
| libraries.pmi.linux.arm.checked.mch |
49,750,856 |
-2,900 |
| libraries_tests.run.linux.arm.Release.mch |
122,889,304 |
-12,512 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
84,454,144 |
-3,542 |
| realworld.run.linux.arm.checked.mch |
13,171,412 |
-1,034 |
Example diffs
benchmarks.run.linux.arm.checked.mch
-34 (-58.62%) : 761.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%) : 31657.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%) : 23393.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%) : 5720.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%) : 11191.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%) : 18371.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%) : 8449.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)
-16 (-17.02%) : 56799.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.67) 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.00) 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.00) int -> r4
; V03 loc1 [V03,T04] ( 4, 3.33) 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.67) 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.67) 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.67, 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.67, 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.67 PerfScore 12.00
-G_M49890_IG04: ; bbWeight=0.13, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M49890_IG07
- ;; size=2 bbWeight=0.13 PerfScore 0.13
-G_M49890_IG05: ; bbWeight=0.33, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref
+ b SHORT G_M49890_IG06
+ ;; size=32 bbWeight=0.67 PerfScore 8.67
+G_M49890_IG04: ; bbWeight=0.33, gcrefRegs=0004 {r2}, byrefRegs=0002 {r1}, byref
; gcrRegs -[r5]
; byrRegs +[r1]
movs r0, 0
str r0, [r1]
;; size=4 bbWeight=0.33 PerfScore 0.67
-G_M49890_IG06: ; bbWeight=0.33, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M49890_IG05: ; bbWeight=0.33, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r1]
pop {r2,r3,r4,r5,r11,pc}
;; size=4 bbWeight=0.33 PerfScore 0.33
-G_M49890_IG07: ; bbWeight=0.67, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5}, byrefRegs=0000 {}, gcvars, byref
+G_M49890_IG06: ; bbWeight=0.67, 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.67, gcVars=00000000 {}, gcrefRegs=0024 {r2 r5
movs r0, 1
; byrRegs -[r0]
;; size=12 bbWeight=0.67 PerfScore 3.33
-G_M49890_IG08: ; bbWeight=0.67, epilog, nogc, extend
+G_M49890_IG07: ; bbWeight=0.67, epilog, nogc, extend
pop {r2,r3,r4,r5,r11,pc}
;; size=4 bbWeight=0.67 PerfScore 0.67
-; Total bytes of code 94, prolog size 12, PerfScore 27.13, 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.67, 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%) : 151435.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)
+0 (0.00%) : 141540.dasm - System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
@@ -13,22 +13,22 @@
; V01 arg1 [V01,T00] ( 37, 25.94) ref -> [sp+0x4C] class-hnd EH-live single-def <System.Net.Sockets.SocketAsyncEventArgs>
; V02 arg2 [V02 ] ( 4, 3 ) struct ( 4) [sp+0xD4] single-def <System.Threading.CancellationToken>
; V03 loc0 [V03,T07] ( 11, 6.00) ref -> [sp+0x48] ld-addr-op class-hnd <System.Net.EndPoint>
-; V04 loc1 [V04,T62] ( 3, 0 ) ref -> [sp+0x44] class-hnd EH-live single-def <System.Net.EndPoint>
+; V04 loc1 [V04,T63] ( 3, 0 ) ref -> [sp+0x44] class-hnd EH-live single-def <System.Net.EndPoint>
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V08 tmp2 [V08,T63] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V08 tmp2 [V08,T64] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V09 tmp3 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Net.SocketAddress>
; V11 tmp5 [V11,T33] ( 4, 3.00) ref -> r5 class-hnd single-def "Inline stloc first use temp" <System.Net.IPEndPoint>
-; V12 tmp6 [V12,T64] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V13 tmp7 [V13,T40] ( 5, 2.00) ref -> r6 class-hnd "Inline stloc first use temp" <System.Net.IPAddress>
-; V14 tmp8 [V14,T65] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.Net.IPEndPoint>
-; V15 tmp9 [V15,T41] ( 3, 2.00) ref -> r7 "guarded devirt return temp"
+; V12 tmp6 [V12,T65] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V13 tmp7 [V13,T41] ( 5, 2.00) ref -> r6 class-hnd "Inline stloc first use temp" <System.Net.IPAddress>
+; V14 tmp8 [V14,T66] ( 3, 0 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.Net.IPEndPoint>
+; V15 tmp9 [V15,T42] ( 3, 2.00) ref -> r7 "guarded devirt return temp"
;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp"
;* V17 tmp11 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Net.IPEndPoint>
-;* V18 tmp12 [V18,T56] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V19 tmp13 [V19,T55] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp"
+;* V18 tmp12 [V18,T57] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V19 tmp13 [V19,T56] ( 2, 0 ) ubyte -> r0 "Inline return value spill temp"
; V20 tmp14 [V20,T19] ( 2, 4.00) ref -> r6 class-hnd single-def "impAppendStmt" <System.Net.IPAddress>
; V21 tmp15 [V21,T02] ( 4, 8.00) ref -> [sp+0x40] class-hnd exact spill-single-def "NewObj constructor temp" <System.Net.SocketAddress>
; V22 tmp16 [V22,T20] ( 2, 4.00) int -> r8 "Inlining Arg"
@@ -39,16 +39,16 @@
; V27 tmp21 [V27 ] ( 2, 2.00) byref -> [sp+0xA4] must-init pinned "Inline stloc first use temp"
;* V28 tmp22 [V28 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V29 tmp23 [V29 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V30 tmp24 [V30,T43] ( 2, 2.00) int -> r0 "Inline stloc first use temp"
+; V30 tmp24 [V30,T44] ( 2, 2.00) int -> r0 "Inline stloc first use temp"
;* V31 tmp25 [V31 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
; V32 tmp26 [V32,T28] ( 4, 4.00) byref -> r0 "Inline stloc first use temp"
-; V33 tmp27 [V33,T45] ( 3, 2 ) int -> r1 "Inline stloc first use temp"
+; V33 tmp27 [V33,T46] ( 3, 2 ) int -> r1 "Inline stloc first use temp"
; V34 tmp28 [V34,T09] ( 3, 6 ) byref -> r0 single-def "Inlining Arg"
;* V35 tmp29 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
; V36 tmp30 [V36,T08] ( 6, 6 ) ref -> r7 class-hnd exact single-def "Inlining Arg" <System.Net.Sockets.SafeSocketHandle>
-; V37 tmp31 [V37,T69] ( 2, 0 ) ref -> r5 class-hnd exact single-def "impAppendStmt" <System.Net.Sockets.SocketAsyncContext>
-; V38 tmp32 [V38,T70] ( 2, 0 ) ref -> r6 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V39 tmp33 [V39,T83] ( 2, 0 ) int -> r7 "impAppendStmt"
+; V37 tmp31 [V37,T70] ( 2, 0 ) ref -> r5 class-hnd exact single-def "impAppendStmt" <System.Net.Sockets.SocketAsyncContext>
+; V38 tmp32 [V38,T71] ( 2, 0 ) ref -> r6 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V39 tmp33 [V39,T84] ( 2, 0 ) int -> r7 "impAppendStmt"
; V40 tmp34 [V40 ] ( 6, 2.99) int -> [sp+0xA0] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V41 tmp35 [V41 ] ( 4, 0 ) struct (12) [sp+0x94] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "impAppendStmt" <System.Memory`1[ubyte]>
; V42 tmp36 [V42,T16] ( 9, 4.99) int -> r8 "Inline stloc first use temp"
@@ -59,19 +59,19 @@
; V47 tmp41 [V47,T27] ( 2, 4 ) int -> [sp+0x90] spill-single-def "impAppendStmt"
; V48 tmp42 [V48,T23] ( 3, 4 ) int -> [sp+0x8C] spill-single-def "impAppendStmt"
;* V49 tmp43 [V49 ] ( 0, 0 ) struct (12) zero-ref "impAppendStmt" <System.Memory`1[ubyte]>
-; V50 tmp44 [V50,T66] ( 3, 0 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.SocketAsyncContext>
-; V51 tmp45 [V51,T67] ( 3, 0 ) byref -> r6 single-def "impAppendStmt"
+; V50 tmp44 [V50,T67] ( 3, 0 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.SocketAsyncContext>
+; V51 tmp45 [V51,T68] ( 3, 0 ) byref -> r6 single-def "impAppendStmt"
;* V52 tmp46 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.SocketAddress>
;* V53 tmp47 [V53 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
; V54 tmp48 [V54,T10] ( 3, 6 ) ref -> lr class-hnd single-def "Inlining Arg" <ubyte[]>
;* V55 tmp49 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Action`4[int,System.Memory`1[ubyte],int,int]>
; V56 tmp50 [V56,T24] ( 2, 4 ) ref -> r0 class-hnd single-def "dup spill" <System.Action`4[int,System.Memory`1[ubyte],int,int]>
-; V57 tmp51 [V57,T44] ( 4, 2 ) ref -> [sp+0x3C]
-; V58 tmp52 [V58,T61] ( 4, 0 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.Action`4[int,System.Memory`1[ubyte],int,int]>
+; V57 tmp51 [V57,T45] ( 4, 2 ) ref -> [sp+0x3C]
+; V58 tmp52 [V58,T62] ( 4, 0 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.Action`4[int,System.Memory`1[ubyte],int,int]>
;* V59 tmp53 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Action`4[int,System.Memory`1[ubyte],int,int]>
-; V60 tmp54 [V60,T46] ( 3, 2 ) int -> r8 "Inline return value spill temp"
+; V60 tmp54 [V60,T47] ( 3, 2 ) int -> r8 "Inline return value spill temp"
; V61 tmp55 [V61,T35] ( 4, 3 ) int -> [sp+0x88] ld-addr-op "Inline ldloca(s) first use temp"
-; V62 tmp56 [V62,T60] ( 16, 0 ) ref -> r5 class-hnd exact single-def "Inline stloc first use temp" <System.Net.Sockets.SocketAsyncContext+BufferMemorySendOperation>
+; V62 tmp56 [V62,T61] ( 16, 0 ) ref -> r5 class-hnd exact single-def "Inline stloc first use temp" <System.Net.Sockets.SocketAsyncContext+BufferMemorySendOperation>
;* V63 tmp57 [V63 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "Inlining Arg" <System.Memory`1[ubyte]>
; V64 tmp58 [V64 ] ( 3, 4 ) int -> [sp+0x84] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
; V65 tmp59 [V65 ] ( 3, 4 ) int -> [sp+0x80] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
@@ -81,13 +81,13 @@
;* V69 tmp63 [V69 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Span`1[ubyte]>
;* V70 tmp64 [V70 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V71 tmp65 [V71 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
-; V72 tmp66 [V72,T68] ( 3, 0 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.SocketException>
-; V73 tmp67 [V73,T84] ( 2, 0 ) int -> r9 "Inlining Arg"
+; V72 tmp66 [V72,T69] ( 3, 0 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.SocketException>
+; V73 tmp67 [V73,T85] ( 2, 0 ) int -> r9 "Inlining Arg"
;* V74 tmp68 [V74 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V75 tmp69 [V75,T11] ( 3, 6 ) byref -> r3 single-def "Inlining Arg"
-; V76 tmp70 [V76,T42] ( 3, 2.00) int -> r5 "Inline stloc first use temp"
-; V77 tmp71 [V77,T47] ( 3, 2 ) int -> r5
-; V78 tmp72 [V78,T50] ( 2, 2 ) ubyte -> r5 "Inline stloc first use temp"
+; V76 tmp70 [V76,T43] ( 3, 2.00) int -> r5 "Inline stloc first use temp"
+; V77 tmp71 [V77,T48] ( 3, 2 ) int -> r5
+; V78 tmp72 [V78,T51] ( 2, 2 ) ubyte -> r5 "Inline stloc first use temp"
; V79 tmp73 [V79,T17] ( 6, 4.99) byref -> r8 "Inline stloc first use temp"
; V80 tmp74 [V80,T05] ( 9, 7.96) int -> [sp+0x78] "Inline stloc first use temp"
;* V81 tmp75 [V81 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Object>
@@ -139,29 +139,29 @@
;* V127 tmp121 [V127 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.SocketAddress>
;* V128 tmp122 [V128 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V129 tmp123 [V129,T32] ( 3, 3.95) int -> r2 "Inlining Arg"
-;* V130 tmp124 [V130,T57] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V130 tmp124 [V130,T58] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V131 tmp125 [V131,T15] ( 4, 3 ) ref -> [sp+0xD4] do-not-enreg[] single-def "field V02._source (fldOffset=0x0)" P-DEP
;* V132 tmp126 [V132 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
;* V133 tmp127 [V133 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x4)" P-INDEP
-; V134 tmp128 [V134,T54] ( 3, 1.99) byref -> r6 "field V25._reference (fldOffset=0x0)" P-INDEP
+; V134 tmp128 [V134,T55] ( 3, 1.99) byref -> r6 "field V25._reference (fldOffset=0x0)" P-INDEP
; V135 tmp129 [V135,T34] ( 4, 3.00) int -> r1 "field V25._length (fldOffset=0x4)" P-INDEP
;* V136 tmp130 [V136 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP
;* V137 tmp131 [V137 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x4)" P-INDEP
-; V138 tmp132 [V138,T71] ( 2, 0 ) ref -> [sp+0x94] do-not-enreg[H] hidden-struct-arg "field V41._object (fldOffset=0x0)" P-DEP
-; V139 tmp133 [V139,T85] ( 2, 0 ) int -> [sp+0x98] do-not-enreg[H] hidden-struct-arg "field V41._index (fldOffset=0x4)" P-DEP
-; V140 tmp134 [V140,T86] ( 2, 0 ) int -> [sp+0x9C] do-not-enreg[H] hidden-struct-arg "field V41._length (fldOffset=0x8)" P-DEP
+; V138 tmp132 [V138,T72] ( 2, 0 ) ref -> [sp+0x94] do-not-enreg[H] hidden-struct-arg "field V41._object (fldOffset=0x0)" P-DEP
+; V139 tmp133 [V139,T86] ( 2, 0 ) int -> [sp+0x98] do-not-enreg[H] hidden-struct-arg "field V41._index (fldOffset=0x4)" P-DEP
+; V140 tmp134 [V140,T87] ( 2, 0 ) int -> [sp+0x9C] do-not-enreg[H] hidden-struct-arg "field V41._length (fldOffset=0x8)" P-DEP
;* V141 tmp135 [V141 ] ( 0, 0 ) ref -> zero-ref "field V43._object (fldOffset=0x0)" P-INDEP
;* V142 tmp136 [V142 ] ( 0, 0 ) int -> zero-ref "field V43._index (fldOffset=0x4)" P-INDEP
;* V143 tmp137 [V143 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
; V144 tmp138 [V144,T13] ( 10, 5.98) ref -> r7 single-def "field V45._object (fldOffset=0x0)" P-INDEP
-; V145 tmp139 [V145,T53] ( 3, 2.00) int -> [sp+0x5C] spill-single-def "field V45._index (fldOffset=0x4)" P-INDEP
-; V146 tmp140 [V146,T38] ( 4, 2.97) int -> r6 "field V45._length (fldOffset=0x8)" P-INDEP
+; V145 tmp139 [V145,T54] ( 3, 2.00) int -> [sp+0x5C] spill-single-def "field V45._index (fldOffset=0x4)" P-INDEP
+; V146 tmp140 [V146,T39] ( 4, 2.97) int -> r6 "field V45._length (fldOffset=0x8)" P-INDEP
;* V147 tmp141 [V147 ] ( 0, 0 ) ref -> zero-ref single-def "field V49._object (fldOffset=0x0)" P-INDEP
;* V148 tmp142 [V148 ] ( 0, 0 ) int -> zero-ref "field V49._index (fldOffset=0x4)" P-INDEP
;* V149 tmp143 [V149 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
; V150 tmp144 [V150,T06] ( 12, 6.98) ref -> [sp+0x34] "field V53._object (fldOffset=0x0)" P-INDEP
-;* V151 tmp145 [V151,T58] ( 0, 0 ) int -> zero-ref "field V53._index (fldOffset=0x4)" P-INDEP
-; V152 tmp146 [V152,T37] ( 5, 2.99) int -> [sp+0x58] "field V53._length (fldOffset=0x8)" P-INDEP
+;* V151 tmp145 [V151,T59] ( 0, 0 ) int -> zero-ref "field V53._index (fldOffset=0x4)" P-INDEP
+; V152 tmp146 [V152,T38] ( 5, 2.99) int -> [sp+0x58] "field V53._length (fldOffset=0x8)" P-INDEP
;* V153 tmp147 [V153 ] ( 0, 0 ) ref -> zero-ref single-def "field V63._object (fldOffset=0x0)" P-INDEP
;* V154 tmp148 [V154 ] ( 0, 0 ) int -> zero-ref "field V63._index (fldOffset=0x4)" P-INDEP
;* V155 tmp149 [V155 ] ( 0, 0 ) int -> zero-ref "field V63._length (fldOffset=0x8)" P-INDEP
@@ -178,7 +178,7 @@
;* V166 tmp160 [V166 ] ( 0, 0 ) int -> zero-ref "field V82._length (fldOffset=0x4)" P-INDEP
; V167 tmp161 [V167 ] ( 2, 0 ) byref -> [sp+0x70] do-not-enreg[X] addr-exposed "field V84._reference (fldOffset=0x0)" P-DEP
; V168 tmp162 [V168 ] ( 2, 0 ) int -> [sp+0x74] do-not-enreg[X] addr-exposed "field V84._length (fldOffset=0x4)" P-DEP
-; V169 tmp163 [V169,T72] ( 2, 0 ) byref -> r8 single-def "field V91._reference (fldOffset=0x0)" P-INDEP
+; V169 tmp163 [V169,T73] ( 2, 0 ) byref -> r8 single-def "field V91._reference (fldOffset=0x0)" P-INDEP
;* V170 tmp164 [V170 ] ( 0, 0 ) int -> zero-ref "field V91._length (fldOffset=0x4)" P-INDEP
;* V171 tmp165 [V171 ] ( 0, 0 ) byref -> zero-ref "field V94._reference (fldOffset=0x0)" P-INDEP
;* V172 tmp166 [V172 ] ( 0, 0 ) int -> zero-ref "field V94._length (fldOffset=0x4)" P-INDEP
@@ -186,36 +186,37 @@
;* V174 tmp168 [V174 ] ( 0, 0 ) int -> zero-ref "field V98._length (fldOffset=0x4)" P-INDEP
; V175 tmp169 [V175 ] ( 2, 0 ) byref -> [sp+0x64] do-not-enreg[X] addr-exposed "field V100._reference (fldOffset=0x0)" P-DEP
; V176 tmp170 [V176 ] ( 2, 0 ) int -> [sp+0x68] do-not-enreg[X] addr-exposed "field V100._length (fldOffset=0x4)" P-DEP
-; V177 tmp171 [V177,T73] ( 2, 0 ) byref -> r12 single-def "field V107._reference (fldOffset=0x0)" P-INDEP
+; V177 tmp171 [V177,T74] ( 2, 0 ) byref -> r12 single-def "field V107._reference (fldOffset=0x0)" P-INDEP
;* V178 tmp172 [V178 ] ( 0, 0 ) int -> zero-ref "field V107._length (fldOffset=0x4)" P-INDEP
;* V179 tmp173 [V179 ] ( 0, 0 ) byref -> zero-ref single-def "field V110._reference (fldOffset=0x0)" P-INDEP
;* V180 tmp174 [V180 ] ( 0, 0 ) int -> zero-ref "field V110._length (fldOffset=0x4)" P-INDEP
-; V181 tmp175 [V181,T48] ( 2, 2 ) byref -> [sp+0x30] spill-single-def "field V111._reference (fldOffset=0x0)" P-INDEP
-; V182 tmp176 [V182,T51] ( 2, 2 ) int -> [sp+0x54] spill-single-def "field V111._length (fldOffset=0x4)" P-INDEP
+; V181 tmp175 [V181,T49] ( 2, 2 ) byref -> [sp+0x30] spill-single-def "field V111._reference (fldOffset=0x0)" P-INDEP
+; V182 tmp176 [V182,T52] ( 2, 2 ) int -> [sp+0x54] spill-single-def "field V111._length (fldOffset=0x4)" P-INDEP
;* V183 tmp177 [V183 ] ( 0, 0 ) byref -> zero-ref "field V117._reference (fldOffset=0x0)" P-INDEP
;* V184 tmp178 [V184 ] ( 0, 0 ) int -> zero-ref "field V117._length (fldOffset=0x4)" P-INDEP
;* V185 tmp179 [V185 ] ( 0, 0 ) byref -> zero-ref single-def "field V118._reference (fldOffset=0x0)" P-INDEP
;* V186 tmp180 [V186 ] ( 0, 0 ) int -> zero-ref "field V118._length (fldOffset=0x4)" P-INDEP
-; V187 tmp181 [V187,T49] ( 2, 2 ) byref -> r8 single-def "field V119._reference (fldOffset=0x0)" P-INDEP
-; V188 tmp182 [V188,T52] ( 2, 2 ) int -> r2 "field V119._length (fldOffset=0x4)" P-INDEP
+; V187 tmp181 [V187,T50] ( 2, 2 ) byref -> r8 single-def "field V119._reference (fldOffset=0x0)" P-INDEP
+; V188 tmp182 [V188,T53] ( 2, 2 ) int -> r2 "field V119._length (fldOffset=0x4)" P-INDEP
;* V189 tmp183 [V189 ] ( 0, 0 ) ref -> zero-ref "field V125._object (fldOffset=0x0)" P-INDEP
;* V190 tmp184 [V190 ] ( 0, 0 ) int -> zero-ref "field V125._index (fldOffset=0x4)" P-INDEP
;* V191 tmp185 [V191 ] ( 0, 0 ) int -> zero-ref "field V125._length (fldOffset=0x8)" P-INDEP
-; V192 tmp186 [V192,T74] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
-; V193 tmp187 [V193,T75] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
-; V194 tmp188 [V194,T76] ( 2, 0 ) ref -> r5 single-def "argument with side effect"
-; V195 tmp189 [V195,T77] ( 2, 0 ) ref -> r2 single-def "argument with side effect"
+; V192 tmp186 [V192,T75] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
+; V193 tmp187 [V193,T76] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
+; V194 tmp188 [V194,T77] ( 2, 0 ) ref -> r5 single-def "argument with side effect"
+; V195 tmp189 [V195,T78] ( 2, 0 ) ref -> r2 single-def "argument with side effect"
; V196 tmp190 [V196,T21] ( 2, 4.00) int -> r0 "Cast away GC"
; V197 tmp191 [V197,T22] ( 2, 4.00) int -> r0 "argument with side effect"
-; V198 tmp192 [V198,T78] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
-; V199 tmp193 [V199,T87] ( 2, 0 ) int -> r1 "argument with side effect"
-; V200 tmp194 [V200,T79] ( 2, 0 ) ref -> r9 single-def "argument with side effect"
-; V201 tmp195 [V201,T80] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
-; V202 tmp196 [V202,T81] ( 2, 0 ) ref -> r7 single-def "argument with side effect"
-; V203 tmp197 [V203,T82] ( 2, 0 ) ref -> r2 single-def "argument with side effect"
-; V204 PSPSym [V204,T59] ( 1, 1 ) int -> [sp+0xAC] do-not-enreg[V] "PSPSym"
-; V205 cse0 [V205,T36] ( 3, 3 ) ref -> r0 "CSE - conservative"
-; V206 cse1 [V206,T39] ( 3, 2.96) ref -> r0 "CSE - conservative"
+; V198 tmp192 [V198,T36] ( 2, 2 ) ref -> r0 single-def "Field obj"
+; V199 tmp193 [V199,T79] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
+; V200 tmp194 [V200,T88] ( 2, 0 ) int -> r1 "argument with side effect"
+; V201 tmp195 [V201,T80] ( 2, 0 ) ref -> r9 single-def "argument with side effect"
+; V202 tmp196 [V202,T81] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
+; V203 tmp197 [V203,T82] ( 2, 0 ) ref -> r7 single-def "argument with side effect"
+; V204 tmp198 [V204,T83] ( 2, 0 ) ref -> r2 single-def "argument with side effect"
+; V205 PSPSym [V205,T60] ( 1, 1 ) int -> [sp+0xAC] do-not-enreg[V] "PSPSym"
+; V206 cse0 [V206,T37] ( 3, 3 ) ref -> r0 "CSE - conservative"
+; V207 cse1 [V207,T40] ( 3, 2.96) ref -> r0 "CSE - conservative"
; TEMP_03 ref -> [r11-0xA0]
; TEMP_02 int -> [r11-0xA4]
; TEMP_01 int -> [r11-0xA8]
@@ -236,7 +237,7 @@ G_M38239_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
bhi SHORT pc-6 (-3 instructions)
str r2, [r4]
add r2, sp, 216
- str r2, [sp+0xAC] // [V204 PSPSym]
+ str r2, [sp+0xAC] // [V205 PSPSym]
str r0, [sp+0x50] // [V00 this]
; GC ptr vars +{V00}
str r1, [sp+0x4C] // [V01 arg1]
@@ -417,7 +418,7 @@ G_M38239_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movt r0, 0xd1ff
ldr r0, [r0]
; gcrRegs +[r0]
- ldrsb r0, [r0+0x5D]
+ ldrsb r0, [r0]
; gcrRegs -[r0]
;; size=80 bbWeight=1 PerfScore 27.00
G_M38239_IG11: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz
@@ -428,7 +429,7 @@ G_M38239_IG11: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b
cmp r0, 0
beq G_M38239_IG80
;; size=10 bbWeight=1 PerfScore 4.00
-G_M38239_IG12: ; bbWeight=1, gcVars=000000004000000000000003 {V00 V01 V04}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
+G_M38239_IG12: ; bbWeight=1, gcVars=000000008000000000000003 {V00 V01 V04}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0]
; GC ptr vars -{V03}
ldr r7, [r1+0x04]
@@ -474,7 +475,7 @@ G_M38239_IG14: ; bbWeight=1, gcrefRegs=0092 {r1 r4 r7}, byrefRegs=0000 {}
ldr r12, [lr+0x04]
str r12, [sp+0x58] // [V152 tmp146]
;; size=54 bbWeight=1 PerfScore 17.00
-G_M38239_IG15: ; bbWeight=1, gcVars=000000004000000000000043 {V00 V01 V04 V150}, gcrefRegs=0292 {r1 r4 r7 r9}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M38239_IG15: ; bbWeight=1, gcVars=000000008000000000000043 {V00 V01 V04 V150}, gcrefRegs=0292 {r1 r4 r7 r9}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0 lr]
ldr r0, [r4+0x3C]
; gcrRegs +[r0]
@@ -483,7 +484,7 @@ G_M38239_IG15: ; bbWeight=1, gcVars=000000004000000000000043 {V00 V01 V04
cmp r0, 0
beq G_M38239_IG48
;; size=10 bbWeight=1 PerfScore 4.00
-G_M38239_IG16: ; bbWeight=1, gcVars=000000004000100000000043 {V00 V01 V04 V57 V150}, gcrefRegs=0292 {r1 r4 r7 r9}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M38239_IG16: ; bbWeight=1, gcVars=000000008000200000000043 {V00 V01 V04 V57 V150}, gcrefRegs=0292 {r1 r4 r7 r9}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0]
str r5, [sp+0x84] // [V64 tmp58]
str r3, [sp+0x80] // [V65 tmp59]
@@ -593,7 +594,7 @@ G_M38239_IG30: ; bbWeight=1, gcrefRegs=02B2 {r1 r4 r5 r7 r9}, byrefRegs=0
cmp lr, 0
beq SHORT G_M38239_IG34
...
+0 (0.00%) : 148280.dasm - System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
@@ -13,19 +13,19 @@
; V01 arg1 [V01,T00] ( 38, 25 ) ref -> [sp+0x44] class-hnd EH-live single-def <System.Net.Sockets.SocketAsyncEventArgs>
; V02 arg2 [V02 ] ( 4, 3 ) struct ( 4) [sp+0xC4] single-def <System.Threading.CancellationToken>
; V03 loc0 [V03 ] ( 4, 1 ) ref -> [sp+0x94] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Net.EndPoint>
-; V04 loc1 [V04,T46] ( 3, 0 ) ref -> [sp+0x40] class-hnd EH-live single-def <System.Net.EndPoint>
+; V04 loc1 [V04,T47] ( 3, 0 ) ref -> [sp+0x40] class-hnd EH-live single-def <System.Net.EndPoint>
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object>
-; V08 tmp2 [V08,T47] ( 3, 0 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V08 tmp2 [V08,T48] ( 3, 0 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V09 tmp3 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp4 [V10,T32] ( 3, 2 ) int -> r1 "Inline stloc first use temp"
+; V10 tmp4 [V10,T33] ( 3, 2 ) int -> r1 "Inline stloc first use temp"
; V11 tmp5 [V11,T08] ( 5, 6 ) byref -> r0 single-def "Inlining Arg"
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
; V13 tmp7 [V13,T07] ( 6, 6 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <System.Net.Sockets.SafeSocketHandle>
-; V14 tmp8 [V14,T51] ( 2, 0 ) ref -> r4 class-hnd exact single-def "impAppendStmt" <System.Net.Sockets.SocketAsyncContext>
-; V15 tmp9 [V15,T52] ( 2, 0 ) ref -> r5 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V16 tmp10 [V16,T61] ( 2, 0 ) int -> r6 "impAppendStmt"
+; V14 tmp8 [V14,T52] ( 2, 0 ) ref -> r4 class-hnd exact single-def "impAppendStmt" <System.Net.Sockets.SocketAsyncContext>
+; V15 tmp9 [V15,T53] ( 2, 0 ) ref -> r5 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V16 tmp10 [V16,T62] ( 2, 0 ) int -> r6 "impAppendStmt"
; V17 tmp11 [V17 ] ( 6, 3 ) int -> [sp+0x90] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V18 tmp12 [V18 ] ( 4, 0 ) struct (12) [sp+0x84] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "impAppendStmt" <System.Memory`1[ubyte]>
; V19 tmp13 [V19,T14] ( 9, 5.00) int -> r7 "Inline stloc first use temp"
@@ -36,19 +36,19 @@
; V24 tmp18 [V24,T24] ( 2, 4 ) int -> r4 "impAppendStmt"
; V25 tmp19 [V25,T19] ( 3, 4 ) int -> [sp+0x80] spill-single-def "impAppendStmt"
;* V26 tmp20 [V26 ] ( 0, 0 ) struct (12) zero-ref "impAppendStmt" <System.Memory`1[ubyte]>
-; V27 tmp21 [V27,T48] ( 3, 0 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.SocketAsyncContext>
-; V28 tmp22 [V28,T49] ( 3, 0 ) byref -> r7 single-def "impAppendStmt"
+; V27 tmp21 [V27,T49] ( 3, 0 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.SocketAsyncContext>
+; V28 tmp22 [V28,T50] ( 3, 0 ) byref -> r7 single-def "impAppendStmt"
;* V29 tmp23 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.SocketAddress>
;* V30 tmp24 [V30 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
; V31 tmp25 [V31,T09] ( 3, 6.00) ref -> lr class-hnd single-def "Inlining Arg" <ubyte[]>
;* V32 tmp26 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Action`4[int,System.Memory`1[ubyte],int,int]>
; V33 tmp27 [V33,T21] ( 2, 4.00) ref -> r0 class-hnd single-def "dup spill" <System.Action`4[int,System.Memory`1[ubyte],int,int]>
-; V34 tmp28 [V34,T31] ( 4, 2.00) ref -> [sp+0x3C]
-; V35 tmp29 [V35,T45] ( 4, 0 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Action`4[int,System.Memory`1[ubyte],int,int]>
+; V34 tmp28 [V34,T32] ( 4, 2.00) ref -> [sp+0x3C]
+; V35 tmp29 [V35,T46] ( 4, 0 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Action`4[int,System.Memory`1[ubyte],int,int]>
;* V36 tmp30 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Action`4[int,System.Memory`1[ubyte],int,int]>
-; V37 tmp31 [V37,T33] ( 3, 2 ) int -> r7 "Inline return value spill temp"
+; V37 tmp31 [V37,T34] ( 3, 2 ) int -> r7 "Inline return value spill temp"
; V38 tmp32 [V38,T27] ( 4, 3 ) int -> r4 ld-addr-op "Inline ldloca(s) first use temp"
-; V39 tmp33 [V39,T44] ( 16, 0 ) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <System.Net.Sockets.SocketAsyncContext+BufferMemorySendOperation>
+; V39 tmp33 [V39,T45] ( 16, 0 ) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <System.Net.Sockets.SocketAsyncContext+BufferMemorySendOperation>
;* V40 tmp34 [V40 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "Inlining Arg" <System.Memory`1[ubyte]>
; V41 tmp35 [V41 ] ( 3, 4.00) int -> [sp+0x7C] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
; V42 tmp36 [V42 ] ( 3, 4.00) int -> [sp+0x78] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
@@ -58,13 +58,13 @@
;* V46 tmp40 [V46 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Span`1[ubyte]>
;* V47 tmp41 [V47 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V48 tmp42 [V48 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
-; V49 tmp43 [V49,T50] ( 3, 0 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.SocketException>
-; V50 tmp44 [V50,T62] ( 2, 0 ) int -> r5 "Inlining Arg"
+; V49 tmp43 [V49,T51] ( 3, 0 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.SocketException>
+; V50 tmp44 [V50,T63] ( 2, 0 ) int -> r5 "Inlining Arg"
;* V51 tmp45 [V51 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V52 tmp46 [V52,T10] ( 3, 6.00) byref -> r4 single-def "Inlining Arg"
-; V53 tmp47 [V53,T34] ( 3, 2.00) int -> r9 "Inline stloc first use temp"
-; V54 tmp48 [V54,T35] ( 3, 2 ) int -> r9
-; V55 tmp49 [V55,T38] ( 2, 2 ) ubyte -> r9 "Inline stloc first use temp"
+; V53 tmp47 [V53,T35] ( 3, 2.00) int -> r9 "Inline stloc first use temp"
+; V54 tmp48 [V54,T36] ( 3, 2 ) int -> r9
+; V55 tmp49 [V55,T39] ( 2, 2 ) ubyte -> r9 "Inline stloc first use temp"
; V56 tmp50 [V56,T12] ( 6, 5.01) byref -> registers "Inline stloc first use temp"
; V57 tmp51 [V57,T01] ( 9, 8.01) int -> [sp+0x70] "Inline stloc first use temp"
;* V58 tmp52 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Object>
@@ -116,22 +116,22 @@
;* V104 tmp98 [V104 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.SocketAddress>
;* V105 tmp99 [V105 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V106 tmp100 [V106,T20] ( 3, 4.00) int -> r3 "Inlining Arg"
-;* V107 tmp101 [V107,T41] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V107 tmp101 [V107,T42] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V108 tmp102 [V108,T15] ( 4, 3 ) ref -> [sp+0xC4] do-not-enreg[] single-def "field V02._source (fldOffset=0x0)" P-DEP
-; V109 tmp103 [V109,T53] ( 2, 0 ) ref -> [sp+0x84] do-not-enreg[H] hidden-struct-arg "field V18._object (fldOffset=0x0)" P-DEP
-; V110 tmp104 [V110,T63] ( 2, 0 ) int -> [sp+0x88] do-not-enreg[H] hidden-struct-arg "field V18._index (fldOffset=0x4)" P-DEP
-; V111 tmp105 [V111,T64] ( 2, 0 ) int -> [sp+0x8C] do-not-enreg[H] hidden-struct-arg "field V18._length (fldOffset=0x8)" P-DEP
+; V109 tmp103 [V109,T54] ( 2, 0 ) ref -> [sp+0x84] do-not-enreg[H] hidden-struct-arg "field V18._object (fldOffset=0x0)" P-DEP
+; V110 tmp104 [V110,T64] ( 2, 0 ) int -> [sp+0x88] do-not-enreg[H] hidden-struct-arg "field V18._index (fldOffset=0x4)" P-DEP
+; V111 tmp105 [V111,T65] ( 2, 0 ) int -> [sp+0x8C] do-not-enreg[H] hidden-struct-arg "field V18._length (fldOffset=0x8)" P-DEP
;* V112 tmp106 [V112 ] ( 0, 0 ) ref -> zero-ref "field V20._object (fldOffset=0x0)" P-INDEP
;* V113 tmp107 [V113 ] ( 0, 0 ) int -> zero-ref "field V20._index (fldOffset=0x4)" P-INDEP
;* V114 tmp108 [V114 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
; V115 tmp109 [V115,T05] ( 10, 6.01) ref -> r6 single-def "field V22._object (fldOffset=0x0)" P-INDEP
-; V116 tmp110 [V116,T30] ( 3, 2.00) int -> [sp+0x54] spill-single-def "field V22._index (fldOffset=0x4)" P-INDEP
+; V116 tmp110 [V116,T31] ( 3, 2.00) int -> [sp+0x54] spill-single-def "field V22._index (fldOffset=0x4)" P-INDEP
; V117 tmp111 [V117,T26] ( 4, 3.00) int -> r8 "field V22._length (fldOffset=0x8)" P-INDEP
;* V118 tmp112 [V118 ] ( 0, 0 ) ref -> zero-ref single-def "field V26._object (fldOffset=0x0)" P-INDEP
;* V119 tmp113 [V119 ] ( 0, 0 ) int -> zero-ref "field V26._index (fldOffset=0x4)" P-INDEP
;* V120 tmp114 [V120 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP
; V121 tmp115 [V121,T04] ( 12, 7.01) ref -> [sp+0x34] "field V30._object (fldOffset=0x0)" P-INDEP
-;* V122 tmp116 [V122,T42] ( 0, 0 ) int -> zero-ref "field V30._index (fldOffset=0x4)" P-INDEP
+;* V122 tmp116 [V122,T43] ( 0, 0 ) int -> zero-ref "field V30._index (fldOffset=0x4)" P-INDEP
; V123 tmp117 [V123,T25] ( 5, 3.01) int -> [sp+0x50] "field V30._length (fldOffset=0x8)" P-INDEP
;* V124 tmp118 [V124 ] ( 0, 0 ) ref -> zero-ref single-def "field V40._object (fldOffset=0x0)" P-INDEP
;* V125 tmp119 [V125 ] ( 0, 0 ) int -> zero-ref "field V40._index (fldOffset=0x4)" P-INDEP
@@ -149,7 +149,7 @@
;* V137 tmp131 [V137 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x4)" P-INDEP
; V138 tmp132 [V138 ] ( 2, 0 ) byref -> [sp+0x68] do-not-enreg[X] addr-exposed "field V61._reference (fldOffset=0x0)" P-DEP
; V139 tmp133 [V139 ] ( 2, 0 ) int -> [sp+0x6C] do-not-enreg[X] addr-exposed "field V61._length (fldOffset=0x4)" P-DEP
-; V140 tmp134 [V140,T54] ( 2, 0 ) byref -> r7 single-def "field V68._reference (fldOffset=0x0)" P-INDEP
+; V140 tmp134 [V140,T55] ( 2, 0 ) byref -> r7 single-def "field V68._reference (fldOffset=0x0)" P-INDEP
;* V141 tmp135 [V141 ] ( 0, 0 ) int -> zero-ref "field V68._length (fldOffset=0x4)" P-INDEP
;* V142 tmp136 [V142 ] ( 0, 0 ) byref -> zero-ref "field V71._reference (fldOffset=0x0)" P-INDEP
;* V143 tmp137 [V143 ] ( 0, 0 ) int -> zero-ref "field V71._length (fldOffset=0x4)" P-INDEP
@@ -157,30 +157,31 @@
;* V145 tmp139 [V145 ] ( 0, 0 ) int -> zero-ref "field V75._length (fldOffset=0x4)" P-INDEP
; V146 tmp140 [V146 ] ( 2, 0 ) byref -> [sp+0x5C] do-not-enreg[X] addr-exposed "field V77._reference (fldOffset=0x0)" P-DEP
; V147 tmp141 [V147 ] ( 2, 0 ) int -> [sp+0x60] do-not-enreg[X] addr-exposed "field V77._length (fldOffset=0x4)" P-DEP
-; V148 tmp142 [V148,T55] ( 2, 0 ) byref -> r2 single-def "field V84._reference (fldOffset=0x0)" P-INDEP
+; V148 tmp142 [V148,T56] ( 2, 0 ) byref -> r2 single-def "field V84._reference (fldOffset=0x0)" P-INDEP
;* V149 tmp143 [V149 ] ( 0, 0 ) int -> zero-ref "field V84._length (fldOffset=0x4)" P-INDEP
;* V150 tmp144 [V150 ] ( 0, 0 ) byref -> zero-ref single-def "field V87._reference (fldOffset=0x0)" P-INDEP
;* V151 tmp145 [V151 ] ( 0, 0 ) int -> zero-ref "field V87._length (fldOffset=0x4)" P-INDEP
-; V152 tmp146 [V152,T36] ( 2, 2 ) byref -> [sp+0x30] spill-single-def "field V88._reference (fldOffset=0x0)" P-INDEP
-; V153 tmp147 [V153,T39] ( 2, 2 ) int -> [sp+0x4C] spill-single-def "field V88._length (fldOffset=0x4)" P-INDEP
+; V152 tmp146 [V152,T37] ( 2, 2 ) byref -> [sp+0x30] spill-single-def "field V88._reference (fldOffset=0x0)" P-INDEP
+; V153 tmp147 [V153,T40] ( 2, 2 ) int -> [sp+0x4C] spill-single-def "field V88._length (fldOffset=0x4)" P-INDEP
;* V154 tmp148 [V154 ] ( 0, 0 ) byref -> zero-ref "field V94._reference (fldOffset=0x0)" P-INDEP
;* V155 tmp149 [V155 ] ( 0, 0 ) int -> zero-ref "field V94._length (fldOffset=0x4)" P-INDEP
;* V156 tmp150 [V156 ] ( 0, 0 ) byref -> zero-ref single-def "field V95._reference (fldOffset=0x0)" P-INDEP
;* V157 tmp151 [V157 ] ( 0, 0 ) int -> zero-ref "field V95._length (fldOffset=0x4)" P-INDEP
-; V158 tmp152 [V158,T37] ( 2, 2 ) byref -> r7 single-def "field V96._reference (fldOffset=0x0)" P-INDEP
-; V159 tmp153 [V159,T40] ( 2, 2 ) int -> r2 "field V96._length (fldOffset=0x4)" P-INDEP
+; V158 tmp152 [V158,T38] ( 2, 2 ) byref -> r7 single-def "field V96._reference (fldOffset=0x0)" P-INDEP
+; V159 tmp153 [V159,T41] ( 2, 2 ) int -> r2 "field V96._length (fldOffset=0x4)" P-INDEP
;* V160 tmp154 [V160 ] ( 0, 0 ) ref -> zero-ref "field V102._object (fldOffset=0x0)" P-INDEP
;* V161 tmp155 [V161 ] ( 0, 0 ) int -> zero-ref "field V102._index (fldOffset=0x4)" P-INDEP
;* V162 tmp156 [V162 ] ( 0, 0 ) int -> zero-ref "field V102._length (fldOffset=0x8)" P-INDEP
-; V163 tmp157 [V163,T56] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
-; V164 tmp158 [V164,T65] ( 2, 0 ) int -> r1 "argument with side effect"
-; V165 tmp159 [V165,T57] ( 2, 0 ) ref -> r6 single-def "argument with side effect"
-; V166 tmp160 [V166,T58] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
-; V167 tmp161 [V167,T59] ( 2, 0 ) ref -> r4 single-def "argument with side effect"
-; V168 tmp162 [V168,T60] ( 2, 0 ) ref -> r2 single-def "argument with side effect"
-; V169 PSPSym [V169,T43] ( 1, 1 ) int -> [sp+0x9C] do-not-enreg[V] "PSPSym"
-; V170 cse0 [V170,T28] ( 3, 3 ) ref -> r0 "CSE - moderate"
-; V171 cse1 [V171,T29] ( 3, 3.00) ref -> r0 "CSE - moderate"
+; V163 tmp157 [V163,T28] ( 2, 2 ) ref -> r0 single-def "Field obj"
+; V164 tmp158 [V164,T57] ( 2, 0 ) ref -> r0 single-def "argument with side effect"
+; V165 tmp159 [V165,T66] ( 2, 0 ) int -> r1 "argument with side effect"
+; V166 tmp160 [V166,T58] ( 2, 0 ) ref -> r6 single-def "argument with side effect"
+; V167 tmp161 [V167,T59] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
+; V168 tmp162 [V168,T60] ( 2, 0 ) ref -> r4 single-def "argument with side effect"
+; V169 tmp163 [V169,T61] ( 2, 0 ) ref -> r2 single-def "argument with side effect"
+; V170 PSPSym [V170,T44] ( 1, 1 ) int -> [sp+0x9C] do-not-enreg[V] "PSPSym"
+; V171 cse0 [V171,T29] ( 3, 3 ) ref -> r0 "CSE - conservative"
+; V172 cse1 [V172,T30] ( 3, 3.00) ref -> r0 "CSE - conservative"
; TEMP_03 ref -> [r11-0x90]
; TEMP_02 int -> [r11-0x94]
; TEMP_01 int -> [r11-0x98]
@@ -201,7 +202,7 @@ G_M38239_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
bhi SHORT pc-6 (-3 instructions)
str r2, [r4]
add r2, sp, 200
- str r2, [sp+0x9C] // [V169 PSPSym]
+ str r2, [sp+0x9C] // [V170 PSPSym]
str r0, [sp+0x48] // [V00 this]
; GC ptr vars +{V00}
str r1, [sp+0x44] // [V01 arg1]
@@ -259,7 +260,7 @@ G_M38239_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre
movt r0, 0xd1ff
ldr r0, [r0]
; gcrRegs +[r0]
- ldrsb r0, [r0+0x5D]
+ ldrsb r0, [r0]
; gcrRegs -[r0]
;; size=68 bbWeight=1 PerfScore 23.00
G_M38239_IG04: ; bbWeight=1, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
@@ -270,7 +271,7 @@ G_M38239_IG04: ; bbWeight=1, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, b
cmp r0, 0
beq G_M38239_IG73
;; size=10 bbWeight=1 PerfScore 4.00
-G_M38239_IG05: ; bbWeight=1, gcVars=000000000000400000000005 {V00 V01 V04}, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, gcvars, byref
+G_M38239_IG05: ; bbWeight=1, gcVars=000000000000800000000005 {V00 V01 V04}, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0]
ldr r4, [r1+0x04]
; gcrRegs +[r4]
@@ -323,7 +324,7 @@ G_M38239_IG09: ; bbWeight=1.00, gcrefRegs=4066 {r1 r2 r5 r6 lr}, byrefReg
ldr r12, [lr+0x04]
str r12, [sp+0x50] // [V123 tmp117]
;; size=12 bbWeight=1.00 PerfScore 3.00
-G_M38239_IG10: ; bbWeight=1.00, gcVars=000000000000400000000015 {V00 V01 V04 V121}, gcrefRegs=0066 {r1 r2 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M38239_IG10: ; bbWeight=1.00, gcVars=000000000000800000000015 {V00 V01 V04 V121}, gcrefRegs=0066 {r1 r2 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[lr]
ldr r0, [r2+0x3C]
; gcrRegs +[r0]
@@ -332,7 +333,7 @@ G_M38239_IG10: ; bbWeight=1.00, gcVars=000000000000400000000015 {V00 V01
cmp r0, 0
beq SHORT G_M38239_IG19
;; size=8 bbWeight=1.00 PerfScore 4.00
-G_M38239_IG11: ; bbWeight=1.00, gcVars=000000000000400080000015 {V00 V01 V04 V34 V121}, gcrefRegs=0062 {r1 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M38239_IG11: ; bbWeight=1.00, gcVars=000000000000800100000015 {V00 V01 V04 V34 V121}, gcrefRegs=0062 {r1 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0 r2]
str r9, [sp+0x7C] // [V41 tmp35]
str r4, [sp+0x78] // [V42 tmp36]
@@ -371,7 +372,7 @@ G_M38239_IG15: ; bbWeight=0, gcrefRegs=0062 {r1 r5 r6}, byrefRegs=0000 {}
mov r9, 0
b SHORT G_M38239_IG17
;; size=16 bbWeight=0 PerfScore 0.00
-G_M38239_IG16: ; bbWeight=0, gcVars=000000000000400080000005 {V00 V01 V04 V34}, gcrefRegs=4062 {r1 r5 r6 lr}, byrefRegs=0000 {}, gcvars, byref
+G_M38239_IG16: ; bbWeight=0, gcVars=000000000000800100000005 {V00 V01 V04 V34}, gcrefRegs=4062 {r1 r5 r6 lr}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V04 V121}
mov r9, 1
;; size=4 bbWeight=0 PerfScore 0.00
@@ -380,7 +381,7 @@ G_M38239_IG17: ; bbWeight=0, gcrefRegs=4062 {r1 r5 r6 lr}, byrefRegs=0000
; GC ptr vars +{V121}
b SHORT G_M38239_IG14
;; size=6 bbWeight=0 PerfScore 0.00
-G_M38239_IG18: ; bbWeight=0, gcVars=000000000000400080000015 {V00 V01 V04 V34 V121}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M38239_IG18: ; bbWeight=0, gcVars=000000000000800100000015 {V00 V01 V04 V34 V121}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r1 lr]
; GC ptr vars +{V04}
ldr r0, [r5+0x18]
@@ -435,7 +436,7 @@ G_M38239_IG18: ; bbWeight=0, gcVars=000000000000400080000015 {V00 V01 V04
; gcrRegs -[r0 r6]
; gcr arg pop 0
;; size=96 bbWeight=0 PerfScore 0.00
-G_M38239_IG19: ; bbWeight=0, gcVars=000000000000400000000015 {V00 V01 V04 V121}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M38239_IG19: ; bbWeight=0, gcVars=000000000000800000000015 {V00 V01 V04 V121}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r5-r6]
; GC ptr vars +{V04 V121}
movw r0, 0xd1ff
@@ -478,19 +479,19 @@ G_M38239_IG19: ; bbWeight=0, gcVars=000000000000400000000015 {V00 V01 V04
; gcrRegs +[r1]
b SHORT G_M38239_IG11
;; size=76 bbWeight=0 PerfScore 0.00
-G_M38239_IG20: ; bbWeight=0, gcVars=000000000000400000000005 {V00 V01 V04}, gcrefRegs=0066 {r1 r2 r5 r6}, byrefRegs=0000 {}, gcvars, byref
+G_M38239_IG20: ; bbWeight=0, gcVars=000000000000800000000005 {V00 V01 V04}, gcrefRegs=0066 {r1 r2 r5 r6}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r7] +[r2]
; GC ptr vars -{V04 V34 V121}
movs r0, 0
str r0, [sp+0x34] // [V121 tmp115]
; GC ptr vars +{V121}
;; size=4 bbWeight=0 PerfScore 0.00
-G_M38239_IG21: ; bbWeight=0, gcVars=000000000000400000000015 {V00 V01 V04 V121}, gcrefRegs=0066 {r1 r2 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M38239_IG21: ; bbWeight=0, gcVars=000000000000800000000015 {V00 V01 V04 V121}, gcrefRegs=0066 {r1 r2 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V04}
str r0, [sp+0x50] // [V123 tmp117]
b SHORT G_M38239_IG10
;; size=4 bbWeight=0 PerfScore 0.00
-G_M38239_IG22: ; bbWeight=0, gcVars=000000000000400000000005 {V00 V01 V04}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M38239_IG22: ; bbWeight=0, gcVars=000000000000800000000005 {V00 V01 V04}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r1-r2 r5-r6] +[r4]
; GC ptr vars -{V04 V121}
movw r0, 0xd1ff
...
+4 (+0.47%) : 10621.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.31
-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%) : 63785.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%) : 45870.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%) : 66974.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%) : 26113.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%) : 44805.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%) : 63191.dasm - System.ArgumentOutOfRangeException:ThrowIfLessThanOrEqualfloat (Tier1)
coreclr_tests.run.linux.arm.checked.mch
-40 (-71.43%) : 413004.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%) : 409037.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%) : 211377.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%) : 325818.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%) : 325325.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%) : 325742.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.crossgen2.linux.arm.checked.mch
-24 (-13.33%) : 161763.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 -> r5 single-def
+; V00 arg0 [V00,T00] ( 6, 4 ) int -> r5 single-def
; V01 arg1 [V01,T01] ( 4, 2 ) ref -> r6 class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 3, 0 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
@@ -26,9 +26,9 @@ G_M20631_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=12 bbWeight=1 PerfScore 4.00
G_M20631_IG02: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
cmp r5, 452
- bgt SHORT G_M20631_IG07
+ bgt SHORT G_M20631_IG04
cmp r5, 250
- bne SHORT G_M20631_IG06
+ bne SHORT G_M20631_IG04
;; size=10 bbWeight=1 PerfScore 4.00
G_M20631_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r4,r5,r6,r7,r11,pc}
@@ -98,24 +98,10 @@ G_M20631_IG05: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byre
ldr r3, [r3]
blx r3 // CORINFO_HELP_THROW
; gcrRegs -[r0 r7]
- ;; size=56 bbWeight=0 PerfScore 0.00
-G_M20631_IG06: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r6]
- subw r3, r5, 451
- cmp r3, 1
- bls SHORT G_M20631_IG04
- b SHORT G_M20631_IG04
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M20631_IG07: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
- cmp r5, 552
- beq SHORT G_M20631_IG04
- movw r3, 0xd1ff
- cmp r5, r3
- beq SHORT G_M20631_IG04
- b SHORT G_M20631_IG04
- ;; size=16 bbWeight=0 PerfScore 0.00
+ bkpt
+ ;; size=58 bbWeight=0 PerfScore 0.00
-; Total bytes of code 180, prolog size 8, PerfScore 9.00, instruction count 67, allocated bytes for code 180 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
+; Total bytes of code 156, prolog size 8, PerfScore 9.00, instruction count 58, allocated bytes for code 156 (MethodHash=46f4af68) for method System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
; ============================================================
Unwind Info:
@@ -127,7 +113,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 90 (0x0005a) Actual length = 180 (0x0000b4)
+ Function Length : 78 (0x0004e) Actual length = 156 (0x00009c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-22 (-12.94%) : 63801.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)
@@ -9,7 +9,7 @@
; 0 inlinees with PGO data; 6 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 4 ) ref -> r5 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode>
+; V00 arg0 [V00,T00] ( 4, 3.50) 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,T03] ( 4, 2 ) ref -> r0 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundDagFieldEvaluation>
; V03 loc1 [V03,T05] ( 3, 1.50) ref -> r8 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
@@ -40,23 +40,10 @@ G_M26195_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
mov r7, r0
; gcrRegs +[r7]
cmp r7, 0
- bne SHORT G_M26195_IG04
+ beq SHORT G_M26195_IG05
;; size=22 bbWeight=1 PerfScore 9.00
-G_M26195_IG03: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0 r7]
- mov r0, r5
- ; gcrRegs +[r0]
- movw r4, LOW RELOC 0xD1FFAB1E
- movt r4, HIGH RELOC 0xD1FFAB1E
- add r4, pc
- ldr r3, [r4]
- blx r3 // CORINFO_HELP_READYTORUN_ISINSTANCEOF
- cmp r0, 0
- bne SHORT G_M26195_IG06
- b SHORT G_M26195_IG06
- ;; size=22 bbWeight=0.50 PerfScore 4.50
-G_M26195_IG04: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0] +[r7]
+G_M26195_IG03: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0]
ldr r0, [r7+0x0C]
; gcrRegs +[r0]
movw r4, LOW RELOC 0xD1FFAB1E
@@ -65,12 +52,12 @@ G_M26195_IG04: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
ldr r3, [r4]
blx r3 // CORINFO_HELP_READYTORUN_ISINSTANCEOF
cmp r0, 0
- beq SHORT G_M26195_IG06
+ beq SHORT G_M26195_IG05
ldr r3, [r0+0x0C]
; gcrRegs +[r3]
ldr r3, [r3+0x10]
cmp r3, 0
- bne SHORT G_M26195_IG06
+ bne SHORT G_M26195_IG05
ldr r8, [r0+0x10]
; gcrRegs +[r8]
mov r0, r8
@@ -82,7 +69,7 @@ G_M26195_IG04: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
; gcrRegs -[r3]
blx r3 // <unknown method>
cmp r0, 0
- beq SHORT G_M26195_IG06
+ beq SHORT G_M26195_IG05
mov r0, r8
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
@@ -101,10 +88,10 @@ G_M26195_IG04: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
blx r3 // <unknown method>
; gcrRegs -[r1 r6-r7]
;; size=88 bbWeight=0.50 PerfScore 17.50
-G_M26195_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M26195_IG04: ; 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_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref
+G_M26195_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0] +[r5-r6]
mov r1, r6
; gcrRegs +[r1]
@@ -117,11 +104,11 @@ G_M26195_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6
blx r3 // <unknown method>
; gcrRegs -[r1 r5-r6]
;; size=18 bbWeight=0.50 PerfScore 3.50
-G_M26195_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M26195_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,r7,r8,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 170, prolog size 8, PerfScore 39.50, instruction count 66, allocated bytes for code 170 (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 148, prolog size 8, PerfScore 35.00, instruction count 57, allocated bytes for code 148 (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:
@@ -133,7 +120,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 85 (0x00055) Actual length = 170 (0x0000aa)
+ Function Length : 74 (0x0004a) Actual length = 148 (0x000094)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-16 (-9.52%) : 161689.dasm - System.Net.Mail.DataCommand:CheckResponse(int,System.String) (FullOpts)
@@ -8,7 +8,7 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 7, 3 ) int -> r5 single-def
+; V00 arg0 [V00,T00] ( 5, 3 ) int -> r5 single-def
; V01 arg1 [V01,T01] ( 4, 2 ) ref -> r6 class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 3, 0 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
@@ -26,7 +26,7 @@ G_M40495_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=12 bbWeight=1 PerfScore 4.00
G_M40495_IG02: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
cmp r5, 354
- bne SHORT G_M40495_IG06
+ bne SHORT G_M40495_IG04
;; size=6 bbWeight=1 PerfScore 2.00
G_M40495_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r4,r5,r6,r7,r11,pc}
@@ -96,19 +96,10 @@ G_M40495_IG05: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byre
ldr r3, [r3]
blx r3 // CORINFO_HELP_THROW
; gcrRegs -[r0 r7]
- ;; size=56 bbWeight=0 PerfScore 0.00
-G_M40495_IG06: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r6]
- movw r3, 0xd1ff
- cmp r5, r3
- beq SHORT G_M40495_IG04
- movw r3, 0xd1ff
- cmp r5, r3
- beq SHORT G_M40495_IG04
- b SHORT G_M40495_IG04
- ;; size=18 bbWeight=0 PerfScore 0.00
+ bkpt
+ ;; size=58 bbWeight=0 PerfScore 0.00
-; Total bytes of code 168, prolog size 8, PerfScore 7.00, instruction count 62, allocated bytes for code 168 (MethodHash=165c61d0) for method System.Net.Mail.DataCommand:CheckResponse(int,System.String) (FullOpts)
+; Total bytes of code 152, prolog size 8, PerfScore 7.00, instruction count 56, allocated bytes for code 152 (MethodHash=165c61d0) for method System.Net.Mail.DataCommand:CheckResponse(int,System.String) (FullOpts)
; ============================================================
Unwind Info:
@@ -120,7 +111,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 84 (0x00054) Actual length = 168 (0x0000a8)
+ Function Length : 76 (0x0004c) Actual length = 152 (0x000098)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-6 (-0.19%) : 11920.dasm - System.IO.Strategies.BufferedFileStreamStrategy+d__37:MoveNext():this (FullOpts)
@@ -64,12 +64,12 @@
; V52 tmp33 [V52,T36] ( 3, 6 ) int -> r7 "Inlining Arg"
; V53 tmp34 [V53,T37] ( 3, 6 ) int -> r6 "Inlining Arg"
; V54 tmp35 [V54,T06] ( 5, 10 ) ref -> r0 class-hnd single-def "Inlining Arg" <ubyte[]>
-; V55 tmp36 [V55,T16] ( 5, 8 ) int -> r3 "Inlining Arg"
+; V55 tmp36 [V55,T19] ( 4, 8 ) int -> r3 "Inlining Arg"
;* V56 tmp37 [V56 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V57 tmp38 [V57 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
; V58 tmp39 [V58,T29] ( 6, 6 ) byref -> [sp+0x18] "Inline stloc first use temp"
; V59 tmp40 [V59,T14] ( 8, 8 ) int -> [sp+0x38] "Inline stloc first use temp"
-; V60 tmp41 [V60,T17] ( 4, 8 ) byref -> r9 single-def "Inlining Arg"
+; V60 tmp41 [V60,T16] ( 4, 8 ) byref -> r9 single-def "Inlining Arg"
; V61 tmp42 [V61,T12] ( 8, 8 ) ref -> [sp+0x14] class-hnd spill-single-def "Inline stloc first use temp" <System.Object>
;* V62 tmp43 [V62 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V63 tmp44 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
@@ -89,7 +89,7 @@
;* V77 tmp58 [V77 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V78 tmp59 [V78 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V79 tmp60 [V79 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V80 tmp61 [V80,T18] ( 4, 8 ) byref -> r0 single-def "Inlining Arg"
+; V80 tmp61 [V80,T17] ( 4, 8 ) byref -> r0 single-def "Inlining Arg"
;* V81 tmp62 [V81 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
; V82 tmp63 [V82,T07] ( 5, 10 ) ref -> r7 class-hnd single-def "Inlining Arg" <System.Object>
; V83 tmp64 [V83,T75] ( 2, 2 ) int -> r1
@@ -184,7 +184,7 @@
;* V172 tmp153 [V172 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
; V173 tmp154 [V173,T30] ( 6, 6 ) byref -> [sp+0x10] "Inline stloc first use temp"
; V174 tmp155 [V174,T15] ( 8, 8 ) int -> [sp+0x2C] "Inline stloc first use temp"
-; V175 tmp156 [V175,T19] ( 4, 8 ) byref -> r9 single-def "Inlining Arg"
+; V175 tmp156 [V175,T18] ( 4, 8 ) byref -> r9 single-def "Inlining Arg"
; V176 tmp157 [V176,T13] ( 8, 8 ) ref -> [sp+0x0C] class-hnd spill-single-def "Inline stloc first use temp" <System.Object>
;* V177 tmp158 [V177 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V178 tmp159 [V178 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
@@ -453,7 +453,7 @@ G_M33324_IG08: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00
blx r3 // <unknown method>
; gcrRegs -[r1]
; gcr arg pop 0
- b G_M33324_IG110
+ b G_M33324_IG109
;; size=74 bbWeight=1 PerfScore 27.00
G_M33324_IG09: ; bbWeight=1, gcVars=00000000000000000000000000000005 {V00 V02}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, nogc
; gcrRegs +[r5]
@@ -526,7 +526,7 @@ G_M33324_IG15: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by
ldr r0, [r5+0x10]
; gcrRegs +[r0]
cmp r0, 0
- beq G_M33324_IG93
+ beq G_M33324_IG92
ldr r2, [r0+0x04]
cmp r2, r3
blo G_M33324_IG92
@@ -697,7 +697,7 @@ G_M33324_IG21: ; bbWeight=1, gcVars=00000000000000000000000000000005 {V00
; GC ptr vars -{V58}
ldr r2, [sp+0x38] // [V59 tmp40]
cmp r8, r2
- bhi G_M33324_IG94
+ bhi G_M33324_IG93
mov r2, r8
mov r0, r3
; byrRegs +[r0]
@@ -722,7 +722,7 @@ G_M33324_IG22: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by
cmp r6, r0
bne SHORT G_M33324_IG23
str r6, [sp+0x80] // [V03 loc2]
- b G_M33324_IG98
+ b G_M33324_IG97
;; size=12 bbWeight=1 PerfScore 5.00
G_M33324_IG23: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
cmp r6, 0
@@ -731,7 +731,7 @@ G_M33324_IG23: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by
; byrRegs +[r0]
ldr r3, [r0+0x08]
cmp r6, r3
- bhi G_M33324_IG95
+ bhi G_M33324_IG94
ldr r7, [r0]
; gcrRegs +[r7]
ldr r0, [r0+0x04]
@@ -991,7 +991,7 @@ G_M33324_IG33: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
blx r3 // <unknown method>
; gcrRegs -[r1]
; gcr arg pop 0
- b SHORT G_M33324_IG100
+ b SHORT G_M33324_IG99
;; size=78 bbWeight=1 PerfScore 28.00
G_M33324_IG34: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r6]
@@ -1298,7 +1298,7 @@ G_M33324_IG51: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
blx r3 // <unknown method>
; gcrRegs -[r1]
; gcr arg pop 0
- b SHORT G_M33324_IG102
+ b SHORT G_M33324_IG101
;; size=86 bbWeight=1 PerfScore 30.00
G_M33324_IG52: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, nogc
ldr r4, [sp+0x20] // [V00 this]
@@ -1441,7 +1441,7 @@ G_M33324_IG61: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
ldr r0, [r4+0x0C]
adds r0, r7, r0
str r0, [sp+0x80] // [V03 loc2]
- b SHORT G_M33324_IG104
+ b SHORT G_M33324_IG103
;; size=10 bbWeight=1 PerfScore 5.00
G_M33324_IG62: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
ldr r0, [r5+0x10]
@@ -1637,7 +1637,7 @@ G_M33324_IG71: ; 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=86 bbWeight=1 PerfScore 30.00
G_M33324_IG72: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, nogc
ldr r4, [sp+0x20] // [V00 this]
@@ -1967,7 +1967,7 @@ G_M33324_IG91: ; bbWeight=1, gcVars=00000000000000000000000000000005 {V00
; GC ptr vars -{V173}
ldr r2, [sp+0x2C] // [V174 tmp155]
cmp r8, r2
- bhi SHORT G_M33324_IG94
+ bhi SHORT G_M33324_IG93
mov r2, r8
mov r0, r3
; byrRegs +[r0]
@@ -1981,7 +1981,7 @@ G_M33324_IG91: ; bbWeight=1, gcVars=00000000000000000000000000000005 {V00
blx r3 // <unknown method>
; byrRegs -[r0-r1 r6]
; gcr arg pop 0
- b SHORT G_M33324_IG96
+ b SHORT G_M33324_IG95
;; size=28 bbWeight=1 PerfScore 12.00
G_M33324_IG92: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
movw r4, LOW RELOC 0xD1FFAB1E
@@ -1992,14 +1992,7 @@ G_M33324_IG92: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
; gcr arg pop 0
bkpt
;; size=16 bbWeight=0 PerfScore 0.00
-G_M33324_IG93: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
- ; byrRegs +[r4]
- cmp r3, 0
- bne SHORT G_M33324_IG92
- b SHORT G_M33324_IG92
- ;; size=6 bbWeight=0 PerfScore 0.00
-G_M33324_IG94: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
- ; byrRegs -[r4]
+G_M33324_IG93: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
@@ -2008,7 +2001,7 @@ G_M33324_IG94: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
; gcr arg pop 0
bkpt
;; size=16 bbWeight=0 PerfScore 0.00
-G_M33324_IG95: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M33324_IG94: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
@@ -2018,7 +2011,7 @@ G_M33324_IG95: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
; gcr arg pop 0
bkpt
;; size=18 bbWeight=0 PerfScore 0.00
-G_M33324_IG96: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M33324_IG95: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
ldr r0, [r5+0x1C]
adds r0, r0, r7
str r0, [r5+0x1C]
@@ -2028,11 +2021,11 @@ G_M33324_IG96: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
adds r0, r0, r7
str r0, [sp+0x80] // [V03 loc2]
;; size=14 bbWeight=1 PerfScore 7.00
-G_M33324_IG97: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M33324_IG96: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r4]
ldr r0, [sp+0x84] // [V01 loc0]
cmp r0, 0
- bge SHORT G_M33324_IG108
+ bge SHORT G_M33324_IG107
ldr r0, [r5+0x04]
; gcrRegs +[r0]
ldrsb r1, [r0]
@@ -2045,43 +2038,43 @@ G_M33324_IG97: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
blx r3 // <unknown method>
; gcrRegs -[r0 r5]
; gcr arg pop 0
- b SHORT G_M33324_IG108
+ b SHORT G_M33324_IG107
;; size=30 bbWeight=1 PerfScore 12.00
-G_M33324_IG98: ; bbWeight=1, gcVars=00000000000000000000000000000005 {V00 V02}, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, gcvars, byref
+G_M33324_IG97: ; bbWeight=1, gcVars=00000000000000000000000000000005 {V00 V02}, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, gcvars, byref
; gcrRegs +[r5]
; byrRegs +[r4]
; GC ptr vars +{V02}
- bl G_M33324_IG111
+ bl G_M33324_IG110
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG99: ; bbWeight=1, nogc, isz, extend
- b SHORT G_M33324_IG108
+G_M33324_IG98: ; bbWeight=1, nogc, isz, extend
+ b SHORT G_M33324_IG107
;; size=2 bbWeight=1 PerfScore 1.00
-G_M33324_IG100: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M33324_IG99: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
; byrRegs -[r4]
- bl G_M33324_IG111
+ bl G_M33324_IG110
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG101: ; bbWeight=1, nogc, isz, extend
- b SHORT G_M33324_IG110
+G_M33324_IG100: ; bbWeight=1, nogc, isz, extend
+ b SHORT G_M33324_IG109
;; size=2 bbWeight=1 PerfScore 1.00
-G_M33324_IG102: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
- bl G_M33324_IG111
+G_M33324_IG101: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+ bl G_M33324_IG110
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG103: ; bbWeight=1, nogc, isz, extend
- b SHORT G_M33324_IG110
+G_M33324_IG102: ; bbWeight=1, nogc, isz, extend
+ b SHORT G_M33324_IG109
;; size=2 bbWeight=1 PerfScore 1.00
-G_M33324_IG104: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
- bl G_M33324_IG111
+G_M33324_IG103: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+ bl G_M33324_IG110
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG105: ; bbWeight=1, nogc, isz, extend
- b SHORT G_M33324_IG108
+G_M33324_IG104: ; bbWeight=1, nogc, isz, extend
+ b SHORT G_M33324_IG107
;; size=2 bbWeight=1 PerfScore 1.00
-G_M33324_IG106: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
- bl G_M33324_IG111
+G_M33324_IG105: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+ bl G_M33324_IG110
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33324_IG107: ; bbWeight=1, nogc, isz, extend
- b SHORT G_M33324_IG110
+G_M33324_IG106: ; bbWeight=1, nogc, isz, extend
+ b SHORT G_M33324_IG109
;; size=2 bbWeight=1 PerfScore 1.00
-G_M33324_IG108: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M33324_IG107: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r5]
; GC ptr vars -{V02}
mvn r3, 1
@@ -2093,7 +2086,7 @@ G_M33324_IG108: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V0
ldr r3, [r5]
; gcrRegs +[r3]
cmp r3, 0
...
-4 (-0.11%) : 99204.dasm - Microsoft.CodeAnalysis.VisualBasic.TypeArgumentInference+InferenceGraph:InferTypeArgumentsFromLambdaArgument(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol):ubyte:this (FullOpts)
@@ -777,10 +777,8 @@ G_M41225_IG23: ; bbWeight=0.02, gcVars=000000000000000028006040 {V12 V13
ldr r3, [r4]
blx r3 // <unknown method>
; gcrRegs -[r0-r1]
- cmp r0, 0
- beq SHORT G_M41225_IG25
b SHORT G_M41225_IG25
- ;; size=42 bbWeight=0.02 PerfScore 0.34
+ ;; size=38 bbWeight=0.02 PerfScore 0.30
G_M41225_IG24: ; bbWeight=0.02, gcVars=000000000000000028006050 {V12 V13 V20 V21 V84 V85}, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V04 V06 V20 V21}
ldr r7, [r6+0x04]
@@ -2148,7 +2146,7 @@ G_M41225_IG65: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byre
bkpt
;; size=48 bbWeight=0 PerfScore 0.00
-; Total bytes of code 3580, prolog size 26, PerfScore 783.53, instruction count 1376, allocated bytes for code 3580 (MethodHash=73d05ef6) for method Microsoft.CodeAnalysis.VisualBasic.TypeArgumentInference+InferenceGraph:InferTypeArgumentsFromLambdaArgument(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol):ubyte:this (FullOpts)
+; Total bytes of code 3576, prolog size 26, PerfScore 783.49, instruction count 1374, allocated bytes for code 3576 (MethodHash=73d05ef6) for method Microsoft.CodeAnalysis.VisualBasic.TypeArgumentInference+InferenceGraph:InferTypeArgumentsFromLambdaArgument(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -2160,7 +2158,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 1790 (0x006fe) Actual length = 3580 (0x000dfc)
+ Function Length : 1788 (0x006fc) Actual length = 3576 (0x000df8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+0 (0.00%) : 34564.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldNativeIntegerOverflowingUnaryOperator(int,Microsoft.CodeAnalysis.ConstantValue):System.Object (FullOpts)
@@ -24,18 +24,9 @@ G_M35943_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M35943_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, 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 -[r5]
- movs r0, 0
- ; gcrRegs +[r0]
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend
- pop {r3,r4,r5,r6,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35943_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0] +[r5]
+G_M35943_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
@@ -59,11 +50,19 @@ G_M35943_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5},
mov r0, r6
; gcrRegs +[r0]
;; size=44 bbWeight=0.50 PerfScore 9.00
+G_M35943_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r3,r4,r5,r6,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 r6]
+ movs r0, 0
+ ; gcrRegs +[r0]
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
G_M35943_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,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 r6]
+ ; gcrRegs -[r0]
movw r3, LOW RELOC 0xD1FFAB1E
movt r3, HIGH RELOC 0xD1FFAB1E
add r3, pc
libraries.pmi.linux.arm.checked.mch
-10 (-41.67%) : 223493.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%) : 181664.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%) : 269604.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%) : 192924.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%) : 184394.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%) : 135472.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%) : 322301.dasm - System.ArgumentOutOfRangeException:ThrowIfLessThanint (Tier1)
@@ -3,49 +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 117
; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 3 ) int -> r0 ld-addr-op single-def
-; V01 arg1 [V01,T01] ( 5, 3 ) 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_M40926_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_M40926_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r2]
cmp r0, r1
- blt SHORT G_M40926_IG04
+ bge SHORT G_M40926_IG04
;; size=4 bbWeight=1 PerfScore 2.00
-G_M40926_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r2]
- cmp r0, r1
- ble SHORT G_M40926_IG05
- b SHORT G_M40926_IG05
- ;; size=6 bbWeight=0 PerfScore 0.00
-G_M40926_IG04: ; bbWeight=0, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r2]
+G_M40926_IG03: ; bbWeight=0, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
; gcrRegs -[r2]
+ ; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-G_M40926_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r11,pc}
- ;; size=4 bbWeight=0 PerfScore 0.00
+G_M40926_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r3,pc}
+ ;; size=2 bbWeight=0 PerfScore 0.00
-; Total bytes of code 34, prolog size 6, PerfScore 4.00, instruction count 13, allocated bytes for code 34 (MethodHash=63ec6021) for method System.ArgumentOutOfRangeException:ThrowIfLessThan[int](int,int,System.String) (Tier1)
+; Total bytes of code 22, prolog size 2, PerfScore 3.00, instruction count 9, allocated bytes for code 22 (MethodHash=63ec6021) for method System.ArgumentOutOfRangeException:ThrowIfLessThan[int](int,int,System.String) (Tier1)
; ============================================================
Unwind Info:
@@ -57,11 +50,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 34 (0x000022)
+ Function Length : 11 (0x0000b) Actual length = 22 (0x000016)
--- 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
-12 (-35.29%) : 264664.dasm - System.ArgumentOutOfRangeException:ThrowIfGreaterThanOrEqualint (Tier1)
@@ -3,51 +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 299
; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 3.88) int -> r0 ld-addr-op single-def
-; V01 arg1 [V01,T01] ( 5, 3.88) 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_IG05
+ bge SHORT G_M34388_IG04
;; size=4 bbWeight=1 PerfScore 2.00
-G_M34388_IG03: ; bbWeight=0.88, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, isz
- cmp r0, r1
- bgt SHORT G_M34388_IG06
- ;; size=4 bbWeight=0.88 PerfScore 1.76
-G_M34388_IG04: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M34388_IG06
+G_M34388_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M34388_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[r2]
- pop {r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M34388_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[r2]
+G_M34388_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, gcvars, byref
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 7.76, 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:
@@ -59,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)
@@ -67,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
-12 (-35.29%) : 556220.dasm - System.ArgumentOutOfRangeException:ThrowIfLessThanint (Tier1)
@@ -3,49 +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 4
; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 3 ) int -> r0 ld-addr-op single-def
-; V01 arg1 [V01,T01] ( 5, 3 ) 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_M40926_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_M40926_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r2]
cmp r0, r1
- blt SHORT G_M40926_IG04
+ bge SHORT G_M40926_IG04
;; size=4 bbWeight=1 PerfScore 2.00
-G_M40926_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r2]
- cmp r0, r1
- ble SHORT G_M40926_IG05
- b SHORT G_M40926_IG05
- ;; size=6 bbWeight=0 PerfScore 0.00
-G_M40926_IG04: ; bbWeight=0, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r2]
+G_M40926_IG03: ; bbWeight=0, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
; gcrRegs -[r2]
+ ; gcr arg pop 0
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-G_M40926_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r11,pc}
- ;; size=4 bbWeight=0 PerfScore 0.00
+G_M40926_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r3,pc}
+ ;; size=2 bbWeight=0 PerfScore 0.00
-; Total bytes of code 34, prolog size 6, PerfScore 4.00, instruction count 13, allocated bytes for code 34 (MethodHash=63ec6021) for method System.ArgumentOutOfRangeException:ThrowIfLessThan[int](int,int,System.String) (Tier1)
+; Total bytes of code 22, prolog size 2, PerfScore 3.00, instruction count 9, allocated bytes for code 22 (MethodHash=63ec6021) for method System.ArgumentOutOfRangeException:ThrowIfLessThan[int](int,int,System.String) (Tier1)
; ============================================================
Unwind Info:
@@ -57,11 +50,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 34 (0x000022)
+ Function Length : 11 (0x0000b) Actual length = 22 (0x000016)
--- 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
+10 (+1.37%) : 567282.dasm - System.IO.BinaryReader:InternalRead(System.Span1[ubyte]):System.ReadOnlySpan1[ubyte]:this (Tier1)
@@ -13,11 +13,11 @@
; V01 RetBuf [V01,T10] ( 6, 4 ) byref -> r5 single-def
; V02 arg1 [V02,T12] ( 4, 4 ) struct ( 8) [sp+0x30] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T31] ( 8, 0 ) ref -> r6 class-hnd single-def "updating class info" <System.IO.MemoryStream>
+; V04 tmp1 [V04,T31] ( 8, 0 ) ref -> r9 class-hnd single-def "updating class info" <System.IO.MemoryStream>
;* V05 tmp2 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V06 tmp3 [V06,T32] ( 6, 0 ) int -> r8 "Inline stloc first use temp"
;* V07 tmp4 [V07 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V08 tmp5 [V08,T35] ( 3, 0 ) int -> r9 "Inline stloc first use temp"
+; V08 tmp5 [V08,T35] ( 3, 0 ) int -> r6 "Inline stloc first use temp"
;* V09 tmp6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ubyte]>
; V10 tmp7 [V10,T33] ( 5, 0 ) ref -> r3 class-hnd single-def "Inlining Arg" <ubyte[]>
; V11 tmp8 [V11,T02] ( 18, 17.02) ref -> r8 class-hnd single-def "Inlining Arg" <System.IO.Stream>
@@ -41,7 +41,7 @@
; V29 tmp26 [V29,T14] ( 6, 5.48) int -> r4 "Inlining Arg"
;* V30 tmp27 [V30 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V31 tmp28 [V31,T01] ( 9, 20.08) ref -> r12 class-hnd "Inlining Arg" <ubyte[]>
-; V32 tmp29 [V32,T00] ( 9, 26.00) int -> lr "Inlining Arg"
+; V32 tmp29 [V32,T00] ( 8, 26.00) int -> lr "Inlining Arg"
;* V33 tmp30 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V34 tmp31 [V34 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V35 tmp32 [V35 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -108,10 +108,10 @@ G_M7485_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byr
G_M7485_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0060 {r5 r6}, byref, isz
ldrb r0, [r4+0x19]
cmp r0, 0
- bne G_M7485_IG33
+ bne G_M7485_IG35
ldrb r0, [r4+0x1B]
cmp r0, 0
- bne G_M7485_IG40
+ bne G_M7485_IG42
ldr r8, [r4+0x04]
; gcrRegs +[r8]
ldrsb r0, [r8]
@@ -132,11 +132,11 @@ G_M7485_IG04: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0060 {r5 r6
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- bne SHORT G_M7485_IG17
+ bne SHORT G_M7485_IG20
;; size=16 bbWeight=0.50 PerfScore 2.50
G_M7485_IG05: ; bbWeight=0.99, gcrefRegs=0100 {r8}, byrefRegs=0060 {r5 r6}, byref, isz
cmp r10, r9
- bhi G_M7485_IG32
+ bhi G_M7485_IG33
add r4, r6, r10
; byrRegs +[r4]
sub r3, r9, r10
@@ -164,36 +164,36 @@ G_M7485_IG07: ; bbWeight=0.99, gcrefRegs=0100 {r8}, byrefRegs=0070 {r4 r5
; gcrRegs +[r3]
ldrb r1, [r3+0x1F]
cmp r1, 0
- beq SHORT G_M7485_IG22
+ beq G_M7485_IG28
ldr r1, [r8+0x14]
ldr lr, [r8+0x10]
sub r4, r1, lr
cmp r4, r2
bgt SHORT G_M7485_IG16
- ;; size=42 bbWeight=0.99 PerfScore 15.84
+ ;; size=44 bbWeight=0.99 PerfScore 15.84
G_M7485_IG08: ; bbWeight=0.99, gcrefRegs=0100 {r8}, byrefRegs=0061 {r0 r5 r6}, byref, isz
; gcrRegs -[r3]
cmp r4, 0
- ble G_M7485_IG41
+ ble G_M7485_IG43
ldr r12, [r8+0x08]
; gcrRegs +[r12]
cmp r12, 0
- beq G_M7485_IG42
+ beq G_M7485_IG33
;; size=18 bbWeight=0.99 PerfScore 4.95
G_M7485_IG09: ; bbWeight=3.96, gcrefRegs=1100 {r8 r12}, byrefRegs=0061 {r0 r5 r6}, byref, isz
ldr r1, [r12+0x04]
cmp r1, lr
- blo G_M7485_IG32
+ blo G_M7485_IG33
sub r1, r1, lr
cmp r1, r4
- blo G_M7485_IG32
+ blo G_M7485_IG33
add r1, r12, 8
; byrRegs +[r1]
add r1, lr
mov r3, r4
cmp r3, r2
- bhi SHORT G_M7485_IG26
- ;; size=32 bbWeight=3.96 PerfScore 43.56
+ bhi G_M7485_IG34
+ ;; size=34 bbWeight=3.96 PerfScore 43.56
G_M7485_IG10: ; bbWeight=0.99, gcrefRegs=0100 {r8}, byrefRegs=0063 {r0 r1 r5 r6}, byref
; gcrRegs -[r12]
mov r2, r3
@@ -208,7 +208,7 @@ G_M7485_IG10: ; bbWeight=0.99, gcrefRegs=0100 {r8}, byrefRegs=0063 {r0 r1
;; size=24 bbWeight=0.99 PerfScore 7.92
G_M7485_IG11: ; bbWeight=0.99, gcrefRegs=0100 {r8}, byrefRegs=0060 {r5 r6}, byref, isz
cmp r4, 0
- beq SHORT G_M7485_IG29
+ beq SHORT G_M7485_IG25
add r10, r4
cmp r10, r7
blt SHORT G_M7485_IG05
@@ -243,24 +243,49 @@ G_M7485_IG16: ; bbWeight=0.26, gcVars=0000000000000000 {}, gcrefRegs=0100
mov r4, r2
b SHORT G_M7485_IG08
;; size=4 bbWeight=0.26 PerfScore 0.51
-G_M7485_IG17: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0060 {r5 r6}, byref, isz
- ; byrRegs -[r0]
+G_M7485_IG17: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0061 {r0 r5 r6}, byref, isz
+ ldr r12, [r8+0x08]
+ ; gcrRegs +[r12]
+ cmp r12, 0
+ beq SHORT G_M7485_IG33
+ ;; size=10 bbWeight=0.01 PerfScore 0.03
+G_M7485_IG18: ; bbWeight=0.04, gcrefRegs=1100 {r8 r12}, byrefRegs=0061 {r0 r5 r6}, byref, isz
+ ldr r1, [r12+0x04]
+ cmp r1, lr
+ blo SHORT G_M7485_IG33
+ ldr r1, [r12+0x04]
+ sub r1, r1, lr
+ cmp r1, r4
+ blo SHORT G_M7485_IG33
+ add r1, r12, 8
+ ; byrRegs +[r1]
+ add r1, lr
+ mov r3, r4
+ cmp r3, r2
+ bhi SHORT G_M7485_IG34
+ ;; size=32 bbWeight=0.04 PerfScore 0.48
+G_M7485_IG19: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0063 {r0 r1 r5 r6}, byref, isz
+ ; gcrRegs -[r12]
+ b SHORT G_M7485_IG32
+ ;; size=2 bbWeight=0.01 PerfScore 0.01
+G_M7485_IG20: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0060 {r5 r6}, byref, isz
+ ; byrRegs -[r0-r1]
cmp r10, r7
- bhi SHORT G_M7485_IG32
+ bhi SHORT G_M7485_IG33
add r4, r6, r10
; byrRegs +[r4]
sub r0, r7, r10
mov r2, r0
str r2, [sp+0x04] // [V22 tmp19]
cmp r2, 0
- bge SHORT G_M7485_IG18
+ bge SHORT G_M7485_IG21
movs r0, 0
- b SHORT G_M7485_IG19
+ b SHORT G_M7485_IG22
;; size=24 bbWeight=0.01 PerfScore 0.10
-G_M7485_IG18: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0070 {r4 r5 r6}, byref
+G_M7485_IG21: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0070 {r4 r5 r6}, byref
movs r0, 1
;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M7485_IG19: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0070 {r4 r5 r6}, byref, isz
+G_M7485_IG22: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0070 {r4 r5 r6}, byref, isz
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -270,13 +295,13 @@ G_M7485_IG19: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0070 {r4 r5
ldr r4, [sp+0x04] // [V22 tmp19]
; byrRegs -[r4]
mov r2, r4
- ldr r1, [r8]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r1, r3
- beq SHORT G_M7485_IG21
+ ldr r3, [r8]
+ movw r1, 0xd1ff
+ movt r1, 0xd1ff
+ cmp r3, r1
+ beq SHORT G_M7485_IG27
;; size=34 bbWeight=0.01 PerfScore 0.12
-G_M7485_IG20: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0061 {r0 r5 r6}, byref, isz
+G_M7485_IG23: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0061 {r0 r5 r6}, byref
mov r1, r0
; byrRegs +[r1]
mov r0, r8
@@ -289,85 +314,12 @@ G_M7485_IG20: ; bbWeight=0, gcrefRegs=0100 {r8}, byrefRegs=0061 {r0 r5 r6
; gcrRegs -[r0]
; byrRegs -[r1]
mov r4, r0
- b SHORT G_M7485_IG28
- ;; size=18 bbWeight=0 PerfScore 0.00
-G_M7485_IG21: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0061 {r0 r5 r6}, byref, isz
- ; byrRegs +[r0]
- mov r3, r8
- ; gcrRegs +[r3]
- ldrb r1, [r3+0x1F]
- cmp r1, 0
- bne SHORT G_M7485_IG23
- ;; size=8 bbWeight=0.01 PerfScore 0.04
-G_M7485_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r3 r8]
- ; byrRegs -[r0 r5-r6]
- movs r0, 0
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowObjectDisposedException_StreamClosed(System.String)
- bkpt
;; size=16 bbWeight=0 PerfScore 0.00
-G_M7485_IG23: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0061 {r0 r5 r6}, byref, isz
- ; gcrRegs +[r8]
- ; byrRegs +[r0 r5-r6]
- ldr r1, [r8+0x14]
- ldr lr, [r8+0x10]
- sub r4, r1, lr
- cmp r4, r2
- bgt SHORT G_M7485_IG31
- ;; size=16 bbWeight=0.01 PerfScore 0.05
-G_M7485_IG24: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0061 {r0 r5 r6}, byref, isz
+G_M7485_IG24: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0060 {r5 r6}, byref, isz
cmp r4, 0
- ble G_M7485_IG43
- ldr r12, [r8+0x08]
- ; gcrRegs +[r12]
- cmp r12, 0
- beq SHORT G_M7485_IG32
- ;; size=16 bbWeight=0.01 PerfScore 0.05
-G_M7485_IG25: ; bbWeight=0.04, gcrefRegs=1100 {r8 r12}, byrefRegs=0061 {r0 r5 r6}, byref, isz
- ldr r1, [r12+0x04]
- cmp r1, lr
- blo SHORT G_M7485_IG32
- ldr r1, [r12+0x04]
- sub r1, r1, lr
- cmp r1, r4
- blo SHORT G_M7485_IG32
- add r1, r12, 8
- ; byrRegs +[r1]
- add r1, lr
- mov r3, r4
- cmp r3, r2
- bls SHORT G_M7485_IG27
- ;; size=32 bbWeight=0.04 PerfScore 0.48
-G_M7485_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r8 r12]
- ; byrRegs -[r0-r1 r5-r6]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowArgumentException_DestinationTooShort()
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M7485_IG27: ; bbWeight=0.01, gcrefRegs=0100 {r8}, byrefRegs=0063 {r0 r1 r5 r6}, byref
- ; gcrRegs +[r8]
- ; byrRegs +[r0-r1 r5-r6]
...
+18 (+1.55%) : 507937.dasm - System.Xml.XmlBinaryReader:ReadArray(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,int[],int,int):int:this (Tier1)
@@ -51,9 +51,9 @@
; V39 tmp33 [V39,T44] ( 4, 0.62) 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, 14 ) ref -> r9 class-hnd exact single-def "impAppendStmt" <System.Xml.XmlBufferReader>
+; V42 tmp36 [V42,T05] ( 14, 14 ) 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,T20] ( 7, 3.18) int -> r10 "Inline return value spill temp"
+; V44 tmp38 [V44,T21] ( 7, 3.18) int -> r10 "Inline return value spill temp"
; V45 tmp39 [V45,T27] ( 3, 2.55) 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,T21] ( 5, 3.18) ref -> r0 class-hnd single-def "Inline return value spill temp" <ubyte[]>
-; V56 tmp50 [V56,T16] ( 4, 5.09) byref -> r0 single-def "Inlining Arg"
+; V55 tmp49 [V55,T20] ( 7, 3.18) ref -> r3 class-hnd single-def "Inline return value spill temp" <ubyte[]>
+; V56 tmp50 [V56,T17] ( 4, 5.09) byref -> r0 single-def "Inlining Arg"
;* V57 tmp51 [V57 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V58 tmp52 [V58,T17] ( 4, 5.09) int -> r1 "Inlining Arg"
+; V58 tmp52 [V58,T16] ( 5, 5.09) 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]>
@@ -152,7 +152,7 @@ G_M43301_IG02: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000
; gcrRegs -[r0]
cmp r0, 1
ldr r9, [sp+0x44] // [V05 arg5]
- bne G_M43301_IG36
+ bne G_M43301_IG37
;; 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]
@@ -162,9 +162,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_IG56
+ beq G_M43301_IG57
cmp r0, 1
- bne G_M43301_IG57
+ bne G_M43301_IG58
ldr r3, [r10+0x04]
; gcrRegs +[r3]
str r3, [sp+0x0C] // [V15 tmp9]
@@ -239,7 +239,7 @@ G_M43301_IG08: ; bbWeight=7.62, gcVars=0000000000000000 {}, gcrefRegs=40F
ldr r2, [sp+0x14] // [V16 tmp10]
add r12, r2, r0
cmp r12, r1
- bhs G_M43301_IG55
+ bhs G_M43301_IG56
ldrb r12, [r3+r12]
add r9, lr, 8
; byrRegs +[r9]
@@ -250,7 +250,7 @@ G_M43301_IG08: ; bbWeight=7.62, 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.62 PerfScore 99.06
G_M43301_IG09: ; bbWeight=0.96, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref
; gcrRegs -[lr]
@@ -259,14 +259,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.92
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_IG39
+ bne G_M43301_IG40
;; size=10 bbWeight=0.96 PerfScore 3.85
G_M43301_IG12: ; bbWeight=0.65, gcrefRegs=00F1 {r0 r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
ldr r10, [r0+0x10]
@@ -278,7 +278,7 @@ G_M43301_IG12: ; bbWeight=0.65, gcrefRegs=00F1 {r0 r4 r5 r6 r7}, byrefReg
ldr r1, [r10+0x10]
; gcrRegs +[r1]
cmp r0, r1
- bne G_M43301_IG37
+ bne G_M43301_IG38
;; size=20 bbWeight=0.65 PerfScore 3.92
G_M43301_IG13: ; bbWeight=0.46, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref
; gcrRegs -[r0-r1 r10]
@@ -286,18 +286,18 @@ G_M43301_IG13: ; bbWeight=0.46, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
;; size=2 bbWeight=0.46 PerfScore 0.46
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.64, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r6-r7]
@@ -313,7 +313,7 @@ G_M43301_IG16: ; bbWeight=0.64, 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.64 PerfScore 6.36
G_M43301_IG17: ; bbWeight=0.63, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
mov r10, r9
@@ -322,14 +322,14 @@ G_M43301_IG18: ; bbWeight=0.64, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
ldr r9, [r4+0x04]
; gcrRegs +[r9]
cmp r5, 0
- beq G_M43301_IG48
+ beq G_M43301_IG49
ldr r0, [r5+0x04]
cmp r0, r8
- blo G_M43301_IG50
+ blo G_M43301_IG51
ldr r0, [r5+0x04]
sub r0, r0, r8
cmp r0, r10
- blo G_M43301_IG50
+ blo G_M43301_IG51
add r0, r5, 8
; byrRegs +[r0]
lsl r3, r8, 2
@@ -344,7 +344,7 @@ G_M43301_IG19: ; bbWeight=0.64, gcrefRegs=0210 {r4 r9}, byrefRegs=0020 {r
movs r0, 4
smull r8, r2, r3, r0
cmp r2, r8 ASR 31
- bne G_M43301_IG54
+ bne G_M43301_IG55
cmp r8, 0
bge SHORT G_M43301_IG20
movs r0, 0
@@ -360,7 +360,7 @@ G_M43301_IG21: ; bbWeight=0.64, 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]
@@ -383,31 +383,33 @@ G_M43301_IG21: ; bbWeight=0.64, gcrefRegs=0210 {r4 r9}, byrefRegs=0020 {r
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- beq G_M43301_IG49
+ beq G_M43301_IG50
;; size=70 bbWeight=0.64 PerfScore 15.27
G_M43301_IG22: ; bbWeight=0.64, 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_IG50
- ldr r2, [r0+0x04]
- cmp r2, r1
- blo G_M43301_IG50
- ldr r2, [r0+0x04]
- subs r2, r2, r1
- cmp r2, r8
- blo G_M43301_IG50
- adds r0, 8
- ; gcrRegs -[r0]
+ ldr r3, [r9+0x10]
+ ; gcrRegs +[r3]
+ ldr lr, [r9+0x2C]
+ cmp r3, 0
+ beq G_M43301_IG51
+ ;; size=14 bbWeight=0.64 PerfScore 2.55
+G_M43301_IG23: ; bbWeight=0.64, gcrefRegs=0218 {r3 r4 r9}, byrefRegs=0020 {r5}, byref, isz
+ ldr r0, [r3+0x04]
+ cmp r0, lr
+ blo G_M43301_IG51
+ ldr r0, [r3+0x04]
+ sub r0, r0, lr
+ cmp r0, r8
+ blo G_M43301_IG51
+ 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_IG51
+ bhi G_M43301_IG52
mov r0, r5
movw r3, 0xd1ff
+ ; gcrRegs -[r3]
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
@@ -416,19 +418,19 @@ G_M43301_IG22: ; bbWeight=0.64, gcrefRegs=0210 {r4 r9}, byrefRegs=0020 {r
ldr r0, [r9+0x2C]
add r0, r8
str r0, [r9+0x2C]
- ;; size=68 bbWeight=0.64 PerfScore 15.27
-G_M43301_IG23: ; bbWeight=0.64, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=60 bbWeight=0.64 PerfScore 12.73
+G_M43301_IG24: ; bbWeight=0.64, 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_IG52
+ beq G_M43301_IG53
subs r0, r0, 1
str r0, [r4+0x60]
ldr r0, [r4+0x0C]
@@ -449,52 +451,52 @@ G_M43301_IG23: ; bbWeight=0.64, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r0 r4]
; gcr arg pop 0
;; size=64 bbWeight=0.64 PerfScore 14.64
-G_M43301_IG24: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M43301_IG25: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov r0, r10
;; size=2 bbWeight=0.64 PerfScore 0.64
-G_M43301_IG25: ; bbWeight=0.64, epilog, nogc, extend
+G_M43301_IG26: ; bbWeight=0.64, epilog, nogc, extend
add sp, 28
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.64 PerfScore 1.27
-G_M43301_IG26: ; bbWeight=3.81, gcVars=0000000000000000 {}, gcrefRegs=40F0 {r4 r5 r6 r7 lr}, byrefRegs=0008 {r3}, gcvars, byref, isz
+G_M43301_IG27: ; bbWeight=3.81, gcVars=0000000000000000 {}, gcrefRegs=40F0 {r4 r5 r6 r7 lr}, byrefRegs=0008 {r3}, gcvars, byref, isz
; gcrRegs +[r4-r7 lr]
...
+14 (+2.56%) : 214549.dasm - System.Collections.Generic.Dictionary`2[System.Canon,System.Canon]:Remove(System.__Canon):ubyte:this (Tier1)
@@ -13,19 +13,19 @@
; V01 arg1 [V01,T03] ( 5, 5 ) ref -> r6 ld-addr-op class-hnd single-def <System.__Canon>
; V02 loc0 [V02,T20] ( 4, 3.50) int -> r7
; V03 loc1 [V03,T17] ( 4, 4 ) ref -> r8 class-hnd single-def <<unknown class>>
-; V04 loc2 [V04,T19] ( 3, 3.83) int -> r10
-; V05 loc3 [V05,T23] ( 3, 2.41) byref -> [sp+0x0C] spill-single-def
-; V06 loc4 [V06,T11] ( 4, 5.26) ref -> [sp+0x08] class-hnd exact spill-single-def <<unknown class>>
-; V07 loc5 [V07,T16] ( 5, 4.02) int -> [sp+0x20]
-; V08 loc6 [V08,T01] ( 8, 10.17) int -> [sp+0x1C]
-; V09 loc7 [V09,T02] ( 9, 9.50) byref -> [sp+0x04] spill-single-def
+; V04 loc2 [V04,T19] ( 3, 3.83) int -> r9
+; V05 loc3 [V05,T23] ( 3, 2.41) byref -> [sp+0x14] spill-single-def
+; V06 loc4 [V06,T11] ( 4, 5.26) ref -> [sp+0x10] class-hnd exact spill-single-def <<unknown class>>
+; V07 loc5 [V07,T16] ( 5, 4.02) int -> [sp+0x30]
+; V08 loc6 [V08,T01] ( 8, 10.17) int -> [sp+0x2C]
+; V09 loc7 [V09,T02] ( 9, 9.50) byref -> [sp+0x0C] spill-single-def
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp2 [V12 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
; V13 tmp3 [V13,T04] ( 4, 6 ) int -> r4 "VirtualCall with runtime lookup"
;* V14 tmp4 [V14 ] ( 0, 0 ) int -> zero-ref
;* V15 tmp5 [V15 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V16 tmp6 [V16,T05] ( 4, 6 ) int -> r4 "VirtualCall with runtime lookup"
+; V16 tmp6 [V16,T05] ( 4, 6 ) int -> [sp+0x28] "VirtualCall with runtime lookup"
;* V17 tmp7 [V17 ] ( 0, 0 ) int -> zero-ref
;* V18 tmp8 [V18 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
;* V19 tmp9 [V19 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
@@ -34,26 +34,28 @@
; V22 tmp12 [V22,T18] ( 4, 4 ) ref -> r4 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
;* V23 tmp13 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V24 tmp14 [V24,T06] ( 3, 6 ) int -> r0 "index expr"
-; V25 cse0 [V25,T13] ( 3, 3 ) int -> r9 "CSE - moderate"
-; V26 cse1 [V26,T12] ( 4, 5.09) int -> [sp+0x18] spill-single-def "CSE - aggressive"
+; V25 cse0 [V25,T13] ( 2, 2 ) int -> r0 "CSE - moderate"
+; V26 cse1 [V26,T12] ( 4, 5.09) int -> [sp+0x24] spill-single-def "CSE - aggressive"
; V27 rat0 [V27,T14] ( 3, 4.40) int -> r0 "Spilling to split statement for tree"
; V28 rat1 [V28,T07] ( 3, 5.60) int -> r4 "fgMakeTemp is creating a new local variable"
; V29 rat2 [V29,T15] ( 3, 4.40) int -> r0 "Spilling to split statement for tree"
-; V30 rat3 [V30,T08] ( 3, 5.60) int -> r4 "fgMakeTemp is creating a new local variable"
+; V30 rat3 [V30,T08] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable"
;* V31 rat4 [V31,T24] ( 0, 0 ) int -> zero-ref "runtime lookup"
-; V32 rat5 [V32,T09] ( 2, 4 ) int -> r0 "fgMakeTemp is creating a new local variable"
+;* V32 rat5 [V32,T09] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
;* V33 rat6 [V33,T25] ( 0, 0 ) int -> zero-ref "runtime lookup"
;* V34 rat7 [V34,T10] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
-; V35 rat8 [V35 ] ( 1, 2 ) long -> [sp+0x10] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V35 rat8 [V35 ] ( 1, 2 ) long -> [sp+0x18] multireg-ret "ReplaceWithLclVar is creating a new local variable"
; V36 rat9 [V36,T21] ( 2, 3 ) int -> r0 "field V35.lo (fldOffset=0x0)" P-INDEP
; V37 rat10 [V37,T22] ( 2, 3 ) int -> r1 "field V35.hi (fldOffset=0x4)" P-INDEP
+; TEMP_02 int -> [r11-0x50]
+; TEMP_01 int -> [r11-0x54]
;
-; Lcl frame size = 44
+; Lcl frame size = 60
G_M47719_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 44
- add r11, sp, 72
+ sub sp, 60
+ add r11, sp, 88
str r0, [r11-0x24]
mov r5, r0
; gcrRegs +[r5]
@@ -62,11 +64,11 @@ G_M47719_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=18 bbWeight=1 PerfScore 6.00
G_M47719_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
cmp r6, 0
- beq G_M47719_IG30
+ beq G_M47719_IG29
ldr r0, [r5+0x04]
; gcrRegs +[r0]
cmp r0, 0
- beq G_M47719_IG31
+ beq G_M47719_IG30
ldr r0, [r5+0x08]
cmp r0, 0
bne SHORT G_M47719_IG03
@@ -99,14 +101,13 @@ G_M47719_IG05: ; bbWeight=1, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}
ldr r3, [r3]
blx r3 // <unknown method>
; gcr arg pop 0
- ldr r9, [r5]
- mov r0, r9
+ ldr r0, [r5]
ldr r1, [r0+0x24]
ldr r1, [r1]
ldr r4, [r1+0x1C]
cmp r4, 0
beq SHORT G_M47719_IG07
- ;; size=28 bbWeight=1 PerfScore 11.00
+ ;; size=24 bbWeight=1 PerfScore 10.00
G_M47719_IG06: ; bbWeight=0.80, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz
b SHORT G_M47719_IG08
;; size=2 bbWeight=0.80 PerfScore 0.80
@@ -128,12 +129,12 @@ G_M47719_IG08: ; bbWeight=1, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}
blx r3
; gcrRegs -[r0-r1]
; gcr arg pop 0
- mov r10, r0
+ mov r9, r0
ldr r4, [r5+0x04]
; gcrRegs +[r4]
ldr r2, [r4+0x04]
movs r3, 0
- mov r0, r10
+ mov r0, r9
movs r1, 0
movw lr, 0xd1ff
movt lr, 0xd1ff
@@ -142,115 +143,119 @@ G_M47719_IG08: ; bbWeight=1, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}
tst r0, r0
bmi SHORT G_M47719_IG09
tst r1, r1
- bne G_M47719_IG28
+ bne G_M47719_IG27
b SHORT G_M47719_IG10
;; size=42 bbWeight=1 PerfScore 18.00
G_M47719_IG09: ; bbWeight=1, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
cmp r1, -1
- bne G_M47719_IG28
+ bne G_M47719_IG27
;; size=8 bbWeight=1 PerfScore 2.00
G_M47719_IG10: ; bbWeight=1, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
ldr r1, [r4+0x04]
cmp r0, r1
- bhs G_M47719_IG29
+ bhs G_M47719_IG28
add r1, r4, 8
; byrRegs +[r1]
lsls r0, r0, 2
- adds r4, r1, r0
- ; gcrRegs -[r4]
- ; byrRegs +[r4]
- str r4, [sp+0x0C]
+ add r10, r1, r0
+ ; byrRegs +[r10]
+ str r10, [sp+0x14]
; GC ptr vars +{V05}
- ldr r3, [r5+0x08]
- ; gcrRegs +[r3]
- str r3, [sp+0x08]
+ ldr r4, [r5+0x08]
+ str r4, [sp+0x10]
; GC ptr vars +{V06}
- mov r2, -1
- str r2, [sp+0x20] // [V07 loc5]
- ldr r0, [r4]
- add lr, r0, -1
- cmp lr, 0
- blt G_M47719_IG31
- ;; size=42 bbWeight=1 PerfScore 15.00
-G_M47719_IG11: ; bbWeight=1.83, gcVars=00800800 {V05 V06}, gcrefRegs=0168 {r3 r5 r6 r8}, byrefRegs=0000 {}, gcvars, byref, isz
- ; byrRegs -[r1 r4]
- ldr r12, [r3+0x04]
- str r12, [sp+0x18] // [V26 cse1]
- cmp lr, r12
- bhs G_M47719_IG29
- str lr, [sp+0x1C] // [V08 loc6]
- lsl r0, lr, 4
+ mov r3, -1
+ str r3, [sp+0x30] // [V07 loc5]
+ ldr r0, [r10]
+ subs r2, r0, 1
+ cmp r2, 0
+ blt G_M47719_IG30
+ ;; size=44 bbWeight=1 PerfScore 15.00
+G_M47719_IG11: ; bbWeight=1.83, gcVars=00800800 {V05 V06}, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; byrRegs -[r1 r10]
+ ldr lr, [r4+0x04]
+ str lr, [sp+0x24] // [V26 cse1]
+ cmp r2, lr
+ bhs G_M47719_IG28
+ str r2, [sp+0x2C] // [V08 loc6]
+ lsls r0, r2, 4
adds r0, 8
- adds r1, r3, r0
- ; byrRegs +[r1]
- str r1, [sp+0x04] // [V09 loc7]
+ add r12, r4, r0
+ ; byrRegs +[r12]
+ str r12, [sp+0x0C] // [V09 loc7]
; GC ptr vars +{V09}
- ldr r0, [r1+0x08]
- cmp r0, r10
- bne SHORT G_M47719_IG21
- ;; size=34 bbWeight=1.83 PerfScore 22.00
+ ldr r0, [r12+0x08]
+ cmp r0, r9
+ bne SHORT G_M47719_IG20
+ ;; size=36 bbWeight=1.83 PerfScore 22.00
G_M47719_IG12: ; bbWeight=1, gcVars=00800804 {V05 V06 V09}, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r3]
- ; byrRegs -[r1]
+ ; gcrRegs -[r4]
+ ; byrRegs -[r12]
ldr r0, [r5]
- ldr r4, [r0+0x24]
- ldr r4, [r4]
- ldr r4, [r4+0x20]
- cmp r4, 0
+ ldr r1, [r0+0x24]
+ ldr r1, [r1]
+ ldr r1, [r1+0x20]
+ cmp r1, 0
beq SHORT G_M47719_IG14
;; size=12 bbWeight=1 PerfScore 6.00
G_M47719_IG13: ; bbWeight=0.80, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz
+ str r1, [sp+0x28] // [V16 tmp6]
b SHORT G_M47719_IG15
- ;; size=2 bbWeight=0.80 PerfScore 0.80
+ ;; size=4 bbWeight=0.80 PerfScore 1.60
G_M47719_IG14: ; bbWeight=0.20, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref
+ str r0, [sp+0x08] // [TEMP_02]
movw r1, 0xd1ff
movt r1, 0xd1ff
- movw r4, 0xd1ff
- movt r4, 0xd1ff
- blx r4 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ str r0, [sp+0x04] // [TEMP_01]
+ ldr r0, [sp+0x08] // [TEMP_02]
+ ldr r10, [sp+0x04] // [TEMP_01]
+ blx r10 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
- mov r4, r0
- ;; size=20 bbWeight=0.20 PerfScore 1.20
+ str r0, [sp+0x28] // [V16 tmp6]
+ ;; size=30 bbWeight=0.20 PerfScore 2.00
G_M47719_IG15: ; bbWeight=1, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz
- ldr r1, [sp+0x04] // [V09 loc7]
- ; byrRegs +[r1]
- ldr r1, [r1]
+ ldr r12, [sp+0x0C] // [V09 loc7]
+ ; byrRegs +[r12]
+ ldr r1, [r12]
; gcrRegs +[r1]
- ; byrRegs -[r1]
mov r0, r8
; gcrRegs +[r0]
+ ldr r4, [sp+0x28] // [V16 tmp6]
mov r2, r6
; gcrRegs +[r2]
- ldr r12, [r4]
- blx r12
+ ldr r10, [r4]
+ blx r10
; gcrRegs -[r0-r2]
+ ; byrRegs -[r12]
...
librariestestsnotieredcompilation.run.linux.arm.Release.mch
-24 (-24.49%) : 5280.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%) : 49238.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%) : 43544.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
+2 (+0.20%) : 279389.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3682_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_M12568_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r
;; size=28 bbWeight=0.50 PerfScore 4.00
G_M12568_IG05: ; bbWeight=1.00, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r9}, byref, isz
cmp r10, 2
- bls G_M12568_IG27
+ bls G_M12568_IG33
;; size=8 bbWeight=1.00 PerfScore 2.00
G_M12568_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r9}, byref, isz
ldrh r0, [r9]
@@ -156,7 +156,7 @@ G_M12568_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_M12568_IG27
+ beq G_M12568_IG33
ldrh r0, [r9+0x02]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -164,7 +164,7 @@ G_M12568_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_M12568_IG27
+ beq G_M12568_IG33
ldrh r0, [r9+0x04]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -173,7 +173,7 @@ G_M12568_IG06: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0220 {r5 r
; byrRegs -[r9]
; gcr arg pop 0
cmp r0, 0
- beq G_M12568_IG27
+ beq G_M12568_IG33
;; size=66 bbWeight=0.50 PerfScore 10.50
G_M12568_IG07: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
adds r0, r7, 3
@@ -370,7 +370,7 @@ G_M12568_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_M12568_IG31
+ bge SHORT G_M12568_IG27
str r9, [sp+0x10] // [V09 loc7]
ldr r9, [sp+0x14] // [V04 loc2]
b SHORT G_M12568_IG11
@@ -381,8 +381,8 @@ G_M12568_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_M12568_IG27
- ;; size=10 bbWeight=0.50 PerfScore 2.50
+ blt G_M12568_IG33
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
G_M12568_IG22: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
add r8, r8, -1
ldr r0, [r4+0x18]
@@ -478,34 +478,12 @@ G_M12568_IG26: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r1]
ldr r3, [sp+0x10] // [V09 loc7]
cmp r3, 6
- bge SHORT G_M12568_IG31
+ blt SHORT G_M12568_IG33
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M12568_IG27: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- ldr r5, [r4+0x1C]
- ; gcrRegs +[r5]
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M12568_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_M12568_IG37
- ;; size=10 bbWeight=4 PerfScore 20.00
-G_M12568_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4-r5]
- movs r0, 0
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M12568_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_M12568_IG31: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r4]
+G_M12568_IG27: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
subs r0, r6, r10
cmp r0, 0
- bge SHORT G_M12568_IG32
+ bge SHORT G_M12568_IG28
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r1, 0xd1ff
@@ -516,21 +494,21 @@ G_M12568_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_M12568_IG32: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M12568_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_M12568_IG34
+ bge SHORT G_M12568_IG30
;; size=12 bbWeight=0.50 PerfScore 2.50
-G_M12568_IG33: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M12568_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_M12568_IG34: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M12568_IG30: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x40]
cmp r0, 0
- bne SHORT G_M12568_IG35
+ bne SHORT G_M12568_IG31
mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -540,7 +518,7 @@ G_M12568_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_M12568_IG35: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M12568_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_M12568_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_M12568_IG36: ; bbWeight=0.50, epilog, nogc, extend
+G_M12568_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_M12568_IG37: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r4-r5]
- mov r0, r5
+G_M12568_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_M12568_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_M12568_IG35
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M12568_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_M12568_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_M12568_IG28
- ;; size=44 bbWeight=2 PerfScore 44.00
-G_M12568_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_M12568_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_M12568_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_M12568_IG34
+ ;; size=10 bbWeight=4 PerfScore 20.00
+G_M12568_IG36: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0 r4]
+ movs r0, 0
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M12568_IG37: ; bbWeight=0.50, epilog, nogc, extend
...
+2 (+0.23%) : 257759.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
...
+8 (+0.98%) : 101640.dasm - System.Drawing.ColorTranslator:ToHtml(System.Drawing.Color):System.String (FullOpts)
@@ -10,21 +10,21 @@
;
; V00 arg0 [V00,T01] ( 7, 7 ) struct (16) [sp+0x38] do-not-enreg[SF] ld-addr-op single-def double-align <System.Drawing.Color>
; V01 loc0 [V01,T00] ( 29, 15.50) ref -> lr class-hnd <System.String>
-; V02 loc1 [V02,T20] ( 3, 1.50) int -> r1
+; V02 loc1 [V02,T19] ( 3, 1.50) int -> r1
; V03 loc2 [V03 ] ( 12, 5.50) struct (24) [sp+0x00] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref double-align "impAppendStmt" <System.Drawing.Color>
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref double-align "spilled call-like call argument" <System.Drawing.Color>
-;* V07 tmp3 [V07,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp3 [V07,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V08 tmp4 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
; V09 tmp5 [V09,T08] ( 3, 3 ) int -> r3 "Inlining Arg"
;* V10 tmp6 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-;* V11 tmp7 [V11,T31] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V11 tmp7 [V11,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op double-align "NewObj constructor temp" <System.Drawing.Color>
-; V13 tmp9 [V13,T21] ( 2, 1 ) ubyte -> r3 "Inline return value spill temp"
+; V13 tmp9 [V13,T20] ( 2, 1 ) ubyte -> r3 "Inline return value spill temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V16 tmp12 [V16,T25] ( 3, 1 ) ubyte -> r3 "Inline return value spill temp"
+; V16 tmp12 [V16,T28] ( 3, 0.73) ubyte -> r3 "Inline return value spill temp"
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
@@ -36,7 +36,7 @@
; V25 tmp21 [V25,T12] ( 4, 2 ) ref -> lr class-hnd "Inline return value spill temp" <System.String>
;* V26 tmp22 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String>
;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V28 tmp24 [V28,T26] ( 2, 1 ) ref -> lr class-hnd single-def "Inline return value spill temp" <System.String>
+; V28 tmp24 [V28,T24] ( 2, 1 ) ref -> lr class-hnd single-def "Inline return value spill temp" <System.String>
;* V29 tmp25 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V30 tmp26 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V31 tmp27 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
@@ -44,13 +44,13 @@
; V33 tmp29 [V33,T03] ( 4, 4.00) int -> r0 "Inlining Arg"
;* V34 tmp30 [V34 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V35 tmp31 [V35,T09] ( 3, 3.00) int -> r8 "Inlining Arg"
-; V36 tmp32 [V36,T18] ( 2, 2.00) byref -> r7 single-def "Inlining Arg"
+; V36 tmp32 [V36,T17] ( 2, 2.00) byref -> r7 single-def "Inlining Arg"
;* V37 tmp33 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V38 tmp34 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V39 tmp35 [V39,T29] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V39 tmp35 [V39,T27] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V40 tmp36 [V40 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V41 tmp37 [V41 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V42 tmp38 [V42,T19] ( 2, 1.99) byref -> r1 single-def "Inlining Arg"
+; V42 tmp38 [V42,T18] ( 2, 1.99) byref -> r1 single-def "Inlining Arg"
;* V43 tmp39 [V43 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
;* V44 tmp40 [V44 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
;* V45 tmp41 [V45 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
@@ -64,7 +64,7 @@
;* V53 tmp49 [V53 ] ( 0, 0 ) short -> zero-ref "field V06.state (fldOffset=0xe)" P-INDEP
;* V54 tmp50 [V54 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V55 tmp51 [V55 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x4)" P-INDEP
-; V56 tmp52 [V56,T27] ( 2, 1 ) byref -> r12 single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+; V56 tmp52 [V56,T25] ( 2, 1 ) byref -> r12 single-def "field V10._reference (fldOffset=0x0)" P-INDEP
;* V57 tmp53 [V57 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP
;* V58 tmp54 [V58 ] ( 0, 0 ) long -> zero-ref "field V12.value (fldOffset=0x0)" P-INDEP
;* V59 tmp55 [V59 ] ( 0, 0 ) ref -> zero-ref single-def "field V12.name (fldOffset=0x8)" P-INDEP
@@ -77,25 +77,24 @@
;* V66 tmp62 [V66 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP
;* V67 tmp63 [V67 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x4)" P-INDEP
;* V68 tmp64 [V68 ] ( 0, 0 ) long -> zero-ref "V00.[000..008)"
-; V69 tmp65 [V69,T17] ( 3, 2 ) ref -> r0 single-def "V00.[008..012)"
+; V69 tmp65 [V69,T16] ( 3, 2 ) ref -> r0 single-def "V00.[008..012)"
; V70 tmp66 [V70,T04] ( 6, 3.50) short -> r1 "V00.[012..014)"
-; V71 tmp67 [V71,T02] ( 7, 4.50) short -> r6 "V00.[014..016)"
+; V71 tmp67 [V71,T02] ( 9, 5.50) short -> r6 "V00.[014..016)"
;* V72 tmp68 [V72 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
; V73 tmp69 [V73,T07] ( 3, 3 ) ref -> r0 single-def "arr expr"
; V74 cse0 [V74,T13] ( 4, 2 ) int -> r2 "CSE - moderate"
-; V75 cse1 [V75,T14] ( 4, 2 ) int -> r6 "CSE - moderate"
-;* V76 rat0 [V76 ] ( 0, 0 ) int -> zero-ref "field V29.lo (fldOffset=0x0)" P-INDEP
-;* V77 rat1 [V77 ] ( 0, 0 ) int -> zero-ref "field V29.hi (fldOffset=0x4)" P-INDEP
-; V78 rat2 [V78,T22] ( 3, 1.50) int -> r1 "field V43.lo (fldOffset=0x0)" P-INDEP
-; V79 rat3 [V79,T15] ( 3, 1.50) int -> r0 "field V43.hi (fldOffset=0x4)" P-INDEP
-; V80 rat4 [V80,T23] ( 3, 1.50) int -> r1 "field V44.lo (fldOffset=0x0)" P-INDEP
-; V81 rat5 [V81,T16] ( 3, 1.50) int -> r5 "field V44.hi (fldOffset=0x4)" P-INDEP
-; V82 rat6 [V82,T24] ( 3, 1.50) int -> r4 "field V45.lo (fldOffset=0x0)" P-INDEP
-;* V83 rat7 [V83,T28] ( 0, 0 ) int -> zero-ref "field V45.hi (fldOffset=0x4)" P-INDEP
-; V84 rat8 [V84,T05] ( 6, 3.50) int -> r4 "field V68.lo (fldOffset=0x0)" P-INDEP
-; V85 rat9 [V85,T06] ( 5, 3 ) int -> r5 "field V68.hi (fldOffset=0x4)" P-INDEP
-; V86 rat10 [V86,T10] ( 3, 3 ) int -> r7 "ReplaceWithLclVar is creating a new local variable"
-; V87 rat11 [V87,T11] ( 3, 3 ) int -> r8 "ReplaceWithLclVar is creating a new local variable"
+;* V75 rat0 [V75 ] ( 0, 0 ) int -> zero-ref "field V29.lo (fldOffset=0x0)" P-INDEP
+;* V76 rat1 [V76 ] ( 0, 0 ) int -> zero-ref "field V29.hi (fldOffset=0x4)" P-INDEP
+; V77 rat2 [V77,T21] ( 3, 1.50) int -> r1 "field V43.lo (fldOffset=0x0)" P-INDEP
+; V78 rat3 [V78,T14] ( 3, 1.50) int -> r0 "field V43.hi (fldOffset=0x4)" P-INDEP
+; V79 rat4 [V79,T22] ( 3, 1.50) int -> r1 "field V44.lo (fldOffset=0x0)" P-INDEP
+; V80 rat5 [V80,T15] ( 3, 1.50) int -> r5 "field V44.hi (fldOffset=0x4)" P-INDEP
+; V81 rat6 [V81,T23] ( 3, 1.50) int -> r4 "field V45.lo (fldOffset=0x0)" P-INDEP
+;* V82 rat7 [V82,T26] ( 0, 0 ) int -> zero-ref "field V45.hi (fldOffset=0x4)" P-INDEP
+; V83 rat8 [V83,T05] ( 6, 3.50) int -> r4 "field V68.lo (fldOffset=0x0)" P-INDEP
+; V84 rat9 [V84,T06] ( 5, 3 ) int -> r5 "field V68.hi (fldOffset=0x4)" P-INDEP
+; V85 rat10 [V85,T10] ( 3, 3 ) int -> r7 "ReplaceWithLclVar is creating a new local variable"
+; V86 rat11 [V86,T11] ( 3, 3 ) int -> r8 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 28
@@ -381,8 +380,8 @@ G_M19421_IG35: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, b
str r0, [sp+0x08]
;; size=30 bbWeight=0.50 PerfScore 5.48
G_M19421_IG36: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ands r6, r6, 2
- cmp r6, 0
+ ands r1, r6, 2
+ cmp r1, 0
beq G_M19421_IG50
mov r1, r4
mov r0, r5
@@ -398,10 +397,11 @@ G_M19421_IG37: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- cmp r6, 0
+ ands r1, r6, 2
+ cmp r1, 0
beq SHORT G_M19421_IG51
mov r1, r4
- ;; size=36 bbWeight=0.50 PerfScore 6.50
+ ;; size=40 bbWeight=0.50 PerfScore 7.00
G_M19421_IG38: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lsrs r1, r1, 8
orr r1, r1, r5 LSL 24
@@ -413,9 +413,10 @@ G_M19421_IG38: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- cmp r6, 0
+ ands r1, r6, 2
+ cmp r1, 0
beq SHORT G_M19421_IG52
- ;; size=34 bbWeight=0.50 PerfScore 6.00
+ ;; size=38 bbWeight=0.50 PerfScore 6.50
G_M19421_IG39: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
uxtb r1, r4
add r0, sp, 0
@@ -446,9 +447,9 @@ G_M19421_IG40: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b
cmp r0, 0
beq SHORT G_M19421_IG43
;; size=18 bbWeight=0.50 PerfScore 4.00
-G_M19421_IG41: ; bbWeight=0.43, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
+G_M19421_IG41: ; bbWeight=0.16, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
movs r3, 0
- ;; size=2 bbWeight=0.43 PerfScore 0.43
+ ;; size=2 bbWeight=0.16 PerfScore 0.16
G_M19421_IG42: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
b SHORT G_M19421_IG44
;; size=2 bbWeight=0.50 PerfScore 0.50
@@ -581,7 +582,7 @@ RWD104 dd G_M19421_IG08
dd G_M19421_IG17
-; Total bytes of code 818, prolog size 26, PerfScore 143.07, instruction count 280, allocated bytes for code 818 (MethodHash=f078b422) for method System.Drawing.ColorTranslator:ToHtml(System.Drawing.Color):System.String (FullOpts)
+; Total bytes of code 826, prolog size 26, PerfScore 143.80, instruction count 282, allocated bytes for code 826 (MethodHash=f078b422) for method System.Drawing.ColorTranslator:ToHtml(System.Drawing.Color):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -593,7 +594,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 409 (0x00199) Actual length = 818 (0x000332)
+ Function Length : 413 (0x0019d) Actual length = 826 (0x00033a)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
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%) : 11358.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%) : 32919.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%) : 24217.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%) : 26564.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 |
88 |
80 |
1 |
7 |
-1,018 |
+4 |
| benchmarks.run_tiered.linux.arm.checked.mch |
29 |
28 |
0 |
1 |
-266 |
+0 |
| coreclr_tests.run.linux.arm.checked.mch |
541 |
290 |
4 |
247 |
-4,944 |
+24 |
| libraries.crossgen2.linux.arm.checked.mch |
53 |
52 |
0 |
1 |
-590 |
+0 |
| libraries.pmi.linux.arm.checked.mch |
245 |
234 |
3 |
8 |
-2,934 |
+34 |
| libraries_tests.run.linux.arm.Release.mch |
851 |
811 |
14 |
26 |
-12,612 |
+100 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
311 |
295 |
4 |
12 |
-3,558 |
+16 |
| realworld.run.linux.arm.checked.mch |
68 |
66 |
1 |
1 |
-1,036 |
+2 |
|
2,220 |
1,890 |
27 |
303 |
-27,324 |
+180 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.arm.checked.mch |
45,964 |
5,344 |
40,620 |
1,203 (2.55%) |
1,203 (2.55%) |
| benchmarks.run_pgo.linux.arm.checked.mch |
159,513 |
56,729 |
102,784 |
3,201 (1.97%) |
3,201 (1.97%) |
| benchmarks.run_tiered.linux.arm.checked.mch |
80,099 |
43,607 |
36,492 |
1,086 (1.34%) |
1,086 (1.34%) |
| coreclr_tests.run.linux.arm.checked.mch |
471,993 |
259,195 |
212,798 |
7,170 (1.50%) |
7,170 (1.50%) |
| libraries.crossgen2.linux.arm.checked.mch |
188,191 |
14 |
188,177 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.linux.arm.checked.mch |
272,360 |
6 |
272,354 |
7,786 (2.78%) |
7,786 (2.78%) |
| libraries_tests.run.linux.arm.Release.mch |
710,231 |
442,672 |
267,559 |
16,195 (2.23%) |
16,195 (2.23%) |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
274,633 |
21,604 |
253,029 |
33,224 (10.79%) |
33,224 (10.79%) |
| realworld.run.linux.arm.checked.mch |
36,407 |
157 |
36,250 |
1,408 (3.72%) |
1,408 (3.72%) |
|
2,239,391 |
829,328 |
1,410,063 |
71,273 (3.08%) |
71,273 (3.08%) |
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: 15292190 (overridden on cmd)
Total bytes of diff: 15291824 (overridden on cmd)
Total bytes of delta: -366 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-34 : 761.dasm (-58.62 % of base)
-26 : 26062.dasm (-0.55 % of base)
-24 : 11191.dasm (-0.24 % of base)
-20 : 14489.dasm (-1.61 % of base)
-20 : 31657.dasm (-10.99 % of base)
-14 : 5175.dasm (-3.12 % of base)
-12 : 25319.dasm (-3.09 % of base)
-12 : 37137.dasm (-4.92 % of base)
-12 : 11535.dasm (-2.08 % of base)
-12 : 11769.dasm (-1.55 % of base)
-12 : 18374.dasm (-0.42 % of base)
-12 : 17452.dasm (-2.76 % of base)
-12 : 23393.dasm (-8.11 % of base)
-12 : 24777.dasm (-2.83 % of base)
-12 : 25417.dasm (-3.14 % of base)
-10 : 13693.dasm (-2.15 % of base)
-10 : 7018.dasm (-4.00 % of base)
-10 : 25930.dasm (-4.90 % of base)
-8 : 10684.dasm (-1.99 % of base)
-8 : 2515.dasm (-0.94 % of base)
34 total files with Code Size differences (34 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-34 (-58.62 % of base) : 761.dasm - BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<<GetFullInfo>g__GetCurrentProcessInstructionSets|2_0>d:MoveNext():ubyte:this (FullOpts)
-26 (-0.55 % of base) : 26062.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
-24 (-0.24 % of base) : 11191.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
-20 (-10.99 % of base) : 31657.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
-20 (-1.61 % of base) : 14489.dasm - System.Xml.EncodingStreamWrapper:.ctor(System.IO.Stream,System.Text.Encoding):this (FullOpts)
-14 (-3.12 % of base) : 5175.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:MoveDownCustomComparer(System.ValueTuple`2[System.__Canon,System.__Canon],int):this (FullOpts)
-12 (-2.83 % of base) : 24777.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyDataForAssemblyBeingBuilt[System.__Canon,System.__Canon]:.ctor(Microsoft.CodeAnalysis.AssemblyIdentity,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]):this (FullOpts)
-12 (-3.09 % of base) : 25319.dasm - Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MatchMethodSignature(System.__Canon,System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte:this (FullOpts)
-12 (-3.14 % of base) : 25417.dasm - Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MatchPropertySignature(System.__Canon,System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte:this (FullOpts)
-12 (-4.92 % of base) : 37137.dasm - System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (FullOpts)
-12 (-8.11 % of base) : 23393.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
-12 (-2.76 % of base) : 17452.dasm - System.Formats.Tar.TarHeader:ProcessDataBlock(System.IO.Stream,ubyte):this (FullOpts)
-12 (-0.42 % of base) : 18374.dasm - System.Formats.Tar.TarHeader+<ProcessDataBlockAsync>d__52:MoveNext():this (FullOpts)
-12 (-1.55 % of base) : 11769.dasm - System.Runtime.Serialization.DateTimeOffsetAdapter:GetDateTimeOffset(System.Runtime.Serialization.DateTimeOffsetAdapter):System.DateTimeOffset (FullOpts)
-12 (-2.08 % of base) : 11535.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:InitForReading(System.IO.Stream,System.Text.Encoding):this (FullOpts)
-10 (-4.90 % of base) : 25930.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(System.Collections.Immutable.ImmutableArray`1[System.__Canon]):this (FullOpts)
-10 (-2.15 % of base) : 13693.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.__Canon[],int):this (FullOpts)
-10 (-4.00 % of base) : 7018.dasm - System.Uri:get_HostNameType():int:this (FullOpts)
-8 (-0.51 % of base) : 18388.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (FullOpts)
-8 (-0.94 % of base) : 2515.dasm - System.Reflection.Emit.DynamicILGenerator:GetMemberRefToken(System.Reflection.MethodInfo,System.Type[]):int:this (FullOpts)
Top method improvements (percentages):
-34 (-58.62 % of base) : 761.dasm - BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<<GetFullInfo>g__GetCurrentProcessInstructionSets|2_0>d:MoveNext():ubyte:this (FullOpts)
-20 (-10.99 % of base) : 31657.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
-12 (-8.11 % of base) : 23393.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableArray():System.__Canon:this (FullOpts)
-12 (-4.92 % of base) : 37137.dasm - System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (FullOpts)
-10 (-4.90 % of base) : 25930.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(System.Collections.Immutable.ImmutableArray`1[System.__Canon]):this (FullOpts)
-6 (-4.84 % of base) : 18350.dasm - System.Collections.Generic.PriorityQueue`2[int,int]:MoveUpDefaultComparer(System.ValueTuple`2[int,int],int):this (FullOpts)
-10 (-4.00 % of base) : 7018.dasm - System.Uri:get_HostNameType():int:this (FullOpts)
-12 (-3.14 % of base) : 25417.dasm - Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MatchPropertySignature(System.__Canon,System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte:this (FullOpts)
-14 (-3.12 % of base) : 5175.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:MoveDownCustomComparer(System.ValueTuple`2[System.__Canon,System.__Canon],int):this (FullOpts)
-12 (-3.09 % of base) : 25319.dasm - Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MatchMethodSignature(System.__Canon,System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte:this (FullOpts)
-12 (-2.83 % of base) : 24777.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyDataForAssemblyBeingBuilt[System.__Canon,System.__Canon]:.ctor(Microsoft.CodeAnalysis.AssemblyIdentity,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]):this (FullOpts)
-12 (-2.76 % of base) : 17452.dasm - System.Formats.Tar.TarHeader:ProcessDataBlock(System.IO.Stream,ubyte):this (FullOpts)
-6 (-2.63 % of base) : 25502.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<BuildMembersAndInitializers>g__buildDeclaredMembersAndInitializers|169_1(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializers:this (FullOpts)
-10 (-2.15 % of base) : 13693.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.__Canon[],int):this (FullOpts)
-12 (-2.08 % of base) : 11535.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:InitForReading(System.IO.Stream,System.Text.Encoding):this (FullOpts)
-8 (-1.99 % of base) : 10684.dasm - System.Xml.XmlConvert:CreateInvalidNameCharException(System.String,int,int):System.Exception (FullOpts)
-20 (-1.61 % of base) : 14489.dasm - System.Xml.EncodingStreamWrapper:.ctor(System.IO.Stream,System.Text.Encoding):this (FullOpts)
-12 (-1.55 % of base) : 11769.dasm - System.Runtime.Serialization.DateTimeOffsetAdapter:GetDateTimeOffset(System.Runtime.Serialization.DateTimeOffsetAdapter):System.DateTimeOffset (FullOpts)
-6 (-1.45 % of base) : 10213.dasm - System.Linq.Enumerable:Min[ulong](System.Collections.Generic.IEnumerable`1[ulong],System.Collections.Generic.IComparer`1[ulong]):ulong (FullOpts)
-6 (-1.34 % of base) : 260.dasm - System.Linq.Enumerable+<SkipWhileIterator>d__258`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
34 total methods with Code Size differences (34 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: 63957952 (overridden on cmd)
Total bytes of diff: 63956938 (overridden on cmd)
Total bytes of delta: -1014 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
4 : 10621.dasm (0.47 % of base)
Top file improvements (bytes):
-68 : 101355.dasm (-1.55 % of base)
-30 : 100624.dasm (-11.45 % of base)
-28 : 14533.dasm (-5.62 % of base)
-24 : 37729.dasm (-0.24 % of base)
-22 : 101372.dasm (-6.75 % of base)
-20 : 118333.dasm (-10.99 % of base)
-20 : 100156.dasm (-0.59 % of base)
-18 : 91305.dasm (-0.95 % of base)
-16 : 124898.dasm (-1.10 % of base)
-16 : 30140.dasm (-13.56 % of base)
-16 : 46375.dasm (-13.56 % of base)
-16 : 56799.dasm (-17.02 % of base)
-16 : 66086.dasm (-13.56 % of base)
-16 : 78256.dasm (-13.56 % of base)
-16 : 126031.dasm (-13.56 % of base)
-16 : 151435.dasm (-17.02 % of base)
-16 : 151446.dasm (-13.56 % of base)
-16 : 156464.dasm (-13.56 % of base)
-16 : 100349.dasm (-3.51 % of base)
-16 : 124906.dasm (-1.45 % of base)
49 total files with Code Size differences (48 improved, 1 regressed), 7 unchanged.
Top method regressions (bytes):
4 (0.47 % of base) : 10621.dasm - System.Reflection.Emit.DynamicILGenerator:GetMemberRefToken(System.Reflection.MethodInfo,System.Type[]):int:this (Tier0-FullOpts)
Top method improvements (bytes):
-68 (-1.55 % of base) : 101355.dasm - System.Reflection.PortableExecutable.ManagedPEBuilder:SerializeTextSection(System.Reflection.PortableExecutable.SectionLocation):System.Reflection.Metadata.BlobBuilder:this (Tier1)
-30 (-11.45 % of base) : 100624.dasm - System.Reflection.PortableExecutable.ManagedTextSection:CalculateOffsetToMappedFieldDataStreamUnaligned():int:this (Tier1)
-28 (-5.62 % of base) : 14533.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[System.__Canon]:TryLocalPop(byref):ubyte:this (Tier1)
-24 (-0.24 % of base) : 37729.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
-22 (-6.75 % of base) : 101372.dasm - System.Reflection.PortableExecutable.ManagedTextSection:GetEntryPointAddress(int):int:this (Tier1)
-20 (-0.59 % of base) : 100156.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-20 (-10.99 % of base) : 118333.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (Tier0-FullOpts)
-18 (-0.95 % of base) : 91305.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:TryAddAssembly(Microsoft.CodeAnalysis.AssemblyIdentity,Microsoft.CodeAnalysis.MetadataReference,int,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Location,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):Microsoft.CodeAnalysis.MetadataReference:this (Tier0-FullOpts)
-16 (-3.51 % of base) : 100349.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:get_Count():int:this (Tier1)
-16 (-3.83 % of base) : 24081.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveRange(int,int):this (Tier1)
-16 (-17.02 % of base) : 56799.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
-16 (-17.02 % of base) : 151435.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
-16 (-17.02 % of base) : 8449.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
-16 (-17.02 % of base) : 86576.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
-16 (-13.56 % of base) : 30140.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
-16 (-13.56 % of base) : 46375.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
-16 (-13.56 % of base) : 66086.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
-16 (-13.56 % of base) : 78256.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
-16 (-13.56 % of base) : 126031.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
-16 (-13.56 % of base) : 151446.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
Top method regressions (percentages):
4 (0.47 % of base) : 10621.dasm - System.Reflection.Emit.DynamicILGenerator:GetMemberRefToken(System.Reflection.MethodInfo,System.Type[]):int:this (Tier0-FullOpts)
Top method improvements (percentages):
-16 (-17.02 % of base) : 56799.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
-16 (-17.02 % of base) : 151435.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
-16 (-17.02 % of base) : 8449.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
-16 (-17.02 % of base) : 86576.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
-10 (-15.62 % of base) : 100625.dasm - System.Reflection.PortableExecutable.ManagedTextSection:get_SizeOfImportTable():int:this (Tier1)
-16 (-13.56 % of base) : 30140.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
-16 (-13.56 % of base) : 46375.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
-16 (-13.56 % of base) : 66086.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
-16 (-13.56 % of base) : 78256.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
-16 (-13.56 % of base) : 126031.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
-16 (-13.56 % of base) : 151446.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
-16 (-13.56 % of base) : 156464.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
-16 (-13.56 % of base) : 131041.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
-16 (-13.56 % of base) : 88468.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
-30 (-11.45 % of base) : 100624.dasm - System.Reflection.PortableExecutable.ManagedTextSection:CalculateOffsetToMappedFieldDataStreamUnaligned():int:this (Tier1)
-20 (-10.99 % of base) : 118333.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (Tier0-FullOpts)
-12 (-8.11 % of base) : 84914.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableArray():System.__Canon:this (Tier0-FullOpts)
-22 (-6.75 % of base) : 101372.dasm - System.Reflection.PortableExecutable.ManagedTextSection:GetEntryPointAddress(int):int:this (Tier1)
-28 (-5.62 % of base) : 14533.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[System.__Canon]:TryLocalPop(byref):ubyte:this (Tier1)
-10 (-5.32 % of base) : 124904.dasm - System.IO.BufferedStream:ReadFromBuffer(System.Span`1[ubyte]):int:this (Tier1)
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: 21548230 (overridden on cmd)
Total bytes of diff: 21547964 (overridden on cmd)
Total bytes of delta: -266 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-26 : 54158.dasm (-0.55 % of base)
-24 : 26113.dasm (-0.24 % of base)
-20 : 63785.dasm (-10.99 % of base)
-14 : 15414.dasm (-3.12 % of base)
-12 : 45870.dasm (-8.11 % of base)
-12 : 48254.dasm (-2.83 % of base)
-12 : 66974.dasm (-4.92 % of base)
-12 : 34662.dasm (-2.76 % of base)
-12 : 49485.dasm (-3.09 % of base)
-12 : 49744.dasm (-3.14 % of base)
-10 : 50856.dasm (-4.90 % of base)
-10 : 28796.dasm (-2.15 % of base)
-8 : 11827.dasm (-0.94 % of base)
-8 : 36199.dasm (-0.51 % of base)
-8 : 23414.dasm (-1.99 % of base)
-6 : 25909.dasm (-0.31 % of base)
-6 : 24857.dasm (-1.45 % of base)
-6 : 20448.dasm (-0.47 % of base)
-6 : 23435.dasm (-2.11 % of base)
-6 : 36498.dasm (-4.84 % of base)
28 total files with Code Size differences (28 improved, 0 regressed), 1 unchanged.
Top method improvements (bytes):
-26 (-0.55 % of base) : 54158.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-24 (-0.24 % of base) : 26113.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
-20 (-10.99 % of base) : 63785.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (Tier0-FullOpts)
-14 (-3.12 % of base) : 15414.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:MoveDownCustomComparer(System.ValueTuple`2[System.__Canon,System.__Canon],int):this (Tier0-FullOpts)
-12 (-2.83 % of base) : 48254.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyDataForAssemblyBeingBuilt[System.__Canon,System.__Canon]:.ctor(Microsoft.CodeAnalysis.AssemblyIdentity,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]):this (Tier0-FullOpts)
-12 (-3.09 % of base) : 49485.dasm - Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MatchMethodSignature(System.__Canon,System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte:this (Tier0-FullOpts)
-12 (-3.14 % of base) : 49744.dasm - Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MatchPropertySignature(System.__Canon,System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte:this (Tier0-FullOpts)
-12 (-4.92 % of base) : 66974.dasm - System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (Tier0-FullOpts)
-12 (-8.11 % of base) : 45870.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableArray():System.__Canon:this (Tier0-FullOpts)
-12 (-2.76 % of base) : 34662.dasm - System.Formats.Tar.TarHeader:ProcessDataBlock(System.IO.Stream,ubyte):this (Tier1)
-10 (-4.90 % of base) : 50856.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(System.Collections.Immutable.ImmutableArray`1[System.__Canon]):this (Tier0-FullOpts)
-10 (-2.15 % of base) : 28796.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.__Canon[],int):this (Tier0-FullOpts)
-8 (-0.51 % of base) : 36199.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (Tier0-FullOpts)
-8 (-0.94 % of base) : 11827.dasm - System.Reflection.Emit.DynamicILGenerator:GetMemberRefToken(System.Reflection.MethodInfo,System.Type[]):int:this (Tier0-FullOpts)
-8 (-1.99 % of base) : 23414.dasm - System.Xml.XmlConvert:CreateInvalidNameCharException(System.String,int,int):System.Exception (Tier1)
-6 (-0.54 % of base) : 51305.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__ensureAllUnderlyingConversionsChecked|210_1(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0-FullOpts)
-6 (-4.84 % of base) : 36498.dasm - System.Collections.Generic.PriorityQueue`2[int,int]:MoveUpDefaultComparer(System.ValueTuple`2[int,int],int):this (Tier0-FullOpts)
-6 (-0.31 % of base) : 25909.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<CopyToAsyncCore>d__57:MoveNext():this (Tier1)
-6 (-0.20 % of base) : 44805.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__37:MoveNext():this (Tier1)
-6 (-1.45 % of base) : 24857.dasm - System.Linq.Enumerable:Min[ulong](System.Collections.Generic.IEnumerable`1[ulong],System.Collections.Generic.IComparer`1[ulong]):ulong (Tier0-FullOpts)
Top method improvements (percentages):
-20 (-10.99 % of base) : 63785.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (Tier0-FullOpts)
-12 (-8.11 % of base) : 45870.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableArray():System.__Canon:this (Tier0-FullOpts)
-12 (-4.92 % of base) : 66974.dasm - System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (Tier0-FullOpts)
-10 (-4.90 % of base) : 50856.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(System.Collections.Immutable.ImmutableArray`1[System.__Canon]):this (Tier0-FullOpts)
-6 (-4.84 % of base) : 36498.dasm - System.Collections.Generic.PriorityQueue`2[int,int]:MoveUpDefaultComparer(System.ValueTuple`2[int,int],int):this (Tier0-FullOpts)
-12 (-3.14 % of base) : 49744.dasm - Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MatchPropertySignature(System.__Canon,System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte:this (Tier0-FullOpts)
-14 (-3.12 % of base) : 15414.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:MoveDownCustomComparer(System.ValueTuple`2[System.__Canon,System.__Canon],int):this (Tier0-FullOpts)
-12 (-3.09 % of base) : 49485.dasm - Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MatchMethodSignature(System.__Canon,System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte:this (Tier0-FullOpts)
-12 (-2.83 % of base) : 48254.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyDataForAssemblyBeingBuilt[System.__Canon,System.__Canon]:.ctor(Microsoft.CodeAnalysis.AssemblyIdentity,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]):this (Tier0-FullOpts)
-12 (-2.76 % of base) : 34662.dasm - System.Formats.Tar.TarHeader:ProcessDataBlock(System.IO.Stream,ubyte):this (Tier1)
-10 (-2.15 % of base) : 28796.dasm - System.Collections.Immutable.ImmutableSortedSet`1+Node[System.__Canon]:CopyTo(System.__Canon[],int):this (Tier0-FullOpts)
-6 (-2.11 % of base) : 23435.dasm - System.Xml.XmlConvert:CreateException(System.String,System.String[],int,int,int):System.Exception (Tier1)
-8 (-1.99 % of base) : 23414.dasm - System.Xml.XmlConvert:CreateInvalidNameCharException(System.String,int,int):System.Exception (Tier1)
-6 (-1.45 % of base) : 24857.dasm - System.Linq.Enumerable:Min[ulong](System.Collections.Generic.IEnumerable`1[ulong],System.Collections.Generic.IComparer`1[ulong]):ulong (Tier0-FullOpts)
-6 (-1.34 % of base) : 622.dasm - System.Linq.Enumerable+<SkipWhileIterator>d__258`1[System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
-6 (-1.30 % of base) : 971.dasm - System.Reflection.TypeNameParser:EscapeTypeName(System.String):System.String (Tier0-FullOpts)
-8 (-0.94 % of base) : 11827.dasm - System.Reflection.Emit.DynamicILGenerator:GetMemberRefToken(System.Reflection.MethodInfo,System.Type[]):int:this (Tier0-FullOpts)
-4 (-0.67 % of base) : 71787.dasm - System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
-2 (-0.63 % of base) : 8666.dasm - System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
-2 (-0.63 % of base) : 8654.dasm - System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
28 total methods with Code Size differences (28 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: 321754792 (overridden on cmd)
Total bytes of diff: 321749872 (overridden on cmd)
Total bytes of delta: -4920 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
6 : 325325.dasm (4.17 % of base)
6 : 325401.dasm (4.05 % of base)
6 : 325818.dasm (4.05 % of base)
6 : 325742.dasm (4.17 % of base)
Top file improvements (bytes):
-354 : 212137.dasm (-3.21 % of base)
-354 : 424668.dasm (-3.21 % of base)
-62 : 413056.dasm (-79.49 % of base)
-58 : 308589.dasm (-1.17 % of base)
-58 : 312321.dasm (-1.17 % of base)
-52 : 24782.dasm (-1.03 % of base)
-50 : 408552.dasm (-29.41 % of base)
-50 : 408996.dasm (-75.76 % of base)
-50 : 414410.dasm (-1.26 % of base)
-50 : 408130.dasm (-1.26 % of base)
-48 : 421607.dasm (-12.37 % of base)
-48 : 424102.dasm (-16.67 % of base)
-40 : 413004.dasm (-71.43 % of base)
-38 : 211377.dasm (-27.54 % of base)
-38 : 424024.dasm (-27.54 % of base)
-34 : 157217.dasm (-6.83 % of base)
-34 : 2614.dasm (-6.83 % of base)
-34 : 312993.dasm (-6.97 % of base)
-34 : 31378.dasm (-6.83 % of base)
-34 : 156501.dasm (-6.97 % of base)
39 total files with Code Size differences (35 improved, 4 regressed), 35 unchanged.
Top method regressions (bytes):
6 (4.17 % of base) : 325325.dasm - testout1:Sub_Funclet_106():int (FullOpts)
6 (4.17 % of base) : 325742.dasm - testout1:Sub_Funclet_106():int (FullOpts)
6 (4.05 % of base) : 325401.dasm - testout1:Sub_Funclet_183():int (FullOpts)
6 (4.05 % of base) : 325818.dasm - testout1:Sub_Funclet_183():int (FullOpts)
Top method improvements (bytes):
-354 (-3.21 % of base) : 424668.dasm - ILGEN_0x372a9ae6:Method_0xdc6ff1a4(byte,byte,int,int,ushort,double,long,ulong):int (FullOpts)
-354 (-3.21 % of base) : 212137.dasm - ILGEN_0x372a9ae6:Method_0xdc6ff1a4(byte,byte,int,int,ushort,double,long,ulong):int (Tier0-FullOpts)
-62 (-79.49 % of base) : 413056.dasm - 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)
-58 (-1.17 % of base) : 308589.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-58 (-1.17 % of base) : 312321.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-52 (-1.03 % of base) : 24782.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-50 (-75.76 % of base) : 408996.dasm - 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)
-50 (-29.41 % of base) : 408552.dasm - Test_10w5d.testout1:Func_0_2_6_2_2():double (FullOpts)
-50 (-1.26 % of base) : 414410.dasm - Test_10w5d.testout1:Func_0_4_5_3():System.Decimal (FullOpts)
-50 (-1.26 % of base) : 408130.dasm - Test_10w5d.testout1:Func_0_4_5_3():System.Decimal (FullOpts)
-48 (-12.37 % of base) : 421607.dasm - GitHub_19171:Vector3EqualsTest() (FullOpts)
-48 (-16.67 % of base) : 424102.dasm - ILGEN_0xc53351bb:Method_0x6cf4(short,byte,uint,ulong,int,long,short,short,ubyte,long,float,ubyte,ulong,ubyte):float (FullOpts)
-40 (-71.43 % of base) : 413004.dasm - 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)
-38 (-27.54 % of base) : 424024.dasm - Test.AA:Method1(byref,int,byref,double[]):float (FullOpts)
-38 (-27.54 % of base) : 211377.dasm - Test.AA:Method1(byref,int,byref,double[]):float (Tier0-FullOpts)
-34 (-6.83 % of base) : 157217.dasm - System.Net.Sockets.SafeSocketHandle:ReleaseHandle():ubyte:this (Tier1)
-34 (-6.83 % of base) : 2614.dasm - System.Net.Sockets.SafeSocketHandle:ReleaseHandle():ubyte:this (Tier1)
-34 (-6.97 % of base) : 312993.dasm - System.Net.Sockets.SafeSocketHandle:ReleaseHandle():ubyte:this (Tier1)
-34 (-6.83 % of base) : 31378.dasm - System.Net.Sockets.SafeSocketHandle:ReleaseHandle():ubyte:this (Tier1)
-34 (-6.97 % of base) : 156501.dasm - System.Net.Sockets.SafeSocketHandle:ReleaseHandle():ubyte:this (Tier1)
Top method regressions (percentages):
6 (4.17 % of base) : 325325.dasm - testout1:Sub_Funclet_106():int (FullOpts)
6 (4.17 % of base) : 325742.dasm - testout1:Sub_Funclet_106():int (FullOpts)
6 (4.05 % of base) : 325401.dasm - testout1:Sub_Funclet_183():int (FullOpts)
6 (4.05 % of base) : 325818.dasm - testout1:Sub_Funclet_183():int (FullOpts)
Top method improvements (percentages):
-62 (-79.49 % of base) : 413056.dasm - 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)
-50 (-75.76 % of base) : 408996.dasm - 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)
-40 (-71.43 % of base) : 413004.dasm - 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)
-50 (-29.41 % of base) : 408552.dasm - Test_10w5d.testout1:Func_0_2_6_2_2():double (FullOpts)
-30 (-28.30 % of base) : 409037.dasm - 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)
-38 (-27.54 % of base) : 424024.dasm - Test.AA:Method1(byref,int,byref,double[]):float (FullOpts)
-38 (-27.54 % of base) : 211377.dasm - Test.AA:Method1(byref,int,byref,double[]):float (Tier0-FullOpts)
-18 (-22.50 % of base) : 328202.dasm - filter1:f4() (FullOpts)
-8 (-19.05 % of base) : 329513.dasm - try1:f4() (FullOpts)
-16 (-17.39 % of base) : 382031.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (FullOpts)
-48 (-16.67 % of base) : 424102.dasm - ILGEN_0xc53351bb:Method_0x6cf4(short,byte,uint,ulong,int,long,short,short,ubyte,long,float,ubyte,ulong,ubyte):float (FullOpts)
-26 (-12.62 % of base) : 407808.dasm - Test_10w5d.testout1:Func_0_6_1_2():float (FullOpts)
-48 (-12.37 % of base) : 421607.dasm - GitHub_19171:Vector3EqualsTest() (FullOpts)
-20 (-9.90 % of base) : 4386.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAt(int):this (Instrumented Tier1)
-14 (-9.46 % of base) : 325853.dasm - testout1:Sub_Funclet_221():int (FullOpts)
-14 (-9.46 % of base) : 325436.dasm - testout1:Sub_Funclet_221():int (FullOpts)
-16 (-9.30 % of base) : 326657.dasm - testout1:Sub_Funclet_104():int (FullOpts)
-16 (-9.30 % of base) : 326731.dasm - testout1:Sub_Funclet_181():int (FullOpts)
-12 (-8.82 % of base) : 408994.dasm - 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():float (FullOpts)
-12 (-8.82 % of base) : 413003.dasm - 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():float (FullOpts)
libraries.crossgen2.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: 34522432 (overridden on cmd)
Total bytes of diff: 34521842 (overridden on cmd)
Total bytes of delta: -590 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-86 : 159219.dasm (-0.39 % of base)
-26 : 62512.dasm (-8.97 % of base)
-24 : 72508.dasm (-1.97 % of base)
-24 : 149278.dasm (-3.18 % of base)
-24 : 161763.dasm (-13.33 % of base)
-22 : 63801.dasm (-12.94 % of base)
-20 : 33981.dasm (-0.57 % of base)
-18 : 160000.dasm (-2.03 % of base)
-16 : 35046.dasm (-0.94 % of base)
-16 : 161689.dasm (-9.52 % of base)
-14 : 144798.dasm (-2.98 % of base)
-14 : 35915.dasm (-6.09 % of base)
-14 : 161600.dasm (-8.54 % of base)
-12 : 73017.dasm (-6.12 % of base)
-12 : 172412.dasm (-0.73 % of base)
-12 : 172574.dasm (-2.24 % of base)
-10 : 86838.dasm (-0.56 % of base)
-10 : 73824.dasm (-0.62 % of base)
-10 : 145264.dasm (-4.13 % of base)
-10 : 181031.dasm (-0.75 % of base)
47 total files with Code Size differences (47 improved, 0 regressed), 1 unchanged.
Top method improvements (bytes):
-86 (-0.39 % of base) : 159219.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-26 (-8.97 % of base) : 62512.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
-24 (-13.33 % of base) : 161763.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
-24 (-3.18 % of base) : 149278.dasm - System.Security.Cryptography.RSA:ImportRSAPrivateKey(System.ReadOnlySpan`1[ubyte],byref):this (FullOpts)
-24 (-1.97 % of base) : 72508.dasm - System.Xml.XmlDataDocument:OnRowChanging(System.Object,System.Data.DataRowChangeEventArgs):this (FullOpts)
-22 (-12.94 % of base) : 63801.dasm - 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)
-20 (-0.57 % of base) : 33981.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
-18 (-2.03 % of base) : 160000.dasm - Microsoft.VisualBasic.Strings:GetCurrencyFormatString(int,int,int,int,byref):System.String (FullOpts)
-16 (-0.94 % of base) : 35046.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:GetRefEscape(Microsoft.CodeAnalysis.CSharp.BoundExpression,uint):uint:this (FullOpts)
-16 (-9.52 % of base) : 161689.dasm - System.Net.Mail.DataCommand:CheckResponse(int,System.String) (FullOpts)
-14 (-6.09 % of base) : 35915.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddDelegateOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature]):this (FullOpts)
-14 (-2.98 % of base) : 144798.dasm - System.Data.Odbc.OdbcDataReader:GetData(int,short,int,byref):ubyte:this (FullOpts)
-14 (-8.54 % of base) : 161600.dasm - System.Net.Mail.MailCommand:CheckResponse(int,System.String) (FullOpts)
-12 (-6.12 % of base) : 73017.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:GetUnassignedSymbolFirstLocation(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess):Microsoft.CodeAnalysis.Location:this (FullOpts)
-12 (-2.24 % of base) : 172574.dasm - System.Formats.Tar.TarHeader:ProcessDataBlock(System.IO.Stream,ubyte):this (FullOpts)
-12 (-0.73 % of base) : 172412.dasm - System.Formats.Tar.TarHeader+<ProcessDataBlockAsync>d__52:MoveNext():this (FullOpts)
-10 (-0.62 % of base) : 73824.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:DecodeModifiedIdentifierType(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,System.Func`1[Microsoft.CodeAnalysis.DiagnosticInfo],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
-10 (-0.56 % of base) : 86838.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseDeclarationStatementInternal():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.StatementSyntax:this (FullOpts)
-10 (-3.21 % of base) : 86731.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SingleLineLambdaContext:ProcessStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.BlockContext):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.BlockContext:this (FullOpts)
-10 (-0.75 % of base) : 181031.dasm - System.DirectoryServices.Protocols.BerConverter:TryDecode(System.String,ubyte[],byref):System.Object[] (FullOpts)
Top method improvements (percentages):
-24 (-13.33 % of base) : 161763.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
-22 (-12.94 % of base) : 63801.dasm - 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)
-16 (-9.52 % of base) : 161689.dasm - System.Net.Mail.DataCommand:CheckResponse(int,System.String) (FullOpts)
-26 (-8.97 % of base) : 62512.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
-14 (-8.54 % of base) : 161600.dasm - System.Net.Mail.MailCommand:CheckResponse(int,System.String) (FullOpts)
-12 (-6.12 % of base) : 73017.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:GetUnassignedSymbolFirstLocation(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess):Microsoft.CodeAnalysis.Location:this (FullOpts)
-14 (-6.09 % of base) : 35915.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddDelegateOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature]):this (FullOpts)
-8 (-4.26 % of base) : 144602.dasm - System.Data.Odbc.OdbcHandle:ReleaseHandle():ubyte:this (FullOpts)
-10 (-4.13 % of base) : 145264.dasm - System.Uri:get_HostNameType():int:this (FullOpts)
-6 (-3.85 % of base) : 161744.dasm - System.Net.Mail.StartTlsCommand:CheckResponse(int,System.String) (FullOpts)
-6 (-3.80 % of base) : 160187.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:IsMemberPublic(System.Reflection.MemberInfo):ubyte (FullOpts)
-10 (-3.21 % of base) : 86731.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SingleLineLambdaContext:ProcessStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.BlockContext):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.BlockContext:this (FullOpts)
-24 (-3.18 % of base) : 149278.dasm - System.Security.Cryptography.RSA:ImportRSAPrivateKey(System.ReadOnlySpan`1[ubyte],byref):this (FullOpts)
-14 (-2.98 % of base) : 144798.dasm - System.Data.Odbc.OdbcDataReader:GetData(int,short,int,byref):ubyte:this (FullOpts)
-8 (-2.27 % of base) : 123579.dasm - System.IO.Compression.ZipArchiveEntry:GetDataCompressor(System.IO.Stream,ubyte,System.EventHandler):System.IO.Compression.CheckSumAndSizeWriteStream:this (FullOpts)
-6 (-2.26 % of base) : 159674.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:VerifyObjRefPresentForInstanceCall(System.Object,System.Reflection.MemberInfo) (FullOpts)
-12 (-2.24 % of base) : 172574.dasm - System.Formats.Tar.TarHeader:ProcessDataBlock(System.IO.Stream,ubyte):this (FullOpts)
-6 (-2.19 % of base) : 59224.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<BuildMembersAndInitializers>g__buildDeclaredMembersAndInitializers|169_1(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializers:this (FullOpts)
-18 (-2.03 % of base) : 160000.dasm - Microsoft.VisualBasic.Strings:GetCurrencyFormatString(int,int,int,int,byref):System.String (FullOpts)
-24 (-1.97 % of base) : 72508.dasm - System.Xml.XmlDataDocument:OnRowChanging(System.Object,System.Data.DataRowChangeEventArgs):this (FullOpts)
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: 49857080 (overridden on cmd)
Total bytes of diff: 49854180 (overridden on cmd)
Total bytes of delta: -2900 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
20 : 184394.dasm (0.38 % of base)
10 : 135472.dasm (0.45 % of base)
4 : 192924.dasm (0.21 % of base)
Top file improvements (bytes):
-468 : 112110.dasm (-89.66 % of base)
-152 : 250244.dasm (-0.68 % of base)
-90 : 113075.dasm (-7.12 % of base)
-78 : 16578.dasm (-5.76 % of base)
-66 : 238758.dasm (-3.60 % of base)
-54 : 78235.dasm (-1.50 % of base)
-32 : 207257.dasm (-2.85 % of base)
-30 : 83165.dasm (-0.72 % of base)
-28 : 151871.dasm (-6.09 % of base)
-28 : 151877.dasm (-4.13 % of base)
-26 : 48540.dasm (-0.50 % of base)
-26 : 81795.dasm (-9.29 % of base)
-24 : 161490.dasm (-13.79 % of base)
-24 : 86650.dasm (-2.32 % of base)
-24 : 226932.dasm (-2.49 % of base)
-22 : 104515.dasm (-6.88 % of base)
-22 : 83179.dasm (-14.47 % of base)
-22 : 197987.dasm (-6.11 % of base)
-20 : 188613.dasm (-1.52 % of base)
-18 : 250788.dasm (-2.43 % of base)
57 total files with Code Size differences (54 improved, 3 regressed), 8 unchanged.
Top method regressions (bytes):
20 (0.38 % of base) : 184394.dasm - ILCompiler.PettisHansenSort.PettisHansen:Sort(System.Collections.Generic.List`1[ILCompiler.PettisHansenSort.CallGraphNode]):System.Collections.Generic.List`1[System.Collections.Generic.List`1[int]] (FullOpts)
10 (0.45 % of base) : 135472.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)
4 (0.21 % of base) : 192924.dasm - System.DirectoryServices.Protocols.BerConverter:TryDecode(System.String,ubyte[],byref):System.Object[] (FullOpts)
Top method improvements (bytes):
-468 (-89.66 % of base) : 112110.dasm - System.Xml.Serialization.XmlSerializationReader:ReadTypedNull(System.Xml.XmlQualifiedName):System.Object:this (FullOpts)
-152 (-0.68 % of base) : 250244.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-90 (-7.12 % of base) : 113075.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-78 (-5.76 % of base) : 16578.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericCompare(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Object,System.Object):int (FullOpts)
-66 (-3.60 % of base) : 238758.dasm - System.Linq.Enumerable+<TakeRangeFromEndIterator>d__290`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-54 (-1.50 % of base) : 78235.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMethodSymbolWithAttributes:DecodeDllImportAttribute(byref):this (FullOpts)
-32 (-2.85 % of base) : 207257.dasm - Microsoft.CodeAnalysis.AttributeData:DecodeDecimalConstantValue():Microsoft.CodeAnalysis.ConstantValue:this (FullOpts)
-30 (-0.72 % of base) : 83165.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:LowerEvaluation(Microsoft.CodeAnalysis.CSharp.BoundDagEvaluation):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-28 (-6.09 % of base) : 151871.dasm - Microsoft.Build.Collections.WeakValueDictionary`2[System.__Canon,System.__Canon]:get_Keys():System.Collections.Generic.IEnumerable`1[System.__Canon]:this (FullOpts)
-28 (-4.13 % of base) : 151877.dasm - Microsoft.Build.Collections.WeakValueDictionary`2[System.__Canon,System.__Canon]:Scavenge():int:this (FullOpts)
-26 (-0.50 % of base) : 48540.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
-26 (-9.29 % of base) : 81795.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
-24 (-13.79 % of base) : 161490.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
-24 (-2.49 % of base) : 226932.dasm - System.Security.Cryptography.RSA:ImportRSAPrivateKey(System.ReadOnlySpan`1[ubyte],byref):this (FullOpts)
-24 (-2.32 % of base) : 86650.dasm - System.Xml.XmlDataDocument:OnRowChanging(System.Object,System.Data.DataRowChangeEventArgs):this (FullOpts)
-22 (-14.47 % of base) : 83179.dasm - 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)
-22 (-6.11 % of base) : 197987.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.Nullable`1[int]]:MoveDownDefaultComparer(System.ValueTuple`2[System.__Canon,System.Nullable`1[int]],int):this (FullOpts)
-22 (-6.88 % of base) : 104515.dasm - System.Xml.Schema.Datatype_dateTimeBase:Compare(System.Object,System.Object):int:this (FullOpts)
-20 (-1.52 % of base) : 188613.dasm - System.Xml.EncodingStreamWrapper:.ctor(System.IO.Stream,System.Text.Encoding):this (FullOpts)
-18 (-2.43 % of base) : 250788.dasm - Microsoft.VisualBasic.Strings:GetCurrencyFormatString(int,int,int,int,byref):System.String (FullOpts)
Top method regressions (percentages):
10 (0.45 % of base) : 135472.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)
20 (0.38 % of base) : 184394.dasm - ILCompiler.PettisHansenSort.PettisHansen:Sort(System.Collections.Generic.List`1[ILCompiler.PettisHansenSort.CallGraphNode]):System.Collections.Generic.List`1[System.Collections.Generic.List`1[int]] (FullOpts)
4 (0.21 % of base) : 192924.dasm - System.DirectoryServices.Protocols.BerConverter:TryDecode(System.String,ubyte[],byref):System.Object[] (FullOpts)
Top method improvements (percentages):
-468 (-89.66 % of base) : 112110.dasm - System.Xml.Serialization.XmlSerializationReader:ReadTypedNull(System.Xml.XmlQualifiedName):System.Object:this (FullOpts)
-10 (-41.67 % of base) : 223493.dasm - System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
-16 (-17.39 % of base) : 181664.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (FullOpts)
-12 (-16.22 % of base) : 269604.dasm - System.IO.FileSystemWatcher+NormalizedFilterCollection+ImmutableStringList:get_Item(int):System.String:this (FullOpts)
-22 (-14.47 % of base) : 83179.dasm - 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)
-10 (-14.29 % of base) : 242213.dasm - System.Net.Sockets.UdpReceiveResult:op_Equality(System.Net.Sockets.UdpReceiveResult,System.Net.Sockets.UdpReceiveResult):ubyte (FullOpts)
-24 (-13.79 % of base) : 161490.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
-10 (-12.50 % of base) : 242212.dasm - System.Net.Sockets.UdpReceiveResult:Equals(System.Net.Sockets.UdpReceiveResult):ubyte:this (FullOpts)
-10 (-11.90 % of base) : 242214.dasm - System.Net.Sockets.UdpReceiveResult:op_Inequality(System.Net.Sockets.UdpReceiveResult,System.Net.Sockets.UdpReceiveResult):ubyte (FullOpts)
-2 (-11.11 % of base) : 42783.dasm - Microsoft.Diagnostics.Tracing.Parsers.Clr.GCFitBucketInfoTraceData:Validate():this (FullOpts)
-10 (-10.87 % of base) : 242211.dasm - System.Net.Sockets.UdpReceiveResult:Equals(System.Object):ubyte:this (FullOpts)
-16 (-9.88 % of base) : 161486.dasm - System.Net.Mail.DataCommand:CheckResponse(int,System.String) (FullOpts)
-6 (-9.68 % of base) : 19636.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-26 (-9.29 % of base) : 81795.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
-10 (-9.26 % of base) : 19634.dasm - System.SpanHelpers:LastIndexOfAnyInRange[long](byref,long,long,int):int (FullOpts)
-14 (-8.86 % of base) : 161509.dasm - System.Net.Mail.MailCommand:CheckResponse(int,System.String) (FullOpts)
-6 (-8.82 % of base) : 19626.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-8 (-7.14 % of base) : 19624.dasm - System.SpanHelpers:IndexOfAnyInRange[long](byref,long,long,int):int (FullOpts)
-90 (-7.12 % of base) : 113075.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.__Canon](System.Object):System.__Canon (FullOpts)
-22 (-6.88 % of base) : 104515.dasm - System.Xml.Schema.Datatype_dateTimeBase:Compare(System.Object,System.Object):int:this (FullOpts)
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: 243858436 (overridden on cmd)
Total bytes of diff: 243845924 (overridden on cmd)
Total bytes of delta: -12512 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
18 : 507937.dasm (1.55 % of base)
14 : 214549.dasm (2.56 % of base)
12 : 676217.dasm (0.26 % of base)
10 : 691621.dasm (0.79 % of base)
10 : 89139.dasm (0.30 % of base)
10 : 567282.dasm (1.37 % of base)
6 : 290444.dasm (0.43 % of base)
4 : 668837.dasm (0.31 % of base)
4 : 221758.dasm (0.17 % of base)
4 : 690031.dasm (0.41 % of base)
2 : 515650.dasm (0.24 % of base)
2 : 668071.dasm (0.25 % of base)
2 : 88005.dasm (0.83 % of base)
2 : 322844.dasm (0.29 % of base)
Top file improvements (bytes):
-352 : 188144.dasm (-1.55 % of base)
-78 : 298818.dasm (-5.95 % of base)
-68 : 264567.dasm (-10.09 % of base)
-66 : 134626.dasm (-10.48 % of base)
-66 : 202198.dasm (-10.48 % of base)
-66 : 347510.dasm (-3.60 % of base)
-64 : 224095.dasm (-10.19 % of base)
-62 : 484775.dasm (-10.06 % of base)
-58 : 182411.dasm (-9.54 % of base)
-58 : 66791.dasm (-3.87 % of base)
-58 : 353635.dasm (-9.70 % of base)
-58 : 264268.dasm (-9.70 % of base)
-58 : 272301.dasm (-1.16 % of base)
-58 : 451344.dasm (-9.97 % of base)
-56 : 623829.dasm (-45.90 % of base)
-54 : 315815.dasm (-9.34 % of base)
-54 : 322804.dasm (-9.34 % of base)
-52 : 626133.dasm (-7.76 % of base)
-52 : 55934.dasm (-0.55 % of base)
-48 : 698569.dasm (-0.80 % of base)
61 total files with Code Size differences (47 improved, 14 regressed), 22 unchanged.
Top method regressions (bytes):
18 (1.55 % of base) : 507937.dasm - System.Xml.XmlBinaryReader:ReadArray(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,int[],int,int):int:this (Tier1)
14 (2.56 % of base) : 214549.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
12 (0.26 % of base) : 676217.dasm - System.Reflection.PortableExecutable.ManagedPEBuilder:SerializeTextSection(System.Reflection.PortableExecutable.SectionLocation):System.Reflection.Metadata.BlobBuilder:this (Tier1)
10 (0.30 % of base) : 89139.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:GetValEscape(Microsoft.CodeAnalysis.CSharp.BoundExpression,uint):uint:this (Tier1)
10 (1.37 % of base) : 567282.dasm - System.IO.BinaryReader:InternalRead(System.Span`1[ubyte]):System.ReadOnlySpan`1[ubyte]:this (Tier1)
10 (0.79 % of base) : 691621.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31280_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
6 (0.43 % of base) : 290444.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
4 (0.31 % of base) : 668837.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)
4 (0.17 % of base) : 221758.dasm - System.IO.BinaryReader:ReadString():System.String:this (Tier1)
4 (0.41 % of base) : 690031.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex30746_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
2 (0.83 % of base) : 88005.dasm - Microsoft.CodeAnalysis.CSharp.ClsComplianceChecker:CheckForMeaninglessOnReturn(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):this (Tier1)
2 (0.25 % of base) : 668071.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState:Create(Microsoft.CodeAnalysis.CSharp.NullableWalker):Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState (Tier1)
2 (0.29 % of base) : 322844.dasm - System.Net.Sockets.SocketAsyncEventArgs:StartOperationAccept():this (Tier1)
2 (0.24 % of base) : 515650.dasm - System.Numerics.BigInteger:op_Implicit(System.Int128):System.Numerics.BigInteger (Tier1)
Top method improvements (bytes):
-352 (-1.55 % of base) : 188144.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
-78 (-5.95 % of base) : 298818.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericCompare(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Object,System.Object):int (Tier0-FullOpts)
-68 (-10.09 % of base) : 264567.dasm - System.Xml.XmlNodeReader:ReadNextNode(ubyte):ubyte:this (Tier1)
-66 (-10.48 % of base) : 134626.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
-66 (-10.48 % of base) : 202198.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
-66 (-3.60 % of base) : 347510.dasm - System.Linq.Enumerable+<TakeRangeFromEndIterator>d__290`1[System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
-64 (-10.19 % of base) : 224095.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
-62 (-10.06 % of base) : 484775.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
-58 (-9.54 % of base) : 182411.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
-58 (-9.70 % of base) : 353635.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
-58 (-9.70 % of base) : 264268.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
-58 (-9.97 % of base) : 451344.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
-58 (-3.87 % of base) : 66791.dasm - System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:SetOrAdd(int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]],ubyte,byref,byref):System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:this (Tier1)
-58 (-1.16 % of base) : 272301.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
-56 (-45.90 % of base) : 623829.dasm - System.Text.Json.JsonSerializerOptions:ConfigureForJsonSerializer():this (Tier1)
-54 (-9.34 % of base) : 315815.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
-54 (-9.34 % of base) : 322804.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
-52 (-0.55 % of base) : 55934.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
-52 (-7.76 % of base) : 626133.dasm - System.Runtime.CompilerServices.TaskAwaiter:ThrowForNonSuccess(System.Threading.Tasks.Task) (Tier1)
-48 (-0.80 % of base) : 698569.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
Top method regressions (percentages):
14 (2.56 % of base) : 214549.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
18 (1.55 % of base) : 507937.dasm - System.Xml.XmlBinaryReader:ReadArray(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString,int[],int,int):int:this (Tier1)
10 (1.37 % of base) : 567282.dasm - System.IO.BinaryReader:InternalRead(System.Span`1[ubyte]):System.ReadOnlySpan`1[ubyte]:this (Tier1)
2 (0.83 % of base) : 88005.dasm - Microsoft.CodeAnalysis.CSharp.ClsComplianceChecker:CheckForMeaninglessOnReturn(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):this (Tier1)
10 (0.79 % of base) : 691621.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31280_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
6 (0.43 % of base) : 290444.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
4 (0.41 % of base) : 690031.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex30746_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
4 (0.31 % of base) : 668837.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 (0.30 % of base) : 89139.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:GetValEscape(Microsoft.CodeAnalysis.CSharp.BoundExpression,uint):uint:this (Tier1)
2 (0.29 % of base) : 322844.dasm - System.Net.Sockets.SocketAsyncEventArgs:StartOperationAccept():this (Tier1)
12 (0.26 % of base) : 676217.dasm - System.Reflection.PortableExecutable.ManagedPEBuilder:SerializeTextSection(System.Reflection.PortableExecutable.SectionLocation):System.Reflection.Metadata.BlobBuilder:this (Tier1)
2 (0.25 % of base) : 668071.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState:Create(Microsoft.CodeAnalysis.CSharp.NullableWalker):Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState (Tier1)
2 (0.24 % of base) : 515650.dasm - System.Numerics.BigInteger:op_Implicit(System.Int128):System.Numerics.BigInteger (Tier1)
4 (0.17 % of base) : 221758.dasm - System.IO.BinaryReader:ReadString():System.String:this (Tier1)
Top method improvements (percentages):
-56 (-45.90 % of base) : 623829.dasm - System.Text.Json.JsonSerializerOptions:ConfigureForJsonSerializer():this (Tier1)
-12 (-35.29 % of base) : 264664.dasm - System.ArgumentOutOfRangeException:ThrowIfGreaterThanOrEqual[int](int,int,System.String) (Tier1)
-12 (-35.29 % of base) : 322301.dasm - System.ArgumentOutOfRangeException:ThrowIfLessThan[int](int,int,System.String) (Tier1)
-12 (-35.29 % of base) : 556220.dasm - System.ArgumentOutOfRangeException:ThrowIfLessThan[int](int,int,System.String) (Tier1)
-36 (-32.73 % of base) : 47525.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (Tier1)
-36 (-32.14 % of base) : 173723.dasm - 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)
-36 (-32.14 % of base) : 684147.dasm - 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)
-36 (-32.14 % of base) : 82876.dasm - 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)
-36 (-32.14 % of base) : 55345.dasm - 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)
-36 (-32.14 % of base) : 73878.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (Tier1)
-36 (-30.51 % of base) : 157757.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (Tier1)
-16 (-17.02 % of base) : 675577.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldNativeIntegerOverflowingUnaryOperator(int,Microsoft.CodeAnalysis.ConstantValue):System.Object (Tier1)
-16 (-17.02 % of base) : 181010.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
-16 (-17.02 % of base) : 657472.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
-16 (-16.00 % of base) : 224058.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`2[System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
-12 (-15.79 % of base) : 371099.dasm - System.ArgumentOutOfRangeException:ThrowIfGreaterThan[double](double,double,System.String) (Tier1)
-10 (-15.62 % of base) : 177344.dasm - System.Reflection.PortableExecutable.ManagedTextSection:get_SizeOfImportTable():int:this (Tier1)
-10 (-15.62 % of base) : 675150.dasm - System.Reflection.PortableExecutable.ManagedTextSection:get_SizeOfImportTable():int:this (Tier1)
-16 (-13.56 % of base) : 674516.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
-10 (-13.16 % of base) : 605749.dasm - System.ArgumentOutOfRangeException:ThrowIfGreaterThan[float](float,float,System.String) (Tier1)
librariestestsnotieredcompilation.run.linux.arm.Release.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 94524880 (overridden on cmd)
Total bytes of diff: 94521338 (overridden on cmd)
Total bytes of delta: -3542 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
8 : 101640.dasm (0.98 % of base)
4 : 153636.dasm (0.07 % of base)
2 : 257759.dasm (0.23 % of base)
2 : 279389.dasm (0.20 % of base)
Top file improvements (bytes):
-152 : 59498.dasm (-0.68 % of base)
-78 : 116133.dasm (-5.95 % of base)
-72 : 160683.dasm (-8.00 % of base)
-72 : 160950.dasm (-8.00 % of base)
-66 : 141580.dasm (-3.60 % of base)
-54 : 201448.dasm (-2.32 % of base)
-54 : 19258.dasm (-1.51 % of base)
-54 : 201573.dasm (-2.32 % of base)
-52 : 201368.dasm (-2.26 % of base)
-52 : 201738.dasm (-2.26 % of base)
-48 : 160678.dasm (-5.85 % of base)
-48 : 160869.dasm (-6.30 % of base)
-42 : 56730.dasm (-1.01 % of base)
-42 : 225558.dasm (-3.03 % of base)
-28 : 22641.dasm (-2.72 % of base)
-26 : 56693.dasm (-9.29 % of base)
-26 : 77032.dasm (-11.50 % of base)
-26 : 6617.dasm (-0.55 % of base)
-24 : 93417.dasm (-2.34 % of base)
-24 : 150389.dasm (-13.79 % of base)
56 total files with Code Size differences (52 improved, 4 regressed), 12 unchanged.
Top method regressions (bytes):
8 (0.98 % of base) : 101640.dasm - System.Drawing.ColorTranslator:ToHtml(System.Drawing.Color):System.String (FullOpts)
4 (0.07 % of base) : 153636.dasm - System.Net.Quic.Tests.MsQuicTests+<BigWrite_SmallRead_Success>d__33:MoveNext():this (FullOpts)
2 (0.23 % of base) : 257759.dasm - System.Text.Json.Serialization.Tests.JsonSerializerWrapper+Utf8BomInsertingStream:Read(ubyte[],int,int):int:this (FullOpts)
2 (0.20 % of base) : 279389.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3682_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (bytes):
-152 (-0.68 % of base) : 59498.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-78 (-5.95 % of base) : 116133.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericCompare(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Object,System.Object):int (FullOpts)
-72 (-8.00 % of base) : 160683.dasm - System.Numerics.Tests.QuaternionTests:QuaternionEqualsTest():this (FullOpts)
-72 (-8.00 % of base) : 160950.dasm - System.Numerics.Tests.Vector4Tests:Vector4EqualsTest():this (FullOpts)
-66 (-3.60 % of base) : 141580.dasm - System.Linq.Enumerable+<TakeRangeFromEndIterator>d__290`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-54 (-1.51 % of base) : 19258.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMethodSymbolWithAttributes:DecodeDllImportAttribute(byref):this (FullOpts)
-54 (-2.32 % of base) : 201448.dasm - System.Tests.DecimalTests_GenericMath:MinMagnitudeNumberTest() (FullOpts)
-54 (-2.32 % of base) : 201573.dasm - System.Tests.DecimalTests_GenericMath:MinMagnitudeTest() (FullOpts)
-52 (-2.26 % of base) : 201738.dasm - System.Tests.DecimalTests_GenericMath:MaxMagnitudeNumberTest() (FullOpts)
-52 (-2.26 % of base) : 201368.dasm - System.Tests.DecimalTests_GenericMath:MaxMagnitudeTest() (FullOpts)
-48 (-6.30 % of base) : 160869.dasm - System.Numerics.Tests.PlaneTests:PlaneEqualsTest():this (FullOpts)
-48 (-5.85 % of base) : 160678.dasm - System.Numerics.Tests.Vector3Tests:Vector3EqualsTest():this (FullOpts)
-42 (-1.01 % of base) : 56730.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:LowerEvaluation(Microsoft.CodeAnalysis.CSharp.BoundDagEvaluation):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-42 (-3.03 % of base) : 225558.dasm - System.Security.Cryptography.Tests.IncrementalHashTests:VerifyIncrementalResult_Span(System.Security.Cryptography.HashAlgorithm,System.Security.Cryptography.IncrementalHash) (FullOpts)
-28 (-2.72 % of base) : 22641.dasm - Microsoft.CodeAnalysis.MarshalAsAttributeDecoder`4[System.__Canon,System.__Canon,System.__Canon,short]:DecodeMarshalAsCustom(byref,Microsoft.CodeAnalysis.CommonMessageProvider) (FullOpts)
-26 (-0.55 % of base) : 6617.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
-26 (-9.29 % of base) : 56693.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
-26 (-11.50 % of base) : 77032.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,int]:MoveDownDefaultComparer(System.ValueTuple`2[System.__Canon,int],int):this (FullOpts)
-24 (-24.49 % of base) : 5280.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
-24 (-13.79 % of base) : 150389.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
Top method regressions (percentages):
8 (0.98 % of base) : 101640.dasm - System.Drawing.ColorTranslator:ToHtml(System.Drawing.Color):System.String (FullOpts)
2 (0.23 % of base) : 257759.dasm - System.Text.Json.Serialization.Tests.JsonSerializerWrapper+Utf8BomInsertingStream:Read(ubyte[],int,int):int:this (FullOpts)
2 (0.20 % of base) : 279389.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3682_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
4 (0.07 % of base) : 153636.dasm - System.Net.Quic.Tests.MsQuicTests+<BigWrite_SmallRead_Success>d__33:MoveNext():this (FullOpts)
Top method improvements (percentages):
-24 (-24.49 % of base) : 5280.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
-22 (-22.92 % of base) : 49238.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
-22 (-22.92 % of base) : 43544.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
-16 (-17.39 % of base) : 21488.dasm - System.ComponentModel.TypeDescriptor:GetNodeForBaseType(System.Type):System.Type (FullOpts)
-12 (-16.22 % of base) : 126023.dasm - System.IO.FileSystemWatcher+NormalizedFilterCollection+ImmutableStringList:get_Item(int):System.String:this (FullOpts)
-22 (-14.29 % of base) : 56938.dasm - 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)
-24 (-13.79 % of base) : 150389.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
-26 (-11.50 % of base) : 77032.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,int]:MoveDownDefaultComparer(System.ValueTuple`2[System.__Canon,int],int):this (FullOpts)
-12 (-10.91 % of base) : 142338.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[ulong](byref,ulong,ulong,int):int (FullOpts)
-6 (-10.71 % of base) : 226639.dasm - System.Security.Cryptography.Tests.OidCollectionTests+<>c__DisplayClass4_0:<TestOidCollection>b__0():System.Object:this (FullOpts)
-16 (-9.88 % of base) : 150342.dasm - System.Net.Mail.DataCommand:CheckResponse(int,System.String) (FullOpts)
-6 (-9.68 % of base) : 144001.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[uint](byref,uint,uint,int):int (FullOpts)
-26 (-9.29 % of base) : 56693.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
-10 (-9.26 % of base) : 142477.dasm - System.SpanHelpers:LastIndexOfAnyInRange[long](byref,long,long,int):int (FullOpts)
-14 (-8.86 % of base) : 150337.dasm - System.Net.Mail.MailCommand:CheckResponse(int,System.String) (FullOpts)
-6 (-8.82 % of base) : 143999.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[uint](byref,uint,uint,int):int (FullOpts)
-12 (-8.45 % of base) : 7797.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
-72 (-8.00 % of base) : 160683.dasm - System.Numerics.Tests.QuaternionTests:QuaternionEqualsTest():this (FullOpts)
-72 (-8.00 % of base) : 160950.dasm - System.Numerics.Tests.Vector4Tests:Vector4EqualsTest():this (FullOpts)
-12 (-7.69 % of base) : 15162.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]:JoinPendingBranches(byref,Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol):this (FullOpts)
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: 13606712 (overridden on cmd)
Total bytes of diff: 13605678 (overridden on cmd)
Total bytes of delta: -1034 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
2 : 4131.dasm (0.85 % of base)
Top file improvements (bytes):
-144 : 5539.dasm (-37.89 % of base)
-78 : 6267.dasm (-5.95 % of base)
-56 : 7890.dasm (-0.56 % of base)
-46 : 26332.dasm (-1.19 % of base)
-36 : 16939.dasm (-2.88 % of base)
-34 : 758.dasm (-58.62 % of base)
-32 : 9773.dasm (-1.48 % of base)
-30 : 32174.dasm (-0.74 % of base)
-26 : 31644.dasm (-9.29 % of base)
-26 : 11358.dasm (-26.00 % of base)
-26 : 23901.dasm (-0.54 % of base)
-24 : 1483.dasm (-2.91 % of base)
-22 : 32919.dasm (-14.47 % of base)
-18 : 8373.dasm (-4.86 % of base)
-16 : 11361.dasm (-2.77 % of base)
-16 : 11309.dasm (-1.76 % of base)
-16 : 2295.dasm (-2.45 % of base)
-16 : 26120.dasm (-1.13 % of base)
-16 : 26492.dasm (-1.05 % of base)
-16 : 28265.dasm (-2.83 % of base)
54 total files with Code Size differences (53 improved, 1 regressed), 1 unchanged.
Top method regressions (bytes):
2 (0.85 % of base) : 4131.dasm - FSharp.Compiler.CompilerConfig+TcConfig:computeKnownDllReference(System.String):System.Tuple`2[FSharp.Compiler.CompilerConfig+AssemblyReference,Microsoft.FSharp.Core.FSharpOption`1[System.String]]:this (FullOpts)
Top method improvements (bytes):
-144 (-37.89 % of base) : 5539.dasm - FSharp.Compiler.LexFilter:tokenForcesHeadContextClosure@1347(FSharp.Compiler.LexFilter+LexFilterImpl,FSharp.Compiler.Parser+token,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.LexFilter+Context]):ubyte (FullOpts)
-78 (-5.95 % of base) : 6267.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericCompare(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Object,System.Object):int (FullOpts)
-56 (-0.56 % of base) : 7890.dasm - FSharp.Compiler.AugmentWithHashCompare:CheckAugmentationAttribs(ubyte,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,FSharp.Compiler.TypedTree+Entity) (FullOpts)
-46 (-1.19 % of base) : 26332.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMethodSymbolWithAttributes:DecodeDllImportAttribute(byref):this (FullOpts)
-36 (-2.88 % of base) : 16939.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:FindLongestMatch(int):ubyte:this (FullOpts)
-34 (-58.62 % of base) : 758.dasm - BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<<GetFullInfo>g__GetCurrentProcessInstructionSets|2_0>d:MoveNext():ubyte:this (FullOpts)
-32 (-1.48 % of base) : 9773.dasm - FSharp.Compiler.ConstraintSolver:consistent@1992(FSharp.Compiler.ConstraintSolver+ConstraintSolverEnv,int,FSharp.Compiler.Text.Range,FSharp.Compiler.ConstraintSolver+OptionalTrace,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+TyparConstraint,FSharp.Compiler.TypedTree+TyparConstraint):FSharp.Compiler.ErrorLogger+OperationResult`1[Microsoft.FSharp.Core.Unit] (FullOpts)
-30 (-0.74 % of base) : 32174.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:LowerEvaluation(Microsoft.CodeAnalysis.CSharp.BoundDagEvaluation):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-26 (-26.00 % of base) : 11358.dasm - FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
-26 (-0.54 % of base) : 23901.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
-26 (-9.29 % of base) : 31644.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
-24 (-2.91 % of base) : 1483.dasm - BepuUtilities.Collections.QuickSort:Sort[int,BepuPhysics.Trees.Tree+IndexMapComparer](byref,int,int,byref) (FullOpts)
-22 (-14.47 % of base) : 32919.dasm - 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)
-18 (-4.86 % of base) : 8373.dasm - FSharp.Compiler.LexFilter:infixTokenLength(FSharp.Compiler.Parser+token):int (FullOpts)
-16 (-2.45 % of base) : 2295.dasm - BepuUtilities.Collections.QuickSort:Sort[BepuPhysics.CollisionDetection.TypeBatchIndex,BepuPhysics.CollisionDetection.ConstraintRemover+RemovalsForTypeBatch,BepuPhysics.CollisionDetection.ConstraintRemover+TypeBatchIndexComparer](byref,byref,int,int,byref) (FullOpts)
-16 (-1.76 % of base) : 11309.dasm - FSharp.Compiler.AccessibilityLogic:IsPropInfoAccessible(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,FSharp.Compiler.Text.Range,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.Infos+PropInfo):ubyte (FullOpts)
-16 (-2.77 % of base) : 11361.dasm - FSharp.Compiler.Infos+PropInfo:get_IsIndexer():ubyte:this (FullOpts)
-16 (-1.13 % of base) : 26120.dasm - Microsoft.CodeAnalysis.AttributeData:DecodeStructLayoutAttribute[System.__Canon,System.__Canon,System.__Canon,short](byref,int,int,Microsoft.CodeAnalysis.CommonMessageProvider) (FullOpts)
-16 (-2.83 % of base) : 28265.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddDelegateOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature]):this (FullOpts)
-16 (-1.05 % of base) : 26492.dasm - Microsoft.CodeAnalysis.MarshalAsAttributeDecoder`4[System.__Canon,System.__Canon,System.__Canon,short]:DecodeMarshalAsArray(byref,Microsoft.CodeAnalysis.CommonMessageProvider,ubyte) (FullOpts)
Top method regressions (percentages):
2 (0.85 % of base) : 4131.dasm - FSharp.Compiler.CompilerConfig+TcConfig:computeKnownDllReference(System.String):System.Tuple`2[FSharp.Compiler.CompilerConfig+AssemblyReference,Microsoft.FSharp.Core.FSharpOption`1[System.String]]:this (FullOpts)
Top method improvements (percentages):
-34 (-58.62 % of base) : 758.dasm - BenchmarkDotNet.Portability.Cpu.HardwareIntrinsics+<<GetFullInfo>g__GetCurrentProcessInstructionSets|2_0>d:MoveNext():ubyte:this (FullOpts)
-144 (-37.89 % of base) : 5539.dasm - FSharp.Compiler.LexFilter:tokenForcesHeadContextClosure@1347(FSharp.Compiler.LexFilter+LexFilterImpl,FSharp.Compiler.Parser+token,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.LexFilter+Context]):ubyte (FullOpts)
-26 (-26.00 % of base) : 11358.dasm - FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
-22 (-14.47 % of base) : 32919.dasm - 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)
-26 (-9.29 % of base) : 31644.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
-12 (-8.45 % of base) : 28053.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
-12 (-7.69 % of base) : 28800.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:JoinPendingBranches(byref,Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol):this (FullOpts)
-12 (-7.14 % of base) : 29596.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]:ResolveBranches(Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):ubyte:this (FullOpts)
-78 (-5.95 % of base) : 6267.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericCompare(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Object,System.Object):int (FullOpts)
-10 (-4.90 % of base) : 24441.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDependencies(System.Collections.Immutable.ImmutableArray`1[System.__Canon]):this (FullOpts)
-18 (-4.86 % of base) : 8373.dasm - FSharp.Compiler.LexFilter:infixTokenLength(FSharp.Compiler.Parser+token):int (FullOpts)
-10 (-4.00 % of base) : 18146.dasm - System.Uri:get_HostNameType():int:this (FullOpts)
-4 (-3.33 % of base) : 26423.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AttributeDataExtensions:DecodeNotNullIfNotNullAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):System.String (FullOpts)
-12 (-3.14 % of base) : 24425.dasm - Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MatchPropertySignature(System.__Canon,System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte:this (FullOpts)
-12 (-3.09 % of base) : 24303.dasm - Microsoft.CodeAnalysis.RuntimeMembers.SignatureComparer`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:MatchMethodSignature(System.__Canon,System.Collections.Immutable.ImmutableArray`1[ubyte]):ubyte:this (FullOpts)
-24 (-2.91 % of base) : 1483.dasm - BepuUtilities.Collections.QuickSort:Sort[int,BepuPhysics.Trees.Tree+IndexMapComparer](byref,int,int,byref) (FullOpts)
-4 (-2.90 % of base) : 26426.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbolBase:DecodeMaybeNullWhenOrNotNullWhenOrDoesNotReturnIfAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):System.Nullable`1[ubyte] (FullOpts)
-36 (-2.88 % of base) : 16939.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:FindLongestMatch(int):ubyte:this (FullOpts)
-12 (-2.83 % of base) : 22990.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyDataForAssemblyBeingBuilt[System.__Canon,System.__Canon]:.ctor(Microsoft.CodeAnalysis.AssemblyIdentity,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]):this (FullOpts)
-16 (-2.83 % of base) : 28265.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddDelegateOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature]):this (FullOpts)
windows x86
Diffs are based on 2,293,423 contexts (839,658 MinOpts, 1,453,765 FullOpts).
MISSED contexts: base: 38 (0.00%), diff: 73 (0.00%)
Overall (-22,900 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.windows.x86.checked.mch |
7,122,447 |
-258 |
| benchmarks.run_pgo.windows.x86.checked.mch |
44,974,277 |
-1,135 |
| benchmarks.run_tiered.windows.x86.checked.mch |
9,469,950 |
-180 |
| coreclr_tests.run.windows.x86.checked.mch |
309,369,241 |
-3,767 |
| libraries.crossgen2.windows.x86.checked.mch |
31,716,544 |
-1,340 |
| libraries.pmi.windows.x86.checked.mch |
49,268,131 |
-2,473 |
| libraries_tests.run.windows.x86.Release.mch |
186,645,391 |
-9,027 |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
103,801,389 |
-3,789 |
| realworld.run.windows.x86.checked.mch |
11,353,700 |
-931 |
FullOpts (-22,900 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.windows.x86.checked.mch |
7,122,166 |
-258 |
| benchmarks.run_pgo.windows.x86.checked.mch |
38,385,646 |
-1,135 |
| benchmarks.run_tiered.windows.x86.checked.mch |
5,200,129 |
-180 |
| coreclr_tests.run.windows.x86.checked.mch |
107,581,107 |
-3,767 |
| libraries.crossgen2.windows.x86.checked.mch |
31,715,484 |
-1,340 |
| libraries.pmi.windows.x86.checked.mch |
49,172,898 |
-2,473 |
| libraries_tests.run.windows.x86.Release.mch |
88,371,691 |
-9,027 |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
95,121,325 |
-3,789 |
| realworld.run.windows.x86.checked.mch |
11,057,986 |
-931 |
Example diffs
benchmarks.run.windows.x86.checked.mch
-14 (-9.21%) : 22162.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%) : 23048.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%) : 5594.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%) : 9787.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%) : 15167.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%) : 13875.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%) : 44097.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)
; ============================================================
-14 (-19.18%) : 116373.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%) : 41298.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)
; ============================================================
-2 (-0.25%) : 33824.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 ) 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 ) int -> ecx "Inlining Arg"
-; V29 tmp22 [V29,T09] ( 3, 2 ) int -> edi "Inline stloc first use temp"
+; V29 tmp22 [V29,T10] ( 3, 2 ) 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 ) byref -> edx "field V25._reference (fldOffset=0x0)" P-INDEP
-; V35 tmp28 [V35,T10] ( 3, 2 ) int -> ecx "field V25._length (fldOffset=0x4)" P-INDEP
+; V34 tmp27 [V34,T07] ( 3, 2 ) byref -> edx "field V25._reference (fldOffset=0x0)" P-INDEP
+; V35 tmp28 [V35,T11] ( 3, 2 ) 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_IG25
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]
@@ -475,7 +476,7 @@ G_M11429_IG25: ; 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%) : 116678.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 ) 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, 6 ) 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,T12] ( 4, 3 ) 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,T14] ( 5, 2 ) 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,T15] ( 3, 2 ) ref -> ebx "guarded devirt return temp"
+; V11 tmp5 [V11,T26] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V12 tmp6 [V12,T15] ( 5, 2 ) 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,T16] ( 3, 2 ) 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,T20] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V18 tmp12 [V18,T19] ( 2, 0 ) ubyte -> eax "Inline return value spill temp"
+;* V17 tmp11 [V17,T21] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V18 tmp12 [V18,T20] ( 2, 0 ) ubyte -> eax "Inline return value spill temp"
; V19 tmp13 [V19,T08] ( 2, 4 ) ref -> ebx class-hnd single-def "impAppendStmt" <System.Net.IPAddress>
; V20 tmp14 [V20,T02] ( 4, 8 ) ref -> [ebp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <System.Net.SocketAddress>
; V21 tmp15 [V21,T07] ( 3, 4 ) int -> [ebp-0x24] spill-single-def "Inlining Arg"
@@ -43,18 +43,18 @@
;* 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,T17] ( 3, 2 ) ushort -> eax ld-addr-op "Inline stloc first use temp"
+; V34 tmp28 [V34,T18] ( 3, 2 ) 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,T18] ( 3, 2 ) int -> eax "Inline stloc first use temp"
+; V37 tmp31 [V37,T19] ( 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,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V42 tmp36 [V42,T22] ( 1, 1 ) ref -> [ebp+0x08] single-def "field V02._source (fldOffset=0x0)" P-INDEP
+;* V41 tmp35 [V41,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V42 tmp36 [V42,T23] ( 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,T16] ( 3, 2 ) byref -> ecx "field V24._reference (fldOffset=0x0)" P-INDEP
+; V45 tmp39 [V45,T17] ( 3, 2 ) byref -> ecx "field V24._reference (fldOffset=0x0)" P-INDEP
; V46 tmp40 [V46,T11] ( 5, 3 ) 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
@@ -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,T13] ( 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,T13] ( 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,T14] ( 3, 3 ) ref -> edx "CSE - conservative"
;
; Lcl frame size = 56
@@ -207,10 +208,10 @@ G_M38239_IG07: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
jne G_M38239_IG26
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_IG08: ; 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]
@@ -225,7 +226,7 @@ G_M38239_IG08: ; bbWeight=1, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=
test edx, edx
je G_M38239_IG27
;; size=25 bbWeight=1 PerfScore 7.75
-G_M38239_IG09: ; bbWeight=1, gcVars=0000000000800003 {V00 V01 V04}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M38239_IG09: ; 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]
@@ -269,13 +270,13 @@ G_M38239_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
call CORINFO_HELP_RETHROW
int3
;; size=34 bbWeight=0 PerfScore 0.00
-G_M38239_IG12: ; bbWeight=1, gcVars=0000000000800002 {V00 V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars +{V00 V01 V04 V23}
+G_M38239_IG12: ; bbWeight=1, gcVars=0000000001000002 {V00 V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars +{V00 V01 V04}
test ebx, ebx
jne G_M38239_IG28
;; size=8 bbWeight=1 PerfScore 1.25
G_M38239_IG13: ; 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
@@ -343,9 +344,9 @@ G_M38239_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
call CORINFO_HELP_THROW
; gcrRegs -[ecx edi]
;; size=80 bbWeight=0 PerfScore 0.00
-G_M38239_IG18: ; bbWeight=0, gcVars=0000000000004003 {V00 V01 V12}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M38239_IG18: ; bbWeight=0, gcVars=0000000000008003 {V00 V01 V12}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[ebx esi edi]
- ; GC ptr vars +{V00 V01 V12 V14}
+ ; GC ptr vars +{V00 V01 V12}
mov ecx, gword ptr [ebp-0x2C]
; gcrRegs +[ecx]
call [System.Net.Sockets.Socket:get_DualMode():ubyte:this]
@@ -356,7 +357,7 @@ G_M38239_IG18: ; bbWeight=0, gcVars=0000000000004003 {V00 V01 V12}, gcref
; gcrRegs +[eax]
mov ecx, eax
; gcrRegs +[ecx]
- ; GC ptr vars -{V12 V14}
+ ; GC ptr vars -{V12}
call [System.Net.IPAddress:MapToIPv6():System.Net.IPAddress:this]
; gcrRegs -[ecx edi]
mov edi, eax
@@ -500,8 +501,8 @@ G_M38239_IG26: ; bbWeight=0, gcVars=0000000000000003 {V00 V01}, gcrefRegs
; gcrRegs +[ecx]
jmp G_M38239_IG08
;; size=22 bbWeight=0 PerfScore 0.00
-G_M38239_IG27: ; bbWeight=0, gcVars=0000000000800003 {V00 V01 V04}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars +{V04 V23}
+G_M38239_IG27: ; 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
@@ -511,9 +512,9 @@ G_M38239_IG27: ; bbWeight=0, gcVars=0000000000800003 {V00 V01 V04}, gcref
; gcrRegs +[ecx]
jmp G_M38239_IG09
;; size=16 bbWeight=0 PerfScore 0.00
-G_M38239_IG28: ; bbWeight=0, gcVars=0000000000800002 {V00 V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M38239_IG28: ; 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_IG13
push 1
@@ -538,7 +539,7 @@ G_M38239_IG28: ; bbWeight=0, gcVars=0000000000800002 {V00 V04}, gcrefRegs
jmp G_M38239_IG13
;; size=49 bbWeight=0 PerfScore 0.00
-; Total bytes of code 893, prolog size 14, PerfScore 131.25, 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.25, 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%) : 47541.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%) : 44520.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%) : 45444.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%) : 30155.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%) : 23969.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%) : 43972.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%) : 27527.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%) : 230250.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%) : 226126.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%) : 230198.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%) : 223754.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%) : 170491.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%) : 170326.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%) : 88159.dasm - System.Xml.XmlConvert:CreateException(System.String,System.String,int,int,int):System.Exception (FullOpts)
@@ -14,8 +14,8 @@
; V02 arg2 [V02,T06] ( 1, 1 ) int -> [ebp+0x10] single-def
; V03 arg3 [V03,T07] ( 1, 0.50) int -> [ebp+0x0C] single-def
; V04 arg4 [V04,T08] ( 1, 0.50) int -> [ebp+0x08] single-def
-; V05 tmp0 [V05,T02] ( 3, 3 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V06 tmp1 [V06,T05] ( 2, 2 ) ref -> esi class-hnd single-def "finalizable newobj spill" <System.String>
+; V05 tmp0 [V05,T02] ( 3, 3 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V06 tmp1 [V06,T05] ( 2, 2 ) ref -> edi class-hnd single-def "finalizable newobj spill" <System.String>
; V07 tmp2 [V07,T03] ( 3, 3 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlException>
; V08 tmp3 [V08,T04] ( 3, 3 ) ref -> eax class-hnd exact single-def "dup spill" <System.String[]>
;
@@ -34,9 +34,38 @@ G_M23253_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
;; size=10 bbWeight=1 PerfScore 4.75
G_M23253_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [ebp+0x10], 0
- je SHORT G_M23253_IG05
+ jne SHORT G_M23253_IG05
;; size=6 bbWeight=1 PerfScore 3.00
G_M23253_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ mov ecx, esi
+ ; gcrRegs +[ecx]
+ mov edx, edi
+ ; gcrRegs +[edx]
+ call [<unknown method>]
+ ; gcrRegs -[ecx edx esi edi] +[eax]
+ mov edi, eax
+ ; gcrRegs +[edi]
+ call [CORINFO_HELP_READYTORUN_NEW]
+ mov esi, eax
+ ; gcrRegs +[esi]
+ mov ecx, esi
+ ; gcrRegs +[ecx]
+ mov edx, edi
+ ; gcrRegs +[edx]
+ call [<unknown method>]
+ ; gcrRegs -[eax ecx edx edi]
+ mov eax, esi
+ ; gcrRegs +[eax]
+ ;; size=32 bbWeight=0.50 PerfScore 5.38
+G_M23253_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ pop ebx
+ pop esi
+ pop edi
+ pop ebp
+ ret 12
+ ;; size=7 bbWeight=0.50 PerfScore 2.00
+G_M23253_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax] +[edi]
call [CORINFO_HELP_READYTORUN_NEW]
; gcrRegs +[eax]
mov ebx, eax
@@ -62,35 +91,6 @@ G_M23253_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
mov eax, ebx
; gcrRegs +[eax]
;; size=51 bbWeight=0.50 PerfScore 9.38
-G_M23253_IG04: ; bbWeight=0.50, epilog, nogc, extend
- pop ebx
- pop esi
- pop edi
- pop ebp
- ret 12
- ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M23253_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax ebx] +[esi edi]
- mov ecx, esi
- ; gcrRegs +[ecx]
- mov edx, edi
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[ecx edx esi edi] +[eax]
- mov esi, eax
- ; gcrRegs +[esi]
- call [CORINFO_HELP_READYTORUN_NEW]
- 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=32 bbWeight=0.50 PerfScore 5.38
G_M23253_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop ebx
pop esi
+16 (+3.80%) : 80049.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)
; ============================================================
+16 (+3.80%) : 80047.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)
; ============================================================
libraries.pmi.windows.x86.checked.mch
-7 (-41.18%) : 243535.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%) : 255496.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%) : 260685.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%) : 82904.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%) : 167237.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%) : 167239.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
-35 (-48.61%) : 548654.dasm - System.Text.Json.JsonSerializerOptions:ConfigureForJsonSerializer():this (Tier1)
@@ -10,14 +10,13 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 6, 5.91) ref -> esi this class-hnd single-def <System.Text.Json.JsonSerializerOptions>
-; V01 loc0 [V01,T02] ( 2, 1.91) ref -> eax class-hnd single-def <System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver>
+; V01 loc0 [V01,T01] ( 2, 1.91) 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,T01] ( 4, 2.10) 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,T03] ( 6, 0.71) ref -> eax 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.91, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[edx]
lea edx, bword ptr [esi+0x10]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EAX
@@ -53,38 +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.09, gcVars=00000000 {}, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[edx]
- mov eax, edx
- ; gcrRegs +[eax]
- test eax, eax
- je SHORT G_M49072_IG10
- ;; size=6 bbWeight=0.09 PerfScore 0.13
-G_M49072_IG07: ; bbWeight=0.04, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [eax], 0xD1FFAB1E
- je SHORT G_M49072_IG09
- ;; size=8 bbWeight=0.04 PerfScore 0.18
-G_M49072_IG08: ; bbWeight=0.01, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]
- mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[edx] +[eax]
- jmp SHORT G_M49072_IG10
- ;; size=12 bbWeight=0.01 PerfScore 0.05
-G_M49072_IG09: ; bbWeight=0.03, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- xor eax, eax
- ; gcrRegs +[eax]
- ;; size=2 bbWeight=0.03 PerfScore 0.01
-G_M49072_IG10: ; bbWeight=0.09, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
- test eax, eax
- jne SHORT G_M49072_IG04
- ;; size=4 bbWeight=0.09 PerfScore 0.11
-G_M49072_IG11: ; bbWeight=0.09, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]
- jmp SHORT G_M49072_IG04
- ;; size=2 bbWeight=0.09 PerfScore 0.17
-; Total bytes of code 72, prolog size 4, PerfScore 14.77, instruction count 27, allocated bytes for code 72 (MethodHash=7b2a404f) for method System.Text.Json.JsonSerializerOptions:ConfigureForJsonSerializer():this (Tier1)
+; Total bytes of code 37, prolog size 4, PerfScore 14.87, instruction count 14, allocated bytes for code 37 (MethodHash=7b2a404f) for method System.Text.Json.JsonSerializerOptions:ConfigureForJsonSerializer():this (Tier1)
; ============================================================
-37 (-37.76%) : 153769.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)
; ============================================================
-37 (-37.76%) : 80870.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.22) 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_IG06
- mov esi, dword ptr [eax+0x1C]
- test esi, 0xD1FFAB1E
+ jne SHORT G_M46606_IG05
+ 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_IG05
+ test edx, 0xD1FFAB1E
+ je SHORT G_M46606_IG04
lea edx, bword ptr [ecx+0x0C]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EAX
@@ -48,32 +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
-G_M46606_IG05: ; bbWeight=0.06, gcVars=00000000 {}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
- 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.06 PerfScore 0.39
-G_M46606_IG06: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+ ;; 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_IG07: ; bbWeight=0, epilog, nogc, extend
- pop esi
+G_M46606_IG06: ; bbWeight=0, epilog, nogc, extend
pop ebp
ret
- ;; size=3 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=0 PerfScore 0.00
-; Total bytes of code 98, prolog size 4, PerfScore 18.39, 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)
; ============================================================
+20 (+2.07%) : 589058.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29496_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -16,7 +16,7 @@
;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V06 loc4 [V06,T04] ( 18, 69 ) int -> [ebp-0x18]
;* V07 loc5 [V07 ] ( 0, 0 ) int -> zero-ref
-; V08 loc6 [V08,T12] ( 8, 25 ) int -> [ebp-0x1C]
+; V08 loc6 [V08,T12] ( 7, 24.50) int -> [ebp-0x1C]
; V09 loc7 [V09,T30] ( 4, 12.01) int -> [ebp-0x20] spill-single-def
; V10 loc8 [V10,T07] ( 12, 54 ) int -> [ebp-0x24]
; V11 tmp0 [V11,T14] ( 3, 24 ) ref -> edi class-hnd "impAppendStmt" <<unknown class>>
@@ -40,14 +40,14 @@
; V29 tmp18 [V29,T27] ( 2, 16 ) byref -> [ebp-0x58] spill-single-def "Inlining Arg"
; V30 tmp19 [V30,T08] ( 3, 48 ) int -> ecx "Inline stloc first use temp"
; V31 tmp20 [V31,T05] ( 4, 64 ) int -> ecx "Inline stloc first use temp"
-; V32 tmp21 [V32,T01] ( 3, 96 ) ref -> edx class-hnd "impAppendStmt" <<unknown class>>
+; V32 tmp21 [V32,T01] ( 3, 96 ) ref -> eax class-hnd "impAppendStmt" <<unknown class>>
;* V33 tmp22 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
; V34 tmp23 [V34,T02] ( 3, 96 ) byref -> ecx "dup spill"
; V35 tmp24 [V35,T47] ( 4, 3.00) int -> [ebp-0x40] "Inlining Arg"
; V36 tmp25 [V36,T45] ( 5, 4.00) int -> registers "Inlining Arg"
;* V37 tmp26 [V37 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V38 tmp27 [V38,T49] ( 4, 2 ) int -> eax single-def "Inline stloc first use temp"
-; V39 tmp28 [V39,T48] ( 3, 3 ) ref -> edx class-hnd single-def "impAppendStmt" <<unknown class>>
+; V38 tmp27 [V38,T49] ( 4, 2 ) int -> edx single-def "Inline stloc first use temp"
+; V39 tmp28 [V39,T48] ( 3, 3 ) ref -> ecx class-hnd single-def "impAppendStmt" <<unknown class>>
; V40 tmp29 [V40,T43] ( 3, 6 ) int -> ecx "Inline stloc first use temp"
; V41 tmp30 [V41,T36] ( 4, 8 ) int -> edx "Inline stloc first use temp"
; V42 tmp31 [V42,T31] ( 3, 12 ) ref -> ecx class-hnd "impAppendStmt" <<unknown class>>
@@ -66,10 +66,10 @@
; V55 tmp44 [V55,T38] ( 2, 8 ) byref -> edx "field V27._reference (fldOffset=0x0)" P-INDEP
; V56 tmp45 [V56,T40] ( 2, 8 ) int -> eax "field V27._length (fldOffset=0x4)" P-INDEP
; V57 tmp46 [V57,T16] ( 3, 24 ) ref -> edi "arr expr"
-; V58 tmp47 [V58,T17] ( 3, 24 ) ref -> eax "arr expr"
-; V59 tmp48 [V59,T03] ( 3, 96 ) ref -> edx "arr expr"
+; V58 tmp47 [V58,T17] ( 3, 24 ) ref -> edx "arr expr"
+; V59 tmp48 [V59,T03] ( 3, 96 ) ref -> eax "arr expr"
; V60 tmp49 [V60,T18] ( 3, 24 ) ref -> ecx "arr expr"
-; V61 tmp50 [V61,T51] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V61 tmp50 [V61,T51] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
; V62 tmp51 [V62,T33] ( 3, 12 ) ref -> edx "arr expr"
; V63 tmp52 [V63,T28] ( 2, 16 ) ref -> edx "argument with side effect"
; V64 cse0 [V64,T09] ( 4, 40 ) ref -> [ebp-0x64] spill-single-def "CSE - moderate"
@@ -102,7 +102,7 @@ G_M47527_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
xor ecx, ecx
mov dword ptr [ebp-0x18], ecx
cmp edx, ebx
- ja G_M47527_IG36
+ ja G_M47527_IG33
lea edx, bword ptr [edi+2*edx]
; byrRegs +[edx]
mov bword ptr [ebp-0x4C], edx
@@ -123,7 +123,7 @@ G_M47527_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; GC ptr vars +{V47}
mov dword ptr [ebp-0x48], ecx
cmp dword ptr [ebp-0x10], 0
- jne G_M47527_IG34
+ jne G_M47527_IG31
;; size=85 bbWeight=1 PerfScore 26.50
G_M47527_IG03: ; bbWeight=0.50, gcVars=0000000800400000 {V45 V47}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[eax]
@@ -163,12 +163,12 @@ G_M47527_IG06: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs -[eax]
sub eax, dword ptr [esi+0x3C]
cmp ebx, dword ptr [edi+0x04]
- jae G_M47527_IG35
+ jae G_M47527_IG34
mov dword ptr [edi+4*ebx+0x08], eax
inc ebx
mov edi, gword ptr [ebp-0x68]
cmp ebx, dword ptr [edi+0x04]
- jae G_M47527_IG35
+ jae G_M47527_IG34
mov eax, dword ptr [ebp-0x14]
mov dword ptr [edi+4*ebx+0x08], eax
inc ebx
@@ -206,7 +206,7 @@ G_M47527_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
test eax, eax
jle G_M47527_IG17
cmp eax, ecx
- ja G_M47527_IG36
+ ja G_M47527_IG33
mov edi, bword ptr [ebp-0x60]
; byrRegs +[edi]
lea edi, bword ptr [edi+2*eax]
@@ -228,7 +228,7 @@ G_M47527_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov edi, dword ptr [ebp-0x44]
; byrRegs -[edi]
cmp edx, edi
- ja G_M47527_IG36
+ ja G_M47527_IG33
mov ecx, bword ptr [ebp-0x5C]
; byrRegs +[ecx]
lea ecx, bword ptr [ecx+2*edx]
@@ -274,7 +274,7 @@ G_M47527_IG10: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov eax, gword ptr [ebp-0x54]
; gcrRegs +[eax]
cmp edx, dword ptr [eax+0x04]
- jae G_M47527_IG35
+ jae G_M47527_IG34
mov dword ptr [eax+4*edx+0x08], 1
mov edx, gword ptr [esi+0x1C]
; gcrRegs +[edx]
@@ -342,7 +342,7 @@ G_M47527_IG17: ; bbWeight=4, gcVars=0000000800000000 {V45}, gcrefRegs=000
dec edx
mov dword ptr [ebp-0x1C], edx
test edx, edx
- jl G_M47527_IG34
+ jl G_M47527_IG31
jmp SHORT G_M47527_IG19
;; size=17 bbWeight=4 PerfScore 22.00
G_M47527_IG18: ; bbWeight=0.01, gcVars=0000000800400000 {V45 V47}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
@@ -360,11 +360,11 @@ G_M47527_IG19: ; bbWeight=4, gcVars=0000000800000000 {V45}, gcrefRegs=000
mov ecx, gword ptr [esi+0x14]
; gcrRegs +[ecx]
cmp ebx, dword ptr [ecx+0x04]
- jae G_M47527_IG35
+ jae G_M47527_IG34
mov edi, dword ptr [ecx+4*ebx+0x08]
mov eax, dword ptr [ebp-0x44]
cmp edi, eax
- ja G_M47527_IG36
+ ja G_M47527_IG33
mov ecx, bword ptr [ebp-0x5C]
; gcrRegs -[ecx]
; byrRegs +[ecx]
@@ -385,106 +385,127 @@ G_M47527_IG19: ; bbWeight=4, gcVars=0000000800000000 {V45}, gcrefRegs=000
; GC ptr vars +{V47}
mov dword ptr [ebp-0x48], eax
dec ebx
- mov eax, gword ptr [esi+0x14]
- ; gcrRegs +[eax]
- cmp ebx, dword ptr [eax+0x04]
- jae G_M47527_IG35
- mov eax, dword ptr [eax+4*ebx+0x08]
- ; gcrRegs -[eax]
+ mov edx, gword ptr [esi+0x14]
+ ; gcrRegs +[edx]
+ ; byrRegs -[edx]
+ cmp ebx, dword ptr [edx+0x04]
+ jae G_M47527_IG34
+ mov edx, dword ptr [edx+4*ebx+0x08]
+ ; gcrRegs -[edx]
mov ecx, gword ptr [esi+0x18]
; gcrRegs +[ecx]
mov gword ptr [ebp-0x64], ecx
; GC ptr vars +{V64}
- mov edx, dword ptr [ecx+0x04]
- ; byrRegs -[edx]
- sub edx, dword ptr [esi+0x3C]
- mov dword ptr [ebp-0x24], eax
- cmp edx, eax
+ mov eax, dword ptr [ecx+0x04]
+ sub eax, dword ptr [esi+0x3C]
+ mov dword ptr [ebp-0x24], edx
+ cmp eax, edx
jle SHORT G_M47527_IG21
;; size=103 bbWeight=4 PerfScore 163.00
G_M47527_IG20: ; bbWeight=16, gcVars=0000000800400200 {V45 V47 V64}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; GC ptr vars -{V29}
- mov edx, ecx
- ; gcrRegs +[edx]
+ mov eax, ecx
+ ; gcrRegs +[eax]
mov ecx, dword ptr [esi+0x3C]
; gcrRegs -[ecx]
- lea eax, [ecx+0x01]
- mov dword ptr [esi+0x3C], eax
- cmp ecx, dword ptr [edx+0x04]
- jae G_M47527_IG35
- mov ecx, dword ptr [edx+4*ecx+0x08]
- mov edx, gword ptr [esi+0x1C]
- mov edx, gword ptr [edx+0x2C]
- cmp ecx, dword ptr [edx+0x04]
- jae G_M47527_IG35
- lea ecx, bword ptr [edx+4*ecx+0x08]
+ lea edx, [ecx+0x01]
+ mov dword ptr [esi+0x3C], edx
+ cmp ecx, dword ptr [eax+0x04]
+ jae G_M47527_IG34
+ mov ecx, dword ptr [eax+4*ecx+0x08]
+ mov eax, gword ptr [esi+0x1C]
+ mov eax, gword ptr [eax+0x2C]
+ cmp ecx, dword ptr [eax+0x04]
+ jae G_M47527_IG34
+ lea ecx, bword ptr [eax+4*ecx+0x08]
; byrRegs +[ecx]
dec dword ptr [ecx]
mov ecx, gword ptr [ebp-0x64]
; gcrRegs +[ecx]
; byrRegs -[ecx]
- mov edx, dword ptr [ecx+0x04]
- ; gcrRegs -[edx]
- sub edx, dword ptr [esi+0x3C]
- mov eax, dword ptr [ebp-0x24]
- cmp edx, eax
- mov dword ptr [ebp-0x24], eax
+ mov eax, dword ptr [ecx+0x04]
+ ; gcrRegs -[eax]
+ sub eax, dword ptr [esi+0x3C]
+ mov edx, dword ptr [ebp-0x24]
+ cmp eax, edx
+ mov dword ptr [ebp-0x24], edx
jg SHORT G_M47527_IG20
;; size=64 bbWeight=16 PerfScore 496.00
-G_M47527_IG21: ; bbWeight=4, gcVars=0000000800400000 {V45 V47}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M47527_IG21: ; bbWeight=4, gcVars=0000000800400000 {V45 V47}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[ecx]
; GC ptr vars -{V64}
mov ecx, dword ptr [ebp-0x1C]
cmp ecx, 3
- jl SHORT G_M47527_IG30
- cmp dword ptr [ebp-0x48], 0
mov dword ptr [ebp-0x1C], ecx
+ jl G_M47527_IG31
+ mov eax, bword ptr [ebp-0x60]
+ ; byrRegs +[eax]
+ mov ecx, dword ptr [ebp-0x48]
+ test ecx, ecx
+ mov bword ptr [ebp-0x60], eax
je G_M47527_IG17
- mov ecx, bword ptr [ebp-0x60]
- ; byrRegs +[ecx]
- cmp word ptr [ecx], 100
+ mov eax, bword ptr [ebp-0x60]
+ cmp word ptr [eax], 100
jne G_M47527_IG17
- ;; size=34 bbWeight=4 PerfScore 45.00
-G_M47527_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; byrRegs -[ecx]
+ ;; size=45 bbWeight=4 PerfScore 50.00
+G_M47527_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; byrRegs -[eax]
; GC ptr vars -{V45 V47}
inc edi
mov dword ptr [esi+0x30], edi
xor ebx, ebx
- mov ecx, edi
- cmp ecx, ebx
- jl SHORT G_M47527_IG25
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ mov eax, edi
+ cmp eax, ebx
+ jl G_M47527_IG32
+ ;; size=16 bbWeight=0.50 PerfScore 1.50
G_M47527_IG23: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [esi+0x3C], 0
- jne SHORT G_M47527_IG32
+ je SHORT G_M47527_IG30
;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M47527_IG24: ; bbWeight=0.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M47527_IG31
...
+32 (+2.11%) : 598762.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33072_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.00) int -> [ebp-0x44] "Inlining Arg"
; V55 tmp39 [V55,T70] ( 5, 4.00) 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,T50] ( 4, 8 ) int -> edx "Inline stloc first use temp"
-; V61 tmp45 [V61,T38] ( 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,T50] ( 4, 8 ) int -> ecx "Inline stloc first use temp"
+; V61 tmp45 [V61,T38] ( 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,T39] ( 3, 12 ) byref -> ecx "dup spill"
+; V63 tmp47 [V63,T39] ( 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,T40] ( 3, 12 ) ref -> edx "arr expr"
+; V95 tmp79 [V95,T05] ( 3, 96 ) ref -> eax "arr expr"
+; V96 tmp80 [V96,T40] ( 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.03) int -> edx "CSE - conservative"
; V99 cse1 [V99,T37] ( 4, 9.51) int -> [ebp-0x58] spill-single-def "CSE - conservative"
@@ -145,7 +145,7 @@ G_M9058_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
xor ecx, ecx
mov dword ptr [ebp-0x18], ecx
cmp edx, ebx
- ja G_M9058_IG47
+ ja G_M9058_IG48
lea eax, bword ptr [edi+2*edx]
; byrRegs +[eax]
mov bword ptr [ebp-0x68], eax
@@ -159,19 +159,19 @@ G_M9058_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
shr ecx, 31
call [<unknown method>]
cmp dword ptr [ebp-0x2C], 0
- je G_M9058_IG21
+ je G_M9058_IG42
;; size=72 bbWeight=1 PerfScore 19.75
G_M9058_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_M9058_IG21
+ jne G_M9058_IG42
mov eax, dword ptr [ebp-0x10]
lea ecx, [eax+0x01]
; byrRegs -[ecx]
mov edx, ecx
cmp edx, ebx
- ja G_M9058_IG47
+ ja G_M9058_IG48
lea ecx, bword ptr [edi+2*edx]
; byrRegs +[ecx]
mov bword ptr [ebp-0x6C], ecx
@@ -190,14 +190,14 @@ G_M9058_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=000000
mov ecx, dword ptr [ebp-0x14]
mov eax, ecx
cmp eax, edx
- jl G_M9058_IG38
+ jl G_M9058_IG46
;; size=74 bbWeight=0.50 PerfScore 9.75
G_M9058_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_M9058_IG34
+ je G_M9058_IG45
;; size=19 bbWeight=0.50 PerfScore 3.50
G_M9058_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
mov eax, gword ptr [esi+0x18]
@@ -211,7 +211,7 @@ G_M9058_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=000000
mov edx, gword ptr [ebp-0x70]
; gcrRegs +[edx]
cmp eax, dword ptr [edx+0x04]
- jae G_M9058_IG46
+ jae G_M9058_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_M9058_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=000000
call [<unknown method>]
; gcrRegs -[ecx]
cmp dword ptr [ebp-0x30], 0
- je G_M9058_IG21
+ je G_M9058_IG42
mov ecx, bword ptr [ebp-0x6C]
; byrRegs +[ecx]
cmp word ptr [ecx], 88
- jne G_M9058_IG21
+ jne G_M9058_IG42
mov eax, dword ptr [ebp-0x14]
inc eax
cmp eax, ebx
- ja G_M9058_IG47
+ ja G_M9058_IG48
lea edx, bword ptr [edi+2*eax]
; byrRegs +[edx]
mov bword ptr [ebp-0x74], edx
@@ -305,7 +305,7 @@ G_M9058_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_M9058_IG46
+ jae G_M9058_IG47
mov edi, gword ptr [ebp-0x64]
; gcrRegs +[edi]
mov edx, dword ptr [ebp-0x28]
@@ -315,7 +315,7 @@ G_M9058_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov edx, edi
; gcrRegs +[edx]
cmp eax, dword ptr [ebp-0x60]
- jae G_M9058_IG46
+ jae G_M9058_IG47
mov edi, dword ptr [ebp-0x20]
; gcrRegs -[edi]
mov dword ptr [edx+4*eax+0x08], edi
@@ -323,7 +323,7 @@ G_M9058_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov edi, gword ptr [ebp-0xA8]
; gcrRegs +[edi]
cmp eax, dword ptr [ebp-0x60]
- jae G_M9058_IG46
+ jae G_M9058_IG47
mov edx, dword ptr [ebp-0x14]
; gcrRegs -[edx]
mov dword ptr [edi+4*eax+0x08], edx
@@ -338,7 +338,7 @@ G_M9058_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_M9058_IG31
+ jbe G_M9058_IG35
;; size=135 bbWeight=4 PerfScore 190.00
G_M9058_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_M9058_IG09: ; bbWeight=2, gcVars=000000000000000001018000 {V33 V64 V66}
; gcrRegs -[edi]
mov dword ptr [ebp-0x58], edi
test edi, edi
- jle G_M9058_IG30
+ jle G_M9058_IG34
;; size=14 bbWeight=2 PerfScore 8.50
G_M9058_IG10: ; bbWeight=1.51, 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_M9058_IG46
+ jbe G_M9058_IG47
mov edi, gword ptr [edi+0x0C]
mov gword ptr [ebp-0xA0], edi
; GC ptr vars +{V100}
@@ -370,22 +370,22 @@ G_M9058_IG10: ; bbWeight=1.51, gcrefRegs=00000040 {esi}, byrefRegs=000000
mov dword ptr [ebp-0x5C], edi
mov edi, dword ptr [ebp-0x54]
cmp edi, dword ptr [ebp-0x5C]
- jae G_M9058_IG46
+ jae G_M9058_IG47
mov edx, gword ptr [ebp-0x90]
; gcrRegs +[edx]
mov edx, dword ptr [edx+4*edi+0x08]
; gcrRegs -[edx]
cmp edx, -2
- je G_M9058_IG29
+ je G_M9058_IG33
;; size=87 bbWeight=1.51 PerfScore 38.97
G_M9058_IG11: ; bbWeight=4, gcVars=000000000000040000018000 {V64 V66 V100}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V33 V81}
test edx, edx
- jl G_M9058_IG33
+ jl G_M9058_IG44
;; size=8 bbWeight=4 PerfScore 5.00
G_M9058_IG12: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
cmp dword ptr [ebp-0x50], edx
- jl G_M9058_IG28
+ jl G_M9058_IG32
mov edi, gword ptr [ebp-0xA0]
; gcrRegs +[edi]
mov gword ptr [ebp-0x98], edi
@@ -394,38 +394,38 @@ G_M9058_IG12: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs -[edi]
lea edi, [2*edi-0x02]
cmp edi, dword ptr [ebp-0x5C]
- jae G_M9058_IG46
+ jae G_M9058_IG47
mov ecx, gword ptr [ebp-0x98]
; gcrRegs +[ecx]
mov ecx, dword ptr [ecx+4*edi+0x08]
; gcrRegs -[ecx]
test ecx, ecx
- jl G_M9058_IG32
+ jl G_M9058_IG43
;; size=58 bbWeight=4 PerfScore 55.00
G_M9058_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_M9058_IG27
+ jle G_M9058_IG31
;; size=13 bbWeight=4 PerfScore 10.00
G_M9058_IG14: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
add ecx, edi
cmp ecx, ebx
- jae G_M9058_IG46
+ jae G_M9058_IG47
mov ebx, bword ptr [ebp-0x84]
; byrRegs +[ebx]
movzx ecx, word ptr [ebx+2*ecx]
cmp edi, dword ptr [ebp-0x50]
- jae G_M9058_IG46
+ jae G_M9058_IG47
mov ebx, bword ptr [ebp-0x88]
cmp cx, word ptr [ebx+2*edi]
- jne G_M9058_IG18
+ jne G_M9058_IG19
inc edi
cmp edi, edx
mov bword ptr [ebp-0x88], ebx
mov ecx, dword ptr [ebp-0x24]
- jl G_M9058_IG26
+ jl G_M9058_IG30
;; size=63 bbWeight=16 PerfScore 256.00
G_M9058_IG15: ; bbWeight=4, gcVars=000000000000000000010000 {V64}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[ebx]
@@ -434,7 +434,7 @@ G_M9058_IG15: ; bbWeight=4, gcVars=000000000000000000010000 {V64}, gcrefR
mov ebx, edx
mov edx, dword ptr [ebp-0x4C]
cmp ebx, edx
- ja G_M9058_IG47
+ ja G_M9058_IG48
mov ecx, bword ptr [ebp-0x84]
; byrRegs +[ecx]
...
+33 (+2.58%) : 598873.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33117_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-0x64] 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.00) int -> [ebp-0x38] "Inlining Arg"
; V52 tmp36 [V52,T69] ( 5, 4.00) 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,T50] ( 4, 8 ) int -> edx "Inline stloc first use temp"
-; V58 tmp42 [V58,T38] ( 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,T50] ( 4, 8 ) int -> ecx "Inline stloc first use temp"
+; V58 tmp42 [V58,T38] ( 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,T39] ( 3, 12 ) byref -> ecx "dup spill"
+; V60 tmp44 [V60,T39] ( 3, 12 ) byref -> edx "dup spill"
; V61 tmp45 [V61,T16] ( 6, 26.50) byref -> [ebp-0x68] 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-0x6C] "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,T40] ( 3, 12 ) ref -> edx "arr expr"
+; V90 tmp74 [V90,T05] ( 3, 96 ) ref -> eax "arr expr"
+; V91 tmp75 [V91,T40] ( 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.03) int -> eax "CSE - conservative"
; V94 cse1 [V94,T37] ( 4, 9.51) int -> [ebp-0x48] spill-single-def "CSE - conservative"
@@ -139,7 +139,7 @@ G_M62176_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
xor edx, edx
mov dword ptr [ebp-0x18], edx
cmp eax, ebx
- ja G_M62176_IG43
+ ja G_M62176_IG45
lea ecx, bword ptr [edi+2*eax]
; byrRegs +[ecx]
mov bword ptr [ebp-0x54], ecx
@@ -152,20 +152,20 @@ G_M62176_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
shr ecx, 31
call [<unknown method>]
cmp dword ptr [ebp-0x10], 0
- jne G_M62176_IG20
+ jne G_M62176_IG40
;; size=65 bbWeight=1 PerfScore 19.25
G_M62176_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
cmp dword ptr [ebp-0x2C], 1
- jbe G_M62176_IG20
+ jbe G_M62176_IG40
mov ecx, bword ptr [ebp-0x54]
; byrRegs +[ecx]
cmp word ptr [ecx], 10
- je G_M62176_IG20
+ je G_M62176_IG40
cmp word ptr [ecx+0x02], 10
- je G_M62176_IG20
+ je G_M62176_IG40
mov dword ptr [ebp-0x14], 2
cmp ebx, 2
- jb G_M62176_IG43
+ jb G_M62176_IG45
lea edx, bword ptr [edi+0x04]
; byrRegs +[edx]
mov bword ptr [ebp-0x58], edx
@@ -185,7 +185,7 @@ G_M62176_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_M62176_IG32
+ je G_M62176_IG43
;; size=95 bbWeight=0.50 PerfScore 14.50
G_M62176_IG04: ; bbWeight=0.50, gcVars=000000000000000000018000 {V61 V63}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[eax]
@@ -201,7 +201,7 @@ G_M62176_IG04: ; bbWeight=0.50, gcVars=000000000000000000018000 {V61 V63}
mov edi, gword ptr [ebp-0x5C]
; gcrRegs +[edi]
cmp ecx, dword ptr [edi+0x04]
- jae G_M62176_IG42
+ jae G_M62176_IG44
mov dword ptr [edi+4*ecx+0x08], 1
mov ecx, gword ptr [esi+0x1C]
; gcrRegs +[ecx]
@@ -252,7 +252,7 @@ G_M62176_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov dword ptr [ebp-0x50], edx
mov ecx, dword ptr [ebp-0x18]
cmp ecx, edx
- jae G_M62176_IG42
+ jae G_M62176_IG44
mov edx, dword ptr [ebp-0x28]
mov dword ptr [eax+4*ecx+0x08], edx
inc ecx
@@ -260,7 +260,7 @@ G_M62176_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs +[edx]
mov eax, edx
cmp ecx, dword ptr [ebp-0x50]
- jae G_M62176_IG42
+ jae G_M62176_IG44
mov edx, dword ptr [ebp-0x20]
; gcrRegs -[edx]
mov dword ptr [eax+4*ecx+0x08], edx
@@ -268,7 +268,7 @@ G_M62176_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov edx, gword ptr [ebp-0x88]
; gcrRegs +[edx]
cmp ecx, dword ptr [ebp-0x50]
- jae G_M62176_IG42
+ jae G_M62176_IG44
mov eax, dword ptr [ebp-0x14]
; gcrRegs -[eax]
mov dword ptr [edx+4*ecx+0x08], eax
@@ -281,7 +281,7 @@ G_M62176_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs +[eax]
mov edx, gword ptr [eax+0x2C]
cmp dword ptr [edx+0x04], 1
- jbe G_M62176_IG29
+ jbe G_M62176_IG33
;; size=122 bbWeight=4 PerfScore 171.00
G_M62176_IG08: ; bbWeight=2, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref
; GC ptr vars -{V98}
@@ -289,12 +289,12 @@ G_M62176_IG08: ; bbWeight=2, gcrefRegs=00000045 {eax edx esi}, byrefRegs=
; gcrRegs -[edx]
mov dword ptr [ebp-0x48], edx
test edx, edx
- jle G_M62176_IG28
+ jle G_M62176_IG32
;; size=14 bbWeight=2 PerfScore 8.50
G_M62176_IG09: ; bbWeight=1.51, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
mov eax, gword ptr [eax+0x28]
cmp dword ptr [eax+0x04], 1
- jbe G_M62176_IG42
+ jbe G_M62176_IG44
mov eax, gword ptr [eax+0x0C]
mov gword ptr [ebp-0x80], eax
; GC ptr vars +{V95}
@@ -310,22 +310,22 @@ G_M62176_IG09: ; bbWeight=1.51, gcrefRegs=00000041 {eax esi}, byrefRegs=0
mov dword ptr [ebp-0x4C], eax
mov eax, dword ptr [ebp-0x44]
cmp eax, dword ptr [ebp-0x4C]
- jae G_M62176_IG42
+ jae G_M62176_IG44
mov edx, gword ptr [ebp-0x70]
; gcrRegs +[edx]
mov eax, dword ptr [edx+4*eax+0x08]
cmp eax, -2
- je G_M62176_IG27
+ je G_M62176_IG31
;; size=69 bbWeight=1.51 PerfScore 35.94
G_M62176_IG10: ; bbWeight=4, gcVars=000000000000040000018000 {V61 V63 V95}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[edx]
; GC ptr vars -{V76}
test eax, eax
- jl G_M62176_IG31
+ jl G_M62176_IG42
;; size=8 bbWeight=4 PerfScore 5.00
G_M62176_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
cmp dword ptr [ebp-0x40], eax
- jl G_M62176_IG26
+ jl G_M62176_IG30
mov edi, gword ptr [ebp-0x80]
; gcrRegs +[edi]
mov gword ptr [ebp-0x78], edi
@@ -334,38 +334,38 @@ G_M62176_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs -[edi]
lea edi, [2*edi-0x02]
cmp edi, dword ptr [ebp-0x4C]
- jae G_M62176_IG42
+ jae G_M62176_IG44
mov edx, gword ptr [ebp-0x78]
; gcrRegs +[edx]
mov edx, dword ptr [edx+4*edi+0x08]
; gcrRegs -[edx]
test edx, edx
- jl G_M62176_IG30
+ jl G_M62176_IG41
;; size=49 bbWeight=4 PerfScore 55.00
G_M62176_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_M62176_IG25
+ jle G_M62176_IG29
;; size=13 bbWeight=4 PerfScore 10.00
G_M62176_IG13: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
add edx, edi
cmp edx, ebx
- jae G_M62176_IG42
+ jae G_M62176_IG44
mov ebx, bword ptr [ebp-0x68]
; byrRegs +[ebx]
movzx edx, word ptr [ebx+2*edx]
cmp edi, dword ptr [ebp-0x40]
- jae G_M62176_IG42
+ jae G_M62176_IG44
mov ebx, bword ptr [ebp-0x6C]
cmp dx, word ptr [ebx+2*edi]
- jne G_M62176_IG17
+ jne G_M62176_IG18
inc edi
cmp edi, eax
mov bword ptr [ebp-0x6C], ebx
mov edx, dword ptr [ebp-0x24]
- jl G_M62176_IG24
+ jl G_M62176_IG28
;; size=54 bbWeight=16 PerfScore 256.00
G_M62176_IG14: ; bbWeight=4, gcVars=000000000000000000010000 {V61}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[ebx]
@@ -374,7 +374,7 @@ G_M62176_IG14: ; bbWeight=4, gcVars=000000000000000000010000 {V61}, gcref
mov ebx, eax
mov eax, dword ptr [ebp-0x3C]
cmp ebx, eax
- ja G_M62176_IG43
+ ja G_M62176_IG45
mov edx, bword ptr [ebp-0x68]
; byrRegs +[edx]
lea edx, bword ptr [edx+2*ebx]
@@ -420,27 +420,33 @@ G_M62176_IG15: ; bbWeight=2, gcVars=000000000000000000018000 {V61 V63}, g
G_M62176_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_M62176_IG34
- ;; size=11 bbWeight=0.50 PerfScore 1.12
-G_M62176_IG17: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x14], ebx
+ mov bword ptr [ebp-0x6C], eax
+ ; GC ptr vars +{V63}
+ jne G_M62176_IG27
+ ;; size=14 bbWeight=0.50 PerfScore 1.62
+G_M62176_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_M62176_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_M62176_IG20
+ jl G_M62176_IG40
...
librariestestsnotieredcompilation.run.windows.x86.Release.mch
-19 (-37.25%) : 147577.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%) : 5385.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%) : 159041.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%) : 280880.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3253_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, 890.50) ref -> [ebp-0x78] class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
+; V00 arg0 [V00,T01] ( 60, 890.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_M57776_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -160,17 +160,17 @@ G_M57776_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_M57776_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_M57776_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
ja G_M57776_IG50
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_M57776_IG04
;; size=60 bbWeight=1 PerfScore 16.75
@@ -200,25 +200,25 @@ G_M57776_IG03: ; bbWeight=0.50, gcVars=000080000800000000000000 {V22 V96}
; gcrRegs -[ecx edx]
;; size=16 bbWeight=0.50 PerfScore 1.75
G_M57776_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_M57776_IG05: ; bbWeight=8, gcVars=000000000800000010000000 {V96 V98}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M57776_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_M57776_IG06: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
G_M57776_IG07: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
...
+16 (+3.80%) : 183213.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%) : 183211.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%) : 10184.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%) : 28981.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%) : 24895.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%) : 23301.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
+0 (0.00%) : 18078.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
+1 (+0.02%) : 29513.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 |
25 |
25 |
0 |
0 |
-258 |
+0 |
| benchmarks.run_pgo.windows.x86.checked.mch |
91 |
91 |
0 |
0 |
-1,135 |
+0 |
| benchmarks.run_tiered.windows.x86.checked.mch |
19 |
19 |
0 |
0 |
-180 |
+0 |
| coreclr_tests.run.windows.x86.checked.mch |
412 |
229 |
7 |
176 |
-3,805 |
+38 |
| libraries.crossgen2.windows.x86.checked.mch |
57 |
51 |
2 |
4 |
-1,372 |
+32 |
| libraries.pmi.windows.x86.checked.mch |
168 |
161 |
4 |
3 |
-2,520 |
+47 |
| libraries_tests.run.windows.x86.Release.mch |
501 |
483 |
13 |
5 |
-9,212 |
+185 |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
263 |
253 |
4 |
6 |
-3,847 |
+58 |
| realworld.run.windows.x86.checked.mch |
61 |
58 |
1 |
2 |
-932 |
+1 |
|
1,597 |
1,370 |
31 |
196 |
-23,261 |
+361 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.windows.x86.checked.mch |
24,491 |
4 |
24,487 |
1 (0.00%) |
2 (0.01%) |
| benchmarks.run_pgo.windows.x86.checked.mch |
117,805 |
41,904 |
75,901 |
2 (0.00%) |
2 (0.00%) |
| benchmarks.run_tiered.windows.x86.checked.mch |
47,881 |
28,747 |
19,134 |
1 (0.00%) |
2 (0.00%) |
| coreclr_tests.run.windows.x86.checked.mch |
574,645 |
319,847 |
254,798 |
20 (0.00%) |
23 (0.00%) |
| libraries.crossgen2.windows.x86.checked.mch |
242,618 |
15 |
242,603 |
1 (0.00%) |
1 (0.00%) |
| libraries.pmi.windows.x86.checked.mch |
305,766 |
6 |
305,760 |
4 (0.00%) |
7 (0.00%) |
| libraries_tests.run.windows.x86.Release.mch |
627,815 |
427,222 |
200,593 |
5 (0.00%) |
18 (0.00%) |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
316,418 |
21,910 |
294,508 |
3 (0.00%) |
17 (0.01%) |
| realworld.run.windows.x86.checked.mch |
35,984 |
3 |
35,981 |
1 (0.00%) |
1 (0.00%) |
|
2,293,423 |
839,658 |
1,453,765 |
38 (0.00%) |
73 (0.00%) |
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: 7122447 (overridden on cmd)
Total bytes of diff: 7122189 (overridden on cmd)
Total bytes of delta: -258 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-28 : 19251.dasm (-0.57 % of base)
-20 : 15171.dasm (-0.83 % of base)
-18 : 7163.dasm (-4.33 % of base)
-17 : 14881.dasm (-4.39 % of base)
-16 : 6764.dasm (-1.42 % of base)
-14 : 22162.dasm (-9.21 % of base)
-14 : 23048.dasm (-6.57 % of base)
-14 : 5594.dasm (-6.19 % of base)
-13 : 15185.dasm (-1.02 % of base)
-12 : 14340.dasm (-0.95 % of base)
-12 : 7887.dasm (-1.81 % of base)
-10 : 19331.dasm (-1.00 % of base)
-10 : 13875.dasm (-0.08 % of base)
-7 : 18679.dasm (-4.02 % of base)
-7 : 3122.dasm (-1.96 % of base)
-6 : 15138.dasm (-6.12 % of base)
-6 : 4259.dasm (-1.36 % of base)
-6 : 15212.dasm (-1.29 % of base)
-6 : 7144.dasm (-0.34 % of base)
-6 : 15167.dasm (-0.20 % of base)
25 total files with Code Size differences (25 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-28 (-0.57 % of base) : 19251.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
-20 (-0.83 % of base) : 15171.dasm - System.Formats.Tar.TarHeader+<ProcessDataBlockAsync>d__52:MoveNext():this (FullOpts)
-18 (-4.33 % of base) : 7163.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:MoveDownCustomComparer(System.ValueTuple`2[System.__Canon,System.__Canon],int):this (FullOpts)
-17 (-4.39 % of base) : 14881.dasm - System.Formats.Tar.TarHeader:ProcessDataBlock(System.IO.Stream,ubyte):this (FullOpts)
-16 (-1.42 % of base) : 6764.dasm - System.Xml.EncodingStreamWrapper:.ctor(System.IO.Stream,System.Text.Encoding):this (FullOpts)
-14 (-6.57 % of base) : 23048.dasm - System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (FullOpts)
-14 (-9.21 % of base) : 22162.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
-14 (-6.19 % of base) : 5594.dasm - System.Uri:get_HostNameType():int:this (FullOpts)
-13 (-1.02 % of base) : 15185.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (FullOpts)
-12 (-0.95 % of base) : 14340.dasm - System.Net.Http.Tests.SocketsHttpHandlerPerfTest+<Get_EnumerateHeaders_Unvalidated>d__12:MoveNext():this (FullOpts)
-12 (-1.81 % of base) : 7887.dasm - System.Reflection.Emit.DynamicILGenerator:GetMemberRefToken(System.Reflection.MethodInfo,System.Type[]):int:this (FullOpts)
-10 (-0.08 % of base) : 13875.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
-10 (-1.00 % of base) : 19331.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__ensureAllUnderlyingConversionsChecked|210_1(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-7 (-4.02 % of base) : 18679.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<BuildMembersAndInitializers>g__buildDeclaredMembersAndInitializers|169_1(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializers:this (FullOpts)
-7 (-1.96 % of base) : 3122.dasm - System.Linq.Enumerable:Min[ulong](System.Collections.Generic.IEnumerable`1[ulong],System.Collections.Generic.IComparer`1[ulong]):ulong (FullOpts)
-6 (-1.36 % of base) : 4259.dasm - Internal.Cryptography.Helpers:ToLpstrArray(System.Security.Cryptography.OidCollection,byref):System.Runtime.InteropServices.SafeHandle (FullOpts)
-6 (-6.12 % of base) : 15138.dasm - System.Collections.Generic.PriorityQueue`2[int,int]:MoveUpDefaultComparer(System.ValueTuple`2[int,int],int):this (FullOpts)
-6 (-0.34 % of base) : 7144.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<CopyToAsyncCore>d__57:MoveNext():this (FullOpts)
-6 (-0.20 % of base) : 15167.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__37:MoveNext():this (FullOpts)
-6 (-1.29 % of base) : 15212.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:InitForReading(System.IO.Stream,System.Text.Encoding):this (FullOpts)
Top method improvements (percentages):
-14 (-9.21 % of base) : 22162.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (FullOpts)
-14 (-6.57 % of base) : 23048.dasm - System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (FullOpts)
-14 (-6.19 % of base) : 5594.dasm - System.Uri:get_HostNameType():int:this (FullOpts)
-6 (-6.12 % of base) : 15138.dasm - System.Collections.Generic.PriorityQueue`2[int,int]:MoveUpDefaultComparer(System.ValueTuple`2[int,int],int):this (FullOpts)
-17 (-4.39 % of base) : 14881.dasm - System.Formats.Tar.TarHeader:ProcessDataBlock(System.IO.Stream,ubyte):this (FullOpts)
-18 (-4.33 % of base) : 7163.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:MoveDownCustomComparer(System.ValueTuple`2[System.__Canon,System.__Canon],int):this (FullOpts)
-7 (-4.02 % of base) : 18679.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<BuildMembersAndInitializers>g__buildDeclaredMembersAndInitializers|169_1(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializers:this (FullOpts)
-7 (-1.96 % of base) : 3122.dasm - System.Linq.Enumerable:Min[ulong](System.Collections.Generic.IEnumerable`1[ulong],System.Collections.Generic.IComparer`1[ulong]):ulong (FullOpts)
-12 (-1.81 % of base) : 7887.dasm - System.Reflection.Emit.DynamicILGenerator:GetMemberRefToken(System.Reflection.MethodInfo,System.Type[]):int:this (FullOpts)
-4 (-1.69 % of base) : 4161.dasm - System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
-4 (-1.69 % of base) : 4116.dasm - System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
-16 (-1.42 % of base) : 6764.dasm - System.Xml.EncodingStreamWrapper:.ctor(System.IO.Stream,System.Text.Encoding):this (FullOpts)
-6 (-1.36 % of base) : 4259.dasm - Internal.Cryptography.Helpers:ToLpstrArray(System.Security.Cryptography.OidCollection,byref):System.Runtime.InteropServices.SafeHandle (FullOpts)
-6 (-1.29 % of base) : 15212.dasm - System.Runtime.Serialization.Json.JsonEncodingStreamWrapper:InitForReading(System.IO.Stream,System.Text.Encoding):this (FullOpts)
-13 (-1.02 % of base) : 15185.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (FullOpts)
-10 (-1.00 % of base) : 19331.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__ensureAllUnderlyingConversionsChecked|210_1(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-12 (-0.95 % of base) : 14340.dasm - System.Net.Http.Tests.SocketsHttpHandlerPerfTest+<Get_EnumerateHeaders_Unvalidated>d__12:MoveNext():this (FullOpts)
-4 (-0.90 % of base) : 9793.dasm - System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
-20 (-0.83 % of base) : 15171.dasm - System.Formats.Tar.TarHeader+<ProcessDataBlockAsync>d__52:MoveNext():this (FullOpts)
-2 (-0.82 % of base) : 9679.dasm - System.Collections.Generic.PriorityQueue`2[int,int]:MoveDownDefaultComparer(System.ValueTuple`2[int,int],int):this (FullOpts)
25 total methods with Code Size differences (25 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: 44974277 (overridden on cmd)
Total bytes of diff: 44973142 (overridden on cmd)
Total bytes of delta: -1135 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-52 : 97732.dasm (-6.27 % of base)
-50 : 81962.dasm (-1.50 % of base)
-42 : 67032.dasm (-5.15 % of base)
-42 : 102398.dasm (-5.15 % of base)
-32 : 81870.dasm (-1.11 % of base)
-25 : 57304.dasm (-3.13 % of base)
-25 : 100384.dasm (-3.13 % of base)
-22 : 79165.dasm (-4.07 % of base)
-21 : 44086.dasm (-16.94 % of base)
-21 : 46559.dasm (-16.94 % of base)
-21 : 91564.dasm (-16.94 % of base)
-18 : 21555.dasm (-4.33 % of base)
-17 : 82083.dasm (-4.72 % of base)
-16 : 76370.dasm (-1.13 % of base)
-15 : 21155.dasm (-2.19 % of base)
-14 : 101421.dasm (-6.57 % of base)
-14 : 12745.dasm (-1.49 % of base)
-14 : 28582.dasm (-1.48 % of base)
-14 : 65749.dasm (-1.48 % of base)
-14 : 111757.dasm (-14.74 % of base)
52 total files with Code Size differences (52 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-52 (-6.27 % of base) : 97732.dasm - System.IO.File:WriteAllBytes(System.String,ubyte[]) (Tier1)
-50 (-1.50 % of base) : 81962.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,Microsoft.CodeAnalysis.CSharp.BoundStatement,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.LambdaDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.ClosureDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.StateMachineStateDebugInfo],Microsoft.CodeAnalysis.CSharp.StateMachineTypeSymbol,Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.CSharp.ImportChain,ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.SourceSpan],Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedEntryPointSymbol+AsyncForwardEntryPoint):Microsoft.CodeAnalysis.CodeGen.MethodBody (Tier1)
-42 (-5.15 % of base) : 67032.dasm - System.IO.File:WriteAllBytes(System.String,ubyte[]) (Tier1)
-42 (-5.15 % of base) : 102398.dasm - System.IO.File:WriteAllBytes(System.String,ubyte[]) (Tier1)
-32 (-1.11 % of base) : 81870.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-25 (-3.13 % of base) : 57304.dasm - System.IO.File:WriteAllBytes(System.String,ubyte[]) (Tier1)
-25 (-3.13 % of base) : 100384.dasm - System.IO.File:WriteAllBytes(System.String,ubyte[]) (Tier1)
-22 (-4.07 % of base) : 79165.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetSignatureForProperty(System.Reflection.Metadata.PropertyDefinitionHandle,byref,byref):Microsoft.CodeAnalysis.ParamInfo`1[System.__Canon][]:this (Tier1)
-21 (-16.94 % of base) : 44086.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
-21 (-16.94 % of base) : 46559.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
-21 (-16.94 % of base) : 91564.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
-18 (-4.33 % of base) : 21555.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:MoveDownCustomComparer(System.ValueTuple`2[System.__Canon,System.__Canon],int):this (Tier0-FullOpts)
-17 (-4.72 % of base) : 82083.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:get_Count():int:this (Tier1)
-16 (-1.13 % of base) : 76370.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__ensureAllUnderlyingConversionsChecked|210_1(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0-FullOpts)
-15 (-2.19 % of base) : 21155.dasm - System.Reflection.Emit.DynamicILGenerator:GetMemberRefToken(System.Reflection.MethodInfo,System.Type[]):int:this (Tier0-FullOpts)
-14 (-4.95 % of base) : 4412.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (Tier0-FullOpts)
-14 (-14.74 % of base) : 111757.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAt(int):this (Tier1)
-14 (-19.18 % of base) : 41298.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
-14 (-19.18 % of base) : 46563.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
-14 (-19.18 % of base) : 116373.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
Top method improvements (percentages):
-14 (-19.18 % of base) : 41298.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
-14 (-19.18 % of base) : 46563.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
-14 (-19.18 % of base) : 116373.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
-14 (-19.18 % of base) : 44097.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
-14 (-19.18 % of base) : 5879.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
-21 (-16.94 % of base) : 44086.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
-21 (-16.94 % of base) : 46559.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
-21 (-16.94 % of base) : 91564.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
-14 (-14.74 % of base) : 111757.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAt(int):this (Tier1)
-14 (-9.21 % of base) : 93804.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (Tier0-FullOpts)
-14 (-6.57 % of base) : 101421.dasm - System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (Tier0-FullOpts)
-52 (-6.27 % of base) : 97732.dasm - System.IO.File:WriteAllBytes(System.String,ubyte[]) (Tier1)
-6 (-6.12 % of base) : 56683.dasm - System.Collections.Generic.PriorityQueue`2[int,int]:MoveUpDefaultComparer(System.ValueTuple`2[int,int],int):this (Tier0-FullOpts)
-42 (-5.15 % of base) : 67032.dasm - System.IO.File:WriteAllBytes(System.String,ubyte[]) (Tier1)
-42 (-5.15 % of base) : 102398.dasm - System.IO.File:WriteAllBytes(System.String,ubyte[]) (Tier1)
-14 (-4.95 % of base) : 4412.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (Tier0-FullOpts)
-17 (-4.72 % of base) : 82083.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:get_Count():int:this (Tier1)
-18 (-4.33 % of base) : 21555.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:MoveDownCustomComparer(System.ValueTuple`2[System.__Canon,System.__Canon],int):this (Tier0-FullOpts)
-22 (-4.07 % of base) : 79165.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetSignatureForProperty(System.Reflection.Metadata.PropertyDefinitionHandle,byref,byref):Microsoft.CodeAnalysis.ParamInfo`1[System.__Canon][]:this (Tier1)
-25 (-3.13 % of base) : 57304.dasm - System.IO.File:WriteAllBytes(System.String,ubyte[]) (Tier1)
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: 9469950 (overridden on cmd)
Total bytes of diff: 9469770 (overridden on cmd)
Total bytes of delta: -180 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-28 : 41122.dasm (-0.57 % of base)
-18 : 17944.dasm (-4.33 % of base)
-14 : 44520.dasm (-9.21 % of base)
-14 : 45444.dasm (-6.57 % of base)
-13 : 30939.dasm (-1.02 % of base)
-12 : 11632.dasm (-1.81 % of base)
-12 : 28141.dasm (-0.95 % of base)
-10 : 27527.dasm (-0.08 % of base)
-10 : 38330.dasm (-1.00 % of base)
-8 : 22994.dasm (-3.76 % of base)
-7 : 8300.dasm (-1.96 % of base)
-6 : 30155.dasm (-6.12 % of base)
-6 : 13403.dasm (-0.34 % of base)
-6 : 43972.dasm (-0.20 % of base)
-4 : 15284.dasm (-1.71 % of base)
-4 : 23977.dasm (-0.90 % of base)
-4 : 15253.dasm (-1.71 % of base)
-2 : 20862.dasm (-0.82 % of base)
-2 : 23969.dasm (-0.28 % of base)
19 total files with Code Size differences (19 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-28 (-0.57 % of base) : 41122.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-18 (-4.33 % of base) : 17944.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:MoveDownCustomComparer(System.ValueTuple`2[System.__Canon,System.__Canon],int):this (Tier0-FullOpts)
-14 (-6.57 % of base) : 45444.dasm - System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (Tier0-FullOpts)
-14 (-9.21 % of base) : 44520.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (Tier0-FullOpts)
-13 (-1.02 % of base) : 30939.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (Tier0-FullOpts)
-12 (-0.95 % of base) : 28141.dasm - System.Net.Http.Tests.SocketsHttpHandlerPerfTest+<Get_EnumerateHeaders_Unvalidated>d__12:MoveNext():this (Tier0-FullOpts)
-12 (-1.81 % of base) : 11632.dasm - System.Reflection.Emit.DynamicILGenerator:GetMemberRefToken(System.Reflection.MethodInfo,System.Type[]):int:this (Tier0-FullOpts)
-10 (-0.08 % of base) : 27527.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
-10 (-1.00 % of base) : 38330.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__ensureAllUnderlyingConversionsChecked|210_1(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0-FullOpts)
-8 (-3.76 % of base) : 22994.dasm - System.Xml.XmlConvert:CreateException(System.String,System.String[],int,int,int):System.Exception (Tier1)
-7 (-1.96 % of base) : 8300.dasm - System.Linq.Enumerable:Min[ulong](System.Collections.Generic.IEnumerable`1[ulong],System.Collections.Generic.IComparer`1[ulong]):ulong (Tier0-FullOpts)
-6 (-6.12 % of base) : 30155.dasm - System.Collections.Generic.PriorityQueue`2[int,int]:MoveUpDefaultComparer(System.ValueTuple`2[int,int],int):this (Tier0-FullOpts)
-6 (-0.34 % of base) : 13403.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<CopyToAsyncCore>d__57:MoveNext():this (Tier1)
-6 (-0.20 % of base) : 43972.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__37:MoveNext():this (Tier1)
-4 (-1.71 % of base) : 15253.dasm - System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
-4 (-1.71 % of base) : 15284.dasm - System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
-4 (-0.90 % of base) : 23977.dasm - System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
-2 (-0.82 % of base) : 20862.dasm - System.Collections.Generic.PriorityQueue`2[int,int]:MoveDownDefaultComparer(System.ValueTuple`2[int,int],int):this (Tier0-FullOpts)
-2 (-0.28 % of base) : 23969.dasm - System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
Top method improvements (percentages):
-14 (-9.21 % of base) : 44520.dasm - System.Collections.IterateForEach`1[System.__Canon]:ImmutableStack():System.__Canon:this (Tier0-FullOpts)
-14 (-6.57 % of base) : 45444.dasm - System.Collections.IterateForEach`1[System.__Canon]:FrozenSet():System.__Canon:this (Tier0-FullOpts)
-6 (-6.12 % of base) : 30155.dasm - System.Collections.Generic.PriorityQueue`2[int,int]:MoveUpDefaultComparer(System.ValueTuple`2[int,int],int):this (Tier0-FullOpts)
-18 (-4.33 % of base) : 17944.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:MoveDownCustomComparer(System.ValueTuple`2[System.__Canon,System.__Canon],int):this (Tier0-FullOpts)
-8 (-3.76 % of base) : 22994.dasm - System.Xml.XmlConvert:CreateException(System.String,System.String[],int,int,int):System.Exception (Tier1)
-7 (-1.96 % of base) : 8300.dasm - System.Linq.Enumerable:Min[ulong](System.Collections.Generic.IEnumerable`1[ulong],System.Collections.Generic.IComparer`1[ulong]):ulong (Tier0-FullOpts)
-12 (-1.81 % of base) : 11632.dasm - System.Reflection.Emit.DynamicILGenerator:GetMemberRefToken(System.Reflection.MethodInfo,System.Type[]):int:this (Tier0-FullOpts)
-4 (-1.71 % of base) : 15253.dasm - System.Net.Sockets.Socket:ReceiveAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
-4 (-1.71 % of base) : 15284.dasm - System.Net.Sockets.Socket:SendAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
-13 (-1.02 % of base) : 30939.dasm - System.Formats.Tar.TarReader+<DisposeAsync>d__8:MoveNext():this (Tier0-FullOpts)
-10 (-1.00 % of base) : 38330.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__ensureAllUnderlyingConversionsChecked|210_1(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0-FullOpts)
-12 (-0.95 % of base) : 28141.dasm - System.Net.Http.Tests.SocketsHttpHandlerPerfTest+<Get_EnumerateHeaders_Unvalidated>d__12:MoveNext():this (Tier0-FullOpts)
-4 (-0.90 % of base) : 23977.dasm - System.Net.Sockets.Socket:SendToAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
-2 (-0.82 % of base) : 20862.dasm - System.Collections.Generic.PriorityQueue`2[int,int]:MoveDownDefaultComparer(System.ValueTuple`2[int,int],int):this (Tier0-FullOpts)
-28 (-0.57 % of base) : 41122.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
-6 (-0.34 % of base) : 13403.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<CopyToAsyncCore>d__57:MoveNext():this (Tier1)
-2 (-0.28 % of base) : 23969.dasm - System.Net.Sockets.Socket:ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (Tier1)
-6 (-0.20 % of base) : 43972.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__37:MoveNext():this (Tier1)
-10 (-0.08 % of base) : 27527.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
19 total methods with Code Size differences (19 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: 309369241 (overridden on cmd)
Total bytes of diff: 309365474 (overridden on cmd)
Total bytes of delta: -3767 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
7 : 15700.dasm (5.11 % of base)
7 : 16117.dasm (5.11 % of base)
7 : 16193.dasm (4.90 % of base)
7 : 15776.dasm (4.90 % of base)
4 : 226124.dasm (3.81 % of base)
4 : 230197.dasm (3.81 % of base)
2 : 230228.dasm (1.98 % of base)
Top file improvements (bytes):
-117 : 243351.dasm (-0.88 % of base)
-117 : 496463.dasm (-0.88 % of base)
-76 : 231604.dasm (-1.18 % of base)
-76 : 225163.dasm (-1.18 % of base)
-54 : 242776.dasm (-21.09 % of base)
-45 : 240379.dasm (-3.86 % of base)
-43 : 230250.dasm (-60.56 % of base)
-38 : 225054.dasm (-0.74 % of base)
-38 : 225178.dasm (-0.70 % of base)
-38 : 231458.dasm (-2.52 % of base)
-38 : 231605.dasm (-1.84 % of base)
-38 : 231773.dasm (-0.83 % of base)
-38 : 232213.dasm (-2.63 % of base)
-38 : 231570.dasm (-1.19 % of base)
-38 : 231582.dasm (-0.94 % of base)
-38 : 232269.dasm (-1.58 % of base)
-38 : 232321.dasm (-1.75 % of base)
-38 : 225129.dasm (-1.19 % of base)
-38 : 231345.dasm (-0.65 % of base)
-38 : 231354.dasm (-2.12 % of base)
48 total files with Code Size differences (41 improved, 7 regressed), 32 unchanged.
Top method regressions (bytes):
7 (5.11 % of base) : 15700.dasm - testout1:Sub_Funclet_106():int (FullOpts)
7 (5.11 % of base) : 16117.dasm - testout1:Sub_Funclet_106():int (FullOpts)
7 (4.90 % of base) : 16193.dasm - testout1:Sub_Funclet_183():int (FullOpts)
7 (4.90 % of base) : 15776.dasm - testout1:Sub_Funclet_183():int (FullOpts)
4 (3.81 % of base) : 226124.dasm - 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():float (FullOpts)
4 (3.81 % of base) : 230197.dasm - 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():float (FullOpts)
2 (1.98 % of base) : 230228.dasm - 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)
Top method improvements (bytes):
-117 (-0.88 % of base) : 243351.dasm - ILGEN_0x372a9ae6:Method_0xdc6ff1a4(byte,byte,int,int,ushort,double,long,ulong):int (FullOpts)
-117 (-0.88 % of base) : 496463.dasm - ILGEN_0x372a9ae6:Method_0xdc6ff1a4(byte,byte,int,int,ushort,double,long,ulong):int (Tier0-FullOpts)
-76 (-1.18 % of base) : 231604.dasm - Test_10w5d.testout1:Func_0_4_5_3():System.Decimal (FullOpts)
-76 (-1.18 % of base) : 225163.dasm - Test_10w5d.testout1:Func_0_4_5_3():System.Decimal (FullOpts)
-54 (-21.09 % of base) : 242776.dasm - ILGEN_0xc53351bb:Method_0x6cf4(short,byte,uint,ulong,int,long,short,short,ubyte,long,float,ubyte,ulong,ubyte):float (FullOpts)
-45 (-3.86 % of base) : 240379.dasm - TestClass_65690:Method0():this (FullOpts)
-43 (-60.56 % of base) : 230250.dasm - 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)
-38 (-1.75 % of base) : 232321.dasm - Test_10w5d.testout1:Func_0_1_3_6_1():float (FullOpts)
-38 (-1.58 % of base) : 232269.dasm - Test_10w5d.testout1:Func_0_1_5_4_3():short (FullOpts)
-38 (-2.63 % of base) : 232213.dasm - Test_10w5d.testout1:Func_0_1_6_6_2():System.Decimal (FullOpts)
-38 (-0.83 % of base) : 231773.dasm - Test_10w5d.testout1:Func_0_4_1_2_2():System.Decimal (FullOpts)
-38 (-0.70 % of base) : 225178.dasm - Test_10w5d.testout1:Func_0_4_5_1():System.Decimal (FullOpts)
-38 (-1.84 % of base) : 231605.dasm - Test_10w5d.testout1:Func_0_4_5_3_6():System.Decimal (FullOpts)
-38 (-0.94 % of base) : 231582.dasm - Test_10w5d.testout1:Func_0_4_5_6():System.Decimal (FullOpts)
-38 (-1.19 % of base) : 231570.dasm - Test_10w5d.testout1:Func_0_4_6_3_2():System.Decimal (FullOpts)
-38 (-1.19 % of base) : 225129.dasm - Test_10w5d.testout1:Func_0_4_6_3_2():System.Decimal (FullOpts)
-38 (-0.74 % of base) : 225054.dasm - Test_10w5d.testout1:Func_0_5_2_1_3():System.Decimal (FullOpts)
-38 (-2.52 % of base) : 231458.dasm - Test_10w5d.testout1:Func_0_5_2_6_4():System.Decimal (FullOpts)
-38 (-2.12 % of base) : 231354.dasm - Test_10w5d.testout1:Func_0_5_5_4_3():short (FullOpts)
-38 (-0.65 % of base) : 231345.dasm - Test_10w5d.testout1:Func_0_5_5_5_6():System.Decimal (FullOpts)
Top method regressions (percentages):
7 (5.11 % of base) : 15700.dasm - testout1:Sub_Funclet_106():int (FullOpts)
7 (5.11 % of base) : 16117.dasm - testout1:Sub_Funclet_106():int (FullOpts)
7 (4.90 % of base) : 16193.dasm - testout1:Sub_Funclet_183():int (FullOpts)
7 (4.90 % of base) : 15776.dasm - testout1:Sub_Funclet_183():int (FullOpts)
4 (3.81 % of base) : 226124.dasm - 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():float (FullOpts)
4 (3.81 % of base) : 230197.dasm - 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():float (FullOpts)
2 (1.98 % of base) : 230228.dasm - 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)
Top method improvements (percentages):
-43 (-60.56 % of base) : 230250.dasm - 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 % of base) : 226126.dasm - 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 % of base) : 230198.dasm - 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)
-15 (-42.86 % of base) : 21084.dasm - filter1:f4() (FullOpts)
-33 (-27.97 % of base) : 242698.dasm - Test.AA:Method1(byref,int,byref,double[]):float (FullOpts)
-33 (-27.97 % of base) : 495758.dasm - Test.AA:Method1(byref,int,byref,double[]):float (Tier0-FullOpts)
-36 (-26.67 % of base) : 225585.dasm - Test_10w5d.testout1:Func_0_2_6_2_2():double (FullOpts)
-26 (-26.53 % of base) : 226167.dasm - 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)
-54 (-21.09 % of base) : 242776.dasm - ILGEN_0xc53351bb:Method_0x6cf4(short,byte,uint,ulong,int,long,short,short,ubyte,long,float,ubyte,ulong,ubyte):float (FullOpts)
-25 (-19.38 % of base) : 242980.dasm - Test.AA:Main1() (FullOpts)
-25 (-19.38 % of base) : 496062.dasm - Test.AA:Main1() (Tier0-FullOpts)
-25 (-18.12 % of base) : 242983.dasm - Test.AA:Main1() (FullOpts)
-25 (-18.12 % of base) : 496065.dasm - Test.AA:Main1() (Tier0-FullOpts)
-3 (-13.64 % of base) : 22579.dasm - try1:f4() (FullOpts)
-18 (-12.59 % of base) : 16228.dasm - testout1:Sub_Funclet_221():int (FullOpts)
-18 (-12.59 % of base) : 15811.dasm - testout1:Sub_Funclet_221():int (FullOpts)
-20 (-11.56 % of base) : 17182.dasm - testout1:Sub_Funclet_219():int (FullOpts)
-20 (-11.56 % of base) : 17598.dasm - testout1:Sub_Funclet_219():int (FullOpts)
-19 (-11.11 % of base) : 17486.dasm - testout1:Sub_Funclet_104():int (FullOpts)
-19 (-11.11 % of base) : 17560.dasm - testout1:Sub_Funclet_181():int (FullOpts)
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: 31716544 (overridden on cmd)
Total bytes of diff: 31715204 (overridden on cmd)
Total bytes of delta: -1340 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
16 : 80047.dasm (3.80 % of base)
16 : 80049.dasm (3.80 % of base)
Top file improvements (bytes):
-577 : 84228.dasm (-93.37 % of base)
-79 : 196926.dasm (-0.36 % of base)
-64 : 66475.dasm (-17.98 % of base)
-39 : 24907.dasm (-1.30 % of base)
-38 : 197744.dasm (-5.28 % of base)
-37 : 53617.dasm (-12.67 % of base)
-30 : 170491.dasm (-22.73 % of base)
-26 : 25972.dasm (-1.97 % of base)
-21 : 74310.dasm (-2.10 % of base)
-20 : 170326.dasm (-17.54 % of base)
-20 : 206884.dasm (-1.48 % of base)
-20 : 207040.dasm (-4.72 % of base)
-19 : 223754.dasm (-37.25 % of base)
-18 : 26840.dasm (-7.86 % of base)
-17 : 170416.dasm (-15.32 % of base)
-16 : 185552.dasm (-5.59 % of base)
-14 : 138977.dasm (-1.12 % of base)
-14 : 138172.dasm (-9.15 % of base)
-14 : 88344.dasm (-0.74 % of base)
-14 : 73817.dasm (-1.39 % of base)
49 total files with Code Size differences (47 improved, 2 regressed), 4 unchanged.
Top method regressions (bytes):
16 (3.80 % of base) : 80047.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
16 (3.80 % of base) : 80049.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
Top method improvements (bytes):
-577 (-93.37 % of base) : 84228.dasm - System.Xml.Serialization.XmlSerializationReader:ReadTypedNull(System.Xml.XmlQualifiedName):System.Object:this (FullOpts)
-79 (-0.36 % of base) : 196926.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-64 (-17.98 % of base) : 66475.dasm - Microsoft.FSharp.Core.LanguagePrimitives+FastGenericComparerTable`1[int]:.cctor() (FullOpts)
-39 (-1.30 % of base) : 24907.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
-38 (-5.28 % of base) : 197744.dasm - Microsoft.VisualBasic.Strings:GetCurrencyFormatString(int,int,int,int,byref):System.String (FullOpts)
-37 (-12.67 % of base) : 53617.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
-30 (-22.73 % of base) : 170491.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
-26 (-1.97 % of base) : 25972.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:GetRefEscape(Microsoft.CodeAnalysis.CSharp.BoundExpression,uint):uint:this (FullOpts)
-21 (-2.10 % of base) : 74310.dasm - System.Xml.XmlDataDocument:OnRowChanging(System.Object,System.Data.DataRowChangeEventArgs):this (FullOpts)
-20 (-4.72 % of base) : 207040.dasm - System.Formats.Tar.TarHeader:ProcessDataBlock(System.IO.Stream,ubyte):this (FullOpts)
-20 (-1.48 % of base) : 206884.dasm - System.Formats.Tar.TarHeader+<ProcessDataBlockAsync>d__52:MoveNext():this (FullOpts)
-20 (-17.54 % of base) : 170326.dasm - System.Net.Mail.MailCommand:CheckResponse(int,System.String) (FullOpts)
-19 (-37.25 % of base) : 223754.dasm - System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
-18 (-7.86 % of base) : 26840.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddDelegateOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature]):this (FullOpts)
-17 (-15.32 % of base) : 170416.dasm - System.Net.Mail.DataCommand:CheckResponse(int,System.String) (FullOpts)
-16 (-5.59 % of base) : 185552.dasm - System.IO.Compression.ZipArchiveEntry:GetDataCompressor(System.IO.Stream,ubyte,System.EventHandler):System.IO.Compression.CheckSumAndSizeWriteStream:this (FullOpts)
-14 (-11.38 % of base) : 54908.dasm - 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)
-14 (-1.12 % of base) : 138977.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:DecodeModifiedIdentifierType(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,System.Func`1[Microsoft.CodeAnalysis.DiagnosticInfo],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,int):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
-14 (-9.15 % of base) : 138172.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:GetUnassignedSymbolFirstLocation(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess):Microsoft.CodeAnalysis.Location:this (FullOpts)
-14 (-1.39 % of base) : 73817.dasm - System.Data.DataTable:MergeRow(System.Data.DataRow,System.Data.DataRow,ubyte,System.Data.Index):System.Data.DataRow:this (FullOpts)
Top method regressions (percentages):
16 (3.80 % of base) : 80047.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
16 (3.80 % of base) : 80049.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
Top method improvements (percentages):
-577 (-93.37 % of base) : 84228.dasm - System.Xml.Serialization.XmlSerializationReader:ReadTypedNull(System.Xml.XmlQualifiedName):System.Object:this (FullOpts)
-19 (-37.25 % of base) : 223754.dasm - System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
-30 (-22.73 % of base) : 170491.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
-64 (-17.98 % of base) : 66475.dasm - Microsoft.FSharp.Core.LanguagePrimitives+FastGenericComparerTable`1[int]:.cctor() (FullOpts)
-20 (-17.54 % of base) : 170326.dasm - System.Net.Mail.MailCommand:CheckResponse(int,System.String) (FullOpts)
-17 (-15.32 % of base) : 170416.dasm - System.Net.Mail.DataCommand:CheckResponse(int,System.String) (FullOpts)
-37 (-12.67 % of base) : 53617.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
-14 (-11.38 % of base) : 54908.dasm - 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)
-10 (-10.64 % of base) : 209158.dasm - System.Transactions.Oletx.OletxTransactionManager:ConvertIsolationLevelFromProxyValue(int):int (FullOpts)
-14 (-9.15 % of base) : 138172.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:GetUnassignedSymbolFirstLocation(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess):Microsoft.CodeAnalysis.Location:this (FullOpts)
-9 (-8.74 % of base) : 170472.dasm - System.Net.Mail.StartTlsCommand:CheckResponse(int,System.String) (FullOpts)
-18 (-7.86 % of base) : 26840.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddDelegateOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature]):this (FullOpts)
-10 (-6.99 % of base) : 202005.dasm - System.Data.Odbc.OdbcHandle:ReleaseHandle():ubyte:this (FullOpts)
-7 (-6.48 % of base) : 197945.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:IsMemberPublic(System.Reflection.MemberInfo):ubyte (FullOpts)
-14 (-6.42 % of base) : 201298.dasm - System.Uri:get_HostNameType():int:this (FullOpts)
-13 (-6.28 % of base) : 151541.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SingleLineLambdaContext:ProcessStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.BlockContext):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.BlockContext:this (FullOpts)
-16 (-5.59 % of base) : 185552.dasm - System.IO.Compression.ZipArchiveEntry:GetDataCompressor(System.IO.Stream,ubyte,System.EventHandler):System.IO.Compression.CheckSumAndSizeWriteStream:this (FullOpts)
-38 (-5.28 % of base) : 197744.dasm - Microsoft.VisualBasic.Strings:GetCurrencyFormatString(int,int,int,int,byref):System.String (FullOpts)
-20 (-4.72 % of base) : 207040.dasm - System.Formats.Tar.TarHeader:ProcessDataBlock(System.IO.Stream,ubyte):this (FullOpts)
-7 (-4.14 % of base) : 197404.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:VerifyObjRefPresentForInstanceCall(System.Object,System.Reflection.MemberInfo) (FullOpts)
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: 49268131 (overridden on cmd)
Total bytes of diff: 49265658 (overridden on cmd)
Total bytes of delta: -2473 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
16 : 167237.dasm (3.80 % of base)
16 : 167239.dasm (3.80 % of base)
14 : 82904.dasm (2.11 % of base)
1 : 64992.dasm (0.02 % of base)
Top file improvements (bytes):
-577 : 177905.dasm (-93.37 % of base)
-75 : 195352.dasm (-0.31 % of base)
-60 : 29438.dasm (-5.20 % of base)
-45 : 112724.dasm (-4.80 % of base)
-45 : 150875.dasm (-4.80 % of base)
-37 : 63622.dasm (-12.67 % of base)
-34 : 226040.dasm (-7.85 % of base)
-30 : 60086.dasm (-0.99 % of base)
-30 : 195969.dasm (-4.52 % of base)
-30 : 260685.dasm (-21.74 % of base)
-30 : 31299.dasm (-2.12 % of base)
-28 : 30224.dasm (-0.53 % of base)
-28 : 226041.dasm (-7.25 % of base)
-28 : 82644.dasm (-0.41 % of base)
-27 : 174979.dasm (-1.33 % of base)
-27 : 226073.dasm (-6.40 % of base)
-25 : 32218.dasm (-5.07 % of base)
-23 : 268147.dasm (-1.89 % of base)
-22 : 254475.dasm (-4.19 % of base)
-21 : 68430.dasm (-1.98 % of base)
65 total files with Code Size differences (61 improved, 4 regressed), 3 unchanged.
Top method regressions (bytes):
16 (3.80 % of base) : 167237.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
16 (3.80 % of base) : 167239.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
14 (2.11 % of base) : 82904.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourcePropertyAccessorSymbol:GetReturnType(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceModuleSymbol,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
1 (0.02 % of base) : 64992.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:LowerEvaluation(Microsoft.CodeAnalysis.CSharp.BoundDagEvaluation):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
Top method improvements (bytes):
-577 (-93.37 % of base) : 177905.dasm - System.Xml.Serialization.XmlSerializationReader:ReadTypedNull(System.Xml.XmlQualifiedName):System.Object:this (FullOpts)
-75 (-0.31 % of base) : 195352.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-60 (-5.20 % of base) : 29438.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericCompare(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Object,System.Object):int (FullOpts)
-45 (-4.80 % of base) : 112724.dasm - Microsoft.CodeAnalysis.AttributeData:DecodeDecimalConstantValue():Microsoft.CodeAnalysis.ConstantValue:this (FullOpts)
-45 (-4.80 % of base) : 150875.dasm - Microsoft.CodeAnalysis.AttributeData:DecodeDecimalConstantValue():Microsoft.CodeAnalysis.ConstantValue:this (FullOpts)
-37 (-12.67 % of base) : 63622.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
-34 (-7.85 % of base) : 226040.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.Nullable`1[int]]:MoveDownDefaultComparer(System.ValueTuple`2[System.__Canon,System.Nullable`1[int]],int):this (FullOpts)
-30 (-2.12 % of base) : 31299.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:GetRefEscape(Microsoft.CodeAnalysis.CSharp.BoundExpression,uint):uint:this (FullOpts)
-30 (-0.99 % of base) : 60086.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMethodSymbolWithAttributes:DecodeDllImportAttribute(byref):this (FullOpts)
-30 (-4.52 % of base) : 195969.dasm - Microsoft.VisualBasic.Strings:GetCurrencyFormatString(int,int,int,int,byref):System.String (FullOpts)
-30 (-21.74 % of base) : 260685.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
-28 (-0.53 % of base) : 30224.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
-28 (-0.41 % of base) : 82644.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMethodSymbol:DecodeWellKnownAttributeAppliedToMethod(byref):this (FullOpts)
-28 (-7.25 % of base) : 226041.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.Nullable`1[int]]:MoveDownCustomComparer(System.ValueTuple`2[System.__Canon,System.Nullable`1[int]],int):this (FullOpts)
-27 (-6.40 % of base) : 226073.dasm - System.Collections.Generic.PriorityQueue`2[ubyte,System.Nullable`1[int]]:MoveDownDefaultComparer(System.ValueTuple`2[ubyte,System.Nullable`1[int]],int):this (FullOpts)
-27 (-1.33 % of base) : 174979.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (FullOpts)
-25 (-5.07 % of base) : 32218.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddDelegateOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature]):this (FullOpts)
-23 (-1.89 % of base) : 268147.dasm - System.Xml.EncodingStreamWrapper:.ctor(System.IO.Stream,System.Text.Encoding):this (FullOpts)
-22 (-4.19 % of base) : 254475.dasm - System.Linq.OrderedImplicitlyStableEnumerable`1[long]:TryGetFirstOrLast(byref,ubyte):long:this (FullOpts)
-21 (-1.98 % of base) : 68430.dasm - System.Xml.XmlDataDocument:OnRowChanging(System.Object,System.Data.DataRowChangeEventArgs):this (FullOpts)
Top method regressions (percentages):
16 (3.80 % of base) : 167237.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
16 (3.80 % of base) : 167239.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
14 (2.11 % of base) : 82904.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourcePropertyAccessorSymbol:GetReturnType(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceModuleSymbol,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
1 (0.02 % of base) : 64992.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:LowerEvaluation(Microsoft.CodeAnalysis.CSharp.BoundDagEvaluation):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
Top method improvements (percentages):
-577 (-93.37 % of base) : 177905.dasm - System.Xml.Serialization.XmlSerializationReader:ReadTypedNull(System.Xml.XmlQualifiedName):System.Object:this (FullOpts)
-7 (-41.18 % of base) : 243535.dasm - System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
-19 (-37.25 % of base) : 255496.dasm - System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
-30 (-21.74 % of base) : 260685.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
-20 (-16.67 % of base) : 260704.dasm - System.Net.Mail.MailCommand:CheckResponse(int,System.String) (FullOpts)
-10 (-14.71 % of base) : 264816.dasm - System.Net.Sockets.UdpReceiveResult:op_Equality(System.Net.Sockets.UdpReceiveResult,System.Net.Sockets.UdpReceiveResult):ubyte (FullOpts)
-17 (-14.53 % of base) : 260681.dasm - System.Net.Mail.DataCommand:CheckResponse(int,System.String) (FullOpts)
-10 (-14.49 % of base) : 264815.dasm - System.Net.Sockets.UdpReceiveResult:Equals(System.Net.Sockets.UdpReceiveResult):ubyte:this (FullOpts)
-37 (-12.67 % of base) : 63622.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
-10 (-12.66 % of base) : 264817.dasm - System.Net.Sockets.UdpReceiveResult:op_Inequality(System.Net.Sockets.UdpReceiveResult,System.Net.Sockets.UdpReceiveResult):ubyte (FullOpts)
-10 (-11.63 % of base) : 264814.dasm - System.Net.Sockets.UdpReceiveResult:Equals(System.Object):ubyte:this (FullOpts)
-10 (-10.64 % of base) : 290433.dasm - System.Transactions.Oletx.OletxTransactionManager:ConvertIsolationLevelFromProxyValue(int):int (FullOpts)
-6 (-9.38 % of base) : 2861.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-6 (-8.33 % of base) : 2849.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-9 (-8.26 % of base) : 260699.dasm - System.Net.Mail.StartTlsCommand:CheckResponse(int,System.String) (FullOpts)
-14 (-7.91 % of base) : 77766.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:GetUnassignedSymbolFirstLocation(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess):Microsoft.CodeAnalysis.Location:this (FullOpts)
-14 (-7.87 % of base) : 156980.dasm - Microsoft.CodeAnalysis.Collections.CachingDictionary`2[System.__Canon,System.Nullable`1[int]]:EnsureFullyPopulated():System.Collections.Generic.IDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[int]]]:this (FullOpts)
-14 (-7.87 % of base) : 118956.dasm - Microsoft.CodeAnalysis.Collections.CachingDictionary`2[System.__Canon,System.Nullable`1[int]]:EnsureFullyPopulated():System.Collections.Generic.IDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[int]]]:this (FullOpts)
-34 (-7.85 % of base) : 226040.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.Nullable`1[int]]:MoveDownDefaultComparer(System.ValueTuple`2[System.__Canon,System.Nullable`1[int]],int):this (FullOpts)
-28 (-7.25 % of base) : 226041.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.Nullable`1[int]]:MoveDownCustomComparer(System.ValueTuple`2[System.__Canon,System.Nullable`1[int]],int):this (FullOpts)
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: 186645391 (overridden on cmd)
Total bytes of diff: 186636364 (overridden on cmd)
Total bytes of delta: -9027 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
33 : 598873.dasm (2.58 % of base)
32 : 598762.dasm (2.11 % of base)
20 : 589058.dasm (2.07 % of base)
17 : 589140.dasm (1.80 % of base)
17 : 589098.dasm (1.90 % of base)
17 : 589043.dasm (1.92 % of base)
15 : 78715.dasm (1.22 % of base)
13 : 586155.dasm (0.82 % of base)
12 : 584438.dasm (1.35 % of base)
4 : 506964.dasm (0.07 % of base)
2 : 526155.dasm (1.71 % of base)
2 : 482055.dasm (0.24 % of base)
1 : 598075.dasm (0.07 % of base)
Top file improvements (bytes):
-150 : 470666.dasm (-2.94 % of base)
-130 : 593478.dasm (-2.10 % of base)
-129 : 470788.dasm (-1.90 % of base)
-109 : 51315.dasm (-1.15 % of base)
-97 : 49717.dasm (-7.15 % of base)
-86 : 157633.dasm (-0.88 % of base)
-86 : 580902.dasm (-5.09 % of base)
-79 : 503359.dasm (-5.10 % of base)
-75 : 166509.dasm (-0.31 % of base)
-73 : 579261.dasm (-1.71 % of base)
-69 : 150584.dasm (-5.62 % of base)
-66 : 540291.dasm (-5.21 % of base)
-66 : 506012.dasm (-4.49 % of base)
-60 : 262882.dasm (-5.34 % of base)
-59 : 552717.dasm (-4.81 % of base)
-59 : 361046.dasm (-5.29 % of base)
-56 : 372998.dasm (-2.54 % of base)
-55 : 13533.dasm (-6.08 % of base)
-55 : 570287.dasm (-6.66 % of base)
-51 : 373009.dasm (-1.93 % of base)
62 total files with Code Size differences (49 improved, 13 regressed), 5 unchanged.
Top method regressions (bytes):
33 (2.58 % of base) : 598873.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33117_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
32 (2.11 % of base) : 598762.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33072_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
20 (2.07 % of base) : 589058.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29496_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
17 (1.92 % of base) : 589043.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29493_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
17 (1.90 % of base) : 589098.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29499_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
17 (1.80 % of base) : 589140.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29502_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
15 (1.22 % of base) : 78715.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<BuildMembersAndInitializers>g__getDeclaredMembersAndInitializers|171_0():Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializers:this (Tier1)
13 (0.82 % of base) : 586155.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex28447_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
12 (1.35 % of base) : 584438.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex27931_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
4 (0.07 % of base) : 506964.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<DictionaryOfList>d__36:MoveNext():this (Tier0-FullOpts)
2 (1.71 % of base) : 526155.dasm - System.ArgumentOutOfRangeException:ThrowIfGreaterThan[float](float,float,System.String) (Instrumented Tier1)
2 (0.24 % of base) : 482055.dasm - System.Security.Cryptography.CapiHelper:ReadDSSSeed(System.Security.Cryptography.DSAParameters,System.IO.BinaryReader,ubyte) (Tier1)
1 (0.07 % of base) : 598075.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32552_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (bytes):
-150 (-2.94 % of base) : 470666.dasm - System.Security.Cryptography.CapiHelper:ToRSAParameters(ubyte[],ubyte):System.Security.Cryptography.RSAParameters (Tier1)
-130 (-2.10 % of base) : 593478.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
-129 (-1.90 % of base) : 470788.dasm - System.Security.Cryptography.CapiHelper:ToDSAParameters(ubyte[],ubyte,ubyte[]):System.Security.Cryptography.DSAParameters (Tier1)
-109 (-1.15 % of base) : 51315.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
-97 (-7.15 % of base) : 49717.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMethodSymbolWithAttributes:GetAttributesBag(byref,ubyte):Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]:this (Tier1)
-86 (-5.09 % of base) : 580902.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeIsPatternExpression(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundPattern,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-86 (-0.88 % of base) : 157633.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
-79 (-5.10 % of base) : 503359.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadHashSetTOfHashSetT>d__190:MoveNext():this (Tier0-FullOpts)
-75 (-0.31 % of base) : 166509.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
-73 (-1.71 % of base) : 579261.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitForStatement(Microsoft.CodeAnalysis.CSharp.BoundForStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
-69 (-5.62 % of base) : 150584.dasm - System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:SetOrAdd(int,System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]],ubyte,byref,byref):System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]:this (Tier1)
-66 (-4.49 % of base) : 506012.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadGenericLinkedListOfGenericLinkedList>d__194:MoveNext():this (Tier0-FullOpts)
-66 (-5.21 % of base) : 540291.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadGenericLinkedListOfGenericLinkedList>d__233:MoveNext():this (Tier0-FullOpts)
-60 (-5.34 % of base) : 262882.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericCompare(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Object,System.Object):int (Tier0-FullOpts)
-59 (-5.29 % of base) : 361046.dasm - System.Net.WebSockets.Client.Tests.LoopbackHelper+<WebSocketHandshakeAsync>d__0:MoveNext():this (Tier0-FullOpts)
-59 (-4.81 % of base) : 552717.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<ReadHashSetTOfHashSetT>d__229:MoveNext():this (Tier0-FullOpts)
-56 (-2.54 % of base) : 372998.dasm - System.Xml.XmlReaderSettings:CreateReader(System.IO.Stream,System.Uri,System.String,System.Xml.XmlParserContext):System.Xml.XmlReader:this (Tier1)
-55 (-6.66 % of base) : 570287.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMethodSymbolWithAttributes:GetAttributesBag(byref,ubyte):Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]:this (Tier1)
-55 (-6.08 % of base) : 13533.dasm - Microsoft.Interop.ComInterfaceInfo:TryGetGuid(Microsoft.CodeAnalysis.INamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Syntax.InterfaceDeclarationSyntax,byref,byref):ubyte (Tier0-FullOpts)
-51 (-1.93 % of base) : 373009.dasm - System.Xml.XmlTextReaderImpl:FinishInitStream():this (Tier1)
Top method regressions (percentages):
33 (2.58 % of base) : 598873.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33117_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
32 (2.11 % of base) : 598762.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33072_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
20 (2.07 % of base) : 589058.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29496_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
17 (1.92 % of base) : 589043.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29493_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
17 (1.90 % of base) : 589098.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29499_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
17 (1.80 % of base) : 589140.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29502_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
2 (1.71 % of base) : 526155.dasm - System.ArgumentOutOfRangeException:ThrowIfGreaterThan[float](float,float,System.String) (Instrumented Tier1)
12 (1.35 % of base) : 584438.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex27931_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
15 (1.22 % of base) : 78715.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<BuildMembersAndInitializers>g__getDeclaredMembersAndInitializers|171_0():Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializers:this (Tier1)
13 (0.82 % of base) : 586155.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex28447_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
2 (0.24 % of base) : 482055.dasm - System.Security.Cryptography.CapiHelper:ReadDSSSeed(System.Security.Cryptography.DSAParameters,System.IO.BinaryReader,ubyte) (Tier1)
4 (0.07 % of base) : 506964.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<DictionaryOfList>d__36:MoveNext():this (Tier0-FullOpts)
1 (0.07 % of base) : 598075.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32552_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (percentages):
-35 (-48.61 % of base) : 548654.dasm - System.Text.Json.JsonSerializerOptions:ConfigureForJsonSerializer():this (Tier1)
-37 (-37.76 % of base) : 153769.dasm - 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)
-37 (-37.76 % of base) : 80870.dasm - 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)
-37 (-37.76 % of base) : 57663.dasm - 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)
-37 (-37.76 % of base) : 593194.dasm - 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)
-37 (-37.76 % of base) : 77923.dasm - 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 % of base) : 53367.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:GetCachedValueAndCacheThisValueIfNoneCached_NoLock(System.Threading.Tasks.Task`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (Tier1)
-14 (-19.18 % of base) : 561752.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
-14 (-18.18 % of base) : 584403.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldNativeIntegerOverflowingUnaryOperator(int,Microsoft.CodeAnalysis.ConstantValue):System.Object (Tier1)
-21 (-16.94 % of base) : 571233.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
-35 (-15.15 % of base) : 50962.dasm - Microsoft.CodeAnalysis.CSharp.ClsComplianceChecker:CheckForMeaninglessOnReturn(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):this (Tier1)
-14 (-14.74 % of base) : 544679.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAt(int):this (Tier1)
-14 (-14.74 % of base) : 71740.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAt(int):this (Tier1)
-14 (-14.74 % of base) : 199895.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAt(int):this (Tier1)
-14 (-14.74 % of base) : 329973.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAt(int):this (Tier1)
-14 (-14.74 % of base) : 45309.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAt(int):this (Tier1)
-14 (-14.00 % of base) : 78133.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_Succeeded():ubyte:this (Tier1)
-14 (-14.00 % of base) : 152856.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_Succeeded():ubyte:this (Tier1)
-14 (-14.00 % of base) : 48175.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_Succeeded():ubyte:this (Tier1)
-14 (-14.00 % of base) : 570349.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_Succeeded():ubyte:this (Tier1)
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: 103801389 (overridden on cmd)
Total bytes of diff: 103797600 (overridden on cmd)
Total bytes of delta: -3789 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
25 : 280880.dasm (1.54 % of base)
16 : 183211.dasm (3.80 % of base)
16 : 183213.dasm (3.80 % of base)
1 : 57040.dasm (0.02 % of base)
Top file improvements (bytes):
-83 : 216274.dasm (-2.71 % of base)
-83 : 216329.dasm (-2.71 % of base)
-75 : 59835.dasm (-0.31 % of base)
-69 : 216398.dasm (-2.27 % of base)
-69 : 216233.dasm (-2.27 % of base)
-60 : 120788.dasm (-5.34 % of base)
-59 : 164338.dasm (-5.29 % of base)
-46 : 150017.dasm (-1.54 % of base)
-42 : 11170.dasm (-5.36 % of base)
-37 : 14586.dasm (-12.09 % of base)
-37 : 56985.dasm (-12.67 % of base)
-33 : 162102.dasm (-4.04 % of base)
-33 : 162201.dasm (-4.04 % of base)
-33 : 162207.dasm (-4.04 % of base)
-32 : 253770.dasm (-1.73 % of base)
-32 : 268170.dasm (-1.73 % of base)
-32 : 148153.dasm (-1.77 % of base)
-31 : 43593.dasm (-0.48 % of base)
-31 : 78634.dasm (-11.40 % of base)
-31 : 4814.dasm (-0.48 % of base)
67 total files with Code Size differences (63 improved, 4 regressed), 6 unchanged.
Top method regressions (bytes):
25 (1.54 % of base) : 280880.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3253_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
16 (3.80 % of base) : 183211.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
16 (3.80 % of base) : 183213.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
1 (0.02 % of base) : 57040.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:LowerEvaluation(Microsoft.CodeAnalysis.CSharp.BoundDagEvaluation):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
Top method improvements (bytes):
-83 (-2.71 % of base) : 216274.dasm - System.Tests.DecimalTests_GenericMath:MinMagnitudeNumberTest() (FullOpts)
-83 (-2.71 % of base) : 216329.dasm - System.Tests.DecimalTests_GenericMath:MinMagnitudeTest() (FullOpts)
-75 (-0.31 % of base) : 59835.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-69 (-2.27 % of base) : 216398.dasm - System.Tests.DecimalTests_GenericMath:MaxMagnitudeNumberTest() (FullOpts)
-69 (-2.27 % of base) : 216233.dasm - System.Tests.DecimalTests_GenericMath:MaxMagnitudeTest() (FullOpts)
-60 (-5.34 % of base) : 120788.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericCompare(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Object,System.Object):int (FullOpts)
-59 (-5.29 % of base) : 164338.dasm - System.Net.WebSockets.Client.Tests.LoopbackHelper+<WebSocketHandshakeAsync>d__0:MoveNext():this (FullOpts)
-46 (-1.54 % of base) : 150017.dasm - System.SpanTests.ReadOnlySpanTests:TestMatchMany_Char() (FullOpts)
-42 (-5.36 % of base) : 11170.dasm - Microsoft.Interop.ComInterfaceInfo:TryGetGuid(Microsoft.CodeAnalysis.INamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Syntax.InterfaceDeclarationSyntax,byref,byref):ubyte (FullOpts)
-37 (-12.67 % of base) : 56985.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
-37 (-12.09 % of base) : 14586.dasm - Microsoft.CodeAnalysis.CSharp.CodeGeneration.CSharpSyntaxGenerator:GetAllowedModifiers(ushort):Microsoft.CodeAnalysis.Editing.DeclarationModifiers (FullOpts)
-33 (-4.04 % of base) : 162102.dasm - System.Net.Tests.HttpWebRequestTest+<>c+<<SendHttpGetRequest_WithCachePolicyBypassCache_DoNotAddHeaders>b__145_1>d:MoveNext():this (FullOpts)
-33 (-4.04 % of base) : 162207.dasm - System.Net.Tests.HttpWebRequestTest+<>c+<<SendHttpGetRequest_WithGlobalCachePolicyBypassCache_DoNotAddCacheHeaders>b__144_2>d:MoveNext():this (FullOpts)
-33 (-4.04 % of base) : 162201.dasm - System.Net.Tests.WebRequestTest+<>c+<<SendGetRequest_WithGlobalCachePolicyBypassCache_DoNotAddCacheHeaders>b__21_2>d:MoveNext():this (FullOpts)
-32 (-1.77 % of base) : 148153.dasm - System.Tests.BinaryDataTests+<CanSeek>d__33:MoveNext():this (FullOpts)
-32 (-1.73 % of base) : 253770.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<RunAsCollectionElementTest>d__23`1[ubyte]:MoveNext():this (FullOpts)
-32 (-1.73 % of base) : 268170.dasm - System.Text.Json.Serialization.Tests.NumberHandlingTests+<RunAsCollectionElementTest>d__23`1[ubyte]:MoveNext():this (FullOpts)
-31 (-0.48 % of base) : 43593.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveMetadataReferences(System.__Canon,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]]:this (FullOpts)
-31 (-0.48 % of base) : 4814.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveMetadataReferences(System.__Canon,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]]:this (FullOpts)
-31 (-11.40 % of base) : 78634.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,int]:MoveDownDefaultComparer(System.ValueTuple`2[System.__Canon,int],int):this (FullOpts)
Top method regressions (percentages):
16 (3.80 % of base) : 183211.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBase64(ubyte[],int,int):int:this (FullOpts)
16 (3.80 % of base) : 183213.dasm - System.Xml.XmlSubtreeReader:ReadContentAsBinHex(ubyte[],int,int):int:this (FullOpts)
25 (1.54 % of base) : 280880.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3253_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
1 (0.02 % of base) : 57040.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:LowerEvaluation(Microsoft.CodeAnalysis.CSharp.BoundDagEvaluation):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
Top method improvements (percentages):
-19 (-37.25 % of base) : 147577.dasm - System.Management.ManagementClassGenerator:isTypeInt(int):ubyte (FullOpts)
-17 (-25.00 % of base) : 5385.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
-30 (-21.74 % of base) : 159041.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
-14 (-21.54 % of base) : 43846.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
-14 (-21.54 % of base) : 49548.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
-20 (-16.67 % of base) : 159029.dasm - System.Net.Mail.MailCommand:CheckResponse(int,System.String) (FullOpts)
-17 (-14.53 % of base) : 159034.dasm - System.Net.Mail.DataCommand:CheckResponse(int,System.String) (FullOpts)
-37 (-12.67 % of base) : 56985.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
-37 (-12.09 % of base) : 14586.dasm - Microsoft.CodeAnalysis.CSharp.CodeGeneration.CSharpSyntaxGenerator:GetAllowedModifiers(ushort):Microsoft.CodeAnalysis.Editing.DeclarationModifiers (FullOpts)
-31 (-11.40 % of base) : 78634.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,int]:MoveDownDefaultComparer(System.ValueTuple`2[System.__Canon,int],int):this (FullOpts)
-14 (-9.72 % of base) : 10044.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
-14 (-9.66 % of base) : 14195.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]:JoinPendingBranches(byref,Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol):this (FullOpts)
-14 (-8.97 % of base) : 278192.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:ResolveBranches(Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):ubyte:this (FullOpts)
-26 (-8.13 % of base) : 142877.dasm - System.Linq.Enumerable:Max[double,double](System.Collections.Generic.IEnumerable`1[double],System.Func`2[double,double]):double (FullOpts)
-14 (-7.87 % of base) : 13153.dasm - Microsoft.CodeAnalysis.Collections.CachingDictionary`2[System.ReadOnlyMemory`1[ushort],System.__Canon]:EnsureFullyPopulated():System.Collections.Generic.IDictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:this (FullOpts)
-27 (-7.65 % of base) : 77435.dasm - System.Collections.Tests.List_Generic_Tests`1[System.__Canon]:Constructor_IEnumerable(int,int,int,int,int):this (FullOpts)
-14 (-7.00 % of base) : 45380.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:GetFirstMemberKind(ubyte):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this (FullOpts)
-14 (-6.76 % of base) : 52305.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:GetFirstMemberKind(ubyte):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this (FullOpts)
-14 (-6.33 % of base) : 14691.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:GetFirstMemberKind(ubyte):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this (FullOpts)
-14 (-6.19 % of base) : 21513.dasm - System.Uri:get_HostNameType():int:this (FullOpts)
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: 11353700 (overridden on cmd)
Total bytes of diff: 11352769 (overridden on cmd)
Total bytes of delta: -931 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
1 : 29513.dasm (0.02 % of base)
Top file improvements (bytes):
-108 : 4501.dasm (-36.61 % of base)
-60 : 5863.dasm (-5.34 % of base)
-47 : 9592.dasm (-4.71 % of base)
-40 : 8746.dasm (-2.48 % of base)
-37 : 28981.dasm (-12.67 % of base)
-34 : 1468.dasm (-4.40 % of base)
-30 : 24505.dasm (-0.97 % of base)
-30 : 27173.dasm (-2.12 % of base)
-28 : 21205.dasm (-0.56 % of base)
-25 : 26906.dasm (-5.07 % of base)
-22 : 16292.dasm (-1.90 % of base)
-22 : 7026.dasm (-1.69 % of base)
-20 : 24219.dasm (-1.55 % of base)
-20 : 5143.dasm (-6.71 % of base)
-18 : 32440.dasm (-4.11 % of base)
-18 : 34122.dasm (-0.75 % of base)
-18 : 10184.dasm (-24.66 % of base)
-17 : 7927.dasm (-0.47 % of base)
-15 : 10187.dasm (-3.25 % of base)
-15 : 24347.dasm (-2.17 % of base)
51 total files with Code Size differences (50 improved, 1 regressed), 2 unchanged.
Top method regressions (bytes):
1 (0.02 % of base) : 29513.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:LowerEvaluation(Microsoft.CodeAnalysis.CSharp.BoundDagEvaluation):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
Top method improvements (bytes):
-108 (-36.61 % of base) : 4501.dasm - FSharp.Compiler.LexFilter:tokenForcesHeadContextClosure@1347(FSharp.Compiler.LexFilter+LexFilterImpl,FSharp.Compiler.Parser+token,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.LexFilter+Context]):ubyte (FullOpts)
-60 (-5.34 % of base) : 5863.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericCompare(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Object,System.Object):int (FullOpts)
-47 (-4.71 % of base) : 9592.dasm - FSharp.Compiler.NameResolution:AddResults[System.__Canon](Internal.Utilities.Library.ResultOrException`1[System.__Canon],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
-40 (-2.48 % of base) : 8746.dasm - FSharp.Compiler.ConstraintSolver:consistent@1992(FSharp.Compiler.ConstraintSolver+ConstraintSolverEnv,int,FSharp.Compiler.Text.Range,FSharp.Compiler.ConstraintSolver+OptionalTrace,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+TyparConstraint,FSharp.Compiler.TypedTree+TyparConstraint):FSharp.Compiler.ErrorLogger+OperationResult`1[Microsoft.FSharp.Core.Unit] (FullOpts)
-37 (-12.67 % of base) : 28981.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
-34 (-4.40 % of base) : 1468.dasm - BepuUtilities.Collections.QuickSort:Sort[BepuPhysics.CollisionDetection.TypeBatchIndex,BepuPhysics.CollisionDetection.ConstraintRemover+RemovalsForTypeBatch,BepuPhysics.CollisionDetection.ConstraintRemover+TypeBatchIndexComparer](byref,byref,int,int,byref) (FullOpts)
-30 (-2.12 % of base) : 27173.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:GetRefEscape(Microsoft.CodeAnalysis.CSharp.BoundExpression,uint):uint:this (FullOpts)
-30 (-0.97 % of base) : 24505.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMethodSymbolWithAttributes:DecodeDllImportAttribute(byref):this (FullOpts)
-28 (-0.56 % of base) : 21205.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
-25 (-5.07 % of base) : 26906.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddDelegateOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature]):this (FullOpts)
-22 (-1.69 % of base) : 7026.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:seekReadConstant(FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader,FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+HasConstantTag]):FSharp.Compiler.AbstractIL.IL+ILFieldInit (FullOpts)
-22 (-1.90 % of base) : 16292.dasm - Microsoft.ML.Data.EvaluatorBase`1[System.__Canon]:ProcessData(Microsoft.ML.IDataView,Microsoft.ML.Data.RoleMappedSchema,System.Func`2[int,ubyte],System.__Canon,System.__Canon[]):System.Collections.Generic.Dictionary`2[System.String,Microsoft.ML.IDataView]:this (FullOpts)
-20 (-6.71 % of base) : 5143.dasm - FSharp.Compiler.LexFilter:infixTokenLength(FSharp.Compiler.Parser+token):int (FullOpts)
-20 (-1.55 % of base) : 24219.dasm - Microsoft.CodeAnalysis.AttributeData:DecodeStructLayoutAttribute[System.__Canon,System.__Canon,System.__Canon,short](byref,int,int,Microsoft.CodeAnalysis.CommonMessageProvider) (FullOpts)
-18 (-24.66 % of base) : 10184.dasm - FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
-18 (-4.11 % of base) : 32440.dasm - Microsoft.PowerShell.Commands.RegistryProvider:GetHiveRoot(System.String):Microsoft.PowerShell.Commands.IRegistryWrapper:this (FullOpts)
-18 (-0.75 % of base) : 34122.dasm - System.Management.Automation.PipelineOps:AddCommand(System.Management.Automation.Internal.PipelineProcessor,System.Management.Automation.CommandParameterInternal[],System.Management.Automation.Language.CommandBaseAst,System.Management.Automation.CommandRedirection[],System.Management.Automation.ExecutionContext):System.Management.Automation.CommandProcessorBase (FullOpts)
-17 (-0.47 % of base) : 7927.dasm - FSharp.Compiler.ConstraintSolver:ResolveOverloading(FSharp.Compiler.ConstraintSolver+ConstraintSolverEnv,FSharp.Compiler.ConstraintSolver+OptionalTrace,System.String,int,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TraitConstraintInfo],FSharp.Compiler.MethodCalls+CallerArgs`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.AccessibilityLogic+AccessorDomain,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.MethodCalls+CalledMeth`1[FSharp.Compiler.TypedTree+Expr]],ubyte,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.ConstraintSolver+OverallTy]):System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.MethodCalls+CalledMeth`1[FSharp.Compiler.TypedTree+Expr]],FSharp.Compiler.ErrorLogger+OperationResult`1[Microsoft.FSharp.Core.Unit]] (FullOpts)
-15 (-3.25 % of base) : 10187.dasm - FSharp.Compiler.Infos+PropInfo:get_IsIndexer():ubyte:this (FullOpts)
-15 (-2.17 % of base) : 24347.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:DecodeMemberNotNullWhenAttribute[System.__Canon](Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref) (FullOpts)
Top method regressions (percentages):
1 (0.02 % of base) : 29513.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+PatternLocalRewriter:LowerEvaluation(Microsoft.CodeAnalysis.CSharp.BoundDagEvaluation):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
Top method improvements (percentages):
-108 (-36.61 % of base) : 4501.dasm - FSharp.Compiler.LexFilter:tokenForcesHeadContextClosure@1347(FSharp.Compiler.LexFilter+LexFilterImpl,FSharp.Compiler.Parser+token,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.LexFilter+Context]):ubyte (FullOpts)
-18 (-24.66 % of base) : 10184.dasm - FSharp.Compiler.Infos+PropInfo:get_IsFSharpEventProperty():ubyte:this (FullOpts)
-37 (-12.67 % of base) : 28981.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
-14 (-9.86 % of base) : 24895.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
-14 (-9.66 % of base) : 25639.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:JoinPendingBranches(byref,Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol):this (FullOpts)
-14 (-8.97 % of base) : 26137.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:ResolveBranches(Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):ubyte:this (FullOpts)
-20 (-6.71 % of base) : 5143.dasm - FSharp.Compiler.LexFilter:infixTokenLength(FSharp.Compiler.Parser+token):int (FullOpts)
-14 (-6.19 % of base) : 17039.dasm - System.Uri:get_HostNameType():int:this (FullOpts)
-60 (-5.34 % of base) : 5863.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericCompare(Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+GenericComparer,System.Object,System.Object):int (FullOpts)
-5 (-5.15 % of base) : 23583.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AttributeDataExtensions:DecodeNotNullIfNotNullAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):System.String (FullOpts)
-25 (-5.07 % of base) : 26906.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddDelegateOperation(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature]):this (FullOpts)
-47 (-4.71 % of base) : 9592.dasm - FSharp.Compiler.NameResolution:AddResults[System.__Canon](Internal.Utilities.Library.ResultOrException`1[System.__Canon],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
-6 (-4.69 % of base) : 30260.dasm - 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)
-5 (-4.50 % of base) : 24021.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbolBase:DecodeMaybeNullWhenOrNotNullWhenOrDoesNotReturnIfAttribute(Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData):System.Nullable`1[ubyte] (FullOpts)
-34 (-4.40 % of base) : 1468.dasm - BepuUtilities.Collections.QuickSort:Sort[BepuPhysics.CollisionDetection.TypeBatchIndex,BepuPhysics.CollisionDetection.ConstraintRemover+RemovalsForTypeBatch,BepuPhysics.CollisionDetection.ConstraintRemover+TypeBatchIndexComparer](byref,byref,int,int,byref) (FullOpts)
-18 (-4.11 % of base) : 32440.dasm - Microsoft.PowerShell.Commands.RegistryProvider:GetHiveRoot(System.String):Microsoft.PowerShell.Commands.IRegistryWrapper:this (FullOpts)
-7 (-4.02 % of base) : 22223.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<BuildMembersAndInitializers>g__buildDeclaredMembersAndInitializers|169_1(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializers:this (FullOpts)
-14 (-3.79 % of base) : 21513.dasm - Microsoft.CodeAnalysis.AttributeData:DecodeAttributeUsageAttribute(Microsoft.CodeAnalysis.TypedConstant,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[System.String,Microsoft.CodeAnalysis.TypedConstant]]):Microsoft.CodeAnalysis.AttributeUsageInfo (FullOpts)
-15 (-3.25 % of base) : 10187.dasm - FSharp.Compiler.Infos+PropInfo:get_IsIndexer():ubyte:this (FullOpts)
-8 (-3.24 % of base) : 21595.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:TrackAnalyzedNullabilityThroughConversionGroup(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.CSharp.BoundExpression):this (FullOpts)