Assembly Diffs
linux arm
Diffs are based on 2,228,746 contexts (825,130 MinOpts, 1,403,616 FullOpts).
MISSED contexts: base: 77,529 (3.36%), diff: 79,285 (3.44%)
Overall (+53,448,948 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.arm.checked.mch |
15,030,000 |
+1,464,368 |
| benchmarks.run_pgo.linux.arm.checked.mch |
63,279,568 |
+4,101,278 |
| benchmarks.run_tiered.linux.arm.checked.mch |
17,368,546 |
+1,394,258 |
| coreclr_tests.run.linux.arm.checked.mch |
320,937,174 |
+6,505,036 |
| libraries.crossgen2.linux.arm.checked.mch |
36,614,296 |
+3,331,352 |
| libraries.pmi.linux.arm.checked.mch |
48,572,466 |
+5,001,566 |
| libraries_tests.run.linux.arm.Release.mch |
243,987,636 |
+23,325,954 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
93,237,428 |
+6,452,200 |
| realworld.run.linux.arm.checked.mch |
13,249,158 |
+1,872,936 |
FullOpts (+53,448,948 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.arm.checked.mch |
14,646,534 |
+1,464,368 |
| benchmarks.run_pgo.linux.arm.checked.mch |
51,637,824 |
+4,101,278 |
| benchmarks.run_tiered.linux.arm.checked.mch |
10,176,318 |
+1,394,258 |
| coreclr_tests.run.linux.arm.checked.mch |
108,295,518 |
+6,505,036 |
| libraries.crossgen2.linux.arm.checked.mch |
36,613,066 |
+3,331,352 |
| libraries.pmi.linux.arm.checked.mch |
48,465,962 |
+5,001,566 |
| libraries_tests.run.linux.arm.Release.mch |
121,696,850 |
+23,325,954 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
83,153,626 |
+6,452,200 |
| realworld.run.linux.arm.checked.mch |
12,799,472 |
+1,872,936 |
Example diffs
benchmarks.run.linux.arm.checked.mch
-8 (-12.90%) : 21494.dasm - Struct.SpanWrapper:SumSpanWrapper(Struct.SpanWrapper`1[int]):int:this (FullOpts)
@@ -10,20 +10,20 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Struct.SpanWrapper>
; V01 arg1 [V01,T05] ( 4, 4 ) struct ( 8) [sp+0x08] do-not-enreg[S] ld-addr-op single-def <Struct.SpanWrapper`1[int]>
-; V02 loc0 [V02,T03] ( 4, 9 ) int -> r0
+; V02 loc0 [V02,T04] ( 5, 9.25) int -> r0
;* V03 loc1 [V03 ] ( 0, 0 ) struct (12) zero-ref do-not-enreg[SF] ld-addr-op <System.ReadOnlySpan`1+Enumerator[int]>
;* V04 loc2 [V04 ] ( 0, 0 ) int -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) struct (12) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1+Enumerator[int]>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "Span.get_Item index"
-;* V09 tmp4 [V09,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V09 tmp4 [V09,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V10 tmp5 [V10,T00] ( 3, 20 ) int -> r1 "Inline stloc first use temp"
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x4)" P-INDEP
-; V13 tmp8 [V13,T06] ( 2, 3 ) byref -> r3 single-def "V03.[000..004)"
-; V14 tmp9 [V14,T02] ( 3, 11 ) int -> r2 single-def "V03.[004..008)"
-; V15 tmp10 [V15,T01] ( 5, 17 ) int -> r1 "V03.[008..012)"
+; V13 tmp8 [V13,T06] ( 3, 3.25) byref -> r3 single-def "V03.[000..004)"
+; V14 tmp9 [V14,T02] ( 3, 10 ) int -> r2 single-def "V03.[004..008)"
+; V15 tmp10 [V15,T01] ( 4, 14.50) int -> r1 "V03.[008..012)"
; V16 tmp11 [V16,T07] ( 2, 2 ) byref -> r3 single-def "V06.[000..004)"
; V17 tmp12 [V17,T08] ( 2, 2 ) int -> r2 single-def "V06.[004..008)"
;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref "V06.[008..012)"
@@ -40,39 +40,41 @@ G_M19652_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr r3, [sp+0x08]
; byrRegs +[r3]
ldr r2, [sp+0x0C]
- mov r1, -1
b SHORT G_M19652_IG04
- ;; size=12 bbWeight=1 PerfScore 5.00
-G_M19652_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
- cmp r1, r2
- bhs SHORT G_M19652_IG07
+ ;; size=8 bbWeight=1 PerfScore 4.00
+G_M19652_IG03: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ldr r0, [r3]
+ b SHORT G_M19652_IG07
+ ;; size=4 bbWeight=0.25 PerfScore 0.50
+G_M19652_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ cmp r2, 0
+ ble SHORT G_M19652_IG09
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M19652_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ movs r1, 0
+ b SHORT G_M19652_IG03
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M19652_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
lsl lr, r1, 2
ldr lr, [r3+lr]
add r0, lr
- ;; size=14 bbWeight=2 PerfScore 10.00
-G_M19652_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ;; size=10 bbWeight=2 PerfScore 6.00
+G_M19652_IG07: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
adds r1, r1, 1
cmp r1, r2
- bge SHORT G_M19652_IG06
+ bge SHORT G_M19652_IG09
;; size=6 bbWeight=8 PerfScore 24.00
-G_M19652_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
- b SHORT G_M19652_IG03
+G_M19652_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ b SHORT G_M19652_IG06
;; size=2 bbWeight=4 PerfScore 4.00
-G_M19652_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M19652_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r3]
pop {r11,lr}
add sp, 8
bx lr
;; size=8 bbWeight=4 PerfScore 12.00
-G_M19652_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- bkpt
- ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 62, prolog size 8, PerfScore 58.00, instruction count 24, allocated bytes for code 62 (MethodHash=47afb33b) for method Struct.SpanWrapper:SumSpanWrapper(Struct.SpanWrapper`1[int]):int:this (FullOpts)
+; Total bytes of code 54, prolog size 8, PerfScore 56.50, instruction count 23, allocated bytes for code 54 (MethodHash=47afb33b) for method Struct.SpanWrapper:SumSpanWrapper(Struct.SpanWrapper`1[int]):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -84,7 +86,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
+ Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-5.17%) : 12710.dasm - Sigil.Impl.LinqAlternative+<Where>d_2`1[int]:MoveNext():ubyte:this (FullOpts)
@@ -8,167 +8,152 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 18, 16.50) ref -> [sp+0x04] this class-hnd EH-live single-def <Sigil.Impl.LinqAlternative+<_Where>d__2`1[int]>
+; V00 this [V00,T00] ( 17, 9 ) ref -> [sp+0x04] this class-hnd EH-live single-def <Sigil.Impl.LinqAlternative+<_Where>d__2`1[int]>
; V01 loc0 [V01,T03] ( 4, 2.50) ubyte -> r0
; V02 loc1 [V02,T04] ( 3, 2.50) int -> r0 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" <<unknown class>>
-; V05 tmp2 [V05,T02] ( 2, 8 ) int -> r1 "argument with side effect"
-; V06 tmp3 [V06,T01] ( 3, 12 ) ref -> r5 "argument with side effect"
-; V07 PSPSym [V07,T05] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym"
+; V05 tmp2 [V05,T02] ( 2, 1 ) int -> r1 "argument with side effect"
+; V06 tmp3 [V06,T01] ( 3, 1.50) ref -> r6 "argument with side effect"
+; V07 PSPSym [V07,T06] ( 1, 1 ) int -> [sp+0x08] do-not-enreg[V] "PSPSym"
+; V08 cse0 [V08,T05] ( 5, 2 ) ref -> r0 multi-def "CSE - aggressive"
; TEMP_01 ref -> [r11-0x18]
;
-; Lcl frame size = 16
+; Lcl frame size = 12
G_M46418_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- sub sp, 16
+ push {r4,r5,r6,r11,lr}
+ sub sp, 12
add r11, sp, 24
movs r1, 0
str r1, [sp] // [TEMP_01]
add r1, sp, 32
- str r1, [sp+0x0C] // [V07 PSPSym]
+ str r1, [sp+0x08] // [V07 PSPSym]
str r0, [sp+0x04] // [V00 this]
; GC ptr vars +{V00}
- mov r4, r0
- ; gcrRegs +[r4]
+ mov r5, r0
+ ; gcrRegs +[r5]
;; size=22 bbWeight=1 PerfScore 9.00
-G_M46418_IG02: ; bbWeight=1, gcVars=00000001 {V00}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr r0, [r4+0x18]
+G_M46418_IG02: ; bbWeight=1, gcVars=00000001 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr r0, [r5+0x18]
cmp r0, 0
beq SHORT G_M46418_IG04
;; size=6 bbWeight=1 PerfScore 3.00
-G_M46418_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M46418_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
cmp r0, 1
- beq SHORT G_M46418_IG09
+ beq SHORT G_M46418_IG07
movs r0, 0
- b SHORT G_M46418_IG11
+ b SHORT G_M46418_IG12
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M46418_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M46418_IG04: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
mov r0, -1
- str r0, [r4+0x18]
- ldr r0, [r4+0x04]
+ str r0, [r5+0x18]
+ ldr r0, [r5+0x04]
; gcrRegs +[r0]
movw r4, 0xd1ff
- ; gcrRegs -[r4]
movt r4, 0xd1ff
ldr r3, [r4]
blx r3 // <unknown method>
; gcr arg pop 0
str r0, [sp]
- ldr r4, [sp+0x04] // [V00 this]
- ; gcrRegs +[r4]
- add r0, r4, 20
+ add r0, r5, 20
; gcrRegs -[r0]
; byrRegs +[r0]
- ldr r1, [sp] // [TEMP_01]
+ ldr r1, [sp]
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
- b SHORT G_M46418_IG09
- ;; size=42 bbWeight=0.50 PerfScore 7.50
-G_M46418_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4]
- ldr r4, [sp+0x04] // [V00 this]
- ; gcrRegs +[r4]
- ldr r5, [r4+0x0C]
- ; gcrRegs +[r5]
- ldr r0, [r4+0x14]
+ b SHORT G_M46418_IG07
+ ;; size=40 bbWeight=0.50 PerfScore 7.00
+G_M46418_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ mov r0, -1
+ str r0, [r5+0x18]
+ ldr r0, [r5+0x14]
+ ; gcrRegs +[r0]
+ cmp r0, 0
+ beq SHORT G_M46418_IG11
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ ; gcr arg pop 0
+ b SHORT G_M46418_IG11
+ ;; size=26 bbWeight=0.50 PerfScore 5.00
+G_M46418_IG06: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r5+0x14]
+ ; gcrRegs +[r0]
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ ; gcr arg pop 0
+ str r0, [r5+0x1C]
+ movs r0, 1
+ str r0, [r5+0x18]
+ b SHORT G_M46418_IG12
+ ;; size=22 bbWeight=0.50 PerfScore 4.50
+G_M46418_IG07: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ mvn r0, 2
+ str r0, [r5+0x18]
+ b SHORT G_M46418_IG09
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M46418_IG08: ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ldr r6, [r5+0x0C]
+ ; gcrRegs +[r6]
+ ldr r0, [r5+0x14]
; gcrRegs +[r0]
movw r4, 0xd1ff
- ; gcrRegs -[r4]
movt r4, 0xd1ff
ldr r3, [r4]
blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
mov r1, r0
- ldr r0, [r5+0x04]
+ ldr r0, [r6+0x04]
; gcrRegs +[r0]
- ldr r3, [r5+0x0C]
+ ldr r3, [r6+0x0C]
blx r3 // <unknown method>
- ; gcrRegs -[r0 r5]
+ ; gcrRegs -[r0 r6]
+ ; gcr arg pop 0
+ cmp r0, 0
+ bne SHORT G_M46418_IG06
+ ;; size=28 bbWeight=0.25 PerfScore 3.00
+G_M46418_IG09: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r5+0x14]
+ ; gcrRegs +[r0]
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- ldr r4, [sp+0x04] // [V00 this]
- ; gcrRegs +[r4]
bne SHORT G_M46418_IG08
- ;; size=32 bbWeight=2 PerfScore 28.00
-G_M46418_IG06: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r4+0x14]
- ; gcrRegs +[r0]
- movw r4, 0xd1ff
- ; gcrRegs -[r4]
- movt r4, 0xd1ff
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; gcrRegs -[r0]
- ; gcr arg pop 0
- cmp r0, 0
- bne SHORT G_M46418_IG05
- ;; size=18 bbWeight=4 PerfScore 28.00
-G_M46418_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov r0, -1
- ldr r4, [sp+0x04]
- ; gcrRegs +[r4]
- str r0, [r4+0x18]
- ldr r0, [r4+0x14]
- ; gcrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M46418_IG10
- ldr r0, [r4+0x14]
- movw r4, 0xd1ff
- ; gcrRegs -[r4]
- movt r4, 0xd1ff
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; gcrRegs -[r0]
- ; gcr arg pop 0
- ldr r4, [sp+0x04] // [V00 this]
- ; gcrRegs +[r4]
- b SHORT G_M46418_IG10
- ;; size=32 bbWeight=0.50 PerfScore 6.50
-G_M46418_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r4+0x14]
- ; gcrRegs +[r0]
- movw r4, 0xd1ff
- ; gcrRegs -[r4]
- movt r4, 0xd1ff
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; gcrRegs -[r0]
- ; gcr arg pop 0
- ldr r4, [sp+0x04] // [V00 this]
- ; gcrRegs +[r4]
- str r0, [r4+0x1C]
- movs r0, 1
- str r0, [r4+0x18]
- b SHORT G_M46418_IG11
- ;; size=24 bbWeight=0.50 PerfScore 5.00
-G_M46418_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- mvn r0, 2
- str r0, [r4+0x18]
- b SHORT G_M46418_IG06
- ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M46418_IG10: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ;; size=18 bbWeight=0.50 PerfScore 3.50
+G_M46418_IG10: ; bbWeight=0.06, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M46418_IG05
+ ;; size=2 bbWeight=0.06 PerfScore 0.06
+G_M46418_IG11: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
movs r0, 0
- str r0, [r4+0x14]
+ str r0, [r5+0x14]
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M46418_IG11: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
- ; gcrRegs -[r4]
+G_M46418_IG12: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+ ; gcrRegs -[r5]
; GC ptr vars -{V00}
- add sp, 16
- pop {r4,r5,r11,pc}
+ add sp, 12
+ pop {r4,r5,r6,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M46418_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
- push {r2,r3,r4,r5,r11,lr}
+G_M46418_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ push {r3,r4,r5,r6,r11,lr}
add r3, r11, 8
...
-6 (-2.04%) : 663.dasm - System.Linq.Enumerable+d64`1[System.Canon]:MoveNext():ubyte:this (FullOpts)
@@ -8,10 +8,10 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 17, 15.75) ref -> [sp+0x08] this class-hnd EH-live single-def <System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]>
+; V00 this [V00,T00] ( 17, 8.75) ref -> [sp+0x08] this class-hnd EH-live single-def <System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]>
; V01 loc0 [V01,T03] ( 4, 2.50) ubyte -> r0
; V02 loc1 [V02,T04] ( 3, 2.50) int -> r0
-; V03 loc2 [V03,T01] ( 4, 4.62) ref -> r5 class-hnd <<unknown class>>
+; V03 loc2 [V03,T01] ( 4, 1.12) ref -> r4 class-hnd <<unknown class>>
;* 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,T06] ( 3, 1.25) int -> r3 "fgMakeTemp is creating a new local variable"
@@ -33,68 +33,129 @@ G_M56914_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
str r0, [r11-0x14]
str r0, [sp+0x08] // [V00 this]
; GC ptr vars +{V00}
- mov r4, r0
- ; gcrRegs +[r4]
+ mov r5, r0
+ ; gcrRegs +[r5]
;; size=26 bbWeight=1 PerfScore 10.00
-G_M56914_IG02: ; bbWeight=1, gcVars=00000001 {V00}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr r0, [r4+0x14]
+G_M56914_IG02: ; bbWeight=1, gcVars=00000001 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr r0, [r5+0x14]
cmp r0, 0
beq SHORT G_M56914_IG04
;; size=6 bbWeight=1 PerfScore 3.00
-G_M56914_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M56914_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
cmp r0, 1
- beq SHORT G_M56914_IG12
+ beq SHORT G_M56914_IG10
movs r0, 0
- b SHORT G_M56914_IG14
+ b SHORT G_M56914_IG15
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M56914_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M56914_IG04: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
mov r0, -1
- str r0, [r4+0x14]
- ldr r0, [r4+0x08]
+ str r0, [r5+0x14]
+ ldr r0, [r5+0x08]
; gcrRegs +[r0]
movw r4, 0xd1ff
- ; gcrRegs -[r4]
movt r4, 0xd1ff
ldr r3, [r4]
blx r3 // <unknown method>
; gcr arg pop 0
str r0, [sp+0x04]
- ldr r4, [sp+0x08] // [V00 this]
- ; gcrRegs +[r4]
- add r0, r4, 16
+ add r0, r5, 16
; gcrRegs -[r0]
; byrRegs +[r0]
- ldr r1, [sp+0x04] // [TEMP_01]
+ ldr r1, [sp+0x04]
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
- b SHORT G_M56914_IG12
- ;; size=42 bbWeight=0.50 PerfScore 7.50
-G_M56914_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4]
- ldr r4, [sp+0x08] // [V00 this]
+ b SHORT G_M56914_IG10
+ ;; size=40 bbWeight=0.50 PerfScore 7.00
+G_M56914_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ mov r1, -1
+ str r1, [r5+0x14]
+ ldr r1, [r5+0x10]
+ ; gcrRegs +[r1]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[r1] +[r0]
+ ; gcr arg pop 0
+ cmp r0, 0
+ beq SHORT G_M56914_IG14
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ ; gcr arg pop 0
+ b SHORT G_M56914_IG14
+ ;; size=44 bbWeight=0.50 PerfScore 7.50
+G_M56914_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r4]
- ldr r0, [r4+0x10]
+ mov r1, r4
+ ; gcrRegs +[r1]
+ cmp r1, 0
+ beq SHORT G_M56914_IG09
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M56914_IG07: ; bbWeight=0.25, gcrefRegs=0032 {r1 r4 r5}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r1]
+ ldr r3, [r5]
+ ldr r3, [r3+0x24]
+ ldr r3, [r3]
+ ldr r3, [r3]
+ cmp r0, r3
+ beq SHORT G_M56914_IG09
+ ;; size=14 bbWeight=0.25 PerfScore 1.75
+G_M56914_IG08: ; bbWeight=0.12, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1]
+ mov r0, r3
+ mov r1, r4
+ ; gcrRegs +[r1]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_CHKCASTANY
+ ; gcrRegs -[r1 r4] +[r0]
+ ; gcr arg pop 0
+ mov r1, r0
+ ; gcrRegs +[r1]
+ ;; size=16 bbWeight=0.12 PerfScore 0.75
+G_M56914_IG09: ; bbWeight=0.50, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0]
+ adds r0, r5, 4
+ ; byrRegs +[r0]
+ movw r12, 0xd1ff
+ movt r12, 0xd1ff
+ blx r12 // CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[r1]
+ ; byrRegs -[r0]
+ movs r1, 1
+ str r1, [r5+0x14]
+ mov r0, r1
+ b SHORT G_M56914_IG15
+ ;; size=20 bbWeight=0.50 PerfScore 4.00
+G_M56914_IG10: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ mvn r0, 2
+ str r0, [r5+0x14]
+ b SHORT G_M56914_IG12
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M56914_IG11: ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r5+0x10]
; gcrRegs +[r0]
movw r4, 0xd1ff
- ; gcrRegs -[r4]
movt r4, 0xd1ff
ldr r3, [r4]
blx r3 // <unknown method>
; gcr arg pop 0
- mov r5, r0
- ; gcrRegs +[r5]
- ldr r4, [sp+0x08] // [V00 this]
+ mov r4, r0
; gcrRegs +[r4]
- ldr r0, [r4]
+ ldr r0, [r5]
; gcrRegs -[r0]
ldr r0, [r0+0x24]
ldr r0, [r0]
ldr r0, [r0]
- mov r1, r5
+ mov r1, r4
; gcrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -102,111 +163,39 @@ G_M56914_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
cmp r0, 0
- bne SHORT G_M56914_IG08
- ;; size=44 bbWeight=2 PerfScore 36.00
-G_M56914_IG06: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0 r5]
- ldr r0, [r4+0x10]
+ bne SHORT G_M56914_IG06
+ ;; size=40 bbWeight=0.25 PerfScore 4.00
+G_M56914_IG12: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0 r4]
+ ldr r0, [r5+0x10]
; gcrRegs +[r0]
movw r4, 0xd1ff
- ; gcrRegs -[r4]
movt r4, 0xd1ff
ldr r3, [r4]
blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- bne SHORT G_M56914_IG05
- ;; size=18 bbWeight=4 PerfScore 28.00
-G_M56914_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov r1, -1
- ldr r4, [sp+0x08]
- ; gcrRegs +[r4]
- str r1, [r4+0x14]
- ldr r1, [r4+0x10]
- ; gcrRegs +[r1]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[r1 r4] +[r0]
- ; gcr arg pop 0
- cmp r0, 0
- beq SHORT G_M56914_IG13
- movw r4, 0xd1ff
- movt r4, 0xd1ff
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; gcrRegs -[r0]
- ; gcr arg pop 0
- b SHORT G_M56914_IG13
- ;; size=46 bbWeight=0.50 PerfScore 8.00
-G_M56914_IG08: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r4-r5]
- mov r1, r5
- ; gcrRegs +[r1]
- cmp r1, 0
- beq SHORT G_M56914_IG11
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M56914_IG09: ; bbWeight=0.25, gcrefRegs=0032 {r1 r4 r5}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r1]
- ldr r3, [r4]
- ldr r3, [r3+0x24]
- ldr r3, [r3]
- ldr r3, [r3]
- cmp r0, r3
- beq SHORT G_M56914_IG11
- ;; size=14 bbWeight=0.25 PerfScore 1.75
-G_M56914_IG10: ; bbWeight=0.12, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r1]
- mov r0, r3
- mov r1, r5
- ; gcrRegs +[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[r1 r5] +[r0]
- ; gcr arg pop 0
- mov r1, r0
- ; gcrRegs +[r1]
- ;; size=16 bbWeight=0.12 PerfScore 0.75
-G_M56914_IG11: ; bbWeight=0.50, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0]
...
+46 (+67.65%) : 17314.dasm - System.Collections.Generic.SortedSet1[int]:FindNode(int):System.Collections.Generic.SortedSet1+Node[int]:this (FullOpts)
@@ -8,19 +8,19 @@
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 7 ) ref -> r5 this class-hnd single-def <System.Collections.Generic.SortedSet`1[int]>
-; V01 arg1 [V01,T04] ( 3, 6 ) int -> r6 single-def
-; V02 loc0 [V02,T00] ( 8, 18.50) ref -> r7 class-hnd <System.Collections.Generic.SortedSet`1+Node[int]>
-; V03 loc1 [V03,T01] ( 3, 12 ) int -> r0
+; V00 this [V00,T03] ( 5, 8 ) ref -> r5 this class-hnd single-def <System.Collections.Generic.SortedSet`1[int]>
+; V01 arg1 [V01,T04] ( 4, 7 ) int -> r6 single-def
+; V02 loc0 [V02,T00] ( 13, 22.50) ref -> r7 class-hnd <System.Collections.Generic.SortedSet`1+Node[int]>
+; V03 loc1 [V03,T01] ( 6, 15 ) int -> r0
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>>
-; V06 tmp2 [V06,T03] ( 3, 8 ) ref -> r0
+; V06 tmp2 [V06,T02] ( 6, 10 ) ref -> r8
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M47962_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr}
- add r11, sp, 16
+ push {r3,r4,r5,r6,r7,r8,r11,lr}
+ add r11, sp, 24
mov r5, r0
; gcrRegs +[r5]
mov r6, r1
@@ -29,9 +29,7 @@ G_M47962_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
ldr r7, [r5+0x04]
; gcrRegs +[r7]
cmp r7, 0
- beq SHORT G_M47962_IG07
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M47962_IG03: ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+ beq SHORT G_M47962_IG10
ldr r0, [r5+0x08]
; gcrRegs +[r0]
ldr r2, [r7+0x0C]
@@ -42,44 +40,77 @@ G_M47962_IG03: ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
; gcrRegs -[r0]
cmp r0, 0
- beq SHORT G_M47962_IG09
+ beq SHORT G_M47962_IG12
cmp r0, 0
- blt SHORT G_M47962_IG05
- ;; size=26 bbWeight=4 PerfScore 44.00
-G_M47962_IG04: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r7+0x08]
- ; gcrRegs +[r0]
- b SHORT G_M47962_IG06
- ;; size=4 bbWeight=2 PerfScore 4.00
-G_M47962_IG05: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- ldr r0, [r7+0x04]
- ; gcrRegs +[r0]
- ;; size=2 bbWeight=2 PerfScore 2.00
-G_M47962_IG06: ; bbWeight=4, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref, isz
+ blt SHORT G_M47962_IG04
+ ;; size=32 bbWeight=1 PerfScore 14.00
+G_M47962_IG03: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+ ldr r8, [r7+0x08]
+ ; gcrRegs +[r8]
+ b SHORT G_M47962_IG05
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M47962_IG04: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r8]
+ ldr r8, [r7+0x04]
+ ; gcrRegs +[r8]
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M47962_IG05: ; bbWeight=1, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r7]
- mov r7, r0
+ mov r7, r8
; gcrRegs +[r7]
cmp r7, 0
- bne SHORT G_M47962_IG03
+ beq SHORT G_M47962_IG10
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M47962_IG06: ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r8]
+ ldr r0, [r5+0x08]
+ ; gcrRegs +[r0]
+ ldr r2, [r7+0x0C]
+ mov r1, r6
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ cmp r0, 0
+ beq SHORT G_M47962_IG12
+ cmp r0, 0
+ blt SHORT G_M47962_IG08
+ ;; size=26 bbWeight=4 PerfScore 44.00
+G_M47962_IG07: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+ ldr r8, [r7+0x08]
+ ; gcrRegs +[r8]
+ b SHORT G_M47962_IG09
+ ;; size=6 bbWeight=2 PerfScore 4.00
+G_M47962_IG08: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r8]
+ ldr r8, [r7+0x04]
+ ; gcrRegs +[r8]
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M47962_IG09: ; bbWeight=4, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r7]
+ mov r7, r8
+ ; gcrRegs +[r7]
+ cmp r7, 0
+ bne SHORT G_M47962_IG06
;; size=6 bbWeight=4 PerfScore 12.00
-G_M47962_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0 r5 r7]
+G_M47962_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r5 r7-r8]
movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M47962_IG08: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,pc}
+G_M47962_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r7,r8,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M47962_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, gcvars, byref
+G_M47962_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r7]
mov r0, r7
; gcrRegs +[r0]
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M47962_IG10: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,pc}
+G_M47962_IG13: ; 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 68, prolog size 8, PerfScore 71.00, instruction count 28, allocated bytes for code 68 (MethodHash=73ed44a5) for method System.Collections.Generic.SortedSet`1[int]:FindNode(int):System.Collections.Generic.SortedSet`1+Node[int]:this (FullOpts)
+; Total bytes of code 114, prolog size 8, PerfScore 86.50, instruction count 45, allocated bytes for code 114 (MethodHash=73ed44a5) for method System.Collections.Generic.SortedSet`1[int]:FindNode(int):System.Collections.Generic.SortedSet`1+Node[int]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -91,7 +122,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 34 (0x00022) Actual length = 68 (0x000044)
+ Function Length : 57 (0x00039) Actual length = 114 (0x000072)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -103,7 +134,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ A9 F8 pop {r3,r4,r5,r6,r7,r8,r11,lr} ; opsize 32
FF end
FF end
+36 (+69.23%) : 3630.dasm - Newtonsoft.Json.JsonWriter:AutoCompleteAll():this (FullOpts)
@@ -8,68 +8,111 @@
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 22 ) ref -> r4 this class-hnd single-def <Newtonsoft.Json.JsonWriter>
+; V00 this [V00,T01] ( 9, 22.50) ref -> r4 this class-hnd single-def <Newtonsoft.Json.JsonWriter>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T00] ( 3, 36 ) ref -> r0 class-hnd "dup spill" <System.Collections.Generic.List`1[Newtonsoft.Json.JsonPosition]>
+; V02 tmp1 [V02,T00] ( 6, 40.50) ref -> r5 class-hnd "dup spill" <System.Collections.Generic.List`1[Newtonsoft.Json.JsonPosition]>
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref
-; V04 tmp3 [V04,T03] ( 4, 14 ) int -> r3
-; V05 tmp4 [V05,T02] ( 3, 18 ) int -> r0 "Inline stloc first use temp"
+; V04 tmp3 [V04,T03] ( 8, 15.75) int -> r6
+; V05 tmp4 [V05,T02] ( 6, 20.25) int -> r3 "Inline stloc first use temp"
+; V06 cse0 [V06,T04] ( 3, 2.50) int -> r7 "CSE - aggressive"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M16914_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
- add r11, sp, 8
+ push {r4,r5,r6,r7,r11,lr}
+ add r11, sp, 16
mov r4, r0
; gcrRegs +[r4]
;; size=10 bbWeight=1 PerfScore 3.00
G_M16914_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
b SHORT G_M16914_IG04
;; size=2 bbWeight=1 PerfScore 1.00
-G_M16914_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M16914_IG03: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r4]
- ldr r3, [r3+0x50]
- ldr r3, [r3+0x10]
+ ldr r7, [r3+0x50]
+ ldr r3, [r7+0x10]
blx r3 // <unknown method>
; gcrRegs -[r0]
- ;; size=10 bbWeight=2 PerfScore 10.00
-G_M16914_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r4+0x04]
- ; gcrRegs +[r0]
- cmp r0, 0
+ b SHORT G_M16914_IG12
+ ;; size=12 bbWeight=0.25 PerfScore 1.50
+G_M16914_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ldr r5, [r4+0x04]
+ ; gcrRegs +[r5]
+ cmp r5, 0
bne SHORT G_M16914_IG06
- ;; size=6 bbWeight=8 PerfScore 24.00
-G_M16914_IG05: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0]
- movs r3, 0
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M16914_IG05: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
+ movs r6, 0
b SHORT G_M16914_IG07
- ;; size=4 bbWeight=2 PerfScore 4.00
-G_M16914_IG06: ; bbWeight=2, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r0]
- ldr r3, [r0+0x08]
- ;; size=2 bbWeight=2 PerfScore 2.00
-G_M16914_IG07: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0]
- mov r0, r3
- ldr r2, [r4+0x30]
- cmp r2, 0
- beq SHORT G_M16914_IG09
- ;; size=8 bbWeight=8 PerfScore 32.00
-G_M16914_IG08: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- adds r0, r3, 1
- ;; size=2 bbWeight=2 PerfScore 2.00
-G_M16914_IG09: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.25 PerfScore 0.50
+G_M16914_IG06: ; bbWeight=0.25, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r5]
+ ldr r6, [r5+0x08]
+ ;; size=2 bbWeight=0.25 PerfScore 0.25
+G_M16914_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
+ mov r3, r6
+ ldr r0, [r4+0x30]
cmp r0, 0
+ beq SHORT G_M16914_IG09
+ ;; size=8 bbWeight=1 PerfScore 4.00
+G_M16914_IG08: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ adds r3, r6, 1
+ ;; size=2 bbWeight=0.25 PerfScore 0.25
+G_M16914_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ cmp r3, 0
bgt SHORT G_M16914_IG03
- ;; size=4 bbWeight=8 PerfScore 16.00
-G_M16914_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M16914_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4]
- pop {r3,r4,r11,pc}
+ b SHORT G_M16914_IG18
+ ;; size=2 bbWeight=0.12 PerfScore 0.12
+G_M16914_IG11: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r4]
+ mov r0, r4
+ ; gcrRegs +[r0]
+ ldr r3, [r7+0x10]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ ;; size=6 bbWeight=2 PerfScore 6.00
+G_M16914_IG12: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ldr r5, [r4+0x04]
+ ; gcrRegs +[r5]
+ cmp r5, 0
+ bne SHORT G_M16914_IG14
+ ;; size=6 bbWeight=8 PerfScore 24.00
+G_M16914_IG13: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
+ movs r6, 0
+ b SHORT G_M16914_IG15
+ ;; size=4 bbWeight=2 PerfScore 4.00
+G_M16914_IG14: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r5]
+ ldr r6, [r5+0x08]
+ ;; size=2 bbWeight=2 PerfScore 2.00
+G_M16914_IG15: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
+ mov r3, r6
+ ldr r0, [r4+0x30]
+ cmp r0, 0
+ beq SHORT G_M16914_IG17
+ ;; size=8 bbWeight=8 PerfScore 32.00
+G_M16914_IG16: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ adds r3, r6, 1
+ ;; size=2 bbWeight=2 PerfScore 2.00
+G_M16914_IG17: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ cmp r3, 0
+ bgt SHORT G_M16914_IG11
+ ;; size=4 bbWeight=8 PerfScore 16.00
+G_M16914_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r4]
+ pop {r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 52, prolog size 8, PerfScore 95.00, instruction count 23, allocated bytes for code 52 (MethodHash=c8c0bded) for method Newtonsoft.Json.JsonWriter:AutoCompleteAll():this (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 102.62, instruction count 41, allocated bytes for code 88 (MethodHash=c8c0bded) for method Newtonsoft.Json.JsonWriter:AutoCompleteAll():this (FullOpts)
; ============================================================
Unwind Info:
@@ -81,11 +124,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 52 (0x000034)
+ Function Length : 44 (0x0002c) Actual length = 88 (0x000058)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
FF end
FF end
+38 (+70.37%) : 15078.dasm - Jil.Deserialize.Methods:_ConsumeWhiteSpace(System.IO.TextReader) (FullOpts)
@@ -8,13 +8,13 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 5, 13 ) ref -> r4 class-hnd single-def <System.IO.TextReader>
+; V00 arg0 [V00,T01] ( 7, 14.25) ref -> r4 class-hnd single-def <System.IO.TextReader>
;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 6, 48 ) int -> r0 "dup spill"
-;* V04 tmp2 [V04,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V05 cse0 [V05,T02] ( 3, 11 ) int -> r5 hoist "CSE - aggressive"
-; V06 cse1 [V06,T03] ( 2, 2 ) int -> r0 hoist "CSE - aggressive"
+; V03 tmp1 [V03,T00] ( 12, 54 ) int -> r0 "dup spill"
+;* V04 tmp2 [V04,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V05 cse0 [V05,T02] ( 5, 12.25) int -> r5 "CSE - aggressive"
+; V06 cse1 [V06,T04] ( 2, 2 ) int -> r3 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -25,11 +25,9 @@ G_M13758_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[r4]
;; size=10 bbWeight=1 PerfScore 3.00
G_M13758_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r4]
- ldr r5, [r0+0x30]
b SHORT G_M13758_IG05
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M13758_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M13758_IG03: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r0, 32
beq SHORT G_M13758_IG04
cmp r0, 9
@@ -37,30 +35,64 @@ G_M13758_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
cmp r0, 10
beq SHORT G_M13758_IG04
cmp r0, 13
- bne SHORT G_M13758_IG06
+ bne SHORT G_M13758_IG10
+ ;; size=16 bbWeight=0.25 PerfScore 2.00
+G_M13758_IG04: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ mov r0, r4
+ ; gcrRegs +[r0]
+ ldr r3, [r5+0x04]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ b SHORT G_M13758_IG09
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
+G_M13758_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ mov r0, r4
+ ; gcrRegs +[r0]
+ ldr r3, [r4]
+ ldr r5, [r3+0x30]
+ ldr r3, [r5]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ cmp r0, -1
+ bne SHORT G_M13758_IG03
+ ;; size=16 bbWeight=1 PerfScore 7.00
+G_M13758_IG06: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r4]
+ b SHORT G_M13758_IG10
+ ;; size=2 bbWeight=0.06 PerfScore 0.06
+G_M13758_IG07: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r4]
+ cmp r0, 32
+ beq SHORT G_M13758_IG08
+ cmp r0, 9
+ beq SHORT G_M13758_IG08
+ cmp r0, 10
+ beq SHORT G_M13758_IG08
+ cmp r0, 13
+ bne SHORT G_M13758_IG10
;; size=16 bbWeight=2 PerfScore 16.00
-G_M13758_IG04: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M13758_IG08: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r5+0x04]
blx r3 // <unknown method>
; gcrRegs -[r0]
;; size=6 bbWeight=2 PerfScore 6.00
-G_M13758_IG05: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M13758_IG09: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r5]
blx r3 // <unknown method>
; gcrRegs -[r0]
cmp r0, -1
- bne SHORT G_M13758_IG03
+ bne SHORT G_M13758_IG07
;; size=12 bbWeight=8 PerfScore 40.00
-G_M13758_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M13758_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r4]
pop {r4,r5,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 54, prolog size 8, PerfScore 69.00, instruction count 23, allocated bytes for code 54 (MethodHash=993cca41) for method Jil.Deserialize.Methods:_ConsumeWhiteSpace(System.IO.TextReader) (FullOpts)
+; Total bytes of code 92, prolog size 8, PerfScore 77.06, instruction count 41, allocated bytes for code 92 (MethodHash=993cca41) for method Jil.Deserialize.Methods:_ConsumeWhiteSpace(System.IO.TextReader) (FullOpts)
; ============================================================
Unwind Info:
@@ -72,7 +104,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
+ Function Length : 46 (0x0002e) Actual length = 92 (0x00005c)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
benchmarks.run_pgo.linux.arm.checked.mch
-8 (-12.90%) : 74932.dasm - Struct.SpanWrapper:SumSpanWrapper(Struct.SpanWrapper`1[int]):int:this (Tier0-FullOpts)
@@ -10,20 +10,20 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Struct.SpanWrapper>
; V01 arg1 [V01,T05] ( 4, 4 ) struct ( 8) [sp+0x08] do-not-enreg[S] ld-addr-op single-def <Struct.SpanWrapper`1[int]>
-; V02 loc0 [V02,T03] ( 4, 9 ) int -> r0
+; V02 loc0 [V02,T04] ( 5, 9.25) int -> r0
;* V03 loc1 [V03 ] ( 0, 0 ) struct (12) zero-ref do-not-enreg[SF] ld-addr-op <System.ReadOnlySpan`1+Enumerator[int]>
;* V04 loc2 [V04 ] ( 0, 0 ) int -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) struct (12) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1+Enumerator[int]>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "Span.get_Item index"
-;* V09 tmp4 [V09,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V09 tmp4 [V09,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V10 tmp5 [V10,T00] ( 3, 20 ) int -> r1 "Inline stloc first use temp"
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x4)" P-INDEP
-; V13 tmp8 [V13,T06] ( 2, 3 ) byref -> r3 single-def "V03.[000..004)"
-; V14 tmp9 [V14,T02] ( 3, 11 ) int -> r2 single-def "V03.[004..008)"
-; V15 tmp10 [V15,T01] ( 5, 17 ) int -> r1 "V03.[008..012)"
+; V13 tmp8 [V13,T06] ( 3, 3.25) byref -> r3 single-def "V03.[000..004)"
+; V14 tmp9 [V14,T02] ( 3, 10 ) int -> r2 single-def "V03.[004..008)"
+; V15 tmp10 [V15,T01] ( 4, 14.50) int -> r1 "V03.[008..012)"
; V16 tmp11 [V16,T07] ( 2, 2 ) byref -> r3 single-def "V06.[000..004)"
; V17 tmp12 [V17,T08] ( 2, 2 ) int -> r2 single-def "V06.[004..008)"
;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref "V06.[008..012)"
@@ -40,39 +40,41 @@ G_M19652_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr r3, [sp+0x08]
; byrRegs +[r3]
ldr r2, [sp+0x0C]
- mov r1, -1
b SHORT G_M19652_IG04
- ;; size=12 bbWeight=1 PerfScore 5.00
-G_M19652_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
- cmp r1, r2
- bhs SHORT G_M19652_IG07
+ ;; size=8 bbWeight=1 PerfScore 4.00
+G_M19652_IG03: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ldr r0, [r3]
+ b SHORT G_M19652_IG07
+ ;; size=4 bbWeight=0.25 PerfScore 0.50
+G_M19652_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ cmp r2, 0
+ ble SHORT G_M19652_IG09
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M19652_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ movs r1, 0
+ b SHORT G_M19652_IG03
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M19652_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
lsl lr, r1, 2
ldr lr, [r3+lr]
add r0, lr
- ;; size=14 bbWeight=2 PerfScore 10.00
-G_M19652_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ;; size=10 bbWeight=2 PerfScore 6.00
+G_M19652_IG07: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
adds r1, r1, 1
cmp r1, r2
- bge SHORT G_M19652_IG06
+ bge SHORT G_M19652_IG09
;; size=6 bbWeight=8 PerfScore 24.00
-G_M19652_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
- b SHORT G_M19652_IG03
+G_M19652_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ b SHORT G_M19652_IG06
;; size=2 bbWeight=4 PerfScore 4.00
-G_M19652_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M19652_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r3]
pop {r11,lr}
add sp, 8
bx lr
;; size=8 bbWeight=4 PerfScore 12.00
-G_M19652_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- bkpt
- ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 62, prolog size 8, PerfScore 58.00, instruction count 24, allocated bytes for code 62 (MethodHash=47afb33b) for method Struct.SpanWrapper:SumSpanWrapper(Struct.SpanWrapper`1[int]):int:this (Tier0-FullOpts)
+; Total bytes of code 54, prolog size 8, PerfScore 56.50, instruction count 23, allocated bytes for code 54 (MethodHash=47afb33b) for method Struct.SpanWrapper:SumSpanWrapper(Struct.SpanWrapper`1[int]):int:this (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -84,7 +86,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
+ Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-5.17%) : 34936.dasm - Sigil.Impl.LinqAlternative+<Where>d_2`1[int]:MoveNext():ubyte:this (Tier0-FullOpts)
@@ -8,167 +8,152 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 18, 16.50) ref -> [sp+0x04] this class-hnd EH-live single-def <Sigil.Impl.LinqAlternative+<_Where>d__2`1[int]>
+; V00 this [V00,T00] ( 17, 9 ) ref -> [sp+0x04] this class-hnd EH-live single-def <Sigil.Impl.LinqAlternative+<_Where>d__2`1[int]>
; V01 loc0 [V01,T03] ( 4, 2.50) ubyte -> r0
; V02 loc1 [V02,T04] ( 3, 2.50) int -> r0 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" <<unknown class>>
-; V05 tmp2 [V05,T02] ( 2, 8 ) int -> r1 "argument with side effect"
-; V06 tmp3 [V06,T01] ( 3, 12 ) ref -> r5 "argument with side effect"
-; V07 PSPSym [V07,T05] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym"
+; V05 tmp2 [V05,T02] ( 2, 1 ) int -> r1 "argument with side effect"
+; V06 tmp3 [V06,T01] ( 3, 1.50) ref -> r6 "argument with side effect"
+; V07 PSPSym [V07,T06] ( 1, 1 ) int -> [sp+0x08] do-not-enreg[V] "PSPSym"
+; V08 cse0 [V08,T05] ( 5, 2 ) ref -> r0 multi-def "CSE - aggressive"
; TEMP_01 ref -> [r11-0x18]
;
-; Lcl frame size = 16
+; Lcl frame size = 12
G_M46418_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- sub sp, 16
+ push {r4,r5,r6,r11,lr}
+ sub sp, 12
add r11, sp, 24
movs r1, 0
str r1, [sp] // [TEMP_01]
add r1, sp, 32
- str r1, [sp+0x0C] // [V07 PSPSym]
+ str r1, [sp+0x08] // [V07 PSPSym]
str r0, [sp+0x04] // [V00 this]
; GC ptr vars +{V00}
- mov r4, r0
- ; gcrRegs +[r4]
+ mov r5, r0
+ ; gcrRegs +[r5]
;; size=22 bbWeight=1 PerfScore 9.00
-G_M46418_IG02: ; bbWeight=1, gcVars=00000001 {V00}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr r0, [r4+0x18]
+G_M46418_IG02: ; bbWeight=1, gcVars=00000001 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr r0, [r5+0x18]
cmp r0, 0
beq SHORT G_M46418_IG04
;; size=6 bbWeight=1 PerfScore 3.00
-G_M46418_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M46418_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
cmp r0, 1
- beq SHORT G_M46418_IG09
+ beq SHORT G_M46418_IG07
movs r0, 0
- b SHORT G_M46418_IG11
+ b SHORT G_M46418_IG12
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M46418_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M46418_IG04: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
mov r0, -1
- str r0, [r4+0x18]
- ldr r0, [r4+0x04]
+ str r0, [r5+0x18]
+ ldr r0, [r5+0x04]
; gcrRegs +[r0]
movw r4, 0xd1ff
- ; gcrRegs -[r4]
movt r4, 0xd1ff
ldr r3, [r4]
blx r3 // <unknown method>
; gcr arg pop 0
str r0, [sp]
- ldr r4, [sp+0x04] // [V00 this]
- ; gcrRegs +[r4]
- add r0, r4, 20
+ add r0, r5, 20
; gcrRegs -[r0]
; byrRegs +[r0]
- ldr r1, [sp] // [TEMP_01]
+ ldr r1, [sp]
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
- b SHORT G_M46418_IG09
- ;; size=42 bbWeight=0.50 PerfScore 7.50
-G_M46418_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4]
- ldr r4, [sp+0x04] // [V00 this]
- ; gcrRegs +[r4]
- ldr r5, [r4+0x0C]
- ; gcrRegs +[r5]
- ldr r0, [r4+0x14]
+ b SHORT G_M46418_IG07
+ ;; size=40 bbWeight=0.50 PerfScore 7.00
+G_M46418_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ mov r0, -1
+ str r0, [r5+0x18]
+ ldr r0, [r5+0x14]
+ ; gcrRegs +[r0]
+ cmp r0, 0
+ beq SHORT G_M46418_IG11
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ ; gcr arg pop 0
+ b SHORT G_M46418_IG11
+ ;; size=26 bbWeight=0.50 PerfScore 5.00
+G_M46418_IG06: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r5+0x14]
+ ; gcrRegs +[r0]
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ ; gcr arg pop 0
+ str r0, [r5+0x1C]
+ movs r0, 1
+ str r0, [r5+0x18]
+ b SHORT G_M46418_IG12
+ ;; size=22 bbWeight=0.50 PerfScore 4.50
+G_M46418_IG07: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ mvn r0, 2
+ str r0, [r5+0x18]
+ b SHORT G_M46418_IG09
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M46418_IG08: ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ldr r6, [r5+0x0C]
+ ; gcrRegs +[r6]
+ ldr r0, [r5+0x14]
; gcrRegs +[r0]
movw r4, 0xd1ff
- ; gcrRegs -[r4]
movt r4, 0xd1ff
ldr r3, [r4]
blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
mov r1, r0
- ldr r0, [r5+0x04]
+ ldr r0, [r6+0x04]
; gcrRegs +[r0]
- ldr r3, [r5+0x0C]
+ ldr r3, [r6+0x0C]
blx r3 // <unknown method>
- ; gcrRegs -[r0 r5]
+ ; gcrRegs -[r0 r6]
+ ; gcr arg pop 0
+ cmp r0, 0
+ bne SHORT G_M46418_IG06
+ ;; size=28 bbWeight=0.25 PerfScore 3.00
+G_M46418_IG09: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r5+0x14]
+ ; gcrRegs +[r0]
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- ldr r4, [sp+0x04] // [V00 this]
- ; gcrRegs +[r4]
bne SHORT G_M46418_IG08
- ;; size=32 bbWeight=2 PerfScore 28.00
-G_M46418_IG06: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r4+0x14]
- ; gcrRegs +[r0]
- movw r4, 0xd1ff
- ; gcrRegs -[r4]
- movt r4, 0xd1ff
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; gcrRegs -[r0]
- ; gcr arg pop 0
- cmp r0, 0
- bne SHORT G_M46418_IG05
- ;; size=18 bbWeight=4 PerfScore 28.00
-G_M46418_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov r0, -1
- ldr r4, [sp+0x04]
- ; gcrRegs +[r4]
- str r0, [r4+0x18]
- ldr r0, [r4+0x14]
- ; gcrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M46418_IG10
- ldr r0, [r4+0x14]
- movw r4, 0xd1ff
- ; gcrRegs -[r4]
- movt r4, 0xd1ff
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; gcrRegs -[r0]
- ; gcr arg pop 0
- ldr r4, [sp+0x04] // [V00 this]
- ; gcrRegs +[r4]
- b SHORT G_M46418_IG10
- ;; size=32 bbWeight=0.50 PerfScore 6.50
-G_M46418_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r4+0x14]
- ; gcrRegs +[r0]
- movw r4, 0xd1ff
- ; gcrRegs -[r4]
- movt r4, 0xd1ff
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; gcrRegs -[r0]
- ; gcr arg pop 0
- ldr r4, [sp+0x04] // [V00 this]
- ; gcrRegs +[r4]
- str r0, [r4+0x1C]
- movs r0, 1
- str r0, [r4+0x18]
- b SHORT G_M46418_IG11
- ;; size=24 bbWeight=0.50 PerfScore 5.00
-G_M46418_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- mvn r0, 2
- str r0, [r4+0x18]
- b SHORT G_M46418_IG06
- ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M46418_IG10: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ;; size=18 bbWeight=0.50 PerfScore 3.50
+G_M46418_IG10: ; bbWeight=0.06, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M46418_IG05
+ ;; size=2 bbWeight=0.06 PerfScore 0.06
+G_M46418_IG11: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
movs r0, 0
- str r0, [r4+0x14]
+ str r0, [r5+0x14]
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M46418_IG11: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
- ; gcrRegs -[r4]
+G_M46418_IG12: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+ ; gcrRegs -[r5]
; GC ptr vars -{V00}
- add sp, 16
- pop {r4,r5,r11,pc}
+ add sp, 12
+ pop {r4,r5,r6,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M46418_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
- push {r2,r3,r4,r5,r11,lr}
+G_M46418_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ push {r3,r4,r5,r6,r11,lr}
add r3, r11, 8
...
-36 (-4.41%) : 88336.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:GetNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax],byref,ubyte,ubyte):System.Runtime.CompilerServices.StrongBox1[Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.String]]:this (Tier0-FullOpts)
@@ -8,57 +8,57 @@
; 2 inlinees with PGO data; 11 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T10] ( 6, 6 ) ref -> r5 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder>
-; V01 arg1 [V01,T20] ( 3, 3 ) ref -> r6 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode>
-; V02 arg2 [V02 ] ( 5, 5 ) struct ( 4) [sp+0x54] ld-addr-op single-def <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax]>
-; V03 arg3 [V03,T09] ( 10, 6 ) byref -> r4 single-def
-; V04 arg4 [V04,T30] ( 1, 2 ) ubyte -> r7 single-def
-; V05 arg5 [V05,T31] ( 1, 1 ) ubyte -> [sp+0x5C] single-def
-; V06 loc0 [V06,T11] ( 5, 11 ) ubyte -> r8
-; V07 loc1 [V07,T12] ( 5, 8 ) ubyte -> r9
-; V08 loc2 [V08,T13] ( 5, 8 ) ubyte -> r10
-; V09 loc3 [V09,T14] ( 5, 8 ) ubyte -> [sp+0x2C]
+; V00 this [V00,T16] ( 6, 6 ) ref -> r5 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder>
+; V01 arg1 [V01,T22] ( 3, 3 ) ref -> r6 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode>
+; V02 arg2 [V02 ] ( 5, 5 ) struct ( 4) [sp+0x4C] ld-addr-op single-def <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax]>
+; V03 arg3 [V03,T15] ( 10, 6 ) byref -> r4 single-def
+; V04 arg4 [V04,T27] ( 1, 0.25) ubyte -> [sp+0x50] single-def
+; V05 arg5 [V05,T31] ( 1, 1 ) ubyte -> [sp+0x54] single-def
+; V06 loc0 [V06,T11] ( 5, 2.75) ubyte -> r7
+; V07 loc1 [V07,T12] ( 5, 2.75) ubyte -> r8
+; V08 loc2 [V08,T13] ( 5, 2.75) ubyte -> r9
+; V09 loc3 [V09,T14] ( 5, 2.75) ubyte -> r10
;* V10 loc4 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax]>
;* V11 loc5 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax>
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V13 tmp1 [V13,T22] ( 2, 4 ) ref -> r3 class-hnd single-def "dup spill" <<unknown class>>
+; V13 tmp1 [V13,T23] ( 2, 4 ) ref -> r3 class-hnd single-def "dup spill" <<unknown class>>
;* V14 tmp2 [V14 ] ( 0, 0 ) ref -> zero-ref single-def
;* V15 tmp3 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
; V16 tmp4 [V16,T25] ( 4, 3.50) ref -> r3
;* V17 tmp5 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax],ubyte]>
-; V18 tmp6 [V18,T19] ( 5, 5 ) ref -> [sp+0x0C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp6 [V18,T21] ( 5, 5 ) ref -> [sp+0x08] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V19 tmp7 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax]>
;* V20 tmp8 [V20 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax]>
-; V21 tmp9 [V21,T04] ( 7, 14 ) ref -> [sp+0x08] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax>
+; V21 tmp9 [V21,T03] ( 7, 1.75) ref -> [sp+0x04] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax>
;* V22 tmp10 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V23 tmp11 [V23 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-; V24 tmp12 [V24,T08] ( 3, 9 ) int -> r1 "fgMakeTemp is creating a new local variable"
-; V25 tmp13 [V25,T06] ( 2, 8 ) ref -> r0 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax>
-; V26 tmp14 [V26,T07] ( 3, 9 ) ref -> r1 "CASTCLASS eval op1"
-; V27 tmp15 [V27,T21] ( 3, 5 ) int -> r3 "fgMakeTemp is creating a new local variable"
-; V28 tmp16 [V28,T03] ( 5, 15 ) ref -> r12 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax>
+; V24 tmp12 [V24,T19] ( 3, 1.12) int -> r1 "fgMakeTemp is creating a new local variable"
+; V25 tmp13 [V25,T09] ( 2, 1 ) ref -> r0 class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax>
+; V26 tmp14 [V26,T05] ( 3, 1.12) ref -> r1 "CASTCLASS eval op1"
+; V27 tmp15 [V27,T20] ( 3, 0.62) int -> r3 "fgMakeTemp is creating a new local variable"
+; V28 tmp16 [V28,T08] ( 5, 1.88) ref -> lr class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax>
;* V29 tmp17 [V29 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax>
;* V30 tmp18 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
-;* V31 tmp19 [V31,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V32 tmp20 [V32,T15] ( 4, 8 ) ushort -> r0 "Inline stloc first use temp"
-;* V33 tmp21 [V33,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V34 tmp22 [V34,T01] ( 3, 20 ) int -> [sp+0x28] spill-single-def "Inline stloc first use temp"
-; V35 tmp23 [V35,T05] ( 4, 14 ) int -> r0 "Inline return value spill temp"
+;* V31 tmp19 [V31,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V32 tmp20 [V32,T10] ( 4, 1 ) ushort -> r0 "Inline stloc first use temp"
+;* V33 tmp21 [V33,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V34 tmp22 [V34,T01] ( 3, 2.50) int -> [sp+0x24] spill-single-def "Inline stloc first use temp"
+; V35 tmp23 [V35,T06] ( 4, 1.75) int -> r0 "Inline return value spill temp"
;* V36 tmp24 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
;* V37 tmp25 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
-; V38 tmp26 [V38,T18] ( 4, 6 ) int -> r0 "Inline stloc first use temp"
+; V38 tmp26 [V38,T18] ( 4, 0.75) int -> r0 "Inline stloc first use temp"
; V39 tmp27 [V39,T26] ( 3, 3 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V40 tmp28 [V40 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax]>
-; V41 tmp29 [V41 ] ( 6, 6 ) struct (20) [sp+0x14] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder+<>c__DisplayClass40_0`1[System.ValueTuple`2[Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax],ubyte]]>
+; V41 tmp29 [V41 ] ( 6, 6 ) struct (20) [sp+0x10] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder+<>c__DisplayClass40_0`1[System.ValueTuple`2[Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax],ubyte]]>
;* V42 tmp30 [V42 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.ValueTuple`2[Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax],ubyte]>
-; V43 tmp31 [V43,T23] ( 2, 4 ) ref -> r0 class-hnd single-def "impAppendStmt" <System.Runtime.CompilerServices.StrongBox`1[Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.String]]>
-; V44 tmp32 [V44,T17] ( 5, 5 ) ref -> [sp+0x54] do-not-enreg[] single-def "field V02._node (fldOffset=0x0)" P-DEP
-; V45 tmp33 [V45,T02] ( 5, 17 ) int -> [sp+0x10] "field V10._index (fldOffset=0x0)" P-INDEP
-; V46 tmp34 [V46,T00] ( 13, 25.50) ref -> [sp+0x04] spill-single-def "field V10._list (fldOffset=0x4)" P-INDEP
-; V47 tmp35 [V47,T29] ( 2, 2 ) ubyte -> r0 single-def "field V17.Item2 (fldOffset=0x0)" P-INDEP
-; V48 tmp36 [V48,T27] ( 2, 2 ) ref -> r2 single-def "field V17.Item1 (fldOffset=0x4)" P-INDEP
+; V43 tmp31 [V43,T24] ( 2, 4 ) ref -> r0 class-hnd single-def "impAppendStmt" <System.Runtime.CompilerServices.StrongBox`1[Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.String]]>
+; V44 tmp32 [V44,T17] ( 5, 5 ) ref -> [sp+0x4C] do-not-enreg[] single-def "field V02._node (fldOffset=0x0)" P-DEP
+; V45 tmp33 [V45,T02] ( 5, 3 ) int -> [sp+0x0C] "field V10._index (fldOffset=0x0)" P-INDEP
+; V46 tmp34 [V46,T00] ( 13, 4.06) ref -> [sp+0x00] spill-single-def "field V10._list (fldOffset=0x4)" P-INDEP
+; V47 tmp35 [V47,T30] ( 2, 2 ) ubyte -> r0 single-def "field V17.Item2 (fldOffset=0x0)" P-INDEP
+; V48 tmp36 [V48,T28] ( 2, 2 ) ref -> r2 single-def "field V17.Item1 (fldOffset=0x4)" P-INDEP
;* V49 tmp37 [V49,T32] ( 0, 0 ) int -> zero-ref single-def "field V19._index (fldOffset=0x0)" P-INDEP
-; V50 tmp38 [V50,T28] ( 2, 2 ) ref -> r2 single-def "field V19._list (fldOffset=0x4)" P-INDEP
+; V50 tmp38 [V50,T29] ( 2, 2 ) ref -> r3 single-def "field V19._list (fldOffset=0x4)" P-INDEP
;* V51 tmp39 [V51 ] ( 0, 0 ) ref -> zero-ref "field V20._node (fldOffset=0x0)" P-INDEP
;* V52 tmp40 [V52 ] ( 0, 0 ) ref -> zero-ref "field V40._node (fldOffset=0x0)" P-INDEP
;* V53 tmp41 [V53 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V42.Item2 (fldOffset=0x0)" P-INDEP
@@ -66,14 +66,14 @@
; V55 tmp43 [V55,T34] ( 2, 0 ) ref -> r0 "argument with side effect"
;* V56 cse0 [V56,T33] ( 0, 0 ) int -> zero-ref "CSE - moderate"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M61567_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r2}
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 48
- add r11, sp, 76
- sub r5, r11, 56
+ sub sp, 40
+ add r11, sp, 68
+ sub r5, r11, 52
movs r2, 0
movs r4, 0
stm r5!, {r2,r4}
@@ -85,83 +85,80 @@ G_M61567_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[r6]
mov r4, r3
; byrRegs +[r4]
- ldr r7, [sp+0x58] // [V04 arg4]
- ;; size=34 bbWeight=1 PerfScore 14.00
+ ;; size=32 bbWeight=1 PerfScore 13.00
G_M61567_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0010 {r4}, byref, isz
+ movs r7, 0
mov r8, 0
mov r9, 0
mov r10, 0
- movs r3, 0
- str r3, [sp+0x2C] // [V09 loc3]
- ldr r2, [sp+0x54] // [V44 tmp32]
- ; gcrRegs +[r2]
- mov lr, -1
- str r2, [sp+0x04] // [V46 tmp34]
+ ldr r3, [sp+0x4C]
+ ; gcrRegs +[r3]
+ mov r2, -1
+ str r3, [sp]
; GC ptr vars +{V46}
b SHORT G_M61567_IG18
- ;; size=26 bbWeight=1 PerfScore 9.00
-G_M61567_IG03: ; bbWeight=2, gcVars=0000000000000001 {V46}, gcrefRegs=0064 {r2 r5 r6}, byrefRegs=0010 {r4}, gcvars, byref, isz
- cmp r2, 0
+ ;; size=24 bbWeight=1 PerfScore 8.00
+G_M61567_IG03: ; bbWeight=0.25, gcVars=0000000000000001 {V46}, gcrefRegs=0068 {r3 r5 r6}, byrefRegs=0010 {r4}, gcvars, byref, isz
+ cmp r3, 0
bne SHORT G_M61567_IG04
- mov r12, 0
+ mov lr, 0
b SHORT G_M61567_IG11
- ;; size=10 bbWeight=2 PerfScore 8.00
-G_M61567_IG04: ; bbWeight=2, gcrefRegs=0064 {r2 r5 r6}, byrefRegs=0010 {r4}, byref, isz
- ldrh r0, [r2+0x08]
+ ;; size=10 bbWeight=0.25 PerfScore 1.00
+G_M61567_IG04: ; bbWeight=0.25, gcrefRegs=0068 {r3 r5 r6}, byrefRegs=0010 {r4}, byref, isz
+ ldrh r0, [r3+0x08]
cmp r0, 1
bne SHORT G_M61567_IG08
- mov r0, r2
+ mov r0, r3
; gcrRegs +[r0]
- str lr, [sp+0x10] // [V45 tmp33]
- mov r1, lr
- ldr r12, [r2]
- ldr r12, [r12+0x30]
- ldr r12, [r12+0x10]
- blx r12 // <unknown method>
- ; gcrRegs -[r2]
+ str r2, [sp+0x0C]
+ mov r1, r2
+ ldr lr, [r3]
+ ldr lr, [lr+0x30]
+ ldr lr, [lr+0x10]
+ blx lr // <unknown method>
+ ; gcrRegs -[r3]
; gcr arg pop 0
mov r1, r0
; gcrRegs +[r1]
- mov r12, r1
- ; gcrRegs +[r12]
- cmp r12, 0
+ mov lr, r1
+ ; gcrRegs +[lr]
+ cmp lr, 0
beq SHORT G_M61567_IG07
- ;; size=38 bbWeight=2 PerfScore 28.00
-G_M61567_IG05: ; bbWeight=1, gcrefRegs=1062 {r1 r5 r6 r12}, byrefRegs=0010 {r4}, byref, isz
+ ;; size=36 bbWeight=0.25 PerfScore 3.50
+G_M61567_IG05: ; bbWeight=0.12, gcrefRegs=4062 {r1 r5 r6 lr}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs -[r0]
- ldr r0, [r12]
+ ldr r0, [lr]
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
beq SHORT G_M61567_IG07
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M61567_IG06: ; bbWeight=0.50, gcrefRegs=0062 {r1 r5 r6}, byrefRegs=0010 {r4}, byref
- ; gcrRegs -[r12]
+ ;; size=16 bbWeight=0.12 PerfScore 0.62
+G_M61567_IG06: ; bbWeight=0.06, gcrefRegs=0062 {r1 r5 r6}, byrefRegs=0010 {r4}, byref
+ ; gcrRegs -[lr]
mov r0, r3
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
- mov r12, r0
- ; gcrRegs +[r12]
- ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M61567_IG07: ; bbWeight=2, gcrefRegs=1060 {r5 r6 r12}, byrefRegs=0010 {r4}, byref, isz
+ mov lr, r0
+ ; gcrRegs +[lr]
+ ;; size=14 bbWeight=0.06 PerfScore 0.31
+G_M61567_IG07: ; bbWeight=0.25, gcrefRegs=4060 {r5 r6 lr}, byrefRegs=0010 {r4}, byref, isz
; gcrRegs -[r0]
- mov r3, r12
+ mov r3, lr
; gcrRegs +[r3]
- mov r12, r3
- ldr r2, [sp+0x04] // [V46 tmp34]
- ; gcrRegs +[r2]
- ldr lr, [sp+0x10] // [V45 tmp33]
+ mov lr, r3
+ ldr r2, [sp+0x0C] // [V45 tmp33]
+ ldr r3, [sp] // [V46 tmp34]
b SHORT G_M61567_IG11
- ;; size=12 bbWeight=2 PerfScore 10.00
-G_M61567_IG08: ; bbWeight=2, gcrefRegs=0064 {r2 r5 r6}, byrefRegs=0010 {r4}, byref, isz
- ; gcrRegs -[r3 r12]
- str lr, [sp+0x10] // [V45 tmp33]
- cmp lr, 0
+ ;; size=10 bbWeight=0.25 PerfScore 1.25
+G_M61567_IG08: ; bbWeight=0.25, gcrefRegs=0068 {r3 r5 r6}, byrefRegs=0010 {r4}, byref, isz
+ ; gcrRegs -[lr]
+ str r2, [sp+0x0C] // [V45 tmp33]
+ cmp r2, 0
bne G_M61567_IG42
- mov r0, r2
+ mov r0, r3
; gcrRegs +[r0]
ldr r0, [r0]
; gcrRegs -[r0]
@@ -169,33 +166,33 @@ G_M61567_IG08: ; bbWeight=2, gcrefRegs=0064 {r2 r5 r6}, byrefRegs=0010 {r
movt r1, 0xd1ff
cmp r0, r1
beq SHORT G_M61567_IG10
- ;; size=28 bbWeight=2 PerfScore 18.00
-G_M61567_IG09: ; bbWeight=0.50, gcrefRegs=0064 {r2 r5 r6}, byrefRegs=0010 {r4}, byref
+ ;; size=24 bbWeight=0.25 PerfScore 2.25
+G_M61567_IG09: ; bbWeight=0.06, gcrefRegs=0068 {r3 r5 r6}, byrefRegs=0010 {r4}, byref
mov r0, r1
- mov r1, r2
+ mov r1, r3
; gcrRegs +[r1]
- movw r12, 0xd1ff
...
+38 (+70.37%) : 46730.dasm - Jil.Deserialize.Methods:_ConsumeWhiteSpace(System.IO.TextReader) (Tier0-FullOpts)
@@ -8,13 +8,13 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 5, 13 ) ref -> r4 class-hnd single-def <System.IO.TextReader>
+; V00 arg0 [V00,T01] ( 7, 14.25) ref -> r4 class-hnd single-def <System.IO.TextReader>
;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 6, 48 ) int -> r0 "dup spill"
-;* V04 tmp2 [V04,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V05 cse0 [V05,T02] ( 3, 11 ) int -> r5 hoist "CSE - aggressive"
-; V06 cse1 [V06,T03] ( 2, 2 ) int -> r0 hoist "CSE - aggressive"
+; V03 tmp1 [V03,T00] ( 12, 54 ) int -> r0 "dup spill"
+;* V04 tmp2 [V04,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V05 cse0 [V05,T02] ( 5, 12.25) int -> r5 "CSE - aggressive"
+; V06 cse1 [V06,T04] ( 2, 2 ) int -> r3 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -25,11 +25,9 @@ G_M13758_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[r4]
;; size=10 bbWeight=1 PerfScore 3.00
G_M13758_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r4]
- ldr r5, [r0+0x30]
b SHORT G_M13758_IG05
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M13758_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M13758_IG03: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r0, 32
beq SHORT G_M13758_IG04
cmp r0, 9
@@ -37,30 +35,64 @@ G_M13758_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
cmp r0, 10
beq SHORT G_M13758_IG04
cmp r0, 13
- bne SHORT G_M13758_IG06
+ bne SHORT G_M13758_IG10
+ ;; size=16 bbWeight=0.25 PerfScore 2.00
+G_M13758_IG04: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ mov r0, r4
+ ; gcrRegs +[r0]
+ ldr r3, [r5+0x04]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ b SHORT G_M13758_IG09
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
+G_M13758_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ mov r0, r4
+ ; gcrRegs +[r0]
+ ldr r3, [r4]
+ ldr r5, [r3+0x30]
+ ldr r3, [r5]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ cmp r0, -1
+ bne SHORT G_M13758_IG03
+ ;; size=16 bbWeight=1 PerfScore 7.00
+G_M13758_IG06: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r4]
+ b SHORT G_M13758_IG10
+ ;; size=2 bbWeight=0.06 PerfScore 0.06
+G_M13758_IG07: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r4]
+ cmp r0, 32
+ beq SHORT G_M13758_IG08
+ cmp r0, 9
+ beq SHORT G_M13758_IG08
+ cmp r0, 10
+ beq SHORT G_M13758_IG08
+ cmp r0, 13
+ bne SHORT G_M13758_IG10
;; size=16 bbWeight=2 PerfScore 16.00
-G_M13758_IG04: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M13758_IG08: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r5+0x04]
blx r3 // <unknown method>
; gcrRegs -[r0]
;; size=6 bbWeight=2 PerfScore 6.00
-G_M13758_IG05: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M13758_IG09: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r5]
blx r3 // <unknown method>
; gcrRegs -[r0]
cmp r0, -1
- bne SHORT G_M13758_IG03
+ bne SHORT G_M13758_IG07
;; size=12 bbWeight=8 PerfScore 40.00
-G_M13758_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M13758_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r4]
pop {r4,r5,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 54, prolog size 8, PerfScore 69.00, instruction count 23, allocated bytes for code 54 (MethodHash=993cca41) for method Jil.Deserialize.Methods:_ConsumeWhiteSpace(System.IO.TextReader) (Tier0-FullOpts)
+; Total bytes of code 92, prolog size 8, PerfScore 77.06, instruction count 41, allocated bytes for code 92 (MethodHash=993cca41) for method Jil.Deserialize.Methods:_ConsumeWhiteSpace(System.IO.TextReader) (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -72,7 +104,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
+ Function Length : 46 (0x0002e) Actual length = 92 (0x00005c)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+40 (+74.07%) : 46156.dasm - System.Text.Json.Utf8JsonReader:SkipWhiteSpaceMultiSegment():this (Tier0-FullOpts)
@@ -7,18 +7,18 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 6, 30 ) byref -> r4 this single-def
+; V00 this [V00,T00] ( 10, 33.50) byref -> r4 this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 4
-G_M62585_IG01: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M62585_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,r4,r11,lr}
add r11, sp, 8
mov r4, r0
; byrRegs +[r4]
- ;; size=10 bbWeight=8 PerfScore 24.00
-G_M62585_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+ ;; size=10 bbWeight=1 PerfScore 3.00
+G_M62585_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
mov r0, r4
; byrRegs +[r0]
movw r3, 0xd1ff
@@ -29,9 +29,9 @@ G_M62585_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre
ldr r0, [r4+0x20]
ldr r3, [r4+0x34]
cmp r0, r3
- blt SHORT G_M62585_IG04
- ;; size=22 bbWeight=8 PerfScore 72.00
-G_M62585_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+ blt SHORT G_M62585_IG06
+ ;; size=22 bbWeight=1 PerfScore 9.00
+G_M62585_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
mov r0, r4
; byrRegs +[r0]
movw r3, 0xd1ff
@@ -40,14 +40,38 @@ G_M62585_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre
blx r3 // <unknown method>
; byrRegs -[r0]
cmp r0, 0
- bne SHORT G_M62585_IG02
+ beq SHORT G_M62585_IG06
+ ;; size=18 bbWeight=0.50 PerfScore 3.50
+G_M62585_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+ mov r0, r4
+ ; byrRegs +[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // System.Text.Json.Utf8JsonReader:SkipWhiteSpace():this
+ ; byrRegs -[r0]
+ ldr r0, [r4+0x20]
+ ldr r3, [r4+0x34]
+ cmp r0, r3
+ blt SHORT G_M62585_IG06
+ ;; size=22 bbWeight=8 PerfScore 72.00
+G_M62585_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+ mov r0, r4
+ ; byrRegs +[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ ; byrRegs -[r0]
+ cmp r0, 0
+ bne SHORT G_M62585_IG04
;; size=18 bbWeight=4 PerfScore 28.00
-G_M62585_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M62585_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r4]
pop {r3,r4,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 54, prolog size 8, PerfScore 125.00, instruction count 20, allocated bytes for code 54 (MethodHash=d7900b86) for method System.Text.Json.Utf8JsonReader:SkipWhiteSpaceMultiSegment():this (Tier0-FullOpts)
+; Total bytes of code 94, prolog size 8, PerfScore 116.50, instruction count 36, allocated bytes for code 94 (MethodHash=d7900b86) for method System.Text.Json.Utf8JsonReader:SkipWhiteSpaceMultiSegment():this (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -59,7 +83,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
+ Function Length : 47 (0x0002f) Actual length = 94 (0x00005e)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+42 (+84.00%) : 17883.dasm - System.Number:Int32ToHexCharsubyte:uint (Tier0-FullOpts)
@@ -8,20 +8,20 @@
; 1 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 6, 9 ) int -> r0
-; V01 arg1 [V01,T02] ( 6, 16 ) int -> r1
-; V02 arg2 [V02,T05] ( 3, 4 ) int -> r2 single-def
-; V03 arg3 [V03,T01] ( 5, 26 ) int -> r3
-; V04 loc0 [V04,T08] ( 2, 4 ) ubyte -> lr
+; V00 arg0 [V00,T03] ( 9, 9.75) int -> r0
+; V01 arg1 [V01,T02] ( 10, 17.75) int -> r1
+; V02 arg2 [V02,T07] ( 4, 4.25) int -> r2 single-def
+; V03 arg3 [V03,T01] ( 8, 29 ) int -> r3
+; V04 loc0 [V04,T08] ( 4, 4.50) ubyte -> lr
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 tmp2 [V07,T00] ( 2, 32 ) int -> r3 "dup spill"
-; V08 tmp3 [V08,T04] ( 2, 8 ) int -> r0 "dup spill"
+; V07 tmp2 [V07,T00] ( 4, 36 ) int -> r3 "dup spill"
+; V08 tmp3 [V08,T04] ( 4, 9 ) int -> r0 "dup spill"
;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref
-; V10 tmp5 [V10,T06] ( 3, 6 ) int -> lr
+; V10 tmp5 [V10,T05] ( 6, 6.75) int -> lr
;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref
-; V13 tmp8 [V13,T07] ( 3, 6 ) int -> r12
+; V13 tmp8 [V13,T06] ( 6, 6.75) int -> r12
;* V14 tmp9 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp10 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -35,34 +35,61 @@ G_M24599_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M24599_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
b SHORT G_M24599_IG06
;; size=2 bbWeight=1 PerfScore 1.00
-G_M24599_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M24599_IG03: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
and lr, r1, 15
subs r0, r0, 1
cmp lr, 10
blt SHORT G_M24599_IG04
mov r12, r2
b SHORT G_M24599_IG05
- ;; size=16 bbWeight=2 PerfScore 12.00
-G_M24599_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=0.25 PerfScore 1.50
+G_M24599_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov r12, 48
- ;; size=4 bbWeight=2 PerfScore 2.00
-G_M24599_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=0.25 PerfScore 0.25
+G_M24599_IG05: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add lr, r12
strb lr, [r0]
lsrs r1, r1, 4
- ;; size=8 bbWeight=2 PerfScore 6.00
-G_M24599_IG06: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M24599_IG11
+ ;; size=10 bbWeight=0.25 PerfScore 1.00
+G_M24599_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
subs r3, r3, 1
cmp r3, 0
bge SHORT G_M24599_IG03
cmp r1, 0
bne SHORT G_M24599_IG03
+ ;; size=10 bbWeight=1 PerfScore 5.00
+G_M24599_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M24599_IG12
+ ;; size=2 bbWeight=0.12 PerfScore 0.12
+G_M24599_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ and lr, r1, 15
+ subs r0, r0, 1
+ cmp lr, 10
+ blt SHORT G_M24599_IG09
+ mov r12, r2
+ b SHORT G_M24599_IG10
+ ;; size=16 bbWeight=2 PerfScore 12.00
+G_M24599_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r12, 48
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M24599_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add lr, r12
+ strb lr, [r0]
+ lsrs r1, r1, 4
+ ;; size=8 bbWeight=2 PerfScore 6.00
+G_M24599_IG11: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ subs r3, r3, 1
+ cmp r3, 0
+ bge SHORT G_M24599_IG08
+ cmp r1, 0
+ bne SHORT G_M24599_IG08
;; size=10 bbWeight=8 PerfScore 40.00
-G_M24599_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M24599_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 50, prolog size 6, PerfScore 64.00, instruction count 19, allocated bytes for code 50 (MethodHash=44b19fe8) for method System.Number:Int32ToHexChars[ubyte](uint,uint,int,int):uint (Tier0-FullOpts)
+; Total bytes of code 92, prolog size 6, PerfScore 71.88, instruction count 36, allocated bytes for code 92 (MethodHash=44b19fe8) for method System.Number:Int32ToHexChars[ubyte](uint,uint,int,int):uint (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -74,7 +101,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 50 (0x000032)
+ Function Length : 46 (0x0002e) Actual length = 92 (0x00005c)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
benchmarks.run_tiered.linux.arm.checked.mch
-8 (-12.90%) : 40093.dasm - Struct.SpanWrapper:SumSpanWrapper(Struct.SpanWrapper`1[int]):int:this (Tier0-FullOpts)
@@ -10,20 +10,20 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Struct.SpanWrapper>
; V01 arg1 [V01,T05] ( 4, 4 ) struct ( 8) [sp+0x08] do-not-enreg[S] ld-addr-op single-def <Struct.SpanWrapper`1[int]>
-; V02 loc0 [V02,T03] ( 4, 9 ) int -> r0
+; V02 loc0 [V02,T04] ( 5, 9.25) int -> r0
;* V03 loc1 [V03 ] ( 0, 0 ) struct (12) zero-ref do-not-enreg[SF] ld-addr-op <System.ReadOnlySpan`1+Enumerator[int]>
;* V04 loc2 [V04 ] ( 0, 0 ) int -> zero-ref
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) struct (12) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1+Enumerator[int]>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[int]>
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "Span.get_Item index"
-;* V09 tmp4 [V09,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V09 tmp4 [V09,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V10 tmp5 [V10,T00] ( 3, 20 ) int -> r1 "Inline stloc first use temp"
;* V11 tmp6 [V11 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x4)" P-INDEP
-; V13 tmp8 [V13,T06] ( 2, 3 ) byref -> r3 single-def "V03.[000..004)"
-; V14 tmp9 [V14,T02] ( 3, 11 ) int -> r2 single-def "V03.[004..008)"
-; V15 tmp10 [V15,T01] ( 5, 17 ) int -> r1 "V03.[008..012)"
+; V13 tmp8 [V13,T06] ( 3, 3.25) byref -> r3 single-def "V03.[000..004)"
+; V14 tmp9 [V14,T02] ( 3, 10 ) int -> r2 single-def "V03.[004..008)"
+; V15 tmp10 [V15,T01] ( 4, 14.50) int -> r1 "V03.[008..012)"
; V16 tmp11 [V16,T07] ( 2, 2 ) byref -> r3 single-def "V06.[000..004)"
; V17 tmp12 [V17,T08] ( 2, 2 ) int -> r2 single-def "V06.[004..008)"
;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref "V06.[008..012)"
@@ -40,39 +40,41 @@ G_M19652_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr r3, [sp+0x08]
; byrRegs +[r3]
ldr r2, [sp+0x0C]
- mov r1, -1
b SHORT G_M19652_IG04
- ;; size=12 bbWeight=1 PerfScore 5.00
-G_M19652_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
- cmp r1, r2
- bhs SHORT G_M19652_IG07
+ ;; size=8 bbWeight=1 PerfScore 4.00
+G_M19652_IG03: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ldr r0, [r3]
+ b SHORT G_M19652_IG07
+ ;; size=4 bbWeight=0.25 PerfScore 0.50
+G_M19652_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ cmp r2, 0
+ ble SHORT G_M19652_IG09
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M19652_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ movs r1, 0
+ b SHORT G_M19652_IG03
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M19652_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
lsl lr, r1, 2
ldr lr, [r3+lr]
add r0, lr
- ;; size=14 bbWeight=2 PerfScore 10.00
-G_M19652_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ;; size=10 bbWeight=2 PerfScore 6.00
+G_M19652_IG07: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
adds r1, r1, 1
cmp r1, r2
- bge SHORT G_M19652_IG06
+ bge SHORT G_M19652_IG09
;; size=6 bbWeight=8 PerfScore 24.00
-G_M19652_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
- b SHORT G_M19652_IG03
+G_M19652_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ b SHORT G_M19652_IG06
;; size=2 bbWeight=4 PerfScore 4.00
-G_M19652_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M19652_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r3]
pop {r11,lr}
add sp, 8
bx lr
;; size=8 bbWeight=4 PerfScore 12.00
-G_M19652_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- bkpt
- ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 62, prolog size 8, PerfScore 58.00, instruction count 24, allocated bytes for code 62 (MethodHash=47afb33b) for method Struct.SpanWrapper:SumSpanWrapper(Struct.SpanWrapper`1[int]):int:this (Tier0-FullOpts)
+; Total bytes of code 54, prolog size 8, PerfScore 56.50, instruction count 23, allocated bytes for code 54 (MethodHash=47afb33b) for method Struct.SpanWrapper:SumSpanWrapper(Struct.SpanWrapper`1[int]):int:this (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -84,7 +86,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
+ Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-5.17%) : 24453.dasm - Sigil.Impl.LinqAlternative+<Where>d_2`1[int]:MoveNext():ubyte:this (Tier0-FullOpts)
@@ -8,167 +8,152 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 18, 16.50) ref -> [sp+0x04] this class-hnd EH-live single-def <Sigil.Impl.LinqAlternative+<_Where>d__2`1[int]>
+; V00 this [V00,T00] ( 17, 9 ) ref -> [sp+0x04] this class-hnd EH-live single-def <Sigil.Impl.LinqAlternative+<_Where>d__2`1[int]>
; V01 loc0 [V01,T03] ( 4, 2.50) ubyte -> r0
; V02 loc1 [V02,T04] ( 3, 2.50) int -> r0 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" <<unknown class>>
-; V05 tmp2 [V05,T02] ( 2, 8 ) int -> r1 "argument with side effect"
-; V06 tmp3 [V06,T01] ( 3, 12 ) ref -> r5 "argument with side effect"
-; V07 PSPSym [V07,T05] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym"
+; V05 tmp2 [V05,T02] ( 2, 1 ) int -> r1 "argument with side effect"
+; V06 tmp3 [V06,T01] ( 3, 1.50) ref -> r6 "argument with side effect"
+; V07 PSPSym [V07,T06] ( 1, 1 ) int -> [sp+0x08] do-not-enreg[V] "PSPSym"
+; V08 cse0 [V08,T05] ( 5, 2 ) ref -> r0 multi-def "CSE - aggressive"
; TEMP_01 ref -> [r11-0x18]
;
-; Lcl frame size = 16
+; Lcl frame size = 12
G_M46418_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- sub sp, 16
+ push {r4,r5,r6,r11,lr}
+ sub sp, 12
add r11, sp, 24
movs r1, 0
str r1, [sp] // [TEMP_01]
add r1, sp, 32
- str r1, [sp+0x0C] // [V07 PSPSym]
+ str r1, [sp+0x08] // [V07 PSPSym]
str r0, [sp+0x04] // [V00 this]
; GC ptr vars +{V00}
- mov r4, r0
- ; gcrRegs +[r4]
+ mov r5, r0
+ ; gcrRegs +[r5]
;; size=22 bbWeight=1 PerfScore 9.00
-G_M46418_IG02: ; bbWeight=1, gcVars=00000001 {V00}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr r0, [r4+0x18]
+G_M46418_IG02: ; bbWeight=1, gcVars=00000001 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr r0, [r5+0x18]
cmp r0, 0
beq SHORT G_M46418_IG04
;; size=6 bbWeight=1 PerfScore 3.00
-G_M46418_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M46418_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
cmp r0, 1
- beq SHORT G_M46418_IG09
+ beq SHORT G_M46418_IG07
movs r0, 0
- b SHORT G_M46418_IG11
+ b SHORT G_M46418_IG12
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M46418_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M46418_IG04: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
mov r0, -1
- str r0, [r4+0x18]
- ldr r0, [r4+0x04]
+ str r0, [r5+0x18]
+ ldr r0, [r5+0x04]
; gcrRegs +[r0]
movw r4, 0xd1ff
- ; gcrRegs -[r4]
movt r4, 0xd1ff
ldr r3, [r4]
blx r3 // <unknown method>
; gcr arg pop 0
str r0, [sp]
- ldr r4, [sp+0x04] // [V00 this]
- ; gcrRegs +[r4]
- add r0, r4, 20
+ add r0, r5, 20
; gcrRegs -[r0]
; byrRegs +[r0]
- ldr r1, [sp] // [TEMP_01]
+ ldr r1, [sp]
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
- b SHORT G_M46418_IG09
- ;; size=42 bbWeight=0.50 PerfScore 7.50
-G_M46418_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4]
- ldr r4, [sp+0x04] // [V00 this]
- ; gcrRegs +[r4]
- ldr r5, [r4+0x0C]
- ; gcrRegs +[r5]
- ldr r0, [r4+0x14]
+ b SHORT G_M46418_IG07
+ ;; size=40 bbWeight=0.50 PerfScore 7.00
+G_M46418_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ mov r0, -1
+ str r0, [r5+0x18]
+ ldr r0, [r5+0x14]
+ ; gcrRegs +[r0]
+ cmp r0, 0
+ beq SHORT G_M46418_IG11
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ ; gcr arg pop 0
+ b SHORT G_M46418_IG11
+ ;; size=26 bbWeight=0.50 PerfScore 5.00
+G_M46418_IG06: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r5+0x14]
+ ; gcrRegs +[r0]
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ ; gcr arg pop 0
+ str r0, [r5+0x1C]
+ movs r0, 1
+ str r0, [r5+0x18]
+ b SHORT G_M46418_IG12
+ ;; size=22 bbWeight=0.50 PerfScore 4.50
+G_M46418_IG07: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ mvn r0, 2
+ str r0, [r5+0x18]
+ b SHORT G_M46418_IG09
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M46418_IG08: ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ldr r6, [r5+0x0C]
+ ; gcrRegs +[r6]
+ ldr r0, [r5+0x14]
; gcrRegs +[r0]
movw r4, 0xd1ff
- ; gcrRegs -[r4]
movt r4, 0xd1ff
ldr r3, [r4]
blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
mov r1, r0
- ldr r0, [r5+0x04]
+ ldr r0, [r6+0x04]
; gcrRegs +[r0]
- ldr r3, [r5+0x0C]
+ ldr r3, [r6+0x0C]
blx r3 // <unknown method>
- ; gcrRegs -[r0 r5]
+ ; gcrRegs -[r0 r6]
+ ; gcr arg pop 0
+ cmp r0, 0
+ bne SHORT G_M46418_IG06
+ ;; size=28 bbWeight=0.25 PerfScore 3.00
+G_M46418_IG09: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r5+0x14]
+ ; gcrRegs +[r0]
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- ldr r4, [sp+0x04] // [V00 this]
- ; gcrRegs +[r4]
bne SHORT G_M46418_IG08
- ;; size=32 bbWeight=2 PerfScore 28.00
-G_M46418_IG06: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r4+0x14]
- ; gcrRegs +[r0]
- movw r4, 0xd1ff
- ; gcrRegs -[r4]
- movt r4, 0xd1ff
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; gcrRegs -[r0]
- ; gcr arg pop 0
- cmp r0, 0
- bne SHORT G_M46418_IG05
- ;; size=18 bbWeight=4 PerfScore 28.00
-G_M46418_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov r0, -1
- ldr r4, [sp+0x04]
- ; gcrRegs +[r4]
- str r0, [r4+0x18]
- ldr r0, [r4+0x14]
- ; gcrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M46418_IG10
- ldr r0, [r4+0x14]
- movw r4, 0xd1ff
- ; gcrRegs -[r4]
- movt r4, 0xd1ff
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; gcrRegs -[r0]
- ; gcr arg pop 0
- ldr r4, [sp+0x04] // [V00 this]
- ; gcrRegs +[r4]
- b SHORT G_M46418_IG10
- ;; size=32 bbWeight=0.50 PerfScore 6.50
-G_M46418_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r4+0x14]
- ; gcrRegs +[r0]
- movw r4, 0xd1ff
- ; gcrRegs -[r4]
- movt r4, 0xd1ff
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; gcrRegs -[r0]
- ; gcr arg pop 0
- ldr r4, [sp+0x04] // [V00 this]
- ; gcrRegs +[r4]
- str r0, [r4+0x1C]
- movs r0, 1
- str r0, [r4+0x18]
- b SHORT G_M46418_IG11
- ;; size=24 bbWeight=0.50 PerfScore 5.00
-G_M46418_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- mvn r0, 2
- str r0, [r4+0x18]
- b SHORT G_M46418_IG06
- ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M46418_IG10: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ;; size=18 bbWeight=0.50 PerfScore 3.50
+G_M46418_IG10: ; bbWeight=0.06, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M46418_IG05
+ ;; size=2 bbWeight=0.06 PerfScore 0.06
+G_M46418_IG11: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
movs r0, 0
- str r0, [r4+0x14]
+ str r0, [r5+0x14]
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M46418_IG11: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
- ; gcrRegs -[r4]
+G_M46418_IG12: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+ ; gcrRegs -[r5]
; GC ptr vars -{V00}
- add sp, 16
- pop {r4,r5,r11,pc}
+ add sp, 12
+ pop {r4,r5,r6,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M46418_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
- push {r2,r3,r4,r5,r11,lr}
+G_M46418_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ push {r3,r4,r5,r6,r11,lr}
add r3, r11, 8
...
-6 (-2.03%) : 1793.dasm - System.Linq.Enumerable+d64`1[System.Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
@@ -8,10 +8,10 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 17, 15.75) ref -> [sp+0x08] this class-hnd EH-live single-def <System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]>
+; V00 this [V00,T00] ( 17, 8.75) ref -> [sp+0x08] this class-hnd EH-live single-def <System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]>
; V01 loc0 [V01,T03] ( 4, 2.50) ubyte -> r0
; V02 loc1 [V02,T04] ( 3, 2.50) int -> r0
-; V03 loc2 [V03,T01] ( 4, 4.62) ref -> r5 class-hnd <<unknown class>>
+; V03 loc2 [V03,T01] ( 4, 1.12) ref -> r4 class-hnd <<unknown class>>
;* 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,T06] ( 3, 1.25) int -> r3 "fgMakeTemp is creating a new local variable"
@@ -33,68 +33,129 @@ G_M56914_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
str r0, [r11-0x14]
str r0, [sp+0x08] // [V00 this]
; GC ptr vars +{V00}
- mov r4, r0
- ; gcrRegs +[r4]
+ mov r5, r0
+ ; gcrRegs +[r5]
;; size=26 bbWeight=1 PerfScore 10.00
-G_M56914_IG02: ; bbWeight=1, gcVars=00000001 {V00}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr r0, [r4+0x14]
+G_M56914_IG02: ; bbWeight=1, gcVars=00000001 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr r0, [r5+0x14]
cmp r0, 0
beq SHORT G_M56914_IG04
;; size=6 bbWeight=1 PerfScore 3.00
-G_M56914_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M56914_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
cmp r0, 1
- beq SHORT G_M56914_IG12
+ beq SHORT G_M56914_IG10
movs r0, 0
- b SHORT G_M56914_IG14
+ b SHORT G_M56914_IG15
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M56914_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M56914_IG04: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
mov r0, -1
- str r0, [r4+0x14]
- ldr r0, [r4+0x08]
+ str r0, [r5+0x14]
+ ldr r0, [r5+0x08]
; gcrRegs +[r0]
movw r4, 0xd1ff
- ; gcrRegs -[r4]
movt r4, 0xd1ff
ldr r3, [r4]
blx r3 // <unknown method>
; gcr arg pop 0
str r0, [sp+0x04]
- ldr r4, [sp+0x08] // [V00 this]
- ; gcrRegs +[r4]
- add r0, r4, 16
+ add r0, r5, 16
; gcrRegs -[r0]
; byrRegs +[r0]
- ldr r1, [sp+0x04] // [TEMP_01]
+ ldr r1, [sp+0x04]
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
- b SHORT G_M56914_IG12
- ;; size=42 bbWeight=0.50 PerfScore 7.50
-G_M56914_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4]
- ldr r4, [sp+0x08] // [V00 this]
+ b SHORT G_M56914_IG10
+ ;; size=40 bbWeight=0.50 PerfScore 7.00
+G_M56914_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ mov r1, -1
+ str r1, [r5+0x14]
+ ldr r1, [r5+0x10]
+ ; gcrRegs +[r1]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[r1] +[r0]
+ ; gcr arg pop 0
+ cmp r0, 0
+ beq SHORT G_M56914_IG14
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ ; gcr arg pop 0
+ b SHORT G_M56914_IG14
+ ;; size=44 bbWeight=0.50 PerfScore 7.50
+G_M56914_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r4]
- ldr r0, [r4+0x10]
+ mov r1, r4
+ ; gcrRegs +[r1]
+ cmp r1, 0
+ beq SHORT G_M56914_IG09
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M56914_IG07: ; bbWeight=0.25, gcrefRegs=0032 {r1 r4 r5}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r1]
+ ldr r3, [r5]
+ ldr r3, [r3+0x24]
+ ldr r3, [r3]
+ ldr r3, [r3]
+ cmp r0, r3
+ beq SHORT G_M56914_IG09
+ ;; size=14 bbWeight=0.25 PerfScore 1.75
+G_M56914_IG08: ; bbWeight=0.12, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r1]
+ mov r0, r3
+ mov r1, r4
+ ; gcrRegs +[r1]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_CHKCASTANY
+ ; gcrRegs -[r1 r4] +[r0]
+ ; gcr arg pop 0
+ mov r1, r0
+ ; gcrRegs +[r1]
+ ;; size=16 bbWeight=0.12 PerfScore 0.75
+G_M56914_IG09: ; bbWeight=0.50, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0]
+ adds r0, r5, 4
+ ; byrRegs +[r0]
+ movw r12, 0xd1ff
+ movt r12, 0xd1ff
+ blx r12 // CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[r1]
+ ; byrRegs -[r0]
+ movs r1, 1
+ str r1, [r5+0x14]
+ mov r0, r1
+ b SHORT G_M56914_IG15
+ ;; size=20 bbWeight=0.50 PerfScore 4.00
+G_M56914_IG10: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ mvn r0, 2
+ str r0, [r5+0x14]
+ b SHORT G_M56914_IG12
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M56914_IG11: ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r5+0x10]
; gcrRegs +[r0]
movw r4, 0xd1ff
- ; gcrRegs -[r4]
movt r4, 0xd1ff
ldr r3, [r4]
blx r3 // <unknown method>
; gcr arg pop 0
- mov r5, r0
- ; gcrRegs +[r5]
- ldr r4, [sp+0x08] // [V00 this]
+ mov r4, r0
; gcrRegs +[r4]
- ldr r0, [r4]
+ ldr r0, [r5]
; gcrRegs -[r0]
ldr r0, [r0+0x24]
ldr r0, [r0]
ldr r0, [r0]
- mov r1, r5
+ mov r1, r4
; gcrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -103,111 +164,39 @@ G_M56914_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
cmp r0, 0
- bne SHORT G_M56914_IG08
- ;; size=46 bbWeight=2 PerfScore 38.00
-G_M56914_IG06: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0 r5]
- ldr r0, [r4+0x10]
+ bne SHORT G_M56914_IG06
+ ;; size=42 bbWeight=0.25 PerfScore 4.25
+G_M56914_IG12: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0 r4]
+ ldr r0, [r5+0x10]
; gcrRegs +[r0]
movw r4, 0xd1ff
- ; gcrRegs -[r4]
movt r4, 0xd1ff
ldr r3, [r4]
blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- bne SHORT G_M56914_IG05
- ;; size=18 bbWeight=4 PerfScore 28.00
-G_M56914_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov r1, -1
- ldr r4, [sp+0x08]
- ; gcrRegs +[r4]
- str r1, [r4+0x14]
- ldr r1, [r4+0x10]
- ; gcrRegs +[r1]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[r1 r4] +[r0]
- ; gcr arg pop 0
- cmp r0, 0
- beq SHORT G_M56914_IG13
- movw r4, 0xd1ff
- movt r4, 0xd1ff
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; gcrRegs -[r0]
- ; gcr arg pop 0
- b SHORT G_M56914_IG13
- ;; size=46 bbWeight=0.50 PerfScore 8.00
-G_M56914_IG08: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r4-r5]
- mov r1, r5
- ; gcrRegs +[r1]
- cmp r1, 0
- beq SHORT G_M56914_IG11
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M56914_IG09: ; bbWeight=0.25, gcrefRegs=0032 {r1 r4 r5}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r1]
- ldr r3, [r4]
- ldr r3, [r3+0x24]
- ldr r3, [r3]
- ldr r3, [r3]
- cmp r0, r3
- beq SHORT G_M56914_IG11
- ;; size=14 bbWeight=0.25 PerfScore 1.75
-G_M56914_IG10: ; bbWeight=0.12, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r1]
- mov r0, r3
- mov r1, r5
- ; gcrRegs +[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[r1 r5] +[r0]
- ; gcr arg pop 0
- mov r1, r0
- ; gcrRegs +[r1]
- ;; size=16 bbWeight=0.12 PerfScore 0.75
-G_M56914_IG11: ; bbWeight=0.50, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0]
...
+36 (+69.23%) : 11355.dasm - Newtonsoft.Json.JsonWriter:AutoCompleteAll():this (Tier0-FullOpts)
@@ -8,68 +8,111 @@
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 22 ) ref -> r4 this class-hnd single-def <Newtonsoft.Json.JsonWriter>
+; V00 this [V00,T01] ( 9, 22.50) ref -> r4 this class-hnd single-def <Newtonsoft.Json.JsonWriter>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T00] ( 3, 36 ) ref -> r0 class-hnd "dup spill" <System.Collections.Generic.List`1[Newtonsoft.Json.JsonPosition]>
+; V02 tmp1 [V02,T00] ( 6, 40.50) ref -> r5 class-hnd "dup spill" <System.Collections.Generic.List`1[Newtonsoft.Json.JsonPosition]>
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref
-; V04 tmp3 [V04,T03] ( 4, 14 ) int -> r3
-; V05 tmp4 [V05,T02] ( 3, 18 ) int -> r0 "Inline stloc first use temp"
+; V04 tmp3 [V04,T03] ( 8, 15.75) int -> r6
+; V05 tmp4 [V05,T02] ( 6, 20.25) int -> r3 "Inline stloc first use temp"
+; V06 cse0 [V06,T04] ( 3, 2.50) int -> r7 "CSE - aggressive"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M16914_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
- add r11, sp, 8
+ push {r4,r5,r6,r7,r11,lr}
+ add r11, sp, 16
mov r4, r0
; gcrRegs +[r4]
;; size=10 bbWeight=1 PerfScore 3.00
G_M16914_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
b SHORT G_M16914_IG04
;; size=2 bbWeight=1 PerfScore 1.00
-G_M16914_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M16914_IG03: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r4]
- ldr r3, [r3+0x50]
- ldr r3, [r3+0x10]
+ ldr r7, [r3+0x50]
+ ldr r3, [r7+0x10]
blx r3 // <unknown method>
; gcrRegs -[r0]
- ;; size=10 bbWeight=2 PerfScore 10.00
-G_M16914_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r4+0x04]
- ; gcrRegs +[r0]
- cmp r0, 0
+ b SHORT G_M16914_IG12
+ ;; size=12 bbWeight=0.25 PerfScore 1.50
+G_M16914_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ldr r5, [r4+0x04]
+ ; gcrRegs +[r5]
+ cmp r5, 0
bne SHORT G_M16914_IG06
- ;; size=6 bbWeight=8 PerfScore 24.00
-G_M16914_IG05: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0]
- movs r3, 0
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M16914_IG05: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
+ movs r6, 0
b SHORT G_M16914_IG07
- ;; size=4 bbWeight=2 PerfScore 4.00
-G_M16914_IG06: ; bbWeight=2, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r0]
- ldr r3, [r0+0x08]
- ;; size=2 bbWeight=2 PerfScore 2.00
-G_M16914_IG07: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0]
- mov r0, r3
- ldr r2, [r4+0x30]
- cmp r2, 0
- beq SHORT G_M16914_IG09
- ;; size=8 bbWeight=8 PerfScore 32.00
-G_M16914_IG08: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- adds r0, r3, 1
- ;; size=2 bbWeight=2 PerfScore 2.00
-G_M16914_IG09: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.25 PerfScore 0.50
+G_M16914_IG06: ; bbWeight=0.25, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r5]
+ ldr r6, [r5+0x08]
+ ;; size=2 bbWeight=0.25 PerfScore 0.25
+G_M16914_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
+ mov r3, r6
+ ldr r0, [r4+0x30]
cmp r0, 0
+ beq SHORT G_M16914_IG09
+ ;; size=8 bbWeight=1 PerfScore 4.00
+G_M16914_IG08: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ adds r3, r6, 1
+ ;; size=2 bbWeight=0.25 PerfScore 0.25
+G_M16914_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ cmp r3, 0
bgt SHORT G_M16914_IG03
- ;; size=4 bbWeight=8 PerfScore 16.00
-G_M16914_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M16914_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4]
- pop {r3,r4,r11,pc}
+ b SHORT G_M16914_IG18
+ ;; size=2 bbWeight=0.12 PerfScore 0.12
+G_M16914_IG11: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r4]
+ mov r0, r4
+ ; gcrRegs +[r0]
+ ldr r3, [r7+0x10]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ ;; size=6 bbWeight=2 PerfScore 6.00
+G_M16914_IG12: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ldr r5, [r4+0x04]
+ ; gcrRegs +[r5]
+ cmp r5, 0
+ bne SHORT G_M16914_IG14
+ ;; size=6 bbWeight=8 PerfScore 24.00
+G_M16914_IG13: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
+ movs r6, 0
+ b SHORT G_M16914_IG15
+ ;; size=4 bbWeight=2 PerfScore 4.00
+G_M16914_IG14: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r5]
+ ldr r6, [r5+0x08]
+ ;; size=2 bbWeight=2 PerfScore 2.00
+G_M16914_IG15: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
+ mov r3, r6
+ ldr r0, [r4+0x30]
+ cmp r0, 0
+ beq SHORT G_M16914_IG17
+ ;; size=8 bbWeight=8 PerfScore 32.00
+G_M16914_IG16: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ adds r3, r6, 1
+ ;; size=2 bbWeight=2 PerfScore 2.00
+G_M16914_IG17: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ cmp r3, 0
+ bgt SHORT G_M16914_IG11
+ ;; size=4 bbWeight=8 PerfScore 16.00
+G_M16914_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r4]
+ pop {r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 52, prolog size 8, PerfScore 95.00, instruction count 23, allocated bytes for code 52 (MethodHash=c8c0bded) for method Newtonsoft.Json.JsonWriter:AutoCompleteAll():this (Tier0-FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 102.62, instruction count 41, allocated bytes for code 88 (MethodHash=c8c0bded) for method Newtonsoft.Json.JsonWriter:AutoCompleteAll():this (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -81,11 +124,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 52 (0x000034)
+ Function Length : 44 (0x0002c) Actual length = 88 (0x000058)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
FF end
FF end
+38 (+70.37%) : 29321.dasm - Jil.Deserialize.Methods:_ConsumeWhiteSpace(System.IO.TextReader) (Tier0-FullOpts)
@@ -8,13 +8,13 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 5, 13 ) ref -> r4 class-hnd single-def <System.IO.TextReader>
+; V00 arg0 [V00,T01] ( 7, 14.25) ref -> r4 class-hnd single-def <System.IO.TextReader>
;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 6, 48 ) int -> r0 "dup spill"
-;* V04 tmp2 [V04,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V05 cse0 [V05,T02] ( 3, 11 ) int -> r5 hoist "CSE - aggressive"
-; V06 cse1 [V06,T03] ( 2, 2 ) int -> r0 hoist "CSE - aggressive"
+; V03 tmp1 [V03,T00] ( 12, 54 ) int -> r0 "dup spill"
+;* V04 tmp2 [V04,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V05 cse0 [V05,T02] ( 5, 12.25) int -> r5 "CSE - aggressive"
+; V06 cse1 [V06,T04] ( 2, 2 ) int -> r3 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -25,11 +25,9 @@ G_M13758_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[r4]
;; size=10 bbWeight=1 PerfScore 3.00
G_M13758_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r4]
- ldr r5, [r0+0x30]
b SHORT G_M13758_IG05
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M13758_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M13758_IG03: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r0, 32
beq SHORT G_M13758_IG04
cmp r0, 9
@@ -37,30 +35,64 @@ G_M13758_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
cmp r0, 10
beq SHORT G_M13758_IG04
cmp r0, 13
- bne SHORT G_M13758_IG06
+ bne SHORT G_M13758_IG10
+ ;; size=16 bbWeight=0.25 PerfScore 2.00
+G_M13758_IG04: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ mov r0, r4
+ ; gcrRegs +[r0]
+ ldr r3, [r5+0x04]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ b SHORT G_M13758_IG09
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
+G_M13758_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ mov r0, r4
+ ; gcrRegs +[r0]
+ ldr r3, [r4]
+ ldr r5, [r3+0x30]
+ ldr r3, [r5]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ cmp r0, -1
+ bne SHORT G_M13758_IG03
+ ;; size=16 bbWeight=1 PerfScore 7.00
+G_M13758_IG06: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r4]
+ b SHORT G_M13758_IG10
+ ;; size=2 bbWeight=0.06 PerfScore 0.06
+G_M13758_IG07: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r4]
+ cmp r0, 32
+ beq SHORT G_M13758_IG08
+ cmp r0, 9
+ beq SHORT G_M13758_IG08
+ cmp r0, 10
+ beq SHORT G_M13758_IG08
+ cmp r0, 13
+ bne SHORT G_M13758_IG10
;; size=16 bbWeight=2 PerfScore 16.00
-G_M13758_IG04: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M13758_IG08: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r5+0x04]
blx r3 // <unknown method>
; gcrRegs -[r0]
;; size=6 bbWeight=2 PerfScore 6.00
-G_M13758_IG05: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M13758_IG09: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r5]
blx r3 // <unknown method>
; gcrRegs -[r0]
cmp r0, -1
- bne SHORT G_M13758_IG03
+ bne SHORT G_M13758_IG07
;; size=12 bbWeight=8 PerfScore 40.00
-G_M13758_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M13758_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r4]
pop {r4,r5,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 54, prolog size 8, PerfScore 69.00, instruction count 23, allocated bytes for code 54 (MethodHash=993cca41) for method Jil.Deserialize.Methods:_ConsumeWhiteSpace(System.IO.TextReader) (Tier0-FullOpts)
+; Total bytes of code 92, prolog size 8, PerfScore 77.06, instruction count 41, allocated bytes for code 92 (MethodHash=993cca41) for method Jil.Deserialize.Methods:_ConsumeWhiteSpace(System.IO.TextReader) (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -72,7 +104,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
+ Function Length : 46 (0x0002e) Actual length = 92 (0x00005c)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+40 (+74.07%) : 26474.dasm - System.Text.Json.Utf8JsonReader:SkipWhiteSpaceMultiSegment():this (Tier0-FullOpts)
@@ -7,18 +7,18 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 6, 30 ) byref -> r4 this single-def
+; V00 this [V00,T00] ( 10, 33.50) byref -> r4 this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 4
-G_M62585_IG01: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M62585_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,r4,r11,lr}
add r11, sp, 8
mov r4, r0
; byrRegs +[r4]
- ;; size=10 bbWeight=8 PerfScore 24.00
-G_M62585_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+ ;; size=10 bbWeight=1 PerfScore 3.00
+G_M62585_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
mov r0, r4
; byrRegs +[r0]
movw r3, 0xd1ff
@@ -29,9 +29,9 @@ G_M62585_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre
ldr r0, [r4+0x20]
ldr r3, [r4+0x34]
cmp r0, r3
- blt SHORT G_M62585_IG04
- ;; size=22 bbWeight=8 PerfScore 72.00
-G_M62585_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+ blt SHORT G_M62585_IG06
+ ;; size=22 bbWeight=1 PerfScore 9.00
+G_M62585_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
mov r0, r4
; byrRegs +[r0]
movw r3, 0xd1ff
@@ -40,14 +40,38 @@ G_M62585_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre
blx r3 // <unknown method>
; byrRegs -[r0]
cmp r0, 0
- bne SHORT G_M62585_IG02
+ beq SHORT G_M62585_IG06
+ ;; size=18 bbWeight=0.50 PerfScore 3.50
+G_M62585_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+ mov r0, r4
+ ; byrRegs +[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // System.Text.Json.Utf8JsonReader:SkipWhiteSpace():this
+ ; byrRegs -[r0]
+ ldr r0, [r4+0x20]
+ ldr r3, [r4+0x34]
+ cmp r0, r3
+ blt SHORT G_M62585_IG06
+ ;; size=22 bbWeight=8 PerfScore 72.00
+G_M62585_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+ mov r0, r4
+ ; byrRegs +[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ ; byrRegs -[r0]
+ cmp r0, 0
+ bne SHORT G_M62585_IG04
;; size=18 bbWeight=4 PerfScore 28.00
-G_M62585_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M62585_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r4]
pop {r3,r4,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 54, prolog size 8, PerfScore 125.00, instruction count 20, allocated bytes for code 54 (MethodHash=d7900b86) for method System.Text.Json.Utf8JsonReader:SkipWhiteSpaceMultiSegment():this (Tier0-FullOpts)
+; Total bytes of code 94, prolog size 8, PerfScore 116.50, instruction count 36, allocated bytes for code 94 (MethodHash=d7900b86) for method System.Text.Json.Utf8JsonReader:SkipWhiteSpaceMultiSegment():this (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -59,7 +83,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
+ Function Length : 47 (0x0002f) Actual length = 94 (0x00005e)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
coreclr_tests.run.linux.arm.checked.mch
-38 (-54.29%) : 169809.dasm - foo:Main():int (FullOpts)
@@ -7,41 +7,16 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 5, 14 ) int -> r0
+;* V00 loc0 [V00,T00] ( 0, 0 ) int -> zero-ref
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
-G_M24869_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M24869_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_M24869_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movs r0, 1
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M24869_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- adds r0, r0, 1
- cmp r0, 2
- blt SHORT G_M24869_IG03
- ;; size=6 bbWeight=4 PerfScore 12.00
-G_M24869_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r0, 2
- beq SHORT G_M24869_IG07
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M24869_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ; gcr arg pop 0
- movs r0, 101
- ;; size=22 bbWeight=0.50 PerfScore 3.50
-G_M24869_IG06: ; bbWeight=0.50, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M24869_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
@@ -50,33 +25,25 @@ G_M24869_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
blx r3 // <unknown method>
; gcr arg pop 0
movs r0, 100
- ;; size=22 bbWeight=0.50 PerfScore 3.50
-G_M24869_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=22 bbWeight=1 PerfScore 7.00
+G_M24869_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 70, prolog size 6, PerfScore 25.00, instruction count 24, allocated bytes for code 70 (MethodHash=945a9eda) for method foo:Main():int (FullOpts)
+; Total bytes of code 32, prolog size 6, PerfScore 10.00, instruction count 10, allocated bytes for code 32 (MethodHash=945a9eda) for method foo:Main():int (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 70 (0x000046)
- ---- 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)
- ---- Scope 1
- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
- Condition : 14 (0xe) (always)
- Epilog Start Index : 0 (0x00)
+ Function Length : 16 (0x00010) Actual length = 32 (0x000020)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
A8 00 pop {r11,lr} ; opsize 32
-38 (-54.29%) : 381750.dasm - foo:Main():int (Tier0-FullOpts)
@@ -7,41 +7,16 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 5, 14 ) int -> r0
+;* V00 loc0 [V00,T00] ( 0, 0 ) int -> zero-ref
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
-G_M24869_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M24869_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_M24869_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movs r0, 1
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M24869_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- adds r0, r0, 1
- cmp r0, 2
- blt SHORT G_M24869_IG03
- ;; size=6 bbWeight=4 PerfScore 12.00
-G_M24869_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r0, 2
- beq SHORT G_M24869_IG07
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M24869_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ; gcr arg pop 0
- movs r0, 101
- ;; size=22 bbWeight=0.50 PerfScore 3.50
-G_M24869_IG06: ; bbWeight=0.50, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M24869_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
@@ -50,33 +25,25 @@ G_M24869_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
blx r3 // <unknown method>
; gcr arg pop 0
movs r0, 100
- ;; size=22 bbWeight=0.50 PerfScore 3.50
-G_M24869_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=22 bbWeight=1 PerfScore 7.00
+G_M24869_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 70, prolog size 6, PerfScore 25.00, instruction count 24, allocated bytes for code 70 (MethodHash=945a9eda) for method foo:Main():int (Tier0-FullOpts)
+; Total bytes of code 32, prolog size 6, PerfScore 10.00, instruction count 10, allocated bytes for code 32 (MethodHash=945a9eda) for method foo:Main():int (Tier0-FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 70 (0x000046)
- ---- 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)
- ---- Scope 1
- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
- Condition : 14 (0xe) (always)
- Epilog Start Index : 0 (0x00)
+ Function Length : 16 (0x00010) Actual length = 32 (0x000020)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
A8 00 pop {r11,lr} ; opsize 32
-32 (-21.92%) : 115070.dasm - Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)
@@ -7,23 +7,22 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T06] ( 5, 5 ) ref -> r0 class-hnd exact single-def <int[]>
-; V01 loc1 [V01,T00] ( 10, 49.84) int -> r4
-; V02 loc2 [V02,T01] ( 8, 43 ) int -> r3
-;* V03 loc3 [V03,T07] ( 0, 0 ) int -> zero-ref single-def
+; V00 loc0 [V00,T04] ( 5, 5 ) ref -> r0 class-hnd exact single-def <int[]>
+; V01 loc1 [V01,T00] ( 5, 16.84) int -> r0
+; V02 loc2 [V02,T05] ( 3, 3 ) int -> r3
+;* V03 loc3 [V03,T06] ( 0, 0 ) int -> zero-ref single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T02] ( 6, 32.92) byref -> r5 hoist "CSE - aggressive"
-; V06 cse1 [V06,T03] ( 4, 32 ) int -> r2 "CSE - aggressive"
-; V07 cse2 [V07,T04] ( 3, 11.88) int -> r0 "CSE - aggressive"
-; V08 cse3 [V08,T05] ( 2, 7.92) int -> r4 "CSE - aggressive"
+; V05 cse0 [V05,T01] ( 8, 13.92) byref -> r4 "CSE - aggressive"
+; V06 cse1 [V06,T02] ( 3, 11.88) int -> r3 "CSE - aggressive"
+; V07 cse2 [V07,T03] ( 2, 7.92) int -> r0 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M42106_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
+ push {r3,r4,r11,lr}
add r11, sp, 8
;; size=8 bbWeight=1 PerfScore 2.00
-G_M42106_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42106_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
movt r0, 0xd1ff
movs r1, 6
@@ -32,35 +31,16 @@ G_M42106_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blx r3 // CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[r0]
; gcr arg pop 0
+ add r4, r0, 8
+ ; byrRegs +[r4]
+ movw r3, 0xd1ff
+ str r3, [r4+0x04]
+ movw r3, 0xd1ff
+ str r3, [r4+0x08]
+ movw r3, 0xd1ff
+ str r3, [r4+0x0C]
movw r3, 0xd1ff
movt r3, 0xd1ff
- movs r4, 1
- add r5, r0, 8
- ; byrRegs +[r5]
- ;; size=34 bbWeight=1 PerfScore 10.00
-G_M42106_IG03: ; bbWeight=8, gcrefRegs=0001 {r0}, byrefRegs=0020 {r5}, byref, isz
- lsls r2, r4, 2
- movw r1, 0xd1ff
- ands r1, r3
- str r1, [r5+r2]
- adds r1, r2, 4
- movw lr, 0xd1ff
- add lr, r3
- movw r12, 0xd1ff
- and lr, lr, r12
- str lr, [r5+r1]
- adds r2, 8
- movw r1, 0xd1ff
- adds r1, r3, r1
- and r1, r1, r12
- str r1, [r5+r2]
- movw r2, 0xd1ff
- adds r3, r3, r2
- adds r4, r4, 3
- cmp r4, 3
- ble SHORT G_M42106_IG03
- ;; size=56 bbWeight=8 PerfScore 160.00
-G_M42106_IG04: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0020 {r5}, byref
str r3, [r0+0x18]
str r3, [r0+0x1C]
movw r3, 0xd1ff
@@ -69,34 +49,38 @@ G_M42106_IG04: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0020 {r5}, by
blx r3 // Benchstone.BenchI.BubbleSort2:Inner(int[])
; gcrRegs -[r0]
; gcr arg pop 0
- movs r4, 0
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M42106_IG05: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref, isz
- lsls r0, r4, 2
- ldr r3, [r5+r0]
- adds r4, r4, 1
- adds r0, r0, 4
- ldr r0, [r5+r0]
- cmp r3, r0
- bgt SHORT G_M42106_IG08
- cmp r4, 4
- blt SHORT G_M42106_IG05
+ ldr r0, [r4]
+ ldr r3, [r4+0x04]
+ cmp r0, r3
+ bgt SHORT G_M42106_IG06
+ movs r0, 1
+ ;; size=76 bbWeight=1 PerfScore 26.00
+G_M42106_IG03: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+ lsls r3, r0, 2
+ ldr r2, [r4+r3]
+ adds r0, r0, 1
+ adds r3, r3, 4
+ ldr r3, [r4+r3]
+ cmp r2, r3
+ bgt SHORT G_M42106_IG06
+ cmp r0, 4
+ blt SHORT G_M42106_IG03
;; size=18 bbWeight=3.96 PerfScore 35.64
-G_M42106_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r5]
+G_M42106_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r4]
movs r0, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M42106_IG07: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,pc}
+G_M42106_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r3,r4,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M42106_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M42106_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M42106_IG09: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,pc}
+G_M42106_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r3,r4,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 146, prolog size 8, PerfScore 217.14, instruction count 52, allocated bytes for code 146 (MethodHash=86305b85) for method Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)
+; Total bytes of code 114, prolog size 8, PerfScore 66.14, instruction count 41, allocated bytes for code 114 (MethodHash=86305b85) for method Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -108,7 +92,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 73 (0x00049) Actual length = 146 (0x000092)
+ Function Length : 57 (0x00039) Actual length = 114 (0x000072)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -120,7 +104,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 18 pop {r3,r4,r11,lr} ; opsize 32
FF end
FF end
+46 (+67.65%) : 230198.dasm - Microsoft.Build.Construction.ProjectElementContainer:VerifyThrowInvalidOperationNotSelfAncestor(Microsoft.Build.Construction.ProjectElement):this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 4 ) ref -> r0 this class-hnd single-def <Microsoft.Build.Construction.ProjectElementContainer>
-; V01 arg1 [V01,T01] ( 3, 6 ) ref -> r4 class-hnd single-def <Microsoft.Build.Construction.ProjectElement>
-; V02 loc0 [V02,T00] ( 5, 17 ) ref -> r5 class-hnd <Microsoft.Build.Construction.ProjectElement>
+; V00 this [V00,T02] ( 5, 5 ) ref -> r5 this class-hnd single-def <Microsoft.Build.Construction.ProjectElementContainer>
+; V01 arg1 [V01,T01] ( 4, 7 ) ref -> r4 class-hnd single-def <Microsoft.Build.Construction.ProjectElement>
+; V02 loc0 [V02,T00] ( 6, 18 ) ref -> r5 class-hnd <Microsoft.Build.Construction.ProjectElement>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;
@@ -19,22 +19,45 @@
G_M13573_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r11,lr}
add r11, sp, 8
- mov r4, r1
- ; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
-G_M13573_IG02: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r0]
mov r5, r0
; gcrRegs +[r5]
- cmp r0, 0
- beq SHORT G_M13573_IG06
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M13573_IG03: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ mov r4, r1
+ ; gcrRegs +[r4]
+ ;; size=12 bbWeight=1 PerfScore 4.00
+G_M13573_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ cmp r5, 0
+ beq SHORT G_M13573_IG08
+ cmp r5, r4
+ bne SHORT G_M13573_IG04
+ ;; size=8 bbWeight=1 PerfScore 4.00
+G_M13573_IG03: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movs r1, 0
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // Microsoft.Build.Shared.ErrorUtilities:ThrowInvalidOperation(System.String,System.Object[])
+ ;; size=22 bbWeight=0.50 PerfScore 3.50
+G_M13573_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ mov r0, r5
+ ; gcrRegs +[r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // Microsoft.Build.Construction.ProjectElement:get_Parent():Microsoft.Build.Construction.ProjectElementContainer:this
+ ; gcrRegs -[r5]
+ mov r5, r0
+ ; gcrRegs +[r5]
+ cmp r5, 0
+ beq SHORT G_M13573_IG08
+ ;; size=20 bbWeight=1 PerfScore 8.00
+G_M13573_IG05: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
cmp r5, r4
- bne SHORT G_M13573_IG05
+ bne SHORT G_M13573_IG07
;; size=4 bbWeight=4 PerfScore 8.00
-G_M13573_IG04: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+G_M13573_IG06: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
movs r1, 0
@@ -43,7 +66,7 @@ G_M13573_IG04: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
ldr r3, [r3]
blx r3 // Microsoft.Build.Shared.ErrorUtilities:ThrowInvalidOperation(System.String,System.Object[])
;; size=22 bbWeight=2 PerfScore 14.00
-G_M13573_IG05: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M13573_IG07: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
mov r0, r5
; gcrRegs +[r0]
movw r3, 0xd1ff
@@ -55,14 +78,14 @@ G_M13573_IG05: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
mov r5, r0
; gcrRegs +[r5]
cmp r5, 0
- bne SHORT G_M13573_IG03
+ bne SHORT G_M13573_IG05
;; size=22 bbWeight=4 PerfScore 36.00
-G_M13573_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M13573_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r0 r4-r5]
pop {r4,r5,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 68, prolog size 8, PerfScore 65.00, instruction count 25, allocated bytes for code 68 (MethodHash=7a1dcafa) for method Microsoft.Build.Construction.ProjectElementContainer:VerifyThrowInvalidOperationNotSelfAncestor(Microsoft.Build.Construction.ProjectElement):this (FullOpts)
+; Total bytes of code 114, prolog size 8, PerfScore 78.50, instruction count 42, allocated bytes for code 114 (MethodHash=7a1dcafa) for method Microsoft.Build.Construction.ProjectElementContainer:VerifyThrowInvalidOperationNotSelfAncestor(Microsoft.Build.Construction.ProjectElement):this (FullOpts)
; ============================================================
Unwind Info:
@@ -74,7 +97,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 34 (0x00022) Actual length = 68 (0x000044)
+ Function Length : 57 (0x00039) Actual length = 114 (0x000072)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+36 (+69.23%) : 117161.dasm - Newtonsoft.Json.JsonWriter:AutoCompleteAll():this (FullOpts)
@@ -8,68 +8,111 @@
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 22 ) ref -> r4 this class-hnd single-def <Newtonsoft.Json.JsonWriter>
+; V00 this [V00,T01] ( 9, 22.50) ref -> r4 this class-hnd single-def <Newtonsoft.Json.JsonWriter>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T00] ( 3, 36 ) ref -> r0 class-hnd "dup spill" <System.Collections.Generic.List`1[Newtonsoft.Json.JsonPosition]>
+; V02 tmp1 [V02,T00] ( 6, 40.50) ref -> r5 class-hnd "dup spill" <System.Collections.Generic.List`1[Newtonsoft.Json.JsonPosition]>
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref
-; V04 tmp3 [V04,T03] ( 4, 14 ) int -> r3
-; V05 tmp4 [V05,T02] ( 3, 18 ) int -> r0 "Inline stloc first use temp"
+; V04 tmp3 [V04,T03] ( 8, 15.75) int -> r6
+; V05 tmp4 [V05,T02] ( 6, 20.25) int -> r3 "Inline stloc first use temp"
+; V06 cse0 [V06,T04] ( 3, 2.50) int -> r7 "CSE - aggressive"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M16914_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
- add r11, sp, 8
+ push {r4,r5,r6,r7,r11,lr}
+ add r11, sp, 16
mov r4, r0
; gcrRegs +[r4]
;; size=10 bbWeight=1 PerfScore 3.00
G_M16914_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
b SHORT G_M16914_IG04
;; size=2 bbWeight=1 PerfScore 1.00
-G_M16914_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M16914_IG03: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r4]
- ldr r3, [r3+0x50]
- ldr r3, [r3+0x10]
+ ldr r7, [r3+0x50]
+ ldr r3, [r7+0x10]
blx r3 // <unknown method>
; gcrRegs -[r0]
- ;; size=10 bbWeight=2 PerfScore 10.00
-G_M16914_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r4+0x04]
- ; gcrRegs +[r0]
- cmp r0, 0
+ b SHORT G_M16914_IG12
+ ;; size=12 bbWeight=0.25 PerfScore 1.50
+G_M16914_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ldr r5, [r4+0x04]
+ ; gcrRegs +[r5]
+ cmp r5, 0
bne SHORT G_M16914_IG06
- ;; size=6 bbWeight=8 PerfScore 24.00
-G_M16914_IG05: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0]
- movs r3, 0
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M16914_IG05: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
+ movs r6, 0
b SHORT G_M16914_IG07
- ;; size=4 bbWeight=2 PerfScore 4.00
-G_M16914_IG06: ; bbWeight=2, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r0]
- ldr r3, [r0+0x08]
- ;; size=2 bbWeight=2 PerfScore 2.00
-G_M16914_IG07: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0]
- mov r0, r3
- ldr r2, [r4+0x30]
- cmp r2, 0
- beq SHORT G_M16914_IG09
- ;; size=8 bbWeight=8 PerfScore 32.00
-G_M16914_IG08: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- adds r0, r3, 1
- ;; size=2 bbWeight=2 PerfScore 2.00
-G_M16914_IG09: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.25 PerfScore 0.50
+G_M16914_IG06: ; bbWeight=0.25, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r5]
+ ldr r6, [r5+0x08]
+ ;; size=2 bbWeight=0.25 PerfScore 0.25
+G_M16914_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
+ mov r3, r6
+ ldr r0, [r4+0x30]
cmp r0, 0
+ beq SHORT G_M16914_IG09
+ ;; size=8 bbWeight=1 PerfScore 4.00
+G_M16914_IG08: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ adds r3, r6, 1
+ ;; size=2 bbWeight=0.25 PerfScore 0.25
+G_M16914_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ cmp r3, 0
bgt SHORT G_M16914_IG03
- ;; size=4 bbWeight=8 PerfScore 16.00
-G_M16914_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M16914_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4]
- pop {r3,r4,r11,pc}
+ b SHORT G_M16914_IG18
+ ;; size=2 bbWeight=0.12 PerfScore 0.12
+G_M16914_IG11: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r4]
+ mov r0, r4
+ ; gcrRegs +[r0]
+ ldr r3, [r7+0x10]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ ;; size=6 bbWeight=2 PerfScore 6.00
+G_M16914_IG12: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ldr r5, [r4+0x04]
+ ; gcrRegs +[r5]
+ cmp r5, 0
+ bne SHORT G_M16914_IG14
+ ;; size=6 bbWeight=8 PerfScore 24.00
+G_M16914_IG13: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
+ movs r6, 0
+ b SHORT G_M16914_IG15
+ ;; size=4 bbWeight=2 PerfScore 4.00
+G_M16914_IG14: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r5]
+ ldr r6, [r5+0x08]
+ ;; size=2 bbWeight=2 PerfScore 2.00
+G_M16914_IG15: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
+ mov r3, r6
+ ldr r0, [r4+0x30]
+ cmp r0, 0
+ beq SHORT G_M16914_IG17
+ ;; size=8 bbWeight=8 PerfScore 32.00
+G_M16914_IG16: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ adds r3, r6, 1
+ ;; size=2 bbWeight=2 PerfScore 2.00
+G_M16914_IG17: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ cmp r3, 0
+ bgt SHORT G_M16914_IG11
+ ;; size=4 bbWeight=8 PerfScore 16.00
+G_M16914_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r4]
+ pop {r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 52, prolog size 8, PerfScore 95.00, instruction count 23, allocated bytes for code 52 (MethodHash=c8c0bded) for method Newtonsoft.Json.JsonWriter:AutoCompleteAll():this (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 102.62, instruction count 41, allocated bytes for code 88 (MethodHash=c8c0bded) for method Newtonsoft.Json.JsonWriter:AutoCompleteAll():this (FullOpts)
; ============================================================
Unwind Info:
@@ -81,11 +124,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 52 (0x000034)
+ Function Length : 44 (0x0002c) Actual length = 88 (0x000058)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
FF end
FF end
+36 (+69.23%) : 338245.dasm - Newtonsoft.Json.JsonWriter:AutoCompleteAll():this (Tier0-FullOpts)
@@ -8,68 +8,111 @@
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 22 ) ref -> r4 this class-hnd single-def <Newtonsoft.Json.JsonWriter>
+; V00 this [V00,T01] ( 9, 22.50) ref -> r4 this class-hnd single-def <Newtonsoft.Json.JsonWriter>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T00] ( 3, 36 ) ref -> r0 class-hnd "dup spill" <System.Collections.Generic.List`1[Newtonsoft.Json.JsonPosition]>
+; V02 tmp1 [V02,T00] ( 6, 40.50) ref -> r5 class-hnd "dup spill" <System.Collections.Generic.List`1[Newtonsoft.Json.JsonPosition]>
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref
-; V04 tmp3 [V04,T03] ( 4, 14 ) int -> r3
-; V05 tmp4 [V05,T02] ( 3, 18 ) int -> r0 "Inline stloc first use temp"
+; V04 tmp3 [V04,T03] ( 8, 15.75) int -> r6
+; V05 tmp4 [V05,T02] ( 6, 20.25) int -> r3 "Inline stloc first use temp"
+; V06 cse0 [V06,T04] ( 3, 2.50) int -> r7 "CSE - aggressive"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M16914_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
- add r11, sp, 8
+ push {r4,r5,r6,r7,r11,lr}
+ add r11, sp, 16
mov r4, r0
; gcrRegs +[r4]
;; size=10 bbWeight=1 PerfScore 3.00
G_M16914_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
b SHORT G_M16914_IG04
;; size=2 bbWeight=1 PerfScore 1.00
-G_M16914_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M16914_IG03: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r4]
- ldr r3, [r3+0x50]
- ldr r3, [r3+0x10]
+ ldr r7, [r3+0x50]
+ ldr r3, [r7+0x10]
blx r3 // <unknown method>
; gcrRegs -[r0]
- ;; size=10 bbWeight=2 PerfScore 10.00
-G_M16914_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r4+0x04]
- ; gcrRegs +[r0]
- cmp r0, 0
+ b SHORT G_M16914_IG12
+ ;; size=12 bbWeight=0.25 PerfScore 1.50
+G_M16914_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ldr r5, [r4+0x04]
+ ; gcrRegs +[r5]
+ cmp r5, 0
bne SHORT G_M16914_IG06
- ;; size=6 bbWeight=8 PerfScore 24.00
-G_M16914_IG05: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0]
- movs r3, 0
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M16914_IG05: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
+ movs r6, 0
b SHORT G_M16914_IG07
- ;; size=4 bbWeight=2 PerfScore 4.00
-G_M16914_IG06: ; bbWeight=2, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r0]
- ldr r3, [r0+0x08]
- ;; size=2 bbWeight=2 PerfScore 2.00
-G_M16914_IG07: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0]
- mov r0, r3
- ldr r2, [r4+0x30]
- cmp r2, 0
- beq SHORT G_M16914_IG09
- ;; size=8 bbWeight=8 PerfScore 32.00
-G_M16914_IG08: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- adds r0, r3, 1
- ;; size=2 bbWeight=2 PerfScore 2.00
-G_M16914_IG09: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.25 PerfScore 0.50
+G_M16914_IG06: ; bbWeight=0.25, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r5]
+ ldr r6, [r5+0x08]
+ ;; size=2 bbWeight=0.25 PerfScore 0.25
+G_M16914_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
+ mov r3, r6
+ ldr r0, [r4+0x30]
cmp r0, 0
+ beq SHORT G_M16914_IG09
+ ;; size=8 bbWeight=1 PerfScore 4.00
+G_M16914_IG08: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ adds r3, r6, 1
+ ;; size=2 bbWeight=0.25 PerfScore 0.25
+G_M16914_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ cmp r3, 0
bgt SHORT G_M16914_IG03
- ;; size=4 bbWeight=8 PerfScore 16.00
-G_M16914_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M16914_IG10: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r4]
- pop {r3,r4,r11,pc}
+ b SHORT G_M16914_IG18
+ ;; size=2 bbWeight=0.12 PerfScore 0.12
+G_M16914_IG11: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r4]
+ mov r0, r4
+ ; gcrRegs +[r0]
+ ldr r3, [r7+0x10]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ ;; size=6 bbWeight=2 PerfScore 6.00
+G_M16914_IG12: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ldr r5, [r4+0x04]
+ ; gcrRegs +[r5]
+ cmp r5, 0
+ bne SHORT G_M16914_IG14
+ ;; size=6 bbWeight=8 PerfScore 24.00
+G_M16914_IG13: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
+ movs r6, 0
+ b SHORT G_M16914_IG15
+ ;; size=4 bbWeight=2 PerfScore 4.00
+G_M16914_IG14: ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r5]
+ ldr r6, [r5+0x08]
+ ;; size=2 bbWeight=2 PerfScore 2.00
+G_M16914_IG15: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5]
+ mov r3, r6
+ ldr r0, [r4+0x30]
+ cmp r0, 0
+ beq SHORT G_M16914_IG17
+ ;; size=8 bbWeight=8 PerfScore 32.00
+G_M16914_IG16: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ adds r3, r6, 1
+ ;; size=2 bbWeight=2 PerfScore 2.00
+G_M16914_IG17: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ cmp r3, 0
+ bgt SHORT G_M16914_IG11
+ ;; size=4 bbWeight=8 PerfScore 16.00
+G_M16914_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r4]
+ pop {r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 52, prolog size 8, PerfScore 95.00, instruction count 23, allocated bytes for code 52 (MethodHash=c8c0bded) for method Newtonsoft.Json.JsonWriter:AutoCompleteAll():this (Tier0-FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 102.62, instruction count 41, allocated bytes for code 88 (MethodHash=c8c0bded) for method Newtonsoft.Json.JsonWriter:AutoCompleteAll():this (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -81,11 +124,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 52 (0x000034)
+ Function Length : 44 (0x0002c) Actual length = 88 (0x000058)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
FF end
FF end
libraries.crossgen2.linux.arm.checked.mch
-8 (-4.76%) : 17509.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
@@ -8,25 +8,25 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 10, 6 ) struct ( 8) [sp+0x10] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 arg1 [V01,T03] ( 6, 4 ) byref -> r2 single-def
-; V02 arg2 [V02,T04] ( 6, 4 ) byref -> r3 single-def
-; V03 arg3 [V03,T01] ( 2, 5 ) ushort -> lr
-; V04 loc0 [V04,T00] ( 7, 16.50) int -> r0
+; V00 arg0 [V00,T00] ( 10, 6 ) struct ( 8) [sp+0x10] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
+; V01 arg1 [V01,T01] ( 6, 4 ) byref -> r2 single-def
+; V02 arg2 [V02,T02] ( 6, 4 ) byref -> r3 single-def
+; V03 arg3 [V03,T05] ( 1, 1 ) ushort -> [sp+0x18]
+; V04 loc0 [V04,T03] ( 7, 4.50) int -> r0
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V06 cse0 [V06,T04] ( 3, 3 ) int -> r5 "CSE - aggressive"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M14385_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push {r0,r1}
- push {r3,r4,r11,lr}
+ push {r4,r5,r11,lr}
add r11, sp, 8
- ldr lr, [sp+0x18]
- ;; size=14 bbWeight=1 PerfScore 4.00
+ ;; size=10 bbWeight=1 PerfScore 3.00
G_M14385_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref, isz
; byrRegs +[r2-r3]
- uxth r0, lr
- cmp r0, 0
+ ldrh r5, [sp+0x18]
+ cmp r5, 0
bne SHORT G_M14385_IG05
;; size=8 bbWeight=1 PerfScore 3.00
G_M14385_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref
@@ -42,35 +42,32 @@ G_M14385_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}
; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 3.50
G_M14385_IG04: ; bbWeight=0.50, epilog, nogc, extend
- pop {r3,r4,r11,lr}
+ pop {r4,r5,r11,lr}
add sp, 8
bx lr
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M14385_IG05: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, gcvars, byref, isz
+G_M14385_IG05: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, gcvars, byref, isz
; byrRegs +[r2-r3]
- uxth r0, lr
- orr r0, r0, 32
+ orr r0, r5, 32
cmp r0, 103
bgt SHORT G_M14385_IG08
- ;; size=12 bbWeight=4 PerfScore 16.00
-G_M14385_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref, isz
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M14385_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref, isz
cmp r0, 100
beq SHORT G_M14385_IG03
cmp r0, 103
beq SHORT G_M14385_IG03
- ;; size=8 bbWeight=2 PerfScore 8.00
-G_M14385_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref, isz
- b SHORT G_M14385_IG13
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M14385_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref, isz
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M14385_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref, isz
+ b SHORT G_M14385_IG12
+ ;; size=2 bbWeight=0.12 PerfScore 0.12
+G_M14385_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref, isz
cmp r0, 110
- beq SHORT G_M14385_IG11
+ beq SHORT G_M14385_IG10
cmp r0, 114
beq SHORT G_M14385_IG03
- ;; size=8 bbWeight=2 PerfScore 8.00
-G_M14385_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref, isz
cmp r0, 120
- bne SHORT G_M14385_IG13
+ bne SHORT G_M14385_IG12
ldr r0, [sp+0x10]
; byrRegs +[r0]
ldr r1, [sp+0x14]
@@ -81,13 +78,13 @@ G_M14385_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}
blx lr // <unknown method>
; byrRegs -[r0 r2-r3]
; gcr arg pop 0
- ;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M14385_IG10: ; bbWeight=0.50, epilog, nogc, extend
- pop {r3,r4,r11,lr}
+ ;; size=32 bbWeight=0.50 PerfScore 6.50
+G_M14385_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r4,r5,r11,lr}
add sp, 8
bx lr
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M14385_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, gcvars, byref
+G_M14385_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, gcvars, byref
; byrRegs +[r2-r3]
ldr r0, [sp+0x10]
; byrRegs +[r0]
@@ -100,12 +97,12 @@ G_M14385_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
; byrRegs -[r0 r2-r3]
; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M14385_IG12: ; bbWeight=0.50, epilog, nogc, extend
- pop {r3,r4,r11,lr}
+G_M14385_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r4,r5,r11,lr}
add sp, 8
bx lr
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M14385_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, gcvars, byref
+G_M14385_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, gcvars, byref
; byrRegs +[r2-r3]
ldr r0, [sp+0x10]
; byrRegs +[r0]
@@ -118,13 +115,13 @@ G_M14385_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
; byrRegs -[r0 r2-r3]
; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M14385_IG14: ; bbWeight=0.50, epilog, nogc, extend
- pop {r3,r4,r11,lr}
+G_M14385_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r4,r5,r11,lr}
add sp, 8
bx lr
;; size=8 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 168, prolog size 14, PerfScore 60.50, instruction count 62, allocated bytes for code 168 (MethodHash=44f4c7ce) for method System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
+; Total bytes of code 160, prolog size 10, PerfScore 34.12, instruction count 60, allocated bytes for code 160 (MethodHash=44f4c7ce) for method System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -136,7 +133,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 84 (0x00054) Actual length = 168 (0x0000a8)
+ Function Length : 80 (0x00050) Actual length = 160 (0x0000a0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -155,11 +152,11 @@ Unwind Info:
Condition : 14 (0xe) (always)
Epilog Start Index : 5 (0x05)
---- Unwind codes ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 30 pop {r4,r5,r11,lr} ; opsize 32
EC 03 pop {r0,r1} ; opsize 16
FF end
---- Epilog start at index 5 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 30 pop {r4,r5,r11,lr} ; opsize 32
02 add sp, sp, #8 ; opsize 16
FD end + nop ; opsize 16
FF end
-8 (-4.76%) : 17513.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
@@ -8,25 +8,25 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 10, 6 ) struct ( 8) [sp+0x10] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 arg1 [V01,T03] ( 6, 4 ) byref -> r2 single-def
-; V02 arg2 [V02,T04] ( 6, 4 ) byref -> r3 single-def
-; V03 arg3 [V03,T01] ( 2, 5 ) ushort -> lr
-; V04 loc0 [V04,T00] ( 7, 16.50) int -> r0
+; V00 arg0 [V00,T00] ( 10, 6 ) struct ( 8) [sp+0x10] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
+; V01 arg1 [V01,T01] ( 6, 4 ) byref -> r2 single-def
+; V02 arg2 [V02,T02] ( 6, 4 ) byref -> r3 single-def
+; V03 arg3 [V03,T05] ( 1, 1 ) ushort -> [sp+0x18]
+; V04 loc0 [V04,T03] ( 7, 4.50) int -> r0
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V06 cse0 [V06,T04] ( 3, 3 ) int -> r5 "CSE - aggressive"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M14385_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push {r0,r1}
- push {r3,r4,r11,lr}
+ push {r4,r5,r11,lr}
add r11, sp, 8
- ldr lr, [sp+0x18]
- ;; size=14 bbWeight=1 PerfScore 4.00
+ ;; size=10 bbWeight=1 PerfScore 3.00
G_M14385_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref, isz
; byrRegs +[r2-r3]
- uxth r0, lr
- cmp r0, 0
+ ldrh r5, [sp+0x18]
+ cmp r5, 0
bne SHORT G_M14385_IG05
;; size=8 bbWeight=1 PerfScore 3.00
G_M14385_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref
@@ -42,35 +42,32 @@ G_M14385_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}
; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 3.50
G_M14385_IG04: ; bbWeight=0.50, epilog, nogc, extend
- pop {r3,r4,r11,lr}
+ pop {r4,r5,r11,lr}
add sp, 8
bx lr
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M14385_IG05: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, gcvars, byref, isz
+G_M14385_IG05: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, gcvars, byref, isz
; byrRegs +[r2-r3]
- uxth r0, lr
- orr r0, r0, 32
+ orr r0, r5, 32
cmp r0, 103
bgt SHORT G_M14385_IG08
- ;; size=12 bbWeight=4 PerfScore 16.00
-G_M14385_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref, isz
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M14385_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref, isz
cmp r0, 100
beq SHORT G_M14385_IG03
cmp r0, 103
beq SHORT G_M14385_IG03
- ;; size=8 bbWeight=2 PerfScore 8.00
-G_M14385_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref, isz
- b SHORT G_M14385_IG13
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M14385_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref, isz
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M14385_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref, isz
+ b SHORT G_M14385_IG12
+ ;; size=2 bbWeight=0.12 PerfScore 0.12
+G_M14385_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref, isz
cmp r0, 110
- beq SHORT G_M14385_IG11
+ beq SHORT G_M14385_IG10
cmp r0, 114
beq SHORT G_M14385_IG03
- ;; size=8 bbWeight=2 PerfScore 8.00
-G_M14385_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref, isz
cmp r0, 120
- bne SHORT G_M14385_IG13
+ bne SHORT G_M14385_IG12
ldr r0, [sp+0x10]
; byrRegs +[r0]
ldr r1, [sp+0x14]
@@ -81,13 +78,13 @@ G_M14385_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}
blx lr // <unknown method>
; byrRegs -[r0 r2-r3]
; gcr arg pop 0
- ;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M14385_IG10: ; bbWeight=0.50, epilog, nogc, extend
- pop {r3,r4,r11,lr}
+ ;; size=32 bbWeight=0.50 PerfScore 6.50
+G_M14385_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r4,r5,r11,lr}
add sp, 8
bx lr
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M14385_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, gcvars, byref
+G_M14385_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, gcvars, byref
; byrRegs +[r2-r3]
ldr r0, [sp+0x10]
; byrRegs +[r0]
@@ -100,12 +97,12 @@ G_M14385_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
; byrRegs -[r0 r2-r3]
; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M14385_IG12: ; bbWeight=0.50, epilog, nogc, extend
- pop {r3,r4,r11,lr}
+G_M14385_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r4,r5,r11,lr}
add sp, 8
bx lr
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M14385_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, gcvars, byref
+G_M14385_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, gcvars, byref
; byrRegs +[r2-r3]
ldr r0, [sp+0x10]
; byrRegs +[r0]
@@ -118,13 +115,13 @@ G_M14385_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
; byrRegs -[r0 r2-r3]
; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M14385_IG14: ; bbWeight=0.50, epilog, nogc, extend
- pop {r3,r4,r11,lr}
+G_M14385_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r4,r5,r11,lr}
add sp, 8
bx lr
;; size=8 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 168, prolog size 14, PerfScore 60.50, instruction count 62, allocated bytes for code 168 (MethodHash=44f4c7ce) for method System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
+; Total bytes of code 160, prolog size 10, PerfScore 34.12, instruction count 60, allocated bytes for code 160 (MethodHash=44f4c7ce) for method System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -136,7 +133,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 84 (0x00054) Actual length = 168 (0x0000a8)
+ Function Length : 80 (0x00050) Actual length = 160 (0x0000a0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -155,11 +152,11 @@ Unwind Info:
Condition : 14 (0xe) (always)
Epilog Start Index : 5 (0x05)
---- Unwind codes ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 30 pop {r4,r5,r11,lr} ; opsize 32
EC 03 pop {r0,r1} ; opsize 16
FF end
---- Epilog start at index 5 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 30 pop {r4,r5,r11,lr} ; opsize 32
02 add sp, sp, #8 ; opsize 16
FD end + nop ; opsize 16
FF end
-8 (-4.76%) : 17510.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
@@ -8,25 +8,25 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 10, 6 ) struct ( 8) [sp+0x10] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 arg1 [V01,T03] ( 6, 4 ) byref -> r2 single-def
-; V02 arg2 [V02,T04] ( 6, 4 ) byref -> r3 single-def
-; V03 arg3 [V03,T01] ( 2, 5 ) ushort -> lr
-; V04 loc0 [V04,T00] ( 7, 16.50) int -> r0
+; V00 arg0 [V00,T00] ( 10, 6 ) struct ( 8) [sp+0x10] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
+; V01 arg1 [V01,T01] ( 6, 4 ) byref -> r2 single-def
+; V02 arg2 [V02,T02] ( 6, 4 ) byref -> r3 single-def
+; V03 arg3 [V03,T05] ( 1, 1 ) ushort -> [sp+0x18]
+; V04 loc0 [V04,T03] ( 7, 4.50) int -> r0
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V06 cse0 [V06,T04] ( 3, 3 ) int -> r5 "CSE - aggressive"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M14385_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push {r0,r1}
- push {r3,r4,r11,lr}
+ push {r4,r5,r11,lr}
add r11, sp, 8
- ldr lr, [sp+0x18]
- ;; size=14 bbWeight=1 PerfScore 4.00
+ ;; size=10 bbWeight=1 PerfScore 3.00
G_M14385_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref, isz
; byrRegs +[r2-r3]
- uxth r0, lr
- cmp r0, 0
+ ldrh r5, [sp+0x18]
+ cmp r5, 0
bne SHORT G_M14385_IG05
;; size=8 bbWeight=1 PerfScore 3.00
G_M14385_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref
@@ -42,35 +42,32 @@ G_M14385_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}
; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 3.50
G_M14385_IG04: ; bbWeight=0.50, epilog, nogc, extend
- pop {r3,r4,r11,lr}
+ pop {r4,r5,r11,lr}
add sp, 8
bx lr
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M14385_IG05: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, gcvars, byref, isz
+G_M14385_IG05: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, gcvars, byref, isz
; byrRegs +[r2-r3]
- uxth r0, lr
- orr r0, r0, 32
+ orr r0, r5, 32
cmp r0, 103
bgt SHORT G_M14385_IG08
- ;; size=12 bbWeight=4 PerfScore 16.00
-G_M14385_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref, isz
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M14385_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref, isz
cmp r0, 100
beq SHORT G_M14385_IG03
cmp r0, 103
beq SHORT G_M14385_IG03
- ;; size=8 bbWeight=2 PerfScore 8.00
-G_M14385_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref, isz
- b SHORT G_M14385_IG13
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M14385_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref, isz
+ ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M14385_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref, isz
+ b SHORT G_M14385_IG12
+ ;; size=2 bbWeight=0.12 PerfScore 0.12
+G_M14385_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref, isz
cmp r0, 110
- beq SHORT G_M14385_IG11
+ beq SHORT G_M14385_IG10
cmp r0, 114
beq SHORT G_M14385_IG03
- ;; size=8 bbWeight=2 PerfScore 8.00
-G_M14385_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, byref, isz
cmp r0, 120
- bne SHORT G_M14385_IG13
+ bne SHORT G_M14385_IG12
ldr r0, [sp+0x10]
; byrRegs +[r0]
ldr r1, [sp+0x14]
@@ -81,13 +78,13 @@ G_M14385_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}
blx lr // <unknown method>
; byrRegs -[r0 r2-r3]
; gcr arg pop 0
- ;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M14385_IG10: ; bbWeight=0.50, epilog, nogc, extend
- pop {r3,r4,r11,lr}
+ ;; size=32 bbWeight=0.50 PerfScore 6.50
+G_M14385_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r4,r5,r11,lr}
add sp, 8
bx lr
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M14385_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, gcvars, byref
+G_M14385_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, gcvars, byref
; byrRegs +[r2-r3]
ldr r0, [sp+0x10]
; byrRegs +[r0]
@@ -100,12 +97,12 @@ G_M14385_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
; byrRegs -[r0 r2-r3]
; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M14385_IG12: ; bbWeight=0.50, epilog, nogc, extend
- pop {r3,r4,r11,lr}
+G_M14385_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r4,r5,r11,lr}
add sp, 8
bx lr
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M14385_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, gcvars, byref
+G_M14385_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=000C {r2 r3}, gcvars, byref
; byrRegs +[r2-r3]
ldr r0, [sp+0x10]
; byrRegs +[r0]
@@ -118,13 +115,13 @@ G_M14385_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
; byrRegs -[r0 r2-r3]
; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M14385_IG14: ; bbWeight=0.50, epilog, nogc, extend
- pop {r3,r4,r11,lr}
+G_M14385_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r4,r5,r11,lr}
add sp, 8
bx lr
;; size=8 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 168, prolog size 14, PerfScore 60.50, instruction count 62, allocated bytes for code 168 (MethodHash=44f4c7ce) for method System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
+; Total bytes of code 160, prolog size 10, PerfScore 34.12, instruction count 60, allocated bytes for code 160 (MethodHash=44f4c7ce) for method System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -136,7 +133,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 84 (0x00054) Actual length = 168 (0x0000a8)
+ Function Length : 80 (0x00050) Actual length = 160 (0x0000a0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -155,11 +152,11 @@ Unwind Info:
Condition : 14 (0xe) (always)
Epilog Start Index : 5 (0x05)
---- Unwind codes ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 30 pop {r4,r5,r11,lr} ; opsize 32
EC 03 pop {r0,r1} ; opsize 16
FF end
---- Epilog start at index 5 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 30 pop {r4,r5,r11,lr} ; opsize 32
02 add sp, sp, #8 ; opsize 16
FD end + nop ; opsize 16
FF end
+46 (+76.67%) : 96900.dasm - System.Xml.DocumentXPathNavigator:ParentNodeTail(System.Xml.XmlNode):System.Xml.XmlNode (FullOpts)
@@ -8,7 +8,7 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 7, 19 ) ref -> r5 class-hnd <System.Xml.XmlNode>
+; V00 arg0 [V00,T00] ( 11, 21 ) ref -> r5 class-hnd <System.Xml.XmlNode>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
@@ -22,7 +22,40 @@ G_M6958_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M6958_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
b SHORT G_M6958_IG04
;; size=2 bbWeight=1 PerfScore 1.00
-G_M6958_IG03: ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M6958_IG03: ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ mov r0, r5
+ ; gcrRegs +[r0]
+ movw r4, LOW RELOC 0xD1FFAB1E
+ movt r4, HIGH RELOC 0xD1FFAB1E
+ add r4, pc
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r5]
+ mov r5, r0
+ ; gcrRegs +[r5]
+ b SHORT G_M6958_IG08
+ ;; size=20 bbWeight=0.25 PerfScore 2.00
+G_M6958_IG04: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0]
+ cmp r5, 0
+ beq SHORT G_M6958_IG10
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M6958_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ mov r0, r5
+ ; gcrRegs +[r0]
+ movw r4, LOW RELOC 0xD1FFAB1E
+ movt r4, HIGH RELOC 0xD1FFAB1E
+ add r4, pc
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ cmp r0, 5
+ beq SHORT G_M6958_IG03
+ ;; size=20 bbWeight=0.50 PerfScore 4.00
+G_M6958_IG06: ; bbWeight=0.12, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M6958_IG10
+ ;; size=2 bbWeight=0.12 PerfScore 0.12
+G_M6958_IG07: ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
mov r0, r5
; gcrRegs +[r0]
movw r4, LOW RELOC 0xD1FFAB1E
@@ -34,12 +67,12 @@ G_M6958_IG03: ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
mov r5, r0
; gcrRegs +[r5]
;; size=18 bbWeight=2 PerfScore 14.00
-G_M6958_IG04: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M6958_IG08: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
cmp r5, 0
- beq SHORT G_M6958_IG06
+ beq SHORT G_M6958_IG10
;; size=4 bbWeight=8 PerfScore 16.00
-G_M6958_IG05: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M6958_IG09: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
mov r0, r5
; gcrRegs +[r0]
movw r4, LOW RELOC 0xD1FFAB1E
@@ -49,17 +82,17 @@ G_M6958_IG05: ; bbWeight=4, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
blx r3 // <unknown method>
; gcrRegs -[r0]
cmp r0, 5
- beq SHORT G_M6958_IG03
+ beq SHORT G_M6958_IG07
;; size=20 bbWeight=4 PerfScore 32.00
-G_M6958_IG06: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M6958_IG10: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
mov r0, r5
; gcrRegs +[r0]
;; size=2 bbWeight=1 PerfScore 1.00
-G_M6958_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M6958_IG11: ; bbWeight=1, epilog, nogc, extend
pop {r4,r5,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 60, prolog size 8, PerfScore 68.00, instruction count 23, allocated bytes for code 60 (MethodHash=0943e4d1) for method System.Xml.DocumentXPathNavigator:ParentNodeTail(System.Xml.XmlNode):System.Xml.XmlNode (FullOpts)
+; Total bytes of code 106, prolog size 8, PerfScore 76.12, instruction count 42, allocated bytes for code 106 (MethodHash=0943e4d1) for method System.Xml.DocumentXPathNavigator:ParentNodeTail(System.Xml.XmlNode):System.Xml.XmlNode (FullOpts)
; ============================================================
Unwind Info:
@@ -71,7 +104,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 30 (0x0001e) Actual length = 60 (0x00003c)
+ Function Length : 53 (0x00035) Actual length = 106 (0x00006a)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+42 (+80.77%) : 15107.dasm - System.Random+Net5CompatSeedImpl:NextInt64():long:this (FullOpts)
@@ -8,24 +8,28 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 3, 10 ) ref -> r5 this class-hnd single-def <System.Random+Net5CompatSeedImpl>
+; V00 this [V00,T04] ( 4, 11 ) ref -> r5 this class-hnd single-def <System.Random+Net5CompatSeedImpl>
;* V01 loc0 [V01 ] ( 0, 0 ) long -> zero-ref
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 rat0 [V03,T02] ( 3, 17 ) int -> r0 "field V01.lo (fldOffset=0x0)" P-INDEP
-; V04 rat1 [V04,T03] ( 3, 17 ) int -> r1 "field V01.hi (fldOffset=0x4)" P-INDEP
-; V05 rat2 [V05 ] ( 1, 16 ) long -> [sp+0x00] multireg-ret "ReplaceWithLclVar is creating a new local variable"
-; V06 rat3 [V06,T01] ( 2, 24 ) int -> r0 "field V05.lo (fldOffset=0x0)" P-INDEP
-; V07 rat4 [V07,T00] ( 3, 32 ) int -> r1 "field V05.hi (fldOffset=0x4)" P-INDEP
+; V03 rat0 [V03,T02] ( 5, 19 ) int -> r0 "field V01.lo (fldOffset=0x0)" P-INDEP
+; V04 rat1 [V04,T03] ( 5, 19 ) int -> r1 "field V01.hi (fldOffset=0x4)" P-INDEP
+; V05 rat2 [V05 ] ( 1, 2 ) long -> [sp+0x08] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V06 rat3 [V06,T06] ( 2, 3 ) int -> r0 "field V05.lo (fldOffset=0x0)" P-INDEP
+; V07 rat4 [V07,T05] ( 3, 4 ) int -> r1 "field V05.hi (fldOffset=0x4)" P-INDEP
+; V08 rat5 [V08 ] ( 1, 16 ) long -> [sp+0x00] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V09 rat6 [V09,T01] ( 2, 24 ) int -> r0 "field V08.lo (fldOffset=0x0)" P-INDEP
+; V10 rat7 [V10,T00] ( 3, 32 ) int -> r1 "field V08.hi (fldOffset=0x4)" P-INDEP
;
-; Lcl frame size = 8
+; Lcl frame size = 16
-G_M23617_IG01: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r11,lr}
- add r11, sp, 16
+G_M23617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push {r4,r5,r11,lr}
+ sub sp, 16
+ add r11, sp, 24
mov r5, r0
; gcrRegs +[r5]
- ;; size=10 bbWeight=8 PerfScore 24.00
-G_M23617_IG02: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ;; size=12 bbWeight=1 PerfScore 4.00
+G_M23617_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
mov r0, r5
; gcrRegs +[r0]
movw r4, LOW RELOC 0xD1FFAB1E
@@ -41,14 +45,33 @@ G_M23617_IG02: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
eor r2, r0, -1
eors r3, r1
orrs r3, r2
- beq SHORT G_M23617_IG02
+ bne SHORT G_M23617_IG04
+ ;; size=38 bbWeight=1 PerfScore 14.00
+G_M23617_IG03: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ mov r0, r5
+ ; gcrRegs +[r0]
+ movw r4, LOW RELOC 0xD1FFAB1E
+ movt r4, HIGH RELOC 0xD1FFAB1E
+ add r4, pc
+ ldr r3, [r4]
+ blx r3 // System.Random+Net5CompatSeedImpl:NextUInt64():ulong:this
+ ; gcrRegs -[r0]
+ lsrs r0, r0, 1
+ orr r0, r0, r1 LSL 31
+ lsrs r1, r1, 1
+ mvn r3, 0x80000000
+ eor r2, r0, -1
+ eors r3, r1
+ orrs r3, r2
+ beq SHORT G_M23617_IG03
;; size=38 bbWeight=8 PerfScore 112.00
-G_M23617_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M23617_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r5]
- pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
+ add sp, 16
+ pop {r4,r5,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 137.00, instruction count 18, allocated bytes for code 52 (MethodHash=0b12a3be) for method System.Random+Net5CompatSeedImpl:NextInt64():long:this (FullOpts)
+; Total bytes of code 94, prolog size 10, PerfScore 132.00, instruction count 34, allocated bytes for code 94 (MethodHash=0b12a3be) for method System.Random+Net5CompatSeedImpl:NextInt64():long:this (FullOpts)
; ============================================================
Unwind Info:
@@ -60,11 +83,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 52 (0x000034)
+ Function Length : 47 (0x0002f) Actual length = 94 (0x00005e)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32
- FF end
+ 04 add sp, sp, #16 ; opsize 16
+ A8 30 pop {r4,r5,r11,lr} ; opsize 32
FF end
+40 (+83.33%) : 189977.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.CType:GetNakedType(ubyte):Microsoft.CSharp.RuntimeBinder.Semantics.CType:this (FullOpts)
@@ -9,48 +9,85 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 3, 3 ) ref -> r0 this class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.CType>
-; V01 arg1 [V01,T02] ( 3, 4 ) ubyte -> r5 single-def
-; V02 loc0 [V02,T01] ( 5, 18 ) ref -> r0 class-hnd <Microsoft.CSharp.RuntimeBinder.Semantics.CType>
-; V03 loc1 [V03,T00] ( 3, 20 ) int -> r3
+; V00 this [V00,T02] ( 5, 5 ) ref -> r0 this class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.CType>
+; V01 arg1 [V01,T03] ( 4, 4.25) ubyte -> r5 single-def
+; V02 loc0 [V02,T01] ( 6, 19 ) ref -> registers class-hnd <Microsoft.CSharp.RuntimeBinder.Semantics.CType>
+; V03 loc1 [V03,T00] ( 6, 22.50) int -> r6
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M38771_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- add r11, sp, 8
+ push {r3,r4,r5,r6,r11,lr}
+ add r11, sp, 16
mov r5, r1
;; size=10 bbWeight=1 PerfScore 3.00
-G_M38771_IG02: ; bbWeight=8, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M38771_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
- ldr r3, [r0+0x04]
- subs r2, r3, 5
+ mov r3, r0
+ ; gcrRegs +[r3]
+ ldr r6, [r0+0x04]
+ subs r2, r6, 5
cmp r2, 2
bls SHORT G_M38771_IG05
- ;; size=8 bbWeight=8 PerfScore 32.00
-G_M38771_IG03: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- cmp r3, 8
- bne SHORT G_M38771_IG06
- ;; size=4 bbWeight=4 PerfScore 8.00
-G_M38771_IG04: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- uxtb r3, r5
- cmp r3, 0
- beq SHORT G_M38771_IG06
- ;; size=6 bbWeight=2 PerfScore 6.00
-G_M38771_IG05: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ;; size=10 bbWeight=1 PerfScore 5.00
+G_M38771_IG03: ; bbWeight=0.50, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz
+ cmp r6, 8
+ bne SHORT G_M38771_IG11
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M38771_IG04: ; bbWeight=0.25, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz
+ uxtb r2, r5
+ cmp r2, 0
+ beq SHORT G_M38771_IG10
+ ;; size=6 bbWeight=0.25 PerfScore 0.75
+G_M38771_IG05: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r3]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr r3, [r4]
blx r3 // <unknown method>
- b SHORT G_M38771_IG02
+ ;; size=14 bbWeight=1 PerfScore 5.00
+G_M38771_IG06: ; bbWeight=8, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ldr r6, [r0+0x04]
+ subs r3, r6, 5
+ cmp r3, 2
+ bls SHORT G_M38771_IG09
+ ;; size=8 bbWeight=8 PerfScore 32.00
+G_M38771_IG07: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ cmp r6, 8
+ bne SHORT G_M38771_IG12
+ ;; size=4 bbWeight=4 PerfScore 8.00
+G_M38771_IG08: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ uxtb r3, r5
+ cmp r3, 0
+ beq SHORT G_M38771_IG12
+ ;; size=6 bbWeight=2 PerfScore 6.00
+G_M38771_IG09: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ movw r4, LOW RELOC 0xD1FFAB1E
+ movt r4, HIGH RELOC 0xD1FFAB1E
+ add r4, pc
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ b SHORT G_M38771_IG06
;; size=16 bbWeight=4 PerfScore 24.00
-G_M38771_IG06: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r11,pc}
+G_M38771_IG10: ; bbWeight=0.12, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0] +[r3]
+ mov r0, r3
+ ; gcrRegs +[r0]
+ b SHORT G_M38771_IG12
+ ;; size=4 bbWeight=0.12 PerfScore 0.25
+G_M38771_IG11: ; bbWeight=0.25, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0]
+ mov r0, r3
+ ; gcrRegs +[r0]
+ ;; size=2 bbWeight=0.25 PerfScore 0.25
+G_M38771_IG12: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r3]
+ pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 48, prolog size 8, PerfScore 74.00, instruction count 19, allocated bytes for code 48 (MethodHash=85d6688c) for method Microsoft.CSharp.RuntimeBinder.Semantics.CType:GetNakedType(ubyte):Microsoft.CSharp.RuntimeBinder.Semantics.CType:this (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 86.25, instruction count 37, allocated bytes for code 88 (MethodHash=85d6688c) for method Microsoft.CSharp.RuntimeBinder.Semantics.CType:GetNakedType(ubyte):Microsoft.CSharp.RuntimeBinder.Semantics.CType:this (FullOpts)
; ============================================================
Unwind Info:
@@ -62,11 +99,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 24 (0x00018) Actual length = 48 (0x000030)
+ Function Length : 44 (0x0002c) Actual length = 88 (0x000058)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
FF end
FF end
libraries.pmi.linux.arm.checked.mch
-24 (-14.12%) : 272874.dasm - Microsoft.Build.Execution.TaskRegistry:GetMatchingRegistration(System.String,System.Collections.Generic.List1[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskRecord],System.String,System.Collections.Generic.IDictionary2[System.String,System.String],Microsoft.Build.BackEnd.Logging.TargetLoggingContext,Microsoft.Build.Construction.ElementLocation):Microsoft.Build.Execution.TaskRegistry+RegisteredTaskRecord:this (FullOpts)
@@ -9,137 +9,121 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.Build.Execution.TaskRegistry>
-; V01 arg1 [V01,T07] ( 3, 4 ) ref -> r4 class-hnd single-def <System.String>
-; V02 arg2 [V02,T09] ( 3, 3 ) ref -> r2 class-hnd single-def <System.Collections.Generic.List`1[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskRecord]>
-; V03 arg3 [V03,T08] ( 3, 4 ) ref -> r5 class-hnd single-def <System.String>
-; V04 arg4 [V04,T12] ( 1, 2 ) ref -> [sp+0x38] class-hnd single-def <System.Collections.Generic.IDictionary`2[System.String,System.String]>
-; V05 arg5 [V05,T13] ( 1, 2 ) ref -> [sp+0x3C] class-hnd single-def <Microsoft.Build.BackEnd.Logging.TargetLoggingContext>
-; V06 arg6 [V06,T14] ( 1, 2 ) ref -> r8 class-hnd single-def <Microsoft.Build.Construction.ElementLocation>
+; V01 arg1 [V01,T06] ( 3, 2.25) ref -> r4 class-hnd single-def <System.String>
+; V02 arg2 [V02,T08] ( 3, 3 ) ref -> r2 class-hnd single-def <System.Collections.Generic.List`1[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskRecord]>
+; V03 arg3 [V03,T07] ( 3, 2.25) ref -> r5 class-hnd single-def <System.String>
+; V04 arg4 [V04,T10] ( 1, 0.25) ref -> [sp+0x30] class-hnd single-def <System.Collections.Generic.IDictionary`2[System.String,System.String]>
+; V05 arg5 [V05,T11] ( 1, 0.25) ref -> [sp+0x34] class-hnd single-def <Microsoft.Build.BackEnd.Logging.TargetLoggingContext>
+; V06 arg6 [V06,T12] ( 1, 0.25) ref -> [sp+0x38] class-hnd single-def <Microsoft.Build.Construction.ElementLocation>
;* V07 loc0 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskRecord]>
;* V08 loc1 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.Build.Execution.TaskRegistry+RegisteredTaskRecord>
;* V09 loc2 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.Build.Execution.TaskRegistry+RegisteredTaskRecord>
; V10 OutArgs [V10 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskRecord]>
-;* V12 tmp2 [V12,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V12 tmp2 [V12,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V13 tmp3 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskRecord]>
-; V14 tmp4 [V14,T02] ( 4, 16.34) ref -> r9 single-def "field V07._list (fldOffset=0x0)" P-INDEP
-; V15 tmp5 [V15,T04] ( 3, 5.85) ref -> [sp+0x08] "field V07._current (fldOffset=0x4)" P-INDEP
-; V16 tmp6 [V16,T00] ( 6, 18.39) int -> [sp+0x0C] "field V07._index (fldOffset=0x8)" P-INDEP
-; V17 tmp7 [V17,T05] ( 2, 9 ) int -> r10 single-def "field V07._version (fldOffset=0xc)" P-INDEP
-; V18 tmp8 [V18,T10] ( 3, 3 ) ref -> r9 single-def "field V11._list (fldOffset=0x0)" P-INDEP
+; V14 tmp4 [V14,T00] ( 4, 2.92) ref -> r6 single-def "field V07._list (fldOffset=0x0)" P-INDEP
+; V15 tmp5 [V15,T04] ( 3, 1.17) ref -> r9 "field V07._current (fldOffset=0x4)" P-INDEP
+; V16 tmp6 [V16,T01] ( 6, 3.17) int -> r8 "field V07._index (fldOffset=0x8)" P-INDEP
+; V17 tmp7 [V17,T05] ( 2, 2 ) int -> r7 single-def "field V07._version (fldOffset=0xc)" P-INDEP
+; V18 tmp8 [V18,T09] ( 3, 3 ) ref -> r6 single-def "field V11._list (fldOffset=0x0)" P-INDEP
;* V19 tmp9 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._current (fldOffset=0x4)" P-INDEP
;* V20 tmp10 [V20,T15] ( 0, 0 ) int -> zero-ref single-def "field V11._index (fldOffset=0x8)" P-INDEP
-; V21 tmp11 [V21,T11] ( 2, 2 ) int -> r10 single-def "field V11._version (fldOffset=0xc)" P-INDEP
-; V22 tmp12 [V22,T01] ( 3, 20.09) ref -> r0 "arr expr"
-; V23 cse0 [V23,T03] ( 2, 7.99) int -> r0 "CSE - aggressive"
+; V21 tmp11 [V21,T13] ( 2, 2 ) int -> r7 single-def "field V11._version (fldOffset=0xc)" P-INDEP
+; V22 tmp12 [V22,T02] ( 3, 2.51) ref -> r0 "arr expr"
+; V23 cse0 [V23,T14] ( 2, 1.00) int -> r0 "CSE - moderate"
;
-; Lcl frame size = 20
+; Lcl frame size = 12
G_M927_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 20
- add r11, sp, 48
+ sub sp, 12
+ add r11, sp, 40
mov r4, r1
; gcrRegs +[r4]
mov r5, r3
; gcrRegs +[r5]
- ldr r6, [sp+0x38] // [V04 arg4]
- ; gcrRegs +[r6]
- ldr r7, [sp+0x3C] // [V05 arg5]
- ; gcrRegs +[r7]
- ldr r8, [sp+0x40] // [V06 arg6]
- ; gcrRegs +[r8]
- ;; size=22 bbWeight=1 PerfScore 8.00
-G_M927_IG02: ; bbWeight=1, gcrefRegs=01F4 {r2 r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
+ ;; size=14 bbWeight=1 PerfScore 5.00
+G_M927_IG02: ; bbWeight=1, gcrefRegs=0034 {r2 r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r2]
- mov r9, r2
- ; gcrRegs +[r9]
- ldr r10, [r9+0x0C]
- mov lr, 0
+ mov r6, r2
+ ; gcrRegs +[r6]
+ ldr r7, [r6+0x0C]
+ mov r8, 0
b SHORT G_M927_IG04
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M927_IG03: ; bbWeight=2, gcrefRegs=13F0 {r4 r5 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r2] +[r12]
- str r7, [sp+0x3C]
- str r7, [sp]
- str r8, [sp+0x04]
- str r12, [sp+0x08]
- ; GC ptr vars +{V15}
- mov r0, r12
+ ;; size=10 bbWeight=1 PerfScore 4.00
+G_M927_IG03: ; bbWeight=0.25, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r2] +[r9]
+ ldr r10, [sp+0x34] // [V05 arg5]
+ ; gcrRegs +[r10]
+ str r10, [sp] // [V10 OutArgs]
+ ldr lr, [sp+0x38] // [V06 arg6]
+ ; gcrRegs +[lr]
+ str lr, [sp+0x04] // [V10 OutArgs+0x04]
+ mov r0, r9
; gcrRegs +[r0]
mov r1, r4
; gcrRegs +[r1]
mov r2, r5
; gcrRegs +[r2]
- str r6, [sp+0x38]
- mov r3, r6
+ ldr r3, [sp+0x30] // [V04 arg4]
; gcrRegs +[r3]
- movw r6, 0xd1ff
- ; gcrRegs -[r6]
- movt r6, 0xd1ff
- ldr r6, [r6]
- ldr r7, [r0]
- ; gcrRegs -[r7]
- blx r6 // <unknown method>
- ; gcrRegs -[r0-r3 r12]
+ movw r12, 0xd1ff
+ movt r12, 0xd1ff
+ ldr r12, [r12]
+ ldr r10, [r0]
+ ; gcrRegs -[r10]
+ blx r12 // <unknown method>
+ ; gcrRegs -[r0-r3 lr]
cmp r0, 0
- ldr r6, [sp+0x38] // [V04 arg4]
- ; gcrRegs +[r6]
- ldr r7, [sp+0x3C] // [V05 arg5]
- ; gcrRegs +[r7]
- ldr lr, [sp+0x0C] // [V16 tmp6]
bne SHORT G_M927_IG09
- ;; size=48 bbWeight=2 PerfScore 38.00
-G_M927_IG04: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars -{V15}
- ldr r0, [r9+0x0C]
- cmp r10, r0
+ ;; size=46 bbWeight=0.25 PerfScore 3.75
+G_M927_IG04: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r9]
+ ldr r0, [r6+0x0C]
+ cmp r7, r0
bne SHORT G_M927_IG12
- ;; size=8 bbWeight=8 PerfScore 24.00
-G_M927_IG05: ; bbWeight=4.00, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r9+0x08]
- cmp lr, r0
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M927_IG05: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r6+0x08]
+ cmp r8, r0
bhs SHORT G_M927_IG07
- ;; size=8 bbWeight=4.00 PerfScore 11.99
-G_M927_IG06: ; bbWeight=3.35, gcrefRegs=03F0 {r4 r5 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r9+0x04]
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M927_IG06: ; bbWeight=0.42, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r6+0x04]
; gcrRegs +[r0]
ldr r1, [r0+0x04]
- cmp lr, r1
+ cmp r8, r1
bhs SHORT G_M927_IG11
adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
- lsl r1, lr, 2
- ldr r12, [r0+r1]
- ; gcrRegs +[r12]
- add lr, lr, 1
- str lr, [sp+0x0C] // [V16 tmp6]
+ lsl r1, r8, 2
+ ldr r9, [r0+r1]
+ ; gcrRegs +[r9]
+ add r8, r8, 1
b SHORT G_M927_IG03
- ;; size=30 bbWeight=3.35 PerfScore 33.48
-G_M927_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4-r9 r12]
+ ;; size=24 bbWeight=0.42 PerfScore 3.77
+G_M927_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r4-r6 r9]
; byrRegs -[r0]
movs r0, 0
- ;; size=2 bbWeight=4 PerfScore 4.00
-G_M927_IG08: ; bbWeight=4, epilog, nogc, extend
- add sp, 20
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M927_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ add sp, 12
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
- ;; size=6 bbWeight=4 PerfScore 8.00
-G_M927_IG09: ; bbWeight=0.50, gcVars=00000010 {V15}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars +{V04 V15}
- ldr r4, [sp+0x08] // [V15 tmp5]
- ; gcrRegs +[r4]
- mov r0, r4
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M927_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[r9]
+ mov r0, r9
; gcrRegs +[r0]
- ;; size=4 bbWeight=0.50 PerfScore 1.00
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
G_M927_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add sp, 20
+ add sp, 12
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00
G_M927_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0 r4]
- ; GC ptr vars -{V04 V15}
+ ; gcrRegs -[r0 r9]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RNGCHKFAIL
@@ -152,7 +136,7 @@ G_M927_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 170, prolog size 10, PerfScore 133.47, instruction count 62, allocated bytes for code 170 (MethodHash=3ce6fc60) for method Microsoft.Build.Execution.TaskRegistry:GetMatchingRegistration(System.String,System.Collections.Generic.List`1[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskRecord],System.String,System.Collections.Generic.IDictionary`2[System.String,System.String],Microsoft.Build.BackEnd.Logging.TargetLoggingContext,Microsoft.Build.Construction.ElementLocation):Microsoft.Build.Execution.TaskRegistry+RegisteredTaskRecord:this (FullOpts)
+; Total bytes of code 146, prolog size 10, PerfScore 24.02, instruction count 53, allocated bytes for code 146 (MethodHash=3ce6fc60) for method Microsoft.Build.Execution.TaskRegistry:GetMatchingRegistration(System.String,System.Collections.Generic.List`1[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskRecord],System.String,System.Collections.Generic.IDictionary`2[System.String,System.String],Microsoft.Build.BackEnd.Logging.TargetLoggingContext,Microsoft.Build.Construction.ElementLocation):Microsoft.Build.Execution.TaskRegistry+RegisteredTaskRecord:this (FullOpts)
; ============================================================
Unwind Info:
@@ -164,7 +148,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 85 (0x00055) Actual length = 170 (0x0000aa)
+ Function Length : 73 (0x00049) Actual length = 146 (0x000092)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -176,7 +160,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- 05 add sp, sp, #20 ; opsize 16
+ 03 add sp, sp, #12 ; opsize 16
DF pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32
FF end
FF end
-10 (-4.17%) : 199773.dasm - Internal.TypeSystem.TypeDesc+d__80:MoveNext():ubyte:this (FullOpts)
@@ -8,14 +8,15 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 16, 14.50) ref -> [sp+0x04] this class-hnd EH-live single-def <Internal.TypeSystem.TypeDesc+<GetVirtualMethods>d__80>
+; V00 this [V00,T00] ( 15, 8.75) ref -> [sp+0x04] this class-hnd EH-live single-def <Internal.TypeSystem.TypeDesc+<GetVirtualMethods>d__80>
; V01 loc0 [V01,T02] ( 4, 2.50) ubyte -> r0
; V02 loc1 [V02,T03] ( 3, 2.50) int -> r0 single-def
-; V03 loc2 [V03,T04] ( 3, 2 ) ref -> r3 class-hnd single-def <<unknown class>>
-; V04 loc3 [V04,T01] ( 4, 6.50) ref -> r5 class-hnd <<unknown class>>
+; V03 loc2 [V03,T05] ( 3, 2 ) ref -> r3 class-hnd single-def <<unknown class>>
+; V04 loc3 [V04,T01] ( 4, 1.25) ref -> r4 class-hnd <<unknown class>>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T05] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V07 PSPSym [V07,T06] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym"
+; V06 tmp1 [V06,T06] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V07 PSPSym [V07,T07] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym"
+; V08 cse0 [V08,T04] ( 5, 2 ) ref -> r0 multi-def "CSE - aggressive"
; TEMP_01 ref -> [r11-0x18]
;
; Lcl frame size = 16
@@ -30,27 +31,27 @@ G_M14755_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
str r1, [sp+0x0C] // [V07 PSPSym]
str r0, [sp+0x04] // [V00 this]
; GC ptr vars +{V00}
- mov r4, r0
- ; gcrRegs +[r4]
+ mov r5, r0
+ ; gcrRegs +[r5]
;; size=22 bbWeight=1 PerfScore 9.00
-G_M14755_IG02: ; bbWeight=1, gcVars=00000001 {V00}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr r0, [r4+0x10]
- ldr r3, [r4+0x08]
+G_M14755_IG02: ; bbWeight=1, gcVars=00000001 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr r0, [r5+0x10]
+ ldr r3, [r5+0x08]
; gcrRegs +[r3]
cmp r0, 0
beq SHORT G_M14755_IG04
;; size=8 bbWeight=1 PerfScore 4.00
-G_M14755_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M14755_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r3]
cmp r0, 1
- beq SHORT G_M14755_IG09
+ beq SHORT G_M14755_IG07
movs r0, 0
- b SHORT G_M14755_IG11
+ b SHORT G_M14755_IG12
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M14755_IG04: ; bbWeight=0.50, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref, isz
+G_M14755_IG04: ; bbWeight=0.50, gcrefRegs=0028 {r3 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r3]
mov r0, -1
- str r0, [r4+0x10]
+ str r0, [r5+0x10]
mov r0, r3
; gcrRegs +[r0]
ldr r3, [r3]
@@ -58,7 +59,6 @@ G_M14755_IG04: ; bbWeight=0.50, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}
ldr r3, [r3+0x30]
ldr r3, [r3+0x0C]
blx r3 // <unknown method>
- ; gcrRegs -[r4]
; gcr arg pop 0
movw r4, 0xd1ff
movt r4, 0xd1ff
@@ -66,117 +66,105 @@ G_M14755_IG04: ; bbWeight=0.50, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}
blx r3 // <unknown method>
; gcr arg pop 0
str r0, [sp]
- ldr r4, [sp+0x04] // [V00 this]
- ; gcrRegs +[r4]
- add r0, r4, 12
+ add r0, r5, 12
; gcrRegs -[r0]
; byrRegs +[r0]
- ldr r1, [sp] // [TEMP_01]
+ ldr r1, [sp]
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
- b SHORT G_M14755_IG09
- ;; size=50 bbWeight=0.50 PerfScore 9.50
-G_M14755_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4]
- ldr r4, [sp+0x04] // [V00 this]
+ b SHORT G_M14755_IG07
+ ;; size=48 bbWeight=0.50 PerfScore 9.00
+G_M14755_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ mov r0, -1
+ str r0, [r5+0x10]
+ ldr r0, [r5+0x0C]
+ ; gcrRegs +[r0]
+ cmp r0, 0
+ beq SHORT G_M14755_IG11
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ ; gcr arg pop 0
+ b SHORT G_M14755_IG11
+ ;; size=26 bbWeight=0.50 PerfScore 5.00
+G_M14755_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r4]
- ldr r0, [r4+0x0C]
+ adds r0, r5, 4
+ ; byrRegs +[r0]
+ mov r1, r4
+ ; gcrRegs +[r1]
+ movw r12, 0xd1ff
+ movt r12, 0xd1ff
+ blx r12 // CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[r1 r4]
+ ; byrRegs -[r0]
+ movs r0, 1
+ str r0, [r5+0x10]
+ b SHORT G_M14755_IG12
+ ;; size=20 bbWeight=0.50 PerfScore 4.00
+G_M14755_IG07: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ mvn r0, 2
+ str r0, [r5+0x10]
+ b SHORT G_M14755_IG09
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M14755_IG08: ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r5+0x0C]
; gcrRegs +[r0]
movw r4, 0xd1ff
- ; gcrRegs -[r4]
movt r4, 0xd1ff
ldr r3, [r4]
blx r3 // <unknown method>
; gcr arg pop 0
- mov r5, r0
- ; gcrRegs +[r5]
- mov r0, r5
- ldr r3, [r5]
+ mov r4, r0
+ ; gcrRegs +[r4]
+ mov r0, r4
+ ldr r3, [r4]
ldr r3, [r3+0x38]
ldr r3, [r3+0x04]
blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
cmp r0, 0
- ldr r4, [sp+0x04] // [V00 this]
- ; gcrRegs +[r4]
+ bne SHORT G_M14755_IG06
+ ;; size=30 bbWeight=0.25 PerfScore 3.25
+G_M14755_IG09: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r4]
+ ldr r0, [r5+0x0C]
+ ; gcrRegs +[r0]
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ ; gcr arg pop 0
+ cmp r0, 0
bne SHORT G_M14755_IG08
- ;; size=34 bbWeight=2 PerfScore 30.00
-G_M14755_IG06: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r5]
- ldr r0, [r4+0x0C]
- ; gcrRegs +[r0]
- movw r4, 0xd1ff
- ; gcrRegs -[r4]
- movt r4, 0xd1ff
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; gcrRegs -[r0]
- ; gcr arg pop 0
- cmp r0, 0
- bne SHORT G_M14755_IG05
- ;; size=18 bbWeight=4 PerfScore 28.00
-G_M14755_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov r0, -1
- ldr r4, [sp+0x04]
- ; gcrRegs +[r4]
- str r0, [r4+0x10]
- ldr r0, [r4+0x0C]
- ; gcrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M14755_IG10
- ldr r0, [r4+0x0C]
- movw r4, 0xd1ff
- ; gcrRegs -[r4]
- movt r4, 0xd1ff
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; gcrRegs -[r0]
- ; gcr arg pop 0
- ldr r4, [sp+0x04] // [V00 this]
- ; gcrRegs +[r4]
- b SHORT G_M14755_IG10
- ;; size=32 bbWeight=0.50 PerfScore 6.50
-G_M14755_IG08: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r5]
- adds r0, r4, 4
- ; byrRegs +[r0]
- mov r1, r5
- ; gcrRegs +[r1]
- movw r12, 0xd1ff
- movt r12, 0xd1ff
- blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 r5]
- ; byrRegs -[r0]
- movs r0, 1
- str r0, [r4+0x10]
- b SHORT G_M14755_IG11
- ;; size=20 bbWeight=0.50 PerfScore 4.00
-G_M14755_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- mvn r0, 2
- str r0, [r4+0x10]
- b SHORT G_M14755_IG06
- ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M14755_IG10: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ;; size=18 bbWeight=0.50 PerfScore 3.50
+G_M14755_IG10: ; bbWeight=0.06, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M14755_IG05
+ ;; size=2 bbWeight=0.06 PerfScore 0.06
+G_M14755_IG11: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
movs r0, 0
- str r0, [r4+0x0C]
+ str r0, [r5+0x0C]
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M14755_IG11: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
- ; gcrRegs -[r4]
+G_M14755_IG12: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+ ; gcrRegs -[r5]
; GC ptr vars -{V00}
add sp, 16
pop {r4,r5,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M14755_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M14755_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push {r2,r3,r4,r5,r11,lr}
add r3, r11, 8
str r3, [sp+0x04]
;; size=10 bbWeight=0 PerfScore 0.00
-G_M14755_IG13: ; bbWeight=0, gcVars=00000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M14755_IG14: ; bbWeight=0, gcVars=00000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V00}
...
-10 (-4.17%) : 251698.dasm - System.Security.Claims.ClaimsIdentity+<g_Core|590>d:MoveNext():ubyte:this (FullOpts)
@@ -8,15 +8,17 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 17, 16.50) ref -> [sp+0x04] this class-hnd EH-live single-def <System.Security.Claims.ClaimsIdentity+<<FindAll>g__Core|59_0>d>
+; V00 this [V00,T00] ( 16, 9 ) ref -> [sp+0x04] this class-hnd EH-live single-def <System.Security.Claims.ClaimsIdentity+<<FindAll>g__Core|59_0>d>
; V01 loc0 [V01,T03] ( 4, 2.50) ubyte -> r0
; V02 loc1 [V02,T04] ( 3, 2.50) int -> r0
-; V03 loc2 [V03,T05] ( 3, 2 ) ref -> r3 class-hnd single-def <<unknown class>>
-; V04 loc3 [V04,T02] ( 3, 4.50) ref -> r5 class-hnd <<unknown class>>
+; V03 loc2 [V03,T06] ( 3, 2 ) ref -> r3 class-hnd single-def <<unknown class>>
+; V04 loc3 [V04,T02] ( 3, 1 ) ref -> r4 class-hnd <<unknown class>>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T06] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
-; V07 PSPSym [V07,T07] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym"
-; V08 rat0 [V08,T01] ( 3, 12 ) ref -> r3 "delegate invoke call"
+; V06 tmp1 [V06,T07] ( 2, 2 ) ref -> r0 single-def "argument with side effect"
+; V07 PSPSym [V07,T09] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[V] "PSPSym"
+; V08 cse0 [V08,T05] ( 5, 2 ) ref -> r0 multi-def "CSE - aggressive"
+;* V09 rat0 [V09,T01] ( 0, 0 ) ref -> zero-ref "delegate invoke call"
+; V10 rat1 [V10,T08] ( 3, 1.50) ref -> r3 "delegate invoke call"
; TEMP_01 ref -> [r11-0x18]
;
; Lcl frame size = 16
@@ -31,27 +33,27 @@ G_M31085_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
str r1, [sp+0x0C] // [V07 PSPSym]
str r0, [sp+0x04] // [V00 this]
; GC ptr vars +{V00}
- mov r4, r0
- ; gcrRegs +[r4]
+ mov r5, r0
+ ; gcrRegs +[r5]
;; size=22 bbWeight=1 PerfScore 9.00
-G_M31085_IG02: ; bbWeight=1, gcVars=00000001 {V00}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr r0, [r4+0x18]
- ldr r3, [r4+0x08]
+G_M31085_IG02: ; bbWeight=1, gcVars=00000001 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr r0, [r5+0x18]
+ ldr r3, [r5+0x08]
; gcrRegs +[r3]
cmp r0, 0
beq SHORT G_M31085_IG04
;; size=8 bbWeight=1 PerfScore 4.00
-G_M31085_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M31085_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r3]
cmp r0, 1
- beq SHORT G_M31085_IG09
+ beq SHORT G_M31085_IG07
movs r0, 0
- b SHORT G_M31085_IG11
+ b SHORT G_M31085_IG12
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M31085_IG04: ; bbWeight=0.50, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref, isz
+G_M31085_IG04: ; bbWeight=0.50, gcrefRegs=0028 {r3 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r3]
mov r0, -1
- str r0, [r4+0x18]
+ str r0, [r5+0x18]
mov r0, r3
; gcrRegs +[r0]
ldr r3, [r3]
@@ -59,7 +61,6 @@ G_M31085_IG04: ; bbWeight=0.50, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}
ldr r3, [r3+0x2C]
ldr r3, [r3+0x18]
blx r3 // <unknown method>
- ; gcrRegs -[r4]
; gcr arg pop 0
movw r4, 0xd1ff
movt r4, 0xd1ff
@@ -67,39 +68,66 @@ G_M31085_IG04: ; bbWeight=0.50, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}
blx r3 // <unknown method>
; gcr arg pop 0
str r0, [sp]
- ldr r4, [sp+0x04] // [V00 this]
- ; gcrRegs +[r4]
- add r0, r4, 20
+ add r0, r5, 20
; gcrRegs -[r0]
; byrRegs +[r0]
- ldr r1, [sp] // [TEMP_01]
+ ldr r1, [sp]
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
- b SHORT G_M31085_IG09
- ;; size=50 bbWeight=0.50 PerfScore 9.50
-G_M31085_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4]
- ldr r4, [sp+0x04] // [V00 this]
+ b SHORT G_M31085_IG07
+ ;; size=48 bbWeight=0.50 PerfScore 9.00
+G_M31085_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ mov r0, -1
+ str r0, [r5+0x18]
+ ldr r0, [r5+0x14]
+ ; gcrRegs +[r0]
+ cmp r0, 0
+ beq SHORT G_M31085_IG11
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ ; gcr arg pop 0
+ b SHORT G_M31085_IG11
+ ;; size=26 bbWeight=0.50 PerfScore 5.00
+G_M31085_IG06: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r4]
- ldr r0, [r4+0x14]
+ adds r0, r5, 4
+ ; byrRegs +[r0]
+ mov r1, r4
+ ; gcrRegs +[r1]
+ movw r12, 0xd1ff
+ movt r12, 0xd1ff
+ blx r12 // CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[r1 r4]
+ ; byrRegs -[r0]
+ movs r0, 1
+ str r0, [r5+0x18]
+ b SHORT G_M31085_IG12
+ ;; size=20 bbWeight=0.50 PerfScore 4.00
+G_M31085_IG07: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ mvn r0, 2
+ str r0, [r5+0x18]
+ b SHORT G_M31085_IG09
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M31085_IG08: ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r5+0x14]
; gcrRegs +[r0]
movw r4, 0xd1ff
- ; gcrRegs -[r4]
movt r4, 0xd1ff
ldr r3, [r4]
blx r3 // <unknown method>
; gcr arg pop 0
- mov r5, r0
- ; gcrRegs +[r5]
- ldr r4, [sp+0x04] // [V00 this]
+ mov r4, r0
; gcrRegs +[r4]
- ldr r3, [r4+0x0C]
+ ldr r3, [r5+0x0C]
; gcrRegs +[r3]
- mov r1, r5
+ mov r1, r4
; gcrRegs +[r1]
ldr r0, [r3+0x04]
ldr r3, [r3+0x0C]
@@ -108,79 +136,40 @@ G_M31085_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[r0-r1]
; gcr arg pop 0
cmp r0, 0
+ bne SHORT G_M31085_IG06
+ ;; size=30 bbWeight=0.25 PerfScore 3.25
+G_M31085_IG09: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r4]
+ ldr r0, [r5+0x14]
+ ; gcrRegs +[r0]
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ ; gcr arg pop 0
+ cmp r0, 0
bne SHORT G_M31085_IG08
- ;; size=34 bbWeight=2 PerfScore 30.00
-G_M31085_IG06: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r5]
- ldr r0, [r4+0x14]
- ; gcrRegs +[r0]
- movw r4, 0xd1ff
- ; gcrRegs -[r4]
- movt r4, 0xd1ff
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; gcrRegs -[r0]
- ; gcr arg pop 0
- cmp r0, 0
- bne SHORT G_M31085_IG05
- ;; size=18 bbWeight=4 PerfScore 28.00
-G_M31085_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov r0, -1
- ldr r4, [sp+0x04]
- ; gcrRegs +[r4]
- str r0, [r4+0x18]
- ldr r0, [r4+0x14]
- ; gcrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M31085_IG10
- ldr r0, [r4+0x14]
- movw r4, 0xd1ff
- ; gcrRegs -[r4]
- movt r4, 0xd1ff
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; gcrRegs -[r0]
- ; gcr arg pop 0
- ldr r4, [sp+0x04] // [V00 this]
- ; gcrRegs +[r4]
- b SHORT G_M31085_IG10
- ;; size=32 bbWeight=0.50 PerfScore 6.50
-G_M31085_IG08: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r5]
- adds r0, r4, 4
- ; byrRegs +[r0]
- mov r1, r5
- ; gcrRegs +[r1]
- movw r12, 0xd1ff
- movt r12, 0xd1ff
- blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r1 r5]
- ; byrRegs -[r0]
- movs r0, 1
- str r0, [r4+0x18]
- b SHORT G_M31085_IG11
- ;; size=20 bbWeight=0.50 PerfScore 4.00
-G_M31085_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- mvn r0, 2
- str r0, [r4+0x18]
- b SHORT G_M31085_IG06
- ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M31085_IG10: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ;; size=18 bbWeight=0.50 PerfScore 3.50
+G_M31085_IG10: ; bbWeight=0.06, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M31085_IG05
+ ;; size=2 bbWeight=0.06 PerfScore 0.06
+G_M31085_IG11: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
movs r0, 0
- str r0, [r4+0x14]
+ str r0, [r5+0x14]
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M31085_IG11: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
- ; gcrRegs -[r4]
+G_M31085_IG12: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+ ; gcrRegs -[r5]
; GC ptr vars -{V00}
add sp, 16
pop {r4,r5,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M31085_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M31085_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push {r2,r3,r4,r5,r11,lr}
add r3, r11, 8
str r3, [sp+0x04]
...
+48 (+77.42%) : 238506.dasm - System.Configuration.XmlUtil:StrictReadToNextElement(int):this (FullOpts)
@@ -8,11 +8,11 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 5, 14 ) ref -> r4 this class-hnd single-def <System.Configuration.XmlUtil>
-; V01 arg1 [V01,T03] ( 3, 4 ) int -> r5 single-def
+; V00 this [V00,T01] ( 8, 15.50) ref -> r4 this class-hnd single-def <System.Configuration.XmlUtil>
+; V01 arg1 [V01,T03] ( 4, 4.25) int -> r5 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 3, 48 ) ref -> r0 "argument with side effect"
-; V04 tmp2 [V04,T02] ( 3, 12 ) ref -> r0 "argument with side effect"
+; V03 tmp1 [V03,T00] ( 6, 54 ) ref -> r0 "argument with side effect"
+; V04 tmp2 [V04,T02] ( 6, 13.50) ref -> r0 "argument with side effect"
;
; Lcl frame size = 0
@@ -26,7 +26,7 @@ G_M3549_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M3549_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
b SHORT G_M3549_IG04
;; size=2 bbWeight=1 PerfScore 1.00
-G_M3549_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M3549_IG03: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x0C]
; gcrRegs +[r0]
ldr r3, [r0]
@@ -35,7 +35,7 @@ G_M3549_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
blx r3 // <unknown method>
; gcrRegs -[r0]
cmp r0, 1
- beq SHORT G_M3549_IG05
+ beq SHORT G_M3549_IG08
mov r0, r4
; gcrRegs +[r0]
mov r1, r5
@@ -44,8 +44,9 @@ G_M3549_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
ldr r3, [r3]
blx r3 // System.Configuration.XmlUtil:VerifyIgnorableNodeType(int):this
; gcrRegs -[r0]
- ;; size=30 bbWeight=2 PerfScore 26.00
-G_M3549_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M3549_IG07
+ ;; size=32 bbWeight=0.25 PerfScore 3.50
+G_M3549_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x0C]
; gcrRegs +[r0]
ldr r3, [r0]
@@ -55,13 +56,48 @@ G_M3549_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
cmp r0, 0
bne SHORT G_M3549_IG03
+ ;; size=14 bbWeight=1 PerfScore 7.00
+G_M3549_IG05: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r4]
+ b SHORT G_M3549_IG08
+ ;; size=2 bbWeight=0.06 PerfScore 0.06
+G_M3549_IG06: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r4]
+ ldr r0, [r4+0x0C]
+ ; gcrRegs +[r0]
+ ldr r3, [r0]
+ ldr r3, [r3+0x2C]
+ ldr r3, [r3+0x14]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ cmp r0, 1
+ beq SHORT G_M3549_IG08
+ mov r0, r4
+ ; gcrRegs +[r0]
+ mov r1, r5
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // System.Configuration.XmlUtil:VerifyIgnorableNodeType(int):this
+ ; gcrRegs -[r0]
+ ;; size=30 bbWeight=2 PerfScore 26.00
+G_M3549_IG07: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r4+0x0C]
+ ; gcrRegs +[r0]
+ ldr r3, [r0]
+ ldr r3, [r3+0x4C]
+ ldr r3, [r3+0x08]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ cmp r0, 0
+ bne SHORT G_M3549_IG06
;; size=14 bbWeight=8 PerfScore 56.00
-G_M3549_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M3549_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r4]
pop {r4,r5,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 62, prolog size 8, PerfScore 88.00, instruction count 26, allocated bytes for code 62 (MethodHash=eb85f222) for method System.Configuration.XmlUtil:StrictReadToNextElement(int):this (FullOpts)
+; Total bytes of code 110, prolog size 8, PerfScore 98.56, instruction count 48, allocated bytes for code 110 (MethodHash=eb85f222) for method System.Configuration.XmlUtil:StrictReadToNextElement(int):this (FullOpts)
; ============================================================
Unwind Info:
@@ -73,7 +109,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
+ Function Length : 55 (0x00037) Actual length = 110 (0x00006e)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+48 (+77.42%) : 228412.dasm - System.Configuration.XmlUtil:StrictReadToNextElement(int):this (FullOpts)
@@ -8,11 +8,11 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 5, 14 ) ref -> r4 this class-hnd single-def <System.Configuration.XmlUtil>
-; V01 arg1 [V01,T03] ( 3, 4 ) int -> r5 single-def
+; V00 this [V00,T01] ( 8, 15.50) ref -> r4 this class-hnd single-def <System.Configuration.XmlUtil>
+; V01 arg1 [V01,T03] ( 4, 4.25) int -> r5 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 3, 48 ) ref -> r0 "argument with side effect"
-; V04 tmp2 [V04,T02] ( 3, 12 ) ref -> r0 "argument with side effect"
+; V03 tmp1 [V03,T00] ( 6, 54 ) ref -> r0 "argument with side effect"
+; V04 tmp2 [V04,T02] ( 6, 13.50) ref -> r0 "argument with side effect"
;
; Lcl frame size = 0
@@ -26,7 +26,7 @@ G_M3549_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M3549_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
b SHORT G_M3549_IG04
;; size=2 bbWeight=1 PerfScore 1.00
-G_M3549_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M3549_IG03: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x0C]
; gcrRegs +[r0]
ldr r3, [r0]
@@ -35,7 +35,7 @@ G_M3549_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
blx r3 // <unknown method>
; gcrRegs -[r0]
cmp r0, 1
- beq SHORT G_M3549_IG05
+ beq SHORT G_M3549_IG08
mov r0, r4
; gcrRegs +[r0]
mov r1, r5
@@ -44,8 +44,9 @@ G_M3549_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
ldr r3, [r3]
blx r3 // System.Configuration.XmlUtil:VerifyIgnorableNodeType(int):this
; gcrRegs -[r0]
- ;; size=30 bbWeight=2 PerfScore 26.00
-G_M3549_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M3549_IG07
+ ;; size=32 bbWeight=0.25 PerfScore 3.50
+G_M3549_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x0C]
; gcrRegs +[r0]
ldr r3, [r0]
@@ -55,13 +56,48 @@ G_M3549_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
cmp r0, 0
bne SHORT G_M3549_IG03
+ ;; size=14 bbWeight=1 PerfScore 7.00
+G_M3549_IG05: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r4]
+ b SHORT G_M3549_IG08
+ ;; size=2 bbWeight=0.06 PerfScore 0.06
+G_M3549_IG06: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r4]
+ ldr r0, [r4+0x0C]
+ ; gcrRegs +[r0]
+ ldr r3, [r0]
+ ldr r3, [r3+0x2C]
+ ldr r3, [r3+0x14]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ cmp r0, 1
+ beq SHORT G_M3549_IG08
+ mov r0, r4
+ ; gcrRegs +[r0]
+ mov r1, r5
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // System.Configuration.XmlUtil:VerifyIgnorableNodeType(int):this
+ ; gcrRegs -[r0]
+ ;; size=30 bbWeight=2 PerfScore 26.00
+G_M3549_IG07: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r4+0x0C]
+ ; gcrRegs +[r0]
+ ldr r3, [r0]
+ ldr r3, [r3+0x4C]
+ ldr r3, [r3+0x08]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ cmp r0, 0
+ bne SHORT G_M3549_IG06
;; size=14 bbWeight=8 PerfScore 56.00
-G_M3549_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M3549_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r4]
pop {r4,r5,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 62, prolog size 8, PerfScore 88.00, instruction count 26, allocated bytes for code 62 (MethodHash=eb85f222) for method System.Configuration.XmlUtil:StrictReadToNextElement(int):this (FullOpts)
+; Total bytes of code 110, prolog size 8, PerfScore 98.56, instruction count 48, allocated bytes for code 110 (MethodHash=eb85f222) for method System.Configuration.XmlUtil:StrictReadToNextElement(int):this (FullOpts)
; ============================================================
Unwind Info:
@@ -73,7 +109,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
+ Function Length : 55 (0x00037) Actual length = 110 (0x00006e)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+34 (+80.95%) : 230893.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.CType:GetNakedType(ubyte):Microsoft.CSharp.RuntimeBinder.Semantics.CType:this (FullOpts)
@@ -8,47 +8,83 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 3, 3 ) ref -> r0 this class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.CType>
-; V01 arg1 [V01,T02] ( 3, 4 ) ubyte -> r4 single-def
-; V02 loc0 [V02,T00] ( 6, 22 ) ref -> r0 class-hnd <Microsoft.CSharp.RuntimeBinder.Semantics.CType>
-; V03 loc1 [V03,T01] ( 3, 20 ) int -> r3
+; V00 this [V00,T02] ( 6, 6 ) ref -> r0 this class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.CType>
+; V01 arg1 [V01,T03] ( 4, 4.25) ubyte -> r4 single-def
+; V02 loc0 [V02,T00] ( 7, 23 ) ref -> registers class-hnd <Microsoft.CSharp.RuntimeBinder.Semantics.CType>
+; V03 loc1 [V03,T01] ( 6, 22.50) int -> r5
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M38771_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
+ push {r4,r5,r11,lr}
add r11, sp, 8
mov r4, r1
;; size=10 bbWeight=1 PerfScore 3.00
-G_M38771_IG02: ; bbWeight=8, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M38771_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
- ldr r3, [r0+0x04]
- subs r2, r3, 5
+ mov r3, r0
+ ; gcrRegs +[r3]
+ ldr r5, [r0+0x04]
+ subs r2, r5, 5
cmp r2, 2
bls SHORT G_M38771_IG05
- ;; size=8 bbWeight=8 PerfScore 32.00
-G_M38771_IG03: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- cmp r3, 8
- bne SHORT G_M38771_IG06
- ;; size=4 bbWeight=4 PerfScore 8.00
-G_M38771_IG04: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- uxtb r3, r4
- cmp r3, 0
- beq SHORT G_M38771_IG06
- ;; size=6 bbWeight=2 PerfScore 6.00
-G_M38771_IG05: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ;; size=10 bbWeight=1 PerfScore 5.00
+G_M38771_IG03: ; bbWeight=0.50, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz
+ cmp r5, 8
+ bne SHORT G_M38771_IG11
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M38771_IG04: ; bbWeight=0.25, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz
+ uxtb r2, r4
+ cmp r2, 0
+ beq SHORT G_M38771_IG10
+ ;; size=6 bbWeight=0.25 PerfScore 0.75
+G_M38771_IG05: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r3]
ldr r3, [r0]
ldr r3, [r3+0x2C]
ldr r3, [r3+0x14]
blx r3 // <unknown method>
- b SHORT G_M38771_IG02
+ ;; size=8 bbWeight=1 PerfScore 4.00
+G_M38771_IG06: ; bbWeight=8, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ldr r5, [r0+0x04]
+ subs r3, r5, 5
+ cmp r3, 2
+ bls SHORT G_M38771_IG09
+ ;; size=8 bbWeight=8 PerfScore 32.00
+G_M38771_IG07: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ cmp r5, 8
+ bne SHORT G_M38771_IG12
+ ;; size=4 bbWeight=4 PerfScore 8.00
+G_M38771_IG08: ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ uxtb r3, r4
+ cmp r3, 0
+ beq SHORT G_M38771_IG12
+ ;; size=6 bbWeight=2 PerfScore 6.00
+G_M38771_IG09: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ldr r3, [r0]
+ ldr r3, [r3+0x2C]
+ ldr r3, [r3+0x14]
+ blx r3 // <unknown method>
+ b SHORT G_M38771_IG06
;; size=10 bbWeight=4 PerfScore 20.00
-G_M38771_IG06: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r3,r4,r11,pc}
+G_M38771_IG10: ; bbWeight=0.12, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0] +[r3]
+ mov r0, r3
+ ; gcrRegs +[r0]
+ b SHORT G_M38771_IG12
+ ;; size=4 bbWeight=0.12 PerfScore 0.25
+G_M38771_IG11: ; bbWeight=0.25, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0]
+ mov r0, r3
+ ; gcrRegs +[r0]
+ ;; size=2 bbWeight=0.25 PerfScore 0.25
+G_M38771_IG12: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r3]
+ pop {r4,r5,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 42, prolog size 8, PerfScore 70.00, instruction count 18, allocated bytes for code 42 (MethodHash=85d6688c) for method Microsoft.CSharp.RuntimeBinder.Semantics.CType:GetNakedType(ubyte):Microsoft.CSharp.RuntimeBinder.Semantics.CType:this (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 81.25, instruction count 35, allocated bytes for code 76 (MethodHash=85d6688c) for method Microsoft.CSharp.RuntimeBinder.Semantics.CType:GetNakedType(ubyte):Microsoft.CSharp.RuntimeBinder.Semantics.CType:this (FullOpts)
; ============================================================
Unwind Info:
@@ -60,11 +96,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 21 (0x00015) Actual length = 42 (0x00002a)
+ Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 30 pop {r4,r5,r11,lr} ; opsize 32
FF end
FF end
libraries_tests.run.linux.arm.Release.mch
-48 (-19.20%) : 660449.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.FieldDeclarationSyntax:get_Modifiers():Microsoft.CodeAnalysis.SyntaxTokenList:this (Tier1)
@@ -9,45 +9,47 @@
; 4 inlinees with PGO data; 13 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 9, 7.55) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.FieldDeclarationSyntax>
-; V01 RetBuf [V01,T05] ( 7, 6 ) byref -> r5 single-def
-; V02 loc0 [V02,T11] ( 5, 3 ) ref -> r6 class-hnd single-def <Microsoft.CodeAnalysis.GreenNode>
+; V00 this [V00,T03] ( 8, 8 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.FieldDeclarationSyntax>
+; V01 RetBuf [V01,T04] ( 7, 6 ) byref -> r5 single-def
+; V02 loc0 [V02,T13] ( 5, 3 ) ref -> r6 class-hnd single-def <Microsoft.CodeAnalysis.GreenNode>
;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op <Microsoft.CodeAnalysis.SyntaxTokenList>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T06] ( 5, 6 ) ref -> r0 class-hnd single-def "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode>
-; V06 tmp2 [V06,T08] ( 3, 6 ) int -> r7 "impAppendStmt"
+; V05 tmp1 [V05,T07] ( 5, 6 ) ref -> r0 class-hnd single-def "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode>
+; V06 tmp2 [V06,T09] ( 3, 6 ) int -> r9 "impAppendStmt"
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxTokenList>
-; V08 tmp4 [V08,T13] ( 4, 2 ) ref -> r6 "guarded devirt return temp"
+; V08 tmp4 [V08,T15] ( 4, 2 ) ref -> r6 "guarded devirt return temp"
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.FieldDeclarationSyntax>
;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V11 tmp7 [V11,T00] ( 7, 41.10) int -> r7 "Inlining Arg"
+;* V11 tmp7 [V11,T11] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V13 tmp9 [V13,T03] ( 5, 11 ) int -> r8 "Inline stloc first use temp"
-; V14 tmp10 [V14,T02] ( 3, 17 ) ref -> r9 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
+; V13 tmp9 [V13,T06] ( 4, 7 ) int -> r7 "Inline stloc first use temp"
+; V14 tmp10 [V14,T01] ( 3, 17 ) ref -> r0 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V16 tmp12 [V16,T01] ( 3, 20 ) ref -> r0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
+; V16 tmp12 [V16,T00] ( 3, 20 ) ref -> r0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
-;* V18 tmp14 [V18,T17] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
+;* V18 tmp14 [V18,T19] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
;* V19 tmp15 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V20 tmp16 [V20,T09] ( 6, 4 ) ref -> r10 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V20 tmp16 [V20,T10] ( 4, 4 ) ref -> r8 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V22 tmp18 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
-; V24 tmp20 [V24,T10] ( 4, 3.12) int -> r8 "Inline stloc first use temp"
-;* V25 tmp21 [V25,T19] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V26 tmp22 [V26,T12] ( 6, 2.62) ref -> r0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V27 tmp23 [V27,T20] ( 4, 0.38) int -> r8 "Inline stloc first use temp"
-;* V28 tmp24 [V28,T18] ( 0, 0 ) ref -> zero-ref single-def "field V07._parent (fldOffset=0x0)" P-INDEP
-; V29 tmp25 [V29,T14] ( 2, 2 ) ref -> r6 single-def "field V07.<Node>k__BackingField (fldOffset=0x4)" P-INDEP
-; V30 tmp26 [V30,T15] ( 2, 2 ) int -> r8 single-def "field V07._index (fldOffset=0x8)" P-INDEP
-; V31 tmp27 [V31,T16] ( 2, 2 ) int -> r7 single-def "field V07.<Position>k__BackingField (fldOffset=0xc)" P-INDEP
-; V32 tmp28 [V32,T07] ( 3, 6 ) ref -> r0 "argument with side effect"
+; V24 tmp20 [V24,T12] ( 4, 3.12) int -> r7 "Inline stloc first use temp"
+;* V25 tmp21 [V25,T21] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V26 tmp22 [V26,T14] ( 6, 2.62) ref -> r0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
+; V27 tmp23 [V27,T22] ( 4, 0.38) int -> r7 "Inline stloc first use temp"
+;* V28 tmp24 [V28,T20] ( 0, 0 ) ref -> zero-ref single-def "field V07._parent (fldOffset=0x0)" P-INDEP
+; V29 tmp25 [V29,T16] ( 2, 2 ) ref -> r6 single-def "field V07.<Node>k__BackingField (fldOffset=0x4)" P-INDEP
+; V30 tmp26 [V30,T17] ( 2, 2 ) int -> r7 single-def "field V07._index (fldOffset=0x8)" P-INDEP
+; V31 tmp27 [V31,T18] ( 2, 2 ) int -> r9 single-def "field V07.<Position>k__BackingField (fldOffset=0xc)" P-INDEP
+; V32 tmp28 [V32,T08] ( 3, 6 ) ref -> r0 "argument with side effect"
+; V33 cse0 [V33,T02] ( 2, 16 ) int -> r3 "CSE - aggressive"
+; V34 cse1 [V34,T05] ( 2, 8 ) int -> r7 "CSE - aggressive"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M31075_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,r6,r7,r8,r9,r10,r11,lr}
- add r11, sp, 32
+ push {r4,r5,r6,r7,r8,r9,r11,lr}
+ add r11, sp, 24
mov r4, r0
; gcrRegs +[r4]
mov r5, r1
@@ -60,82 +62,54 @@ G_M31075_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, by
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r1, r3
- bne SHORT G_M31075_IG23
+ bne SHORT G_M31075_IG15
ldr r6, [r0+0x10]
; gcrRegs +[r6]
cmp r6, 0
- beq SHORT G_M31075_IG24
- ;; size=22 bbWeight=1 PerfScore 9.00
-G_M31075_IG03: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref
- ; gcrRegs -[r0]
- movs r7, 1
- mov r8, 0
- ldr r9, [r4+0x0C]
- ; gcrRegs +[r9]
- ;; size=10 bbWeight=1 PerfScore 3.00
-G_M31075_IG04: ; bbWeight=1, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0020 {r5}, byref, isz
- subs r7, r7, 1
- cmp r7, 0
- beq SHORT G_M31075_IG12
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M31075_IG05: ; bbWeight=0.55, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0020 {r5}, byref, isz
- cmp r7, 2
beq SHORT G_M31075_IG16
- ;; size=4 bbWeight=0.55 PerfScore 1.10
-G_M31075_IG06: ; bbWeight=0.45, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0020 {r5}, byref
- mov r10, 0
- ;; size=4 bbWeight=0.45 PerfScore 0.45
-G_M31075_IG07: ; bbWeight=1, gcrefRegs=0650 {r4 r6 r9 r10}, byrefRegs=0020 {r5}, byref, isz
- ; gcrRegs +[r10]
- cmp r10, 0
- bne SHORT G_M31075_IG13
- ;; size=6 bbWeight=1 PerfScore 2.00
-G_M31075_IG08: ; bbWeight=8, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0020 {r5}, byref, isz
- ; gcrRegs -[r10]
- mov r0, r9
+ ;; size=22 bbWeight=1 PerfScore 9.00
+G_M31075_IG03: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
+ ; gcrRegs -[r0]
+ movs r7, 0
+ ldr r0, [r4+0x0C]
; gcrRegs +[r0]
- mov r1, r7
- ldr r3, [r9]
+ ldr r8, [r4+0x14]
+ ; gcrRegs +[r8]
+ cmp r8, 0
+ bne SHORT G_M31075_IG07
+ ;; size=14 bbWeight=1 PerfScore 5.00
+G_M31075_IG04: ; bbWeight=8, gcrefRegs=0051 {r0 r4 r6}, byrefRegs=0020 {r5}, byref, isz
+ ; gcrRegs -[r8]
+ movs r1, 0
+ ldr r3, [r0]
ldr r3, [r3+0x30]
ldr r3, [r3+0x10]
blx r3 // <unknown method>
cmp r0, 0
- beq SHORT G_M31075_IG10
- ;; size=18 bbWeight=8 PerfScore 64.00
-G_M31075_IG09: ; bbWeight=4, gcrefRegs=0251 {r0 r4 r6 r9}, byrefRegs=0020 {r5}, byref
- ldr r0, [r0+0x04]
+ beq SHORT G_M31075_IG06
+ ;; size=14 bbWeight=8 PerfScore 56.00
+G_M31075_IG05: ; bbWeight=4, gcrefRegs=0051 {r0 r4 r6}, byrefRegs=0020 {r5}, byref
+ ldr r7, [r0+0x04]
+ ;; size=2 bbWeight=4 PerfScore 4.00
+G_M31075_IG06: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
; gcrRegs -[r0]
- add r8, r0
- ;; size=4 bbWeight=4 PerfScore 8.00
-G_M31075_IG10: ; bbWeight=8, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0020 {r5}, byref, isz
- cmp r7, 0
- bgt SHORT G_M31075_IG04
- ;; size=4 bbWeight=8 PerfScore 16.00
-G_M31075_IG11: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
- ; gcrRegs -[r9]
ldr r0, [r4+0x10]
- add r7, r0, r8
- b SHORT G_M31075_IG14
+ add r9, r0, r7
+ b SHORT G_M31075_IG08
;; size=8 bbWeight=1 PerfScore 3.00
-G_M31075_IG12: ; bbWeight=0.45, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0020 {r5}, byref, isz
- ; gcrRegs +[r9]
- ldr r10, [r4+0x14]
- ; gcrRegs +[r10]
- b SHORT G_M31075_IG07
- ;; size=6 bbWeight=0.45 PerfScore 0.90
-G_M31075_IG13: ; bbWeight=1, gcrefRegs=0450 {r4 r6 r10}, byrefRegs=0020 {r5}, byref
- ; gcrRegs -[r9]
- ldr r0, [r10+0x10]
- ldr r1, [r10+0x0C]
+G_M31075_IG07: ; bbWeight=1, gcrefRegs=0150 {r4 r6 r8}, byrefRegs=0020 {r5}, byref
+ ; gcrRegs +[r8]
+ ldr r0, [r8+0x10]
+ ldr r1, [r8+0x0C]
; gcrRegs +[r1]
ldr r1, [r1+0x04]
; gcrRegs -[r1]
adds r0, r0, r1
- add r7, r0, r8
+ add r9, r0, r7
;; size=16 bbWeight=1 PerfScore 5.00
-G_M31075_IG14: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
- ; gcrRegs -[r10]
- mov r8, 0
+G_M31075_IG08: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
+ ; gcrRegs -[r8]
+ movs r7, 0
ldr r0, [r4+0x0C]
; gcrRegs +[r0]
movs r1, 0
@@ -144,36 +118,26 @@ G_M31075_IG14: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5},
ldr r3, [r3+0x10]
blx r3 // <unknown method>
cmp r0, 0
- beq SHORT G_M31075_IG21
- ;; size=20 bbWeight=1 PerfScore 9.00
-G_M31075_IG15: ; bbWeight=0.50, gcrefRegs=0051 {r0 r4 r6}, byrefRegs=0020 {r5}, byref, isz
- b SHORT G_M31075_IG17
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M31075_IG16: ; bbWeight=0.10, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0020 {r5}, byref, isz
- ; gcrRegs -[r0] +[r9]
- ldr r10, [r4+0x18]
- ; gcrRegs +[r10]
- b SHORT G_M31075_IG07
- ;; size=6 bbWeight=0.10 PerfScore 0.20
-G_M31075_IG17: ; bbWeight=0.50, gcrefRegs=0051 {r0 r4 r6}, byrefRegs=0020 {r5}, byref, isz
- ; gcrRegs -[r9-r10] +[r0]
+ beq SHORT G_M31075_IG13
+ ;; size=18 bbWeight=1 PerfScore 9.00
+G_M31075_IG09: ; bbWeight=0.50, gcrefRegs=0051 {r0 r4 r6}, byrefRegs=0020 {r5}, byref, isz
ldrh r1, [r0+0x08]
cmp r1, 1
- bne SHORT G_M31075_IG20
+ bne SHORT G_M31075_IG12
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M31075_IG18: ; bbWeight=0.12, gcrefRegs=0051 {r0 r4 r6}, byrefRegs=0020 {r5}, byref, isz
- ldrb r8, [r0+0x0B]
- cmp r8, 255
- beq SHORT G_M31075_IG26
- ;; size=10 bbWeight=0.12 PerfScore 0.38
-G_M31075_IG19: ; bbWeight=0.12, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
+G_M31075_IG10: ; bbWeight=0.12, gcrefRegs=0051 {r0 r4 r6}, byrefRegs=0020 {r5}, byref, isz
+ ldrb r7, [r0+0x0B]
+ cmp r7, 255
+ beq SHORT G_M31075_IG18
+ ;; size=6 bbWeight=0.12 PerfScore 0.38
+G_M31075_IG11: ; bbWeight=0.12, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
; gcrRegs -[r0]
- b SHORT G_M31075_IG21
+ b SHORT G_M31075_IG13
;; size=2 bbWeight=0.12 PerfScore 0.12
-G_M31075_IG20: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref
- mov r8, 1
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M31075_IG21: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref
+G_M31075_IG12: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref
+ movs r7, 1
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M31075_IG13: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref
mov r0, r5
; byrRegs +[r0]
mov r1, r4
@@ -192,13 +156,13 @@ G_M31075_IG21: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5},
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[r1 r6]
; byrRegs -[r0]
- str r8, [r5+0x08]
- str r7, [r5+0x0C]
+ str r7, [r5+0x08]
+ str r9, [r5+0x0C]
;; size=34 bbWeight=1 PerfScore 12.00
-G_M31075_IG22: ; bbWeight=1, epilog, nogc, extend
- pop {r3,r4,r5,r6,r7,r8,r9,r10,r11,pc}
+G_M31075_IG14: ; bbWeight=1, epilog, nogc, extend
...
-46 (-18.70%) : 88843.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.FieldDeclarationSyntax:get_Modifiers():Microsoft.CodeAnalysis.SyntaxTokenList:this (Tier1)
@@ -9,45 +9,47 @@
; 4 inlinees with PGO data; 13 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 9, 7.47) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.FieldDeclarationSyntax>
-; V01 RetBuf [V01,T05] ( 7, 5.94) byref -> r5 single-def
-; V02 loc0 [V02,T11] ( 3, 2.98) ref -> r6 class-hnd single-def <Microsoft.CodeAnalysis.GreenNode>
+; V00 this [V00,T03] ( 8, 7.90) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.FieldDeclarationSyntax>
+; V01 RetBuf [V01,T04] ( 7, 5.94) byref -> r5 single-def
+; V02 loc0 [V02,T13] ( 3, 2.98) ref -> r6 class-hnd single-def <Microsoft.CodeAnalysis.GreenNode>
;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op <Microsoft.CodeAnalysis.SyntaxTokenList>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T06] ( 5, 6 ) ref -> r0 class-hnd single-def "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode>
-; V06 tmp2 [V06,T08] ( 3, 5.88) int -> r7 "impAppendStmt"
+; V05 tmp1 [V05,T07] ( 5, 6 ) ref -> r0 class-hnd single-def "spilling ret_expr" <Microsoft.CodeAnalysis.GreenNode>
+; V06 tmp2 [V06,T09] ( 3, 5.88) int -> r9 "impAppendStmt"
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxTokenList>
-; V08 tmp4 [V08,T13] ( 3, 2 ) ref -> r6 "guarded devirt return temp"
+; V08 tmp4 [V08,T15] ( 3, 2 ) ref -> r6 "guarded devirt return temp"
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.FieldDeclarationSyntax>
;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V11 tmp7 [V11,T00] ( 7, 40.35) int -> r7 "Inlining Arg"
+;* V11 tmp7 [V11,T11] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V13 tmp9 [V13,T03] ( 5, 10.78) int -> r8 "Inline stloc first use temp"
-; V14 tmp10 [V14,T02] ( 3, 16.66) ref -> r9 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
+; V13 tmp9 [V13,T06] ( 4, 6.86) int -> r7 "Inline stloc first use temp"
+; V14 tmp10 [V14,T01] ( 3, 16.66) ref -> r0 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V16 tmp12 [V16,T01] ( 3, 19.60) ref -> r0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
+; V16 tmp12 [V16,T00] ( 3, 19.60) ref -> r0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
-;* V18 tmp14 [V18,T17] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
+;* V18 tmp14 [V18,T19] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
;* V19 tmp15 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V20 tmp16 [V20,T09] ( 6, 3.92) ref -> r10 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V20 tmp16 [V20,T10] ( 4, 3.92) ref -> r8 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V22 tmp18 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
-; V24 tmp20 [V24,T10] ( 4, 3.06) int -> r8 "Inline stloc first use temp"
-;* V25 tmp21 [V25,T19] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V26 tmp22 [V26,T12] ( 6, 2.57) ref -> r0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V27 tmp23 [V27,T20] ( 4, 0.37) int -> r8 "Inline stloc first use temp"
-;* V28 tmp24 [V28,T18] ( 0, 0 ) ref -> zero-ref single-def "field V07._parent (fldOffset=0x0)" P-INDEP
-; V29 tmp25 [V29,T14] ( 2, 1.96) ref -> r6 single-def "field V07.<Node>k__BackingField (fldOffset=0x4)" P-INDEP
-; V30 tmp26 [V30,T15] ( 2, 1.96) int -> r8 single-def "field V07._index (fldOffset=0x8)" P-INDEP
-; V31 tmp27 [V31,T16] ( 2, 1.96) int -> r7 single-def "field V07.<Position>k__BackingField (fldOffset=0xc)" P-INDEP
-; V32 tmp28 [V32,T07] ( 3, 5.88) ref -> r0 "argument with side effect"
+; V24 tmp20 [V24,T12] ( 4, 3.06) int -> r7 "Inline stloc first use temp"
+;* V25 tmp21 [V25,T21] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V26 tmp22 [V26,T14] ( 6, 2.57) ref -> r0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
+; V27 tmp23 [V27,T22] ( 4, 0.37) int -> r7 "Inline stloc first use temp"
+;* V28 tmp24 [V28,T20] ( 0, 0 ) ref -> zero-ref single-def "field V07._parent (fldOffset=0x0)" P-INDEP
+; V29 tmp25 [V29,T16] ( 2, 1.96) ref -> r6 single-def "field V07.<Node>k__BackingField (fldOffset=0x4)" P-INDEP
+; V30 tmp26 [V30,T17] ( 2, 1.96) int -> r7 single-def "field V07._index (fldOffset=0x8)" P-INDEP
+; V31 tmp27 [V31,T18] ( 2, 1.96) int -> r9 single-def "field V07.<Position>k__BackingField (fldOffset=0xc)" P-INDEP
+; V32 tmp28 [V32,T08] ( 3, 5.88) ref -> r0 "argument with side effect"
+; V33 cse0 [V33,T02] ( 2, 15.68) int -> r3 "CSE - aggressive"
+; V34 cse1 [V34,T05] ( 2, 7.84) int -> r7 "CSE - aggressive"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M31075_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,r6,r7,r8,r9,r10,r11,lr}
- add r11, sp, 32
+ push {r4,r5,r6,r7,r8,r9,r11,lr}
+ add r11, sp, 24
mov r4, r0
; gcrRegs +[r4]
mov r5, r1
@@ -60,66 +62,44 @@ G_M31075_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, by
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r1, r3
- bne SHORT G_M31075_IG25
+ bne SHORT G_M31075_IG18
ldr r6, [r0+0x10]
; gcrRegs +[r6]
;; size=18 bbWeight=1 PerfScore 7.00
G_M31075_IG03: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
; gcrRegs -[r0]
cmp r6, 0
- beq SHORT G_M31075_IG13
+ beq SHORT G_M31075_IG08
;; size=4 bbWeight=1 PerfScore 2.00
-G_M31075_IG04: ; bbWeight=0.98, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref
- movs r7, 1
- mov r8, 0
- ldr r9, [r4+0x0C]
- ; gcrRegs +[r9]
- ;; size=10 bbWeight=0.98 PerfScore 2.94
-G_M31075_IG05: ; bbWeight=0.98, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0020 {r5}, byref, isz
- subs r7, r7, 1
- cmp r7, 0
- beq SHORT G_M31075_IG20
- ;; size=6 bbWeight=0.98 PerfScore 2.94
-G_M31075_IG06: ; bbWeight=0.57, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0020 {r5}, byref, isz
- cmp r7, 2
- beq SHORT G_M31075_IG24
- ;; size=4 bbWeight=0.57 PerfScore 1.15
-G_M31075_IG07: ; bbWeight=0.44, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0020 {r5}, byref
- mov r10, 0
- ;; size=4 bbWeight=0.44 PerfScore 0.44
-G_M31075_IG08: ; bbWeight=0.98, gcrefRegs=0650 {r4 r6 r9 r10}, byrefRegs=0020 {r5}, byref, isz
- ; gcrRegs +[r10]
- cmp r10, 0
- bne SHORT G_M31075_IG15
- ;; size=6 bbWeight=0.98 PerfScore 1.96
-G_M31075_IG09: ; bbWeight=7.84, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0020 {r5}, byref, isz
- ; gcrRegs -[r10]
- mov r0, r9
+G_M31075_IG04: ; bbWeight=0.98, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
+ movs r7, 0
+ ldr r0, [r4+0x0C]
; gcrRegs +[r0]
- mov r1, r7
- ldr r3, [r9]
+ ldr r8, [r4+0x14]
+ ; gcrRegs +[r8]
+ cmp r8, 0
+ bne SHORT G_M31075_IG10
+ ;; size=14 bbWeight=0.98 PerfScore 4.90
+G_M31075_IG05: ; bbWeight=7.84, gcrefRegs=0051 {r0 r4 r6}, byrefRegs=0020 {r5}, byref, isz
+ ; gcrRegs -[r8]
+ movs r1, 0
+ ldr r3, [r0]
ldr r3, [r3+0x30]
ldr r3, [r3+0x10]
blx r3 // <unknown method>
cmp r0, 0
- beq SHORT G_M31075_IG11
- ;; size=18 bbWeight=7.84 PerfScore 62.73
-G_M31075_IG10: ; bbWeight=3.92, gcrefRegs=0251 {r0 r4 r6 r9}, byrefRegs=0020 {r5}, byref
- ldr r0, [r0+0x04]
+ beq SHORT G_M31075_IG07
+ ;; size=14 bbWeight=7.84 PerfScore 54.89
+G_M31075_IG06: ; bbWeight=3.92, gcrefRegs=0051 {r0 r4 r6}, byrefRegs=0020 {r5}, byref
+ ldr r7, [r0+0x04]
+ ;; size=2 bbWeight=3.92 PerfScore 3.92
+G_M31075_IG07: ; bbWeight=0.98, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
; gcrRegs -[r0]
- add r8, r0
- ;; size=4 bbWeight=3.92 PerfScore 7.84
-G_M31075_IG11: ; bbWeight=7.84, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0020 {r5}, byref, isz
- cmp r7, 0
- bgt SHORT G_M31075_IG05
- ;; size=4 bbWeight=7.84 PerfScore 15.68
-G_M31075_IG12: ; bbWeight=0.98, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
- ; gcrRegs -[r9]
ldr r0, [r4+0x10]
- add r7, r0, r8
- b SHORT G_M31075_IG16
+ add r9, r0, r7
+ b SHORT G_M31075_IG11
;; size=8 bbWeight=0.98 PerfScore 2.94
-G_M31075_IG13: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref
+G_M31075_IG08: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref
; gcrRegs -[r4 r6]
movs r0, 0
str r0, [r5]
@@ -127,22 +107,22 @@ G_M31075_IG13: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, b
str r0, [r5+0x08]
str r0, [r5+0x0C]
;; size=10 bbWeight=0.02 PerfScore 0.10
-G_M31075_IG14: ; bbWeight=0.02, epilog, nogc, extend
- pop {r3,r4,r5,r6,r7,r8,r9,r10,r11,pc}
+G_M31075_IG09: ; bbWeight=0.02, epilog, nogc, extend
+ pop {r4,r5,r6,r7,r8,r9,r11,pc}
;; size=4 bbWeight=0.02 PerfScore 0.02
-G_M31075_IG15: ; bbWeight=0.98, gcVars=00000000 {}, gcrefRegs=0450 {r4 r6 r10}, byrefRegs=0020 {r5}, gcvars, byref
- ; gcrRegs +[r4 r6 r10]
- ldr r0, [r10+0x10]
- ldr r1, [r10+0x0C]
+G_M31075_IG10: ; bbWeight=0.98, gcVars=00000000 {}, gcrefRegs=0150 {r4 r6 r8}, byrefRegs=0020 {r5}, gcvars, byref
+ ; gcrRegs +[r4 r6 r8]
+ ldr r0, [r8+0x10]
+ ldr r1, [r8+0x0C]
; gcrRegs +[r1]
ldr r1, [r1+0x04]
; gcrRegs -[r1]
adds r0, r0, r1
- add r7, r0, r8
+ add r9, r0, r7
;; size=16 bbWeight=0.98 PerfScore 4.90
-G_M31075_IG16: ; bbWeight=0.98, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
- ; gcrRegs -[r10]
- mov r8, 0
+G_M31075_IG11: ; bbWeight=0.98, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
+ ; gcrRegs -[r8]
+ movs r7, 0
ldr r0, [r4+0x0C]
; gcrRegs +[r0]
movs r1, 0
@@ -151,33 +131,26 @@ G_M31075_IG16: ; bbWeight=0.98, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r
ldr r3, [r3+0x10]
blx r3 // <unknown method>
cmp r0, 0
- beq SHORT G_M31075_IG22
- ;; size=20 bbWeight=0.98 PerfScore 8.82
-G_M31075_IG17: ; bbWeight=0.49, gcrefRegs=0051 {r0 r4 r6}, byrefRegs=0020 {r5}, byref, isz
+ beq SHORT G_M31075_IG16
+ ;; size=18 bbWeight=0.98 PerfScore 8.82
+G_M31075_IG12: ; bbWeight=0.49, gcrefRegs=0051 {r0 r4 r6}, byrefRegs=0020 {r5}, byref, isz
ldrh r1, [r0+0x08]
cmp r1, 1
- bne SHORT G_M31075_IG21
+ bne SHORT G_M31075_IG15
;; size=6 bbWeight=0.49 PerfScore 1.47
-G_M31075_IG18: ; bbWeight=0.12, gcrefRegs=0051 {r0 r4 r6}, byrefRegs=0020 {r5}, byref, isz
- ldrb r8, [r0+0x0B]
- cmp r8, 255
- beq SHORT G_M31075_IG26
- ;; size=10 bbWeight=0.12 PerfScore 0.37
-G_M31075_IG19: ; bbWeight=0.12, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
+G_M31075_IG13: ; bbWeight=0.12, gcrefRegs=0051 {r0 r4 r6}, byrefRegs=0020 {r5}, byref, isz
+ ldrb r7, [r0+0x0B]
+ cmp r7, 255
+ beq SHORT G_M31075_IG19
+ ;; size=6 bbWeight=0.12 PerfScore 0.37
+G_M31075_IG14: ; bbWeight=0.12, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref, isz
; gcrRegs -[r0]
- b SHORT G_M31075_IG22
+ b SHORT G_M31075_IG16
;; size=2 bbWeight=0.12 PerfScore 0.12
-G_M31075_IG20: ; bbWeight=0.41, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0020 {r5}, byref, isz
- ; gcrRegs +[r9]
- ldr r10, [r4+0x14]
- ; gcrRegs +[r10]
- b SHORT G_M31075_IG08
- ;; size=6 bbWeight=0.41 PerfScore 0.81
-G_M31075_IG21: ; bbWeight=0.98, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref
- ; gcrRegs -[r9-r10]
- mov r8, 1
- ;; size=4 bbWeight=0.98 PerfScore 0.98
-G_M31075_IG22: ; bbWeight=0.98, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref
+G_M31075_IG15: ; bbWeight=0.98, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref
+ movs r7, 1
+ ;; size=2 bbWeight=0.98 PerfScore 0.98
+G_M31075_IG16: ; bbWeight=0.98, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5}, byref
mov r0, r5
; byrRegs +[r0]
mov r1, r4
@@ -196,20 +169,14 @@ G_M31075_IG22: ; bbWeight=0.98, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r
blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[r1 r6]
; byrRegs -[r0]
- str r8, [r5+0x08]
- str r7, [r5+0x0C]
...
-48 (-15.38%) : 183540.dasm - Microsoft.CodeAnalysis.Syntax.SyntaxList+WithTwoChildren:GetNodeSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
@@ -9,61 +9,62 @@
; 1 inlinees with PGO data; 16 single block inlinees; 9 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 15, 11.50) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.Syntax.SyntaxList+WithTwoChildren>
-; V01 arg1 [V01,T06] ( 4, 3.50) int -> r1 single-def
+; V00 this [V00,T00] ( 14, 8 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.Syntax.SyntaxList+WithTwoChildren>
+; V01 arg1 [V01,T01] ( 4, 3.50) int -> r1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V04 tmp2 [V04,T07] ( 5, 5 ) byref -> r5 single-def "Inlining Arg"
-; V05 tmp3 [V05,T11] ( 4, 2 ) ref -> r0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V06 tmp4 [V06,T19] ( 3, 1.50) ref -> r0 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V07 tmp5 [V07,T15] ( 2, 2 ) ref -> r1 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode>
+; V04 tmp2 [V04,T02] ( 5, 5 ) byref -> r5 single-def "Inlining Arg"
+; V05 tmp3 [V05,T06] ( 4, 2 ) ref -> r0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V06 tmp4 [V06,T16] ( 3, 1.50) ref -> r0 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
+; V07 tmp5 [V07,T10] ( 2, 2 ) ref -> r1 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode>
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
-; V09 tmp7 [V09,T22] ( 3, 1.50) int -> r2 "Inline return value spill temp"
-;* V10 tmp8 [V10,T25] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V09 tmp7 [V09,T21] ( 3, 1.50) int -> r2 "Inline return value spill temp"
+;* V10 tmp8 [V10,T26] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
; V12 tmp10 [V12,T24] ( 2, 1 ) int -> r2 "Inline stloc first use temp"
-;* V13 tmp11 [V13,T26] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
+;* V13 tmp11 [V13,T28] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V16 tmp14 [V16,T20] ( 3, 1.50) ref -> r2 class-hnd single-def "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V16 tmp14 [V16,T17] ( 3, 1.50) ref -> r2 class-hnd single-def "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
;* V17 tmp15 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V18 tmp16 [V18,T16] ( 2, 2 ) ref -> r1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
+; V18 tmp16 [V18,T11] ( 2, 2 ) ref -> r1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
;* V19 tmp17 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V20 tmp18 [V20,T08] ( 5, 5 ) byref -> r5 single-def "Inlining Arg"
-; V21 tmp19 [V21,T12] ( 4, 2 ) ref -> r6 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V22 tmp20 [V22,T13] ( 4, 2 ) ref -> r7 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V23 tmp21 [V23,T17] ( 2, 2 ) ref -> r6 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode>
+; V20 tmp18 [V20,T03] ( 5, 5 ) byref -> r5 single-def "Inlining Arg"
+; V21 tmp19 [V21,T07] ( 4, 2 ) ref -> r6 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V22 tmp20 [V22,T08] ( 4, 2 ) ref -> r7 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
+; V23 tmp21 [V23,T12] ( 2, 2 ) ref -> r6 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode>
;* V24 tmp22 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
-; V25 tmp23 [V25,T14] ( 4, 2 ) int -> r2 "Inline return value spill temp"
-; V26 tmp24 [V26,T00] ( 7, 45 ) int -> r9 "Inlining Arg"
+; V25 tmp23 [V25,T09] ( 4, 2 ) int -> r2 "Inline return value spill temp"
+;* V26 tmp24 [V26,T14] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V27 tmp25 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V28 tmp26 [V28,T05] ( 5, 5.50) int -> r10 "Inline stloc first use temp"
-; V29 tmp27 [V29,T04] ( 3, 8.50) ref -> [sp+0x04] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
+; V28 tmp26 [V28,T15] ( 4, 1.75) int -> r9 "Inline stloc first use temp"
+; V29 tmp27 [V29,T18] ( 3, 1.50) ref -> r0 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
;* V30 tmp28 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V31 tmp29 [V31,T03] ( 3, 10 ) ref -> r0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
-; V32 tmp30 [V32,T21] ( 3, 1.50) ref -> r0 class-hnd single-def "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V33 tmp31 [V33,T02] ( 5, 10.50) ref -> r0 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
-; V34 tmp32 [V34,T18] ( 2, 2 ) ref -> r1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
-; V35 tmp33 [V35,T09] ( 3, 3 ) ref -> r0 single-def "argument with side effect"
-; V36 tmp34 [V36,T10] ( 3, 3 ) ref -> r0 single-def "argument with side effect"
-; V37 cse0 [V37,T23] ( 3, 1.50) int -> r8 "CSE - moderate"
+; V31 tmp29 [V31,T23] ( 3, 1.25) ref -> r0 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
+; V32 tmp30 [V32,T19] ( 3, 1.50) ref -> r0 class-hnd single-def "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V33 tmp31 [V33,T20] ( 3, 1.50) ref -> r3 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
+; V34 tmp32 [V34,T13] ( 2, 2 ) ref -> r1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
+; V35 tmp33 [V35,T04] ( 3, 3 ) ref -> r0 single-def "argument with side effect"
+; V36 tmp34 [V36,T05] ( 3, 3 ) ref -> r0 single-def "argument with side effect"
+; V37 cse0 [V37,T25] ( 2, 1 ) int -> r3 "CSE - moderate"
+; V38 cse1 [V38,T22] ( 3, 1.50) int -> r8 "CSE - moderate"
+; V39 cse2 [V39,T27] ( 2, 0.50) int -> r9 "CSE - conservative"
;
-; Lcl frame size = 12
+; Lcl frame size = 0
G_M57109_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 12
- add r11, sp, 40
+ push {r4,r5,r6,r7,r8,r9,r11,lr}
+ add r11, sp, 24
mov r4, r0
; gcrRegs +[r4]
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=10 bbWeight=1 PerfScore 3.00
G_M57109_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r1, 0
beq SHORT G_M57109_IG07
;; size=4 bbWeight=1 PerfScore 2.00
G_M57109_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r1, 1
- bne G_M57109_IG23
+ bne SHORT G_M57109_IG16
add r5, r4, 24
; byrRegs +[r5]
ldr r6, [r5]
@@ -88,13 +89,12 @@ G_M57109_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
cmp r0, 0
bne SHORT G_M57109_IG05
ldr r6, [r4+0x04]
- mov r9, 1
ldr r0, [r4+0x18]
; gcrRegs +[r0]
cmp r0, 0
beq SHORT G_M57109_IG11
ldr r2, [r0+0x10]
- ;; size=62 bbWeight=0.50 PerfScore 13.00
+ ;; size=56 bbWeight=0.50 PerfScore 12.50
G_M57109_IG04: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, byref, isz
; gcrRegs -[r0 r4]
mov r0, r7
@@ -108,7 +108,7 @@ G_M57109_IG04: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r
mov r1, r0
; gcrRegs +[r1]
cmp r5, 0
- beq SHORT G_M57109_IG22
+ beq SHORT G_M57109_IG15
mov r0, r5
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -128,9 +128,8 @@ G_M57109_IG05: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, b
; gcrRegs +[r0]
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M57109_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add sp, 12
- pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
- ;; size=6 bbWeight=0.50 PerfScore 1.00
+ pop {r4,r5,r6,r7,r8,r9,r11,pc}
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
G_M57109_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0 r6] +[r4]
add r5, r4, 20
@@ -170,7 +169,7 @@ G_M57109_IG09: ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0020 {r
mov r1, r0
; gcrRegs +[r1]
cmp r5, 0
- beq SHORT G_M57109_IG22
+ beq SHORT G_M57109_IG15
mov r0, r5
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -184,86 +183,51 @@ G_M57109_IG09: ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0020 {r
;; size=30 bbWeight=0.50 PerfScore 6.50
G_M57109_IG10: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r5]
- add sp, 12
- pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
- ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M57109_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0020 {r5}, gcvars, byref
+ pop {r4,r5,r6,r7,r8,r9,r11,pc}
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M57109_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0020 {r5}, gcvars, byref, isz
; gcrRegs -[r0] +[r4 r6-r7]
; byrRegs +[r5]
- mov r10, 0
- ldr r3, [r4+0x0C]
+ mov r9, 0
+ ldr r0, [r4+0x0C]
+ ; gcrRegs +[r0]
+ ldr r3, [r4+0x14]
; gcrRegs +[r3]
- str r3, [sp+0x04]
- ; GC ptr vars +{V29}
- ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M57109_IG12: ; bbWeight=4, gcVars=00000010 {V29}, gcrefRegs=00D8 {r3 r4 r6 r7}, byrefRegs=0020 {r5}, gcvars, byref, isz
- add r9, r9, -1
- cmp r9, 0
- beq SHORT G_M57109_IG14
- ;; size=10 bbWeight=4 PerfScore 12.00
-G_M57109_IG13: ; bbWeight=2, gcrefRegs=00D8 {r3 r4 r6 r7}, byrefRegs=0020 {r5}, byref, isz
- cmp r9, 1
- beq SHORT G_M57109_IG15
- b SHORT G_M57109_IG16
- ;; size=8 bbWeight=2 PerfScore 6.00
-G_M57109_IG14: ; bbWeight=2, gcrefRegs=00D8 {r3 r4 r6 r7}, byrefRegs=0020 {r5}, byref, isz
- ldr r0, [r4+0x14]
- ; gcrRegs +[r0]
- b SHORT G_M57109_IG17
- ;; size=4 bbWeight=2 PerfScore 4.00
-G_M57109_IG15: ; bbWeight=2, gcrefRegs=00D8 {r3 r4 r6 r7}, byrefRegs=0020 {r5}, byref, isz
- ; gcrRegs -[r0]
- ldr r0, [r4+0x18]
- ; gcrRegs +[r0]
- b SHORT G_M57109_IG17
- ;; size=4 bbWeight=2 PerfScore 4.00
-G_M57109_IG16: ; bbWeight=2, gcrefRegs=00D8 {r3 r4 r6 r7}, byrefRegs=0020 {r5}, byref
- ; gcrRegs -[r0]
- movs r0, 0
- ;; size=2 bbWeight=2 PerfScore 2.00
-G_M57109_IG17: ; bbWeight=4, gcrefRegs=00D9 {r0 r3 r4 r6 r7}, byrefRegs=0020 {r5}, byref, isz
- ; gcrRegs +[r0]
- cmp r0, 0
- bne SHORT G_M57109_IG21
- mov r0, r3
- mov r1, r9
- ldr r2, [r3]
- ldr r2, [r2+0x30]
- ldr r2, [r2+0x10]
- blx r2 // <unknown method>
+ cmp r3, 0
+ bne SHORT G_M57109_IG14
+ movs r1, 0
+ ldr r3, [r0]
; gcrRegs -[r3]
+ ldr r3, [r3+0x30]
+ ldr r3, [r3+0x10]
+ blx r3 // <unknown method>
cmp r0, 0
- beq SHORT G_M57109_IG19
- ;; size=20 bbWeight=4 PerfScore 40.00
-G_M57109_IG18: ; bbWeight=2, gcrefRegs=00D1 {r0 r4 r6 r7}, byrefRegs=0020 {r5}, byref
- ldr r0, [r0+0x04]
+ beq SHORT G_M57109_IG13
+ ;; size=26 bbWeight=0.50 PerfScore 6.00
+G_M57109_IG12: ; bbWeight=0.25, gcrefRegs=00D1 {r0 r4 r6 r7}, byrefRegs=0020 {r5}, byref
+ ldr r9, [r0+0x04]
+ ;; size=4 bbWeight=0.25 PerfScore 0.25
+G_M57109_IG13: ; bbWeight=0.50, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0020 {r5}, byref, isz
; gcrRegs -[r0]
- add r10, r0
- ;; size=4 bbWeight=2 PerfScore 4.00
-G_M57109_IG19: ; bbWeight=4, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0020 {r5}, byref, isz
- cmp r9, 0
- ldr r3, [sp+0x04] // [V29 tmp27]
- ; gcrRegs +[r3]
- bgt SHORT G_M57109_IG12
- ;; size=8 bbWeight=4 PerfScore 12.00
-G_M57109_IG20: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0020 {r5}, gcvars, byref, isz
- ; gcrRegs -[r3]
- ; GC ptr vars -{V29}
ldr r0, [r4+0x10]
- add r2, r0, r10
+ add r2, r0, r9
b SHORT G_M57109_IG04
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M57109_IG21: ; bbWeight=0.50, gcrefRegs=00C1 {r0 r6 r7}, byrefRegs=0020 {r5}, byref, isz
- ; gcrRegs -[r4] +[r0]
+G_M57109_IG14: ; bbWeight=0.50, gcrefRegs=00C8 {r3 r6 r7}, byrefRegs=0020 {r5}, byref, isz
+ ; gcrRegs -[r4] +[r3]
+ mov r0, r3
+ ; gcrRegs +[r0]
movw r3, 0xd1ff
+ ; gcrRegs -[r3]
movt r3, 0xd1ff
ldr r3, [r3]
+ ldr r2, [r0]
blx r3 // Microsoft.CodeAnalysis.SyntaxNode:get_EndPosition():int:this
; gcrRegs -[r0]
- add r2, r0, r10
+ add r2, r0, r9
b SHORT G_M57109_IG04
...
+38 (+76.00%) : 528188.dasm - System.Runtime.Tests.ControlledExecutionTests:RunInfiniteLoop():this (Tier0-FullOpts)
@@ -7,38 +7,55 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 18 ) ref -> r4 this class-hnd single-def <System.Runtime.Tests.ControlledExecutionTests>
-; V01 loc0 [V01,T00] ( 3, 24 ) int -> r0
+; V00 this [V00,T01] ( 6, 20 ) ref -> r4 this class-hnd single-def <System.Runtime.Tests.ControlledExecutionTests>
+; V01 loc0 [V01,T00] ( 6, 27 ) int -> r5
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
-G_M38489_IG01: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
+G_M38489_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push {r4,r5,r11,lr}
add r11, sp, 8
mov r4, r0
; gcrRegs +[r4]
- ;; size=10 bbWeight=8 PerfScore 24.00
-G_M38489_IG02: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=10 bbWeight=1 PerfScore 3.00
+G_M38489_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x08]
dmb 15
- adds r0, r0, 1
- str r0, [r4+0x08]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ands r0, r3
+ adds r5, r0, 1
+ str r5, [r4+0x08]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ ands r0, r5
cmp r0, 0
- bne SHORT G_M38489_IG02
+ bne SHORT G_M38489_IG03
movs r0, 0
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
; gcr arg pop 0
- b SHORT G_M38489_IG02
+ ;; size=38 bbWeight=1 PerfScore 14.00
+G_M38489_IG03: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r4+0x08]
+ dmb 15
+ adds r5, r0, 1
+ str r5, [r4+0x08]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ ands r0, r5
+ cmp r0, 0
+ bne SHORT G_M38489_IG03
+ movs r0, 0
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ ; gcr arg pop 0
+ b SHORT G_M38489_IG03
;; size=40 bbWeight=8 PerfScore 120.00
-; Total bytes of code 50, prolog size 10, PerfScore 144.00, instruction count 18, allocated bytes for code 50 (MethodHash=e35169a6) for method System.Runtime.Tests.ControlledExecutionTests:RunInfiniteLoop():this (Tier0-FullOpts)
+; Total bytes of code 88, prolog size 10, PerfScore 137.00, instruction count 32, allocated bytes for code 88 (MethodHash=e35169a6) for method System.Runtime.Tests.ControlledExecutionTests:RunInfiniteLoop():this (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -50,11 +67,11 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 50 (0x000032)
+ Function Length : 44 (0x0002c) Actual length = 88 (0x000058)
---- Epilog scopes ----
No epilogs
---- Unwind codes ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 30 pop {r4,r5,r11,lr} ; opsize 32
FF end
FF end
+46 (+76.67%) : 253823.dasm - System.Data.DataTableCollection:AssignName():System.String:this (Tier0-FullOpts)
@@ -8,10 +8,10 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 22 ) ref -> r4 this class-hnd single-def <System.Data.DataTableCollection>
+; V00 this [V00,T01] ( 10, 24.50) ref -> r4 this class-hnd single-def <System.Data.DataTableCollection>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 3, 34 ) ref -> r5 class-hnd exact "dup spill" <System.String>
+; V03 tmp1 [V03,T00] ( 5, 38 ) ref -> r5 class-hnd exact "dup spill" <System.String>
;
; Lcl frame size = 0
@@ -24,12 +24,13 @@ G_M26994_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M26994_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
b SHORT G_M26994_IG04
;; size=2 bbWeight=1 PerfScore 1.00
-G_M26994_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M26994_IG03: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x18]
adds r0, r0, 1
str r0, [r4+0x18]
- ;; size=6 bbWeight=2 PerfScore 6.00
-G_M26994_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M26994_IG07
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
+G_M26994_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x18]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -48,17 +49,47 @@ G_M26994_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcrRegs -[r0-r1]
cmp r0, 0
bge SHORT G_M26994_IG03
+ ;; size=36 bbWeight=1 PerfScore 14.00
+G_M26994_IG05: ; bbWeight=0.12, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r4]
+ b SHORT G_M26994_IG08
+ ;; size=2 bbWeight=0.12 PerfScore 0.12
+G_M26994_IG06: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r5] +[r4]
+ ldr r0, [r4+0x18]
+ adds r0, r0, 1
+ str r0, [r4+0x18]
+ ;; size=6 bbWeight=2 PerfScore 6.00
+G_M26994_IG07: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r4+0x18]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // System.Data.DataTableCollection:MakeName(int):System.String
+ ; gcrRegs +[r0]
+ mov r5, r0
+ ; gcrRegs +[r5]
+ mov r0, r4
+ mov r1, r5
+ ; gcrRegs +[r1]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0-r1]
+ cmp r0, 0
+ bge SHORT G_M26994_IG06
;; size=36 bbWeight=8 PerfScore 112.00
-G_M26994_IG05: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M26994_IG08: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
mov r0, r5
; gcrRegs +[r0]
;; size=2 bbWeight=1 PerfScore 1.00
-G_M26994_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M26994_IG09: ; bbWeight=1, epilog, nogc, extend
pop {r4,r5,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 60, prolog size 8, PerfScore 124.00, instruction count 23, allocated bytes for code 60 (MethodHash=52a6968d) for method System.Data.DataTableCollection:AssignName():System.String:this (Tier0-FullOpts)
+; Total bytes of code 106, prolog size 8, PerfScore 139.12, instruction count 42, allocated bytes for code 106 (MethodHash=52a6968d) for method System.Data.DataTableCollection:AssignName():System.String:this (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -70,7 +101,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 30 (0x0001e) Actual length = 60 (0x00003c)
+ Function Length : 53 (0x00035) Actual length = 106 (0x00006a)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+48 (+77.42%) : 245312.dasm - System.Configuration.XmlUtil:StrictReadToNextElement(int):this (Tier0-FullOpts)
@@ -8,11 +8,11 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 5, 14 ) ref -> r4 this class-hnd single-def <System.Configuration.XmlUtil>
-; V01 arg1 [V01,T03] ( 3, 4 ) int -> r5 single-def
+; V00 this [V00,T01] ( 8, 15.50) ref -> r4 this class-hnd single-def <System.Configuration.XmlUtil>
+; V01 arg1 [V01,T03] ( 4, 4.25) int -> r5 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 3, 48 ) ref -> r0 "argument with side effect"
-; V04 tmp2 [V04,T02] ( 3, 12 ) ref -> r0 "argument with side effect"
+; V03 tmp1 [V03,T00] ( 6, 54 ) ref -> r0 "argument with side effect"
+; V04 tmp2 [V04,T02] ( 6, 13.50) ref -> r0 "argument with side effect"
;
; Lcl frame size = 0
@@ -26,7 +26,7 @@ G_M3549_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M3549_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
b SHORT G_M3549_IG04
;; size=2 bbWeight=1 PerfScore 1.00
-G_M3549_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M3549_IG03: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x0C]
; gcrRegs +[r0]
ldr r3, [r0]
@@ -35,7 +35,7 @@ G_M3549_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
blx r3 // <unknown method>
; gcrRegs -[r0]
cmp r0, 1
- beq SHORT G_M3549_IG05
+ beq SHORT G_M3549_IG08
mov r0, r4
; gcrRegs +[r0]
mov r1, r5
@@ -44,8 +44,9 @@ G_M3549_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
ldr r3, [r3]
blx r3 // System.Configuration.XmlUtil:VerifyIgnorableNodeType(int):this
; gcrRegs -[r0]
- ;; size=30 bbWeight=2 PerfScore 26.00
-G_M3549_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M3549_IG07
+ ;; size=32 bbWeight=0.25 PerfScore 3.50
+G_M3549_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x0C]
; gcrRegs +[r0]
ldr r3, [r0]
@@ -55,13 +56,48 @@ G_M3549_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
cmp r0, 0
bne SHORT G_M3549_IG03
+ ;; size=14 bbWeight=1 PerfScore 7.00
+G_M3549_IG05: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r4]
+ b SHORT G_M3549_IG08
+ ;; size=2 bbWeight=0.06 PerfScore 0.06
+G_M3549_IG06: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r4]
+ ldr r0, [r4+0x0C]
+ ; gcrRegs +[r0]
+ ldr r3, [r0]
+ ldr r3, [r3+0x2C]
+ ldr r3, [r3+0x14]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ cmp r0, 1
+ beq SHORT G_M3549_IG08
+ mov r0, r4
+ ; gcrRegs +[r0]
+ mov r1, r5
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // System.Configuration.XmlUtil:VerifyIgnorableNodeType(int):this
+ ; gcrRegs -[r0]
+ ;; size=30 bbWeight=2 PerfScore 26.00
+G_M3549_IG07: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r4+0x0C]
+ ; gcrRegs +[r0]
+ ldr r3, [r0]
+ ldr r3, [r3+0x4C]
+ ldr r3, [r3+0x08]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ cmp r0, 0
+ bne SHORT G_M3549_IG06
;; size=14 bbWeight=8 PerfScore 56.00
-G_M3549_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M3549_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r4]
pop {r4,r5,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 62, prolog size 8, PerfScore 88.00, instruction count 26, allocated bytes for code 62 (MethodHash=eb85f222) for method System.Configuration.XmlUtil:StrictReadToNextElement(int):this (Tier0-FullOpts)
+; Total bytes of code 110, prolog size 8, PerfScore 98.56, instruction count 48, allocated bytes for code 110 (MethodHash=eb85f222) for method System.Configuration.XmlUtil:StrictReadToNextElement(int):this (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -73,7 +109,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
+ Function Length : 55 (0x00037) Actual length = 110 (0x00006e)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
librariestestsnotieredcompilation.run.linux.arm.Release.mch
-44 (-10.78%) : 175751.dasm - System.Xml.XmlConvertTests.EncodeDecodeTests:v3():int:this (FullOpts)
@@ -9,12 +9,12 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Xml.XmlConvertTests.EncodeDecodeTests>
-; V01 loc0 [V01,T06] ( 2, 5 ) ref -> r4 class-hnd exact single-def <ubyte[]>
-; V02 loc1 [V02,T02] ( 8, 14 ) ref -> r5 class-hnd <System.String>
-; V03 loc2 [V03,T00] ( 7, 25 ) int -> r6
+; V01 loc0 [V01,T10] ( 2, 2 ) ref -> r0 class-hnd exact single-def <ubyte[]>
+; V02 loc1 [V02,T01] ( 6, 6 ) ref -> r5 class-hnd <System.String>
+;* V03 loc2 [V03,T12] ( 0, 0 ) int -> zero-ref
;* V04 loc3 [V04 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T04] ( 4, 8 ) ref -> r4 class-hnd exact single-def "dup spill" <ubyte[]>
+; V06 tmp1 [V06,T00] ( 4, 8 ) ref -> r0 class-hnd exact single-def "dup spill" <ubyte[]>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V09 tmp4 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
@@ -23,12 +23,12 @@
;* V12 tmp7 [V12 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V13 tmp8 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V14 tmp9 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-; V15 tmp10 [V15,T01] ( 2, 16 ) ushort -> r7 "Inlining Arg"
+; V15 tmp10 [V15,T07] ( 2, 4 ) ushort -> r4 "Inlining Arg"
;* V16 tmp11 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
-; V17 tmp12 [V17,T03] ( 3, 12 ) ref -> r1 class-hnd exact "Inline stloc first use temp" <System.String>
+; V17 tmp12 [V17,T08] ( 3, 3 ) ref -> r1 class-hnd exact "Inline stloc first use temp" <System.String>
;* V18 tmp13 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V19 tmp14 [V19,T07] ( 3, 4 ) ref -> r1 class-hnd single-def "Inlining Arg" <System.String>
-; V20 tmp15 [V20,T05] ( 2, 8 ) byref -> r7 "field V07._reference (fldOffset=0x0)" P-INDEP
+; V19 tmp14 [V19,T02] ( 3, 4 ) ref -> r1 class-hnd single-def "Inlining Arg" <System.String>
+; V20 tmp15 [V20,T11] ( 2, 2 ) byref -> r4 "field V07._reference (fldOffset=0x0)" P-INDEP
;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x4)" P-INDEP
;* V22 tmp17 [V22 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp18 [V23 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x4)" P-INDEP
@@ -40,20 +40,20 @@
;* V29 tmp24 [V29 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x4)" P-INDEP
;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V31 tmp26 [V31 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x4)" P-INDEP
-; V32 tmp27 [V32,T08] ( 2, 4 ) ref -> r2 single-def "argument with side effect"
-; V33 tmp28 [V33,T09] ( 2, 4 ) ref -> r0 single-def "argument with side effect"
-; V34 tmp29 [V34,T10] ( 2, 4 ) ref -> r0 single-def "argument with side effect"
-; V35 tmp30 [V35,T11] ( 2, 4 ) ref -> r0 single-def "argument with side effect"
+; V32 tmp27 [V32,T03] ( 2, 4 ) ref -> r2 single-def "argument with side effect"
+; V33 tmp28 [V33,T04] ( 2, 4 ) ref -> r0 single-def "argument with side effect"
+; V34 tmp29 [V34,T05] ( 2, 4 ) ref -> r0 single-def "argument with side effect"
+; V35 tmp30 [V35,T06] ( 2, 4 ) ref -> r0 single-def "argument with side effect"
; V36 cse0 [V36,T13] ( 3, 1.50) ref -> r0 "CSE - moderate"
-; V37 cse1 [V37,T12] ( 3, 2.50) ref -> r0 "CSE - moderate"
+; V37 cse1 [V37,T09] ( 3, 2.50) ref -> r0 "CSE - moderate"
;
; Lcl frame size = 0
G_M51879_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr}
- add r11, sp, 16
+ push {r4,r5,r11,lr}
+ add r11, sp, 8
;; size=8 bbWeight=1 PerfScore 2.00
-G_M51879_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51879_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
movt r0, 0xd1ff
movs r1, 2
@@ -61,37 +61,20 @@ G_M51879_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[r0]
- mov r4, r0
- ; gcrRegs +[r4]
- movs r0, 113
- ; gcrRegs -[r0]
- strb r0, [r4+0x08]
- movs r0, 255
- strb r0, [r4+0x09]
- movw r5, 0xd1ff
- movt r5, 0xd1ff
- movs r6, 0
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M51879_IG03: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r5]
- cmp r6, 2
- bhi G_M51879_IG09
- movs r0, 2
- subs r0, r0, r6
- cmp r0, 2
- blo G_M51879_IG09
- add r0, r4, 8
- ; byrRegs +[r0]
- adds r7, r0, r6
- ; byrRegs +[r7]
+ movs r3, 113
+ strb r3, [r0+0x08]
+ movs r3, 255
+ strb r3, [r0+0x09]
+ add r4, r0, 8
+ ; byrRegs +[r4]
movs r0, 1
- ; byrRegs -[r0]
+ ; gcrRegs -[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ldrh r7, [r7]
- ; byrRegs -[r7]
+ ldrh r4, [r4]
+ ; byrRegs -[r4]
movs r0, 1
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -99,23 +82,18 @@ G_M51879_IG03: ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
; gcrRegs +[r0]
mov r1, r0
; gcrRegs +[r1]
- strh r7, [r1+0x08]
- mov r0, r5
+ strh r4, [r1+0x08]
+ movw r0, 0xd1ff
+ ; gcrRegs -[r0]
+ movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ; gcrRegs -[r1 r5]
+ ; gcrRegs -[r1] +[r0]
mov r5, r0
; gcrRegs +[r5]
- adds r6, r6, 2
- cmp r6, 2
- blt SHORT G_M51879_IG03
- ;; size=76 bbWeight=4 PerfScore 116.00
-G_M51879_IG04: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0 r4]
mov r0, r5
- ; gcrRegs +[r0]
movs r1, 1
movs r2, 0
movw r3, 0xd1ff
@@ -144,9 +122,9 @@ G_M51879_IG04: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
ldr r0, [r0]
; gcrRegs +[r0]
cmp r0, 0
- beq SHORT G_M51879_IG08
- ;; size=70 bbWeight=1 PerfScore 25.00
-G_M51879_IG05: ; bbWeight=0.50, gcrefRegs=0023 {r0 r1 r5}, byrefRegs=0000 {}, byref
+ beq SHORT G_M51879_IG04
+ ;; size=156 bbWeight=1 PerfScore 55.00
+G_M51879_IG03: ; bbWeight=0.50, gcrefRegs=0023 {r0 r1 r5}, byrefRegs=0000 {}, byref, isz
mov r2, r1
; gcrRegs +[r2]
movw r4, 0xd1ff
@@ -156,8 +134,23 @@ G_M51879_IG05: ; bbWeight=0.50, gcrefRegs=0023 {r0 r1 r5}, byrefRegs=0000
ldr r3, [r4]
blx r3 // <unknown method>
; gcrRegs -[r0 r2]
- ;; size=16 bbWeight=0.50 PerfScore 3.00
-G_M51879_IG06: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+ b SHORT G_M51879_IG05
+ ;; size=18 bbWeight=0.50 PerfScore 3.50
+G_M51879_IG04: ; bbWeight=0.50, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r1]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ ldr r0, [r0]
+ ; gcrRegs +[r0]
+ cmp r0, 0
+ beq SHORT G_M51879_IG05
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0-r1]
+ ;; size=26 bbWeight=0.50 PerfScore 4.50
+G_M51879_IG05: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -216,54 +209,27 @@ G_M51879_IG06: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
; gcrRegs -[r0]
movs r0, 1
;; size=152 bbWeight=1 PerfScore 50.00
-G_M51879_IG07: ; bbWeight=1, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,pc}
+G_M51879_IG06: ; bbWeight=1, epilog, nogc, extend
+ pop {r4,r5,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M51879_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r1 r5]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r0, [r0]
- ; gcrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M51879_IG06
- movw r4, 0xd1ff
- movt r4, 0xd1ff
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; gcrRegs -[r0-r1]
- b SHORT G_M51879_IG06
- ;; size=28 bbWeight=0.50 PerfScore 5.00
-G_M51879_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r5]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowArgumentOutOfRangeException()
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 408, prolog size 8, PerfScore 216.00, instruction count 142, allocated bytes for code 408 (MethodHash=89473558) for method System.Xml.XmlConvertTests.EncodeDecodeTests:v3():int:this (FullOpts)
+; Total bytes of code 364, prolog size 8, PerfScore 116.00, instruction count 124, allocated bytes for code 364 (MethodHash=89473558) for method System.Xml.XmlConvertTests.EncodeDecodeTests:v3():int:this (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 : 204 (0x000cc) Actual length = 408 (0x000198)
- ---- 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 : 182 (0x000b6) Actual length = 364 (0x00016c)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ A8 30 pop {r4,r5,r11,lr} ; opsize 32
FF end
FF end
-28 (-9.40%) : 144049.dasm - System.Buffers.Text.Tests.TestData+d__200:MoveNext():ubyte:this (FullOpts)
@@ -8,53 +8,56 @@
; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 15, 13.50) ref -> [sp+0x04] this class-hnd EH-live single-def <System.Buffers.Text.Tests.TestData+<get_SingleTestData>d__200>
+; V00 this [V00,T00] ( 14, 7.75) ref -> [sp+0x04] this class-hnd EH-live single-def <System.Buffers.Text.Tests.TestData+<get_SingleTestData>d__200>
; V01 loc0 [V01,T06] ( 4, 2.50) ubyte -> r0
; V02 loc1 [V02,T07] ( 3, 2.50) int -> r0 single-def
;* V03 loc2 [V03 ] ( 0, 0 ) long -> zero-ref
-; V04 loc3 [V04,T04] ( 3, 4.50) float -> f16
+; V04 loc3 [V04,T04] ( 3, 1 ) float -> f8
;# 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 exact "Inline return value spill temp" <System.Buffers.Text.Tests.TestData+<get_DoubleTestData>d__198>
-; V07 tmp2 [V07,T05] ( 4, 4 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Text.Tests.TestData+<get_DoubleTestData>d__198>
+; V07 tmp2 [V07,T05] ( 4, 4 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.Buffers.Text.Tests.TestData+<get_DoubleTestData>d__198>
;* V08 tmp3 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Buffers.Text.Tests.TestData+<get_DoubleTestData>d__198>
;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V10 tmp5 [V10,T01] ( 2, 8 ) double -> f0:f1 "argument with side effect"
-; V11 PSPSym [V11,T08] ( 1, 1 ) int -> [sp+0x14] do-not-enreg[V] "PSPSym"
-; V12 rat0 [V12 ] ( 1, 4 ) long -> [sp+0x08] multireg-ret "ReplaceWithLclVar is creating a new local variable"
-; V13 rat1 [V13,T02] ( 2, 6 ) int -> r0 "field V12.lo (fldOffset=0x0)" P-INDEP
-; V14 rat2 [V14,T03] ( 2, 6 ) int -> r1 "field V12.hi (fldOffset=0x4)" P-INDEP
-; TEMP_01 ref -> [r11-0x28]
+; V10 tmp5 [V10,T01] ( 2, 1 ) double -> f0:f1 "argument with side effect"
+; V11 PSPSym [V11,T09] ( 1, 1 ) int -> [sp+0x14] do-not-enreg[V] "PSPSym"
+; V12 cse0 [V12,T08] ( 5, 2 ) ref -> r0 multi-def "CSE - aggressive"
+;* V13 rat0 [V13 ] ( 0, 0 ) long -> zero-ref do-not-enreg[BR] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;* V14 rat1 [V14,T02] ( 0, 0 ) int -> zero-ref "field V13.lo (fldOffset=0x0)" P-DEP
+;* V15 rat2 [V15,T03] ( 0, 0 ) int -> zero-ref "field V13.hi (fldOffset=0x4)" P-DEP
+; V16 rat3 [V16 ] ( 1, 0.50) long -> [sp+0x08] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V17 rat4 [V17,T10] ( 2, 0.75) int -> r0 "field V16.lo (fldOffset=0x0)" P-INDEP
+; V18 rat5 [V18,T11] ( 2, 0.75) int -> r1 "field V16.hi (fldOffset=0x4)" P-INDEP
+; TEMP_01 ref -> [r11-0x20]
;
; Lcl frame size = 24
G_M24716_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push {r4,r5,r11,lr}
- vpush {d8-d8}
sub sp, 24
- add r11, sp, 40
+ add r11, sp, 32
movs r1, 0
str r1, [sp] // [TEMP_01]
- add r1, sp, 48
+ add r1, sp, 40
str r1, [sp+0x14] // [V11 PSPSym]
str r0, [sp+0x04] // [V00 this]
; GC ptr vars +{V00}
- mov r4, r0
- ; gcrRegs +[r4]
- ;; size=26 bbWeight=1 PerfScore 10.00
-G_M24716_IG02: ; bbWeight=1, gcVars=00000001 {V00}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr r0, [r4+0x08]
+ mov r5, r0
+ ; gcrRegs +[r5]
+ ;; size=22 bbWeight=1 PerfScore 9.00
+G_M24716_IG02: ; bbWeight=1, gcVars=00000001 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr r0, [r5+0x08]
cmp r0, 0
beq SHORT G_M24716_IG04
;; size=6 bbWeight=1 PerfScore 3.00
-G_M24716_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M24716_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
cmp r0, 1
- beq SHORT G_M24716_IG09
+ beq SHORT G_M24716_IG07
movs r0, 0
- b SHORT G_M24716_IG11
+ b SHORT G_M24716_IG12
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M24716_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M24716_IG04: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
mov r0, -1
- str r0, [r4+0x08]
+ str r0, [r5+0x08]
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
@@ -62,26 +65,26 @@ G_M24716_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
blx r3 // CORINFO_HELP_NEWFAST
; gcrRegs +[r0]
; gcr arg pop 0
- mov r5, r0
- ; gcrRegs +[r5]
+ mov r4, r0
+ ; gcrRegs +[r4]
mvn r3, 1
- str r3, [r5+0x14]
+ str r3, [r4+0x14]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // <unknown method>
; gcrRegs -[r0]
; gcr arg pop 0
- str r0, [r5+0x18]
- mov r0, r5
+ str r0, [r4+0x18]
+ mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ; gcrRegs -[r5]
+ ; gcrRegs -[r4]
; gcr arg pop 0
str r0, [sp]
- adds r0, r4, 4
+ adds r0, r5, 4
; gcrRegs -[r0]
; byrRegs +[r0]
ldr r1, [sp]
@@ -91,16 +94,38 @@ G_M24716_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
- b SHORT G_M24716_IG09
+ b SHORT G_M24716_IG07
;; size=76 bbWeight=0.50 PerfScore 13.00
-G_M24716_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4]
- ldr r4, [sp+0x04] // [V00 this]
- ; gcrRegs +[r4]
- ldr r0, [r4+0x04]
+G_M24716_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ mov r0, -1
+ str r0, [r5+0x08]
+ ldr r0, [r5+0x04]
+ ; gcrRegs +[r0]
+ cmp r0, 0
+ beq SHORT G_M24716_IG11
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ ; gcr arg pop 0
+ b SHORT G_M24716_IG11
+ ;; size=26 bbWeight=0.50 PerfScore 5.00
+G_M24716_IG06: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ vstr s8, [r5+0x0C]
+ movs r0, 1
+ str r0, [r5+0x08]
+ b SHORT G_M24716_IG12
+ ;; size=10 bbWeight=0.50 PerfScore 2.00
+G_M24716_IG07: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ mvn r0, 2
+ str r0, [r5+0x08]
+ b SHORT G_M24716_IG09
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M24716_IG08: ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r5+0x04]
; gcrRegs +[r0]
movw r4, 0xd1ff
- ; gcrRegs -[r4]
movt r4, 0xd1ff
ldr r3, [r4]
blx r3 // <unknown method>
@@ -114,81 +139,46 @@ G_M24716_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_LNG2DBL
; gcr arg pop 0
- vcvt.d2f s16, d0
- vmov.f2i r0, s16
+ vcvt.d2f s8, d0
+ vmov.f2i r0, s8
mvn r3, 0x80000000
ands r0, r3
cmp r0, 0x7f800000
- ldr r4, [sp+0x04] // [V00 this]
- ; gcrRegs +[r4]
+ bne SHORT G_M24716_IG06
+ ;; size=54 bbWeight=0.25 PerfScore 4.25
+G_M24716_IG09: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r5+0x04]
+ ; gcrRegs +[r0]
+ movw r4, 0xd1ff
+ movt r4, 0xd1ff
+ ldr r3, [r4]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ ; gcr arg pop 0
+ cmp r0, 0
bne SHORT G_M24716_IG08
- ;; size=58 bbWeight=2 PerfScore 38.00
-G_M24716_IG06: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r4+0x04]
- ; gcrRegs +[r0]
- movw r4, 0xd1ff
- ; gcrRegs -[r4]
- movt r4, 0xd1ff
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; gcrRegs -[r0]
- ; gcr arg pop 0
- cmp r0, 0
- bne SHORT G_M24716_IG05
- ;; size=18 bbWeight=4 PerfScore 28.00
-G_M24716_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov r0, -1
- ldr r4, [sp+0x04]
- ; gcrRegs +[r4]
- str r0, [r4+0x08]
- ldr r0, [r4+0x04]
- ; gcrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M24716_IG10
- ldr r0, [r4+0x04]
- movw r4, 0xd1ff
- ; gcrRegs -[r4]
- movt r4, 0xd1ff
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; gcrRegs -[r0]
- ; gcr arg pop 0
- ldr r4, [sp+0x04] // [V00 this]
- ; gcrRegs +[r4]
- b SHORT G_M24716_IG10
- ;; size=32 bbWeight=0.50 PerfScore 6.50
-G_M24716_IG08: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- vstr s16, [r4+0x0C]
- movs r0, 1
- str r0, [r4+0x08]
- b SHORT G_M24716_IG11
- ;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M24716_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- mvn r0, 2
- str r0, [r4+0x08]
- b SHORT G_M24716_IG06
- ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M24716_IG10: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ;; size=18 bbWeight=0.50 PerfScore 3.50
+G_M24716_IG10: ; bbWeight=0.06, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M24716_IG05
+ ;; size=2 bbWeight=0.06 PerfScore 0.06
+G_M24716_IG11: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
movs r0, 0
- str r0, [r4+0x04]
+ str r0, [r5+0x04]
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M24716_IG11: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
- ; gcrRegs -[r4]
+G_M24716_IG12: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+ ; gcrRegs -[r5]
; GC ptr vars -{V00}
add sp, 24
- vpop {d8-d8}
pop {r4,r5,r11,pc}
- ;; size=10 bbWeight=1 PerfScore 3.00
...
-36 (-9.00%) : 284921.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5155_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -8,16 +8,16 @@
; 2 inlinees with PGO data; 4 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 15, 27 ) ref -> r4 class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
-; V01 arg1 [V01,T11] ( 4, 4.00) struct ( 8) [sp+0x30] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
+; V00 arg0 [V00,T01] ( 16, 10.00) ref -> r4 class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
+; V01 arg1 [V01,T07] ( 4, 4.00) struct ( 8) [sp+0x28] 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,T02] ( 10, 32 ) int -> r8 single-def
-; V04 loc2 [V04,T12] ( 8, 5.00) int -> r7
+; V03 loc1 [V03,T04] ( 9, 6.50) int -> r8 single-def
+; V04 loc2 [V04,T08] ( 8, 5.00) int -> r7
;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.ReadOnlySpan`1[ushort]>
-; V06 loc4 [V06,T00] ( 15, 75.50) int -> r9
+; V06 loc4 [V06,T00] ( 6, 3.50) int -> r9
;* V07 loc5 [V07 ] ( 0, 0 ) int -> zero-ref
-; V08 loc6 [V08,T07] ( 8, 23 ) int -> r10
-; V09 loc7 [V09,T08] ( 3, 17 ) int -> [sp+0x04]
+; V08 loc6 [V08,T05] ( 5, 3.00) int -> r10
+;* V09 loc7 [V09,T06] ( 0, 0 ) int -> zero-ref
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V12 tmp2 [V12 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -29,47 +29,48 @@
;* V18 tmp8 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V19 tmp9 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp10 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp11 [V21,T14] ( 4, 4 ) int -> r6 "Inlining Arg"
-; V22 tmp12 [V22,T13] ( 5, 5 ) int -> r5 "Inlining Arg"
+; V21 tmp11 [V21,T11] ( 4, 4 ) int -> r6 "Inlining Arg"
+; V22 tmp12 [V22,T09] ( 5, 5 ) int -> r9 "Inlining Arg"
;* V23 tmp13 [V23 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V24 tmp14 [V24,T17] ( 4, 2 ) int -> r0 single-def "Inline stloc first use temp"
-; V25 tmp15 [V25,T15] ( 3, 3 ) ref -> r3 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V26 tmp16 [V26,T16] ( 2, 3 ) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp17 [V27,T10] ( 6, 6.00) int -> r6 single-def "field V02._length (fldOffset=0x4)" P-INDEP
+; V24 tmp14 [V24,T18] ( 4, 2 ) int -> r0 single-def "Inline stloc first use temp"
+; V25 tmp15 [V25,T12] ( 3, 3 ) ref -> r3 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V26 tmp16 [V26,T20] ( 2, 1.25) byref -> r5 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V27 tmp17 [V27,T10] ( 6, 4.25) int -> r6 single-def "field V02._length (fldOffset=0x4)" P-INDEP
;* V28 tmp18 [V28 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp19 [V29 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x4)" P-INDEP
;* V30 tmp20 [V30 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
;* V31 tmp21 [V31 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x4)" P-INDEP
;* V32 tmp22 [V32 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
;* V33 tmp23 [V33 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x4)" P-INDEP
-; V34 tmp24 [V34,T01] ( 3, 48 ) ref -> r0 "arr expr"
-;* V35 tmp25 [V35,T09] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V36 tmp26 [V36,T19] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
-; V37 tmp27 [V37,T18] ( 2, 2.00) ref -> r0 single-def "arr expr"
-; V38 cse0 [V38,T04] ( 2, 16 ) ref -> r0 "CSE - aggressive"
-; V39 cse1 [V39,T06] ( 4, 24.50) int -> r1 "CSE - aggressive"
-; V40 cse2 [V40,T05] ( 4, 24.50) byref -> r0 "CSE - aggressive"
+; V34 tmp24 [V34,T02] ( 3, 6.00) ref -> r0 "arr expr"
+;* V35 tmp25 [V35,T03] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V36 tmp26 [V36,T13] ( 3, 3.00) ref -> r0 single-def "arr expr"
+; V37 tmp27 [V37,T19] ( 2, 2.00) ref -> r3 single-def "arr expr"
+; V38 cse0 [V38,T21] ( 2, 0.50) int -> r0 "CSE - moderate"
+; V39 cse1 [V39,T14] ( 2, 2.00) ref -> r0 "CSE - moderate"
+; V40 cse2 [V40,T17] ( 2, 0.50) byref -> r0 "CSE - moderate"
+; V41 cse3 [V41,T22] ( 2, 0.50) int -> r0 "CSE - moderate"
+; V42 cse4 [V42,T16] ( 3, 3.00) int -> r2 "CSE - moderate"
+; V43 cse5 [V43,T15] ( 3, 3.00) byref -> r0 "CSE - moderate"
;
-; Lcl frame size = 12
+; Lcl frame size = 4
G_M19571_IG01: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r1,r2}
- push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 12
- add r11, sp, 40
+ push {r3,r4,r5,r6,r7,r8,r9,r10,r11,lr}
+ add r11, sp, 32
mov r4, r0
; gcrRegs +[r4]
- ;; size=14 bbWeight=1.00 PerfScore 5.00
+ ;; size=12 bbWeight=1.00 PerfScore 4.00
G_M19571_IG02: ; bbWeight=1.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r5, [sp+0x30]
+ ldr r5, [sp+0x28]
; byrRegs +[r5]
- ldr r6, [sp+0x34]
+ ldr r6, [sp+0x2C]
ldr r7, [r4+0x34]
mov r8, r7
- mov r9, 0
cmp r8, r6
- bhi G_M19571_IG23
- ;; size=18 bbWeight=1.00 PerfScore 7.00
+ bhi G_M19571_IG21
+ ;; size=14 bbWeight=1.00 PerfScore 6.00
G_M19571_IG03: ; bbWeight=1.00, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
subs r0, r6, r8
cmp r0, 0
@@ -86,21 +87,16 @@ G_M19571_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5},
blx r3 // <unknown method>
; gcr arg pop 0
;; size=28 bbWeight=0.50 PerfScore 4.00
-G_M19571_IG05: ; bbWeight=1.00, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref
- mov r10, 0
- movs r3, 0
- str r3, [sp+0x04] // [V09 loc7]
- ;; size=8 bbWeight=1.00 PerfScore 3.00
-G_M19571_IG06: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
+G_M19571_IG05: ; bbWeight=1.00, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
ldr r1, [r4+0x18]
; gcrRegs +[r1]
ldr r1, [r1+0x04]
; gcrRegs -[r1]
subs r1, r1, 1
- cmp r1, r9
- bgt SHORT G_M19571_IG08
- ;; size=10 bbWeight=8 PerfScore 40.00
-G_M19571_IG07: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref
+ cmp r1, 0
+ bgt SHORT G_M19571_IG07
+ ;; size=10 bbWeight=1.00 PerfScore 5.00
+G_M19571_IG06: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref
ldr r1, [r4+0x18]
; gcrRegs +[r1]
ldr r1, [r1+0x04]
@@ -108,76 +104,72 @@ G_M19571_IG07: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, by
lsls r1, r1, 1
add r0, r4, 24
; byrRegs +[r0]
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- ldr r2, [r2]
- blx r2 // System.Array:Resize[int](byref,int)
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // System.Array:Resize[int](byref,int)
; byrRegs -[r0]
; gcr arg pop 0
- ;; size=22 bbWeight=2 PerfScore 16.00
-G_M19571_IG08: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
+ ;; size=22 bbWeight=0.25 PerfScore 2.00
+G_M19571_IG07: ; bbWeight=1.00, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
+ ldr r0, [r4+0x18]
+ ; gcrRegs +[r0]
+ movs r3, 0
+ ldr r2, [r0+0x04]
+ cmp r3, r2
+ bhs SHORT G_M19571_IG20
+ adds r0, 8
+ ; gcrRegs -[r0]
+ ; byrRegs +[r0]
+ ;; size=12 bbWeight=1.00 PerfScore 6.00
+G_M19571_IG08: ; bbWeight=1.00, gcrefRegs=0010 {r4}, byrefRegs=0021 {r0 r5}, byref, isz
+ str r3, [r0]
+ movs r3, 1
+ cmp r3, r2
+ bhs SHORT G_M19571_IG20
+ str r8, [r0+0x04]
+ mov r9, 2
+ mov r10, r3
+ cmp r8, 0
+ ble SHORT G_M19571_IG14
+ ;; size=24 bbWeight=1.00 PerfScore 9.00
+G_M19571_IG09: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
+ ; byrRegs -[r0]
+ add r0, r8, -1
+ cmp r0, r6
+ bhs SHORT G_M19571_IG20
+ lsl r0, r8, 1
+ subs r0, r0, 2
+ ldrh r0, [r5+r0]
+ cmp r0, 10
+ beq SHORT G_M19571_IG14
+ ;; size=20 bbWeight=0.25 PerfScore 2.00
+G_M19571_IG10: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r5]
+ add r10, r10, -1
+ cmp r10, 0
+ blt SHORT G_M19571_IG18
+ ;; size=10 bbWeight=0.50 PerfScore 1.50
+G_M19571_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ add r9, r9, -1
ldr r0, [r4+0x18]
; gcrRegs +[r0]
ldr r1, [r0+0x04]
cmp r9, r1
- bhs G_M19571_IG22
+ bhs SHORT G_M19571_IG20
adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
- lsl r2, r9, 2
- ldr r3, [sp+0x04] // [V09 loc7]
- str r3, [r0+r2]
- add r9, r9, 1
- cmp r9, r1
- bhs SHORT G_M19571_IG22
- lsl r3, r9, 2
- str r8, [r0+r3]
- add r9, r9, 1
- mov r3, r8
- add r10, r10, 1
- cmp r8, 0
- ble SHORT G_M19571_IG10
- ;; size=52 bbWeight=8 PerfScore 144.00
-G_M19571_IG09: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0021 {r0 r5}, byref, isz
- add r2, r8, -1
- cmp r2, r6
- bhs SHORT G_M19571_IG22
- lsl r2, r8, 1
- subs r2, r2, 2
- ldrh r2, [r5+r2]
- cmp r2, 10
- bne SHORT G_M19571_IG12
- ;; size=20 bbWeight=2 PerfScore 16.00
-G_M19571_IG10: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- ; byrRegs -[r0]
- cmp r10, 0
- str r3, [sp+0x04] // [V09 loc7]
- ble SHORT G_M19571_IG06
- ;; size=8 bbWeight=4 PerfScore 12.00
-G_M19571_IG11: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r5]
- b SHORT G_M19571_IG16
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M19571_IG12: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
- ; byrRegs +[r0]
- add r10, r10, -1
- cmp r10, 0
- blt SHORT G_M19571_IG20
- ;; size=10 bbWeight=0.50 PerfScore 1.50
-G_M19571_IG13: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0001 {r0}, byref, isz
- add r9, r9, -1
- cmp r9, r1
- bhs SHORT G_M19571_IG22
lsl r1, r9, 2
ldr r7, [r0+r1]
cmp r7, r6
- bhi SHORT G_M19571_IG23
- ;; size=18 bbWeight=0.50 PerfScore 3.50
-G_M19571_IG14: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ bhi SHORT G_M19571_IG21
+ ;; size=24 bbWeight=0.50 PerfScore 5.00
+G_M19571_IG12: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
subs r0, r6, r7
cmp r0, 0
- bge SHORT G_M19571_IG15
+ bge SHORT G_M19571_IG13
movw r0, 0xd1ff
movt r0, 0xd1ff
...
+38 (+76.00%) : 213959.dasm - System.Runtime.Tests.ControlledExecutionTests:RunInfiniteLoop():this (FullOpts)
@@ -7,38 +7,55 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 18 ) ref -> r4 this class-hnd single-def <System.Runtime.Tests.ControlledExecutionTests>
-; V01 loc0 [V01,T00] ( 3, 24 ) int -> r0
+; V00 this [V00,T01] ( 6, 20 ) ref -> r4 this class-hnd single-def <System.Runtime.Tests.ControlledExecutionTests>
+; V01 loc0 [V01,T00] ( 6, 27 ) int -> r5
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
-G_M38489_IG01: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
+G_M38489_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push {r4,r5,r11,lr}
add r11, sp, 8
mov r4, r0
; gcrRegs +[r4]
- ;; size=10 bbWeight=8 PerfScore 24.00
-G_M38489_IG02: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=10 bbWeight=1 PerfScore 3.00
+G_M38489_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x08]
dmb 15
- adds r0, r0, 1
- str r0, [r4+0x08]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ands r0, r3
+ adds r5, r0, 1
+ str r5, [r4+0x08]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ ands r0, r5
cmp r0, 0
- bne SHORT G_M38489_IG02
+ bne SHORT G_M38489_IG03
movs r0, 0
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
; gcr arg pop 0
- b SHORT G_M38489_IG02
+ ;; size=38 bbWeight=1 PerfScore 14.00
+G_M38489_IG03: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r4+0x08]
+ dmb 15
+ adds r5, r0, 1
+ str r5, [r4+0x08]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ ands r0, r5
+ cmp r0, 0
+ bne SHORT G_M38489_IG03
+ movs r0, 0
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ ; gcr arg pop 0
+ b SHORT G_M38489_IG03
;; size=40 bbWeight=8 PerfScore 120.00
-; Total bytes of code 50, prolog size 10, PerfScore 144.00, instruction count 18, allocated bytes for code 50 (MethodHash=e35169a6) for method System.Runtime.Tests.ControlledExecutionTests:RunInfiniteLoop():this (FullOpts)
+; Total bytes of code 88, prolog size 10, PerfScore 137.00, instruction count 32, allocated bytes for code 88 (MethodHash=e35169a6) for method System.Runtime.Tests.ControlledExecutionTests:RunInfiniteLoop():this (FullOpts)
; ============================================================
Unwind Info:
@@ -50,11 +67,11 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 50 (0x000032)
+ Function Length : 44 (0x0002c) Actual length = 88 (0x000058)
---- Epilog scopes ----
No epilogs
---- Unwind codes ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 30 pop {r4,r5,r11,lr} ; opsize 32
FF end
FF end
+46 (+76.67%) : 90640.dasm - System.Data.DataTableCollection:AssignName():System.String:this (FullOpts)
@@ -8,10 +8,10 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 22 ) ref -> r4 this class-hnd single-def <System.Data.DataTableCollection>
+; V00 this [V00,T01] ( 10, 24.50) ref -> r4 this class-hnd single-def <System.Data.DataTableCollection>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 3, 34 ) ref -> r5 class-hnd exact "dup spill" <System.String>
+; V03 tmp1 [V03,T00] ( 5, 38 ) ref -> r5 class-hnd exact "dup spill" <System.String>
;
; Lcl frame size = 0
@@ -24,12 +24,13 @@ G_M26994_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M26994_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
b SHORT G_M26994_IG04
;; size=2 bbWeight=1 PerfScore 1.00
-G_M26994_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M26994_IG03: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x18]
adds r0, r0, 1
str r0, [r4+0x18]
- ;; size=6 bbWeight=2 PerfScore 6.00
-G_M26994_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M26994_IG07
+ ;; size=8 bbWeight=0.25 PerfScore 1.00
+G_M26994_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x18]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -48,17 +49,47 @@ G_M26994_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcrRegs -[r0-r1]
cmp r0, 0
bge SHORT G_M26994_IG03
+ ;; size=36 bbWeight=1 PerfScore 14.00
+G_M26994_IG05: ; bbWeight=0.12, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r4]
+ b SHORT G_M26994_IG08
+ ;; size=2 bbWeight=0.12 PerfScore 0.12
+G_M26994_IG06: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r5] +[r4]
+ ldr r0, [r4+0x18]
+ adds r0, r0, 1
+ str r0, [r4+0x18]
+ ;; size=6 bbWeight=2 PerfScore 6.00
+G_M26994_IG07: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r4+0x18]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // System.Data.DataTableCollection:MakeName(int):System.String
+ ; gcrRegs +[r0]
+ mov r5, r0
+ ; gcrRegs +[r5]
+ mov r0, r4
+ mov r1, r5
+ ; gcrRegs +[r1]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0-r1]
+ cmp r0, 0
+ bge SHORT G_M26994_IG06
;; size=36 bbWeight=8 PerfScore 112.00
-G_M26994_IG05: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M26994_IG08: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
mov r0, r5
; gcrRegs +[r0]
;; size=2 bbWeight=1 PerfScore 1.00
-G_M26994_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M26994_IG09: ; bbWeight=1, epilog, nogc, extend
pop {r4,r5,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 60, prolog size 8, PerfScore 124.00, instruction count 23, allocated bytes for code 60 (MethodHash=52a6968d) for method System.Data.DataTableCollection:AssignName():System.String:this (FullOpts)
+; Total bytes of code 106, prolog size 8, PerfScore 139.12, instruction count 42, allocated bytes for code 106 (MethodHash=52a6968d) for method System.Data.DataTableCollection:AssignName():System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -70,7 +101,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 30 (0x0001e) Actual length = 60 (0x00003c)
+ Function Length : 53 (0x00035) Actual length = 106 (0x00006a)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+48 (+77.42%) : 88314.dasm - System.Configuration.XmlUtil:StrictReadToNextElement(int):this (FullOpts)
@@ -8,11 +8,11 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 5, 14 ) ref -> r4 this class-hnd single-def <System.Configuration.XmlUtil>
-; V01 arg1 [V01,T03] ( 3, 4 ) int -> r5 single-def
+; V00 this [V00,T01] ( 8, 15.50) ref -> r4 this class-hnd single-def <System.Configuration.XmlUtil>
+; V01 arg1 [V01,T03] ( 4, 4.25) int -> r5 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 3, 48 ) ref -> r0 "argument with side effect"
-; V04 tmp2 [V04,T02] ( 3, 12 ) ref -> r0 "argument with side effect"
+; V03 tmp1 [V03,T00] ( 6, 54 ) ref -> r0 "argument with side effect"
+; V04 tmp2 [V04,T02] ( 6, 13.50) ref -> r0 "argument with side effect"
;
; Lcl frame size = 0
@@ -26,7 +26,7 @@ G_M3549_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M3549_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
b SHORT G_M3549_IG04
;; size=2 bbWeight=1 PerfScore 1.00
-G_M3549_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M3549_IG03: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x0C]
; gcrRegs +[r0]
ldr r3, [r0]
@@ -35,7 +35,7 @@ G_M3549_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
blx r3 // <unknown method>
; gcrRegs -[r0]
cmp r0, 1
- beq SHORT G_M3549_IG05
+ beq SHORT G_M3549_IG08
mov r0, r4
; gcrRegs +[r0]
mov r1, r5
@@ -44,8 +44,9 @@ G_M3549_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
ldr r3, [r3]
blx r3 // System.Configuration.XmlUtil:VerifyIgnorableNodeType(int):this
; gcrRegs -[r0]
- ;; size=30 bbWeight=2 PerfScore 26.00
-G_M3549_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M3549_IG07
+ ;; size=32 bbWeight=0.25 PerfScore 3.50
+G_M3549_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x0C]
; gcrRegs +[r0]
ldr r3, [r0]
@@ -55,13 +56,48 @@ G_M3549_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
cmp r0, 0
bne SHORT G_M3549_IG03
+ ;; size=14 bbWeight=1 PerfScore 7.00
+G_M3549_IG05: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r4]
+ b SHORT G_M3549_IG08
+ ;; size=2 bbWeight=0.06 PerfScore 0.06
+G_M3549_IG06: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r4]
+ ldr r0, [r4+0x0C]
+ ; gcrRegs +[r0]
+ ldr r3, [r0]
+ ldr r3, [r3+0x2C]
+ ldr r3, [r3+0x14]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ cmp r0, 1
+ beq SHORT G_M3549_IG08
+ mov r0, r4
+ ; gcrRegs +[r0]
+ mov r1, r5
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // System.Configuration.XmlUtil:VerifyIgnorableNodeType(int):this
+ ; gcrRegs -[r0]
+ ;; size=30 bbWeight=2 PerfScore 26.00
+G_M3549_IG07: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ldr r0, [r4+0x0C]
+ ; gcrRegs +[r0]
+ ldr r3, [r0]
+ ldr r3, [r3+0x4C]
+ ldr r3, [r3+0x08]
+ blx r3 // <unknown method>
+ ; gcrRegs -[r0]
+ cmp r0, 0
+ bne SHORT G_M3549_IG06
;; size=14 bbWeight=8 PerfScore 56.00
-G_M3549_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M3549_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r4]
pop {r4,r5,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 62, prolog size 8, PerfScore 88.00, instruction count 26, allocated bytes for code 62 (MethodHash=eb85f222) for method System.Configuration.XmlUtil:StrictReadToNextElement(int):this (FullOpts)
+; Total bytes of code 110, prolog size 8, PerfScore 98.56, instruction count 48, allocated bytes for code 110 (MethodHash=eb85f222) for method System.Configuration.XmlUtil:StrictReadToNextElement(int):this (FullOpts)
; ============================================================
Unwind Info:
@@ -73,7 +109,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
+ Function Length : 55 (0x00037) Actual length = 110 (0x00006e)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
realworld.run.linux.arm.checked.mch
-40 (-35.09%) : 1832.dasm - BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)
@@ -8,17 +8,17 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 4, 4 ) byref -> r4 single-def
-; V01 arg1 [V01,T04] ( 4, 4 ) byref -> r5 single-def
-; V02 arg2 [V02,T05] ( 4, 4 ) byref -> r6 single-def
+; V00 arg0 [V00,T00] ( 4, 4 ) byref -> r4 single-def
+; V01 arg1 [V01,T01] ( 4, 4 ) byref -> r5 single-def
+; V02 arg2 [V02,T02] ( 4, 4 ) byref -> r6 single-def
;* V03 loc0 [V03,T09] ( 0, 0 ) int -> zero-ref
-; V04 loc1 [V04,T06] ( 2, 5 ) byref -> r6 single-def
-; V05 loc2 [V05,T07] ( 2, 5 ) byref -> r3 single-def
-; V06 loc3 [V06,T00] ( 7, 25 ) int -> r2
-; V07 loc4 [V07,T01] ( 4, 16 ) byref -> r0
-; V08 loc5 [V08,T02] ( 3, 12 ) byref -> lr
+; V04 loc1 [V04,T05] ( 2, 2 ) byref -> r6 single-def
+; V05 loc2 [V05,T06] ( 2, 2 ) byref -> r3 single-def
+;* V06 loc3 [V06,T08] ( 0, 0 ) int -> zero-ref
+; V07 loc4 [V07,T03] ( 4, 4 ) byref -> r2
+; V08 loc5 [V08,T04] ( 3, 3 ) byref -> r6
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 cse0 [V10,T08] ( 2, 5 ) byref -> r1 hoist "CSE - aggressive"
+; V10 cse0 [V10,T07] ( 2, 2 ) byref -> r2 "CSE - aggressive"
;
; Lcl frame size = 4
@@ -47,41 +47,26 @@ G_M31235_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0070 {r4 r5 r6}
; gcr arg pop 0
adds r3, r5, 4
; byrRegs +[r3]
- movs r2, 0
- ldrsb r1, [r4]
- add r1, r4, 28
- ; byrRegs +[r1]
- ;; size=34 bbWeight=1 PerfScore 13.00
-G_M31235_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=004A {r1 r3 r6}, byref, isz
- ; byrRegs -[r4-r5]
- movs r0, 20
- mul r0, r2, r0
- adds r0, r1, r0
- ; byrRegs +[r0]
- lsl lr, r2, 4
- add lr, r6
- ; byrRegs +[lr]
- ldr r12, [r0+0x10]
- lsls r4, r2, 2
- str r12, [r3+r4]
- ldr r12, [r0]
- str r12, [lr]
- ldr r12, [r0+0x04]
- str r12, [lr+0x04]
- ldr r12, [r0+0x08]
- str r12, [lr+0x08]
- vldr s8, [r0+0x0C]
- vstr s8, [lr+0x0C]
- adds r2, r2, 1
- cmp r2, 0
- ble SHORT G_M31235_IG03
- ;; size=62 bbWeight=4 PerfScore 76.00
-G_M31235_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[r0-r1 r3 r6 lr]
+ ldrsb r2, [r4]
+ add r2, r4, 28
+ ; byrRegs +[r2]
+ ldr r1, [r2+0x10]
+ str r1, [r3]
+ ldr r3, [r2]
+ ; byrRegs -[r3]
+ str r3, [r6]
+ ldr r3, [r2+0x04]
+ str r3, [r6+0x04]
+ ldr r3, [r2+0x08]
+ str r3, [r6+0x08]
+ vldr s8, [r2+0x0C]
+ vstr s8, [r6+0x0C]
+ ;; size=56 bbWeight=1 PerfScore 22.00
+G_M31235_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 114, prolog size 14, PerfScore 95.00, instruction count 38, allocated bytes for code 114 (MethodHash=076885fc) for method BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)
+; Total bytes of code 74, prolog size 14, PerfScore 28.00, instruction count 28, allocated bytes for code 74 (MethodHash=076885fc) for method BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)
; ============================================================
Unwind Info:
@@ -93,7 +78,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 57 (0x00039) Actual length = 114 (0x000072)
+ Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
-10 (-6.41%) : 14709.dasm - FSharp.Compiler.TypedTreePickle+p_tcaug@1979-16:Invoke(Microsoft.FSharp.Core.Unit,FSharp.Compiler.TypedTreePickle+WriterState):Microsoft.FSharp.Core.Unit:this (FullOpts)
@@ -10,74 +10,65 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <FSharp.Compiler.TypedTreePickle+p_tcaug@1979-16>
;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.FSharp.Core.Unit>
-; V02 arg2 [V02,T05] ( 3, 10 ) ref -> r4 class-hnd single-def <FSharp.Compiler.TypedTreePickle+WriterState>
+; V02 arg2 [V02,T03] ( 3, 3 ) ref -> r2 class-hnd single-def <FSharp.Compiler.TypedTreePickle+WriterState>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 4, 25 ) int -> r5 "Inline stloc first use temp"
+;* V04 tmp1 [V04,T05] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V05 tmp2 [V05,T06] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V06 tmp3 [V06,T00] ( 7,112 ) ref -> r6 class-hnd exact "Inlining Arg" <FSharp.Compiler.IO.ByteBuffer>
-; V07 tmp4 [V07,T04] ( 3, 24 ) int -> r7 "Inline stloc first use temp"
+; V06 tmp3 [V06,T00] ( 7, 14 ) ref -> r4 class-hnd exact "Inlining Arg" <FSharp.Compiler.IO.ByteBuffer>
+; V07 tmp4 [V07,T04] ( 3, 3 ) int -> r5 "Inline stloc first use temp"
; V08 tmp5 [V08,T07] ( 3, 0 ) ref -> r4 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V09 tmp6 [V09,T01] ( 3, 48 ) ref -> r0 "arr expr"
-; V10 tmp7 [V10,T02] ( 3, 48 ) int -> r3 "index expr"
+; V09 tmp6 [V09,T01] ( 3, 6 ) ref -> r0 "arr expr"
+; V10 tmp7 [V10,T02] ( 3, 6 ) int -> r3 "index expr"
; V11 tmp8 [V11,T08] ( 2, 0 ) ref -> r1 "argument with side effect"
;
; Lcl frame size = 0
G_M15044_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r11,lr}
- add r11, sp, 16
- mov r4, r2
+ push {r4,r5,r11,lr}
+ add r11, sp, 8
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M15044_IG02: ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r2]
+ ldr r4, [r2+0x04]
; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
-G_M15044_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- movs r5, 0
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M15044_IG03: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- ldr r6, [r4+0x04]
- ; gcrRegs +[r6]
- ldrb r0, [r6+0x0D]
+ ldrb r0, [r4+0x0D]
cmp r0, 0
- bne SHORT G_M15044_IG07
- ldr r0, [r6+0x08]
- adds r7, r0, 1
- mov r0, r6
+ bne SHORT G_M15044_IG05
+ ldr r0, [r4+0x08]
+ adds r5, r0, 1
+ mov r0, r4
; gcrRegs +[r0]
- mov r1, r7
+ mov r1, r5
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ; gcrRegs -[r0]
- ldr r0, [r6+0x04]
+ ; gcrRegs -[r0 r2]
+ ldr r0, [r4+0x04]
; gcrRegs +[r0]
- ldr r3, [r6+0x08]
+ ldr r3, [r4+0x08]
ldr r2, [r0+0x04]
cmp r3, r2
- bhs SHORT G_M15044_IG06
+ bhs SHORT G_M15044_IG04
adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
movs r2, 0
strb r2, [r0+r3]
- str r7, [r6+0x08]
- adds r5, r5, 1
- cmp r5, 1
- bne SHORT G_M15044_IG03
- ;; size=52 bbWeight=8 PerfScore 192.00
-G_M15044_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r4 r6]
- ; byrRegs -[r0]
+ str r5, [r4+0x08]
movs r0, 0
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M15044_IG05: ; bbWeight=1, epilog, nogc, extend
- pop {r4,r5,r6,r7,r11,pc}
+ ; byrRegs -[r0]
+ ;; size=48 bbWeight=1 PerfScore 22.00
+G_M15044_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop {r4,r5,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M15044_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M15044_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[r4]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_RNGCHKFAIL
;; size=10 bbWeight=0 PerfScore 0.00
-G_M15044_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M15044_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
@@ -112,7 +103,7 @@ G_M15044_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bkpt
;; size=76 bbWeight=0 PerfScore 0.00
-; Total bytes of code 156, prolog size 8, PerfScore 198.00, instruction count 57, allocated bytes for code 156 (MethodHash=4234c53b) for method FSharp.Compiler.TypedTreePickle+p_tcaug@1979-16:Invoke(Microsoft.FSharp.Core.Unit,FSharp.Compiler.TypedTreePickle+WriterState):Microsoft.FSharp.Core.Unit:this (FullOpts)
+; Total bytes of code 146, prolog size 8, PerfScore 25.00, instruction count 52, allocated bytes for code 146 (MethodHash=4234c53b) for method FSharp.Compiler.TypedTreePickle+p_tcaug@1979-16:Invoke(Microsoft.FSharp.Core.Unit,FSharp.Compiler.TypedTreePickle+WriterState):Microsoft.FSharp.Core.Unit:this (FullOpts)
; ============================================================
Unwind Info:
@@ -124,7 +115,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 78 (0x0004e) Actual length = 156 (0x00009c)
+ Function Length : 73 (0x00049) Actual length = 146 (0x000092)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -132,7 +123,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ A8 30 pop {r4,r5,r11,lr} ; opsize 32
FF end
FF end
-2 (-2.86%) : 10354.dasm - FSharp.Compiler.NameResolution+MakeCtorGroup@243:Invoke(FSharp.Compiler.Infos+MethInfo):int:this (FullOpts)
@@ -11,11 +11,13 @@
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <FSharp.Compiler.NameResolution+MakeCtorGroup@243>
; V01 arg1 [V01,T03] ( 3, 3 ) ref -> r1 class-hnd single-def <FSharp.Compiler.Infos+MethInfo>
; V02 loc0 [V02,T04] ( 3, 2.50) ref -> r0 class-hnd exact single-def <Microsoft.FSharp.Collections.FSharpList`1[int]>
-; V03 loc1 [V03,T02] ( 4, 9 ) int -> r3
-; V04 loc2 [V04,T00] ( 4, 12.50) ref -> r0 class-hnd <Microsoft.FSharp.Collections.FSharpList`1[int]>
-; V05 loc3 [V05,T01] ( 3, 12 ) ref -> r2 class-hnd <Microsoft.FSharp.Collections.FSharpList`1[int]>
+; V03 loc1 [V03,T02] ( 4, 9 ) int -> r0
+; V04 loc2 [V04,T00] ( 6, 13.50) ref -> registers class-hnd <Microsoft.FSharp.Collections.FSharpList`1[int]>
+; V05 loc3 [V05,T01] ( 5, 13 ) ref -> registers class-hnd <Microsoft.FSharp.Collections.FSharpList`1[int]>
;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V08 cse0 [V08,T05] ( 3, 2.50) ref -> r3 "CSE - aggressive"
+; V09 cse1 [V09,T06] ( 2, 1 ) int -> r0 "CSE - moderate"
;
; Lcl frame size = 0
@@ -46,31 +48,29 @@ G_M3240_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
G_M3240_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3240_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[r0]
- movs r3, 0
+G_M3240_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[r0 r3]
+ ldr r0, [r0+0x08]
+ ; gcrRegs -[r0]
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3240_IG06: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- ldr r2, [r0+0x04]
+G_M3240_IG06: ; bbWeight=4, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz
+ ldr r2, [r3+0x04]
; gcrRegs +[r2]
cmp r2, 0
beq SHORT G_M3240_IG07
- ldr r0, [r0+0x08]
- ; gcrRegs -[r0]
- adds r3, r3, r0
- bvs SHORT G_M3240_IG09
- mov r0, r2
- ; gcrRegs +[r0]
+ ldr r3, [r3+0x08]
+ ; gcrRegs -[r3]
+ adds r0, r0, r3
+ bvs SHORT G_M3240_IG08
+ mov r3, r2
+ ; gcrRegs +[r3]
b SHORT G_M3240_IG06
;; size=16 bbWeight=4 PerfScore 32.00
-G_M3240_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0 r2]
- mov r0, r3
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M3240_IG08: ; bbWeight=0.50, epilog, nogc, extend
+G_M3240_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[r2-r3]
pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3240_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M3240_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_OVERFLOW
@@ -78,7 +78,7 @@ G_M3240_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR
bkpt
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 70, prolog size 6, PerfScore 45.50, instruction count 28, allocated bytes for code 70 (MethodHash=fc34f357) for method FSharp.Compiler.NameResolution+MakeCtorGroup@243:Invoke(FSharp.Compiler.Infos+MethInfo):int:this (FullOpts)
+; Total bytes of code 68, prolog size 6, PerfScore 45.00, instruction count 27, allocated bytes for code 68 (MethodHash=fc34f357) for method FSharp.Compiler.NameResolution+MakeCtorGroup@243:Invoke(FSharp.Compiler.Infos+MethInfo):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -90,7 +90,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 70 (0x000046)
+ Function Length : 34 (0x00022) Actual length = 68 (0x000044)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+34 (+70.83%) : 34954.dasm - System.Management.Automation.FunctionInfo:get_Options():int:this (FullOpts)
@@ -8,12 +8,13 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 5, 15 ) ref -> r0 this class-hnd <System.Management.Automation.FunctionInfo>
+; V00 this [V00,T04] ( 7, 17 ) ref -> r0 this class-hnd <System.Management.Automation.FunctionInfo>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T03] ( 3, 17 ) ref -> r1 single-def "CASTCLASS eval op1"
-; V03 tmp2 [V03,T04] ( 3, 17 ) int -> r2 "fgMakeTemp is creating a new local variable"
-; V04 tmp3 [V04,T00] ( 4, 25 ) ref -> r0 class-hnd "spilling QMark2" <System.Management.Automation.FunctionInfo>
+; V02 tmp1 [V02,T02] ( 6, 19.12) ref -> r1 "CASTCLASS eval op1"
+; V03 tmp2 [V03,T03] ( 6, 19.12) int -> r2 "fgMakeTemp is creating a new local variable"
+; V04 tmp3 [V04,T00] ( 8, 29.12) ref -> r0 class-hnd "spilling QMark2" <System.Management.Automation.FunctionInfo>
; V05 cse0 [V05,T01] ( 3, 20 ) ref -> r1 "CSE - aggressive"
+; V06 cse1 [V06,T05] ( 3, 2.50) ref -> r1 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -21,14 +22,14 @@ G_M40934_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push {r11,lr}
mov r11, sp
;; size=6 bbWeight=1 PerfScore 2.00
-G_M40934_IG02: ; bbWeight=8, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M40934_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
ldr r1, [r0+0x10]
; gcrRegs +[r1]
cmp r1, 0
- beq SHORT G_M40934_IG06
- ;; size=6 bbWeight=8 PerfScore 24.00
-G_M40934_IG03: ; bbWeight=4, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+ beq SHORT G_M40934_IG09
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M40934_IG03: ; bbWeight=0.50, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
mov r0, r1
; gcrRegs +[r0]
@@ -37,8 +38,33 @@ G_M40934_IG03: ; bbWeight=4, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byre
movt r2, 0xd1ff
cmp r3, r2
beq SHORT G_M40934_IG05
+ ;; size=16 bbWeight=0.50 PerfScore 3.00
+G_M40934_IG04: ; bbWeight=0.06, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0]
+ mov r0, r2
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_CHKCASTCLASS_SPECIAL
+ ; gcrRegs -[r1] +[r0]
+ ; gcr arg pop 0
+ ;; size=12 bbWeight=0.06 PerfScore 0.25
+G_M40934_IG05: ; bbWeight=8, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ldr r1, [r0+0x10]
+ ; gcrRegs +[r1]
+ cmp r1, 0
+ beq SHORT G_M40934_IG09
+ ;; size=6 bbWeight=8 PerfScore 24.00
+G_M40934_IG06: ; bbWeight=4, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0]
+ mov r0, r1
+ ; gcrRegs +[r0]
+ ldr r3, [r0]
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ cmp r3, r2
+ beq SHORT G_M40934_IG08
;; size=16 bbWeight=4 PerfScore 24.00
-G_M40934_IG04: ; bbWeight=0.50, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+G_M40934_IG07: ; bbWeight=0.50, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
mov r0, r2
movw r3, 0xd1ff
@@ -47,18 +73,18 @@ G_M40934_IG04: ; bbWeight=0.50, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, b
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M40934_IG05: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M40934_IG02
+G_M40934_IG08: ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M40934_IG05
;; size=2 bbWeight=4 PerfScore 4.00
-G_M40934_IG06: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
+G_M40934_IG09: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
ldr r0, [r0+0x54]
; gcrRegs -[r0]
;; size=2 bbWeight=1 PerfScore 1.00
-G_M40934_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M40934_IG10: ; bbWeight=1, epilog, nogc, extend
pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 48, prolog size 6, PerfScore 58.00, instruction count 18, allocated bytes for code 48 (MethodHash=b2d36019) for method System.Management.Automation.FunctionInfo:get_Options():int:this (FullOpts)
+; Total bytes of code 82, prolog size 6, PerfScore 64.25, instruction count 31, allocated bytes for code 82 (MethodHash=b2d36019) for method System.Management.Automation.FunctionInfo:get_Options():int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -70,7 +96,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 24 (0x00018) Actual length = 48 (0x000030)
+ Function Length : 41 (0x00029) Actual length = 82 (0x000052)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+34 (+73.91%) : 29844.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetSwitchBinder(Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.SwitchBinder (FullOpts)
@@ -8,8 +8,8 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 6, 22 ) ref -> r4 class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
-; V01 loc0 [V01,T01] ( 3, 13 ) ref -> r0 class-hnd <Microsoft.CodeAnalysis.CSharp.SwitchBinder>
+; V00 arg0 [V00,T00] ( 10, 24.50) ref -> r4 class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
+; V01 loc0 [V01,T01] ( 5, 14.50) ref -> r0 class-hnd <Microsoft.CodeAnalysis.CSharp.SwitchBinder>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 4
@@ -23,10 +23,11 @@ G_M1427_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M1427_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
b SHORT G_M1427_IG04
;; size=2 bbWeight=1 PerfScore 1.00
-G_M1427_IG03: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M1427_IG03: ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r4, [r4+0x08]
- ;; size=2 bbWeight=2 PerfScore 2.00
-G_M1427_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M1427_IG08
+ ;; size=4 bbWeight=0.25 PerfScore 0.50
+G_M1427_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
mov r1, r4
; gcrRegs +[r1]
movw r0, 0xd1ff
@@ -37,18 +38,43 @@ G_M1427_IG04: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
cmp r4, 0
- beq SHORT G_M1427_IG06
- ;; size=24 bbWeight=8 PerfScore 64.00
-G_M1427_IG05: ; bbWeight=4, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz
+ beq SHORT G_M1427_IG10
+ ;; size=24 bbWeight=1 PerfScore 8.00
+G_M1427_IG05: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz
cmp r0, 0
beq SHORT G_M1427_IG03
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M1427_IG06: ; bbWeight=0.12, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r4]
+ b SHORT G_M1427_IG10
+ ;; size=2 bbWeight=0.12 PerfScore 0.12
+G_M1427_IG07: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0] +[r4]
+ ldr r4, [r4+0x08]
+ ;; size=2 bbWeight=2 PerfScore 2.00
+G_M1427_IG08: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ mov r1, r4
+ ; gcrRegs +[r1]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs -[r1] +[r0]
+ ; gcr arg pop 0
+ cmp r4, 0
+ beq SHORT G_M1427_IG10
+ ;; size=24 bbWeight=8 PerfScore 64.00
+G_M1427_IG09: ; bbWeight=4, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz
+ cmp r0, 0
+ beq SHORT G_M1427_IG07
;; size=4 bbWeight=4 PerfScore 8.00
-G_M1427_IG06: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M1427_IG10: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r4]
pop {r3,r4,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 46, prolog size 10, PerfScore 79.00, instruction count 16, allocated bytes for code 46 (MethodHash=85d7fa6c) for method Microsoft.CodeAnalysis.CSharp.Binder:GetSwitchBinder(Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.SwitchBinder (FullOpts)
+; Total bytes of code 80, prolog size 10, PerfScore 88.62, instruction count 29, allocated bytes for code 80 (MethodHash=85d7fa6c) for method Microsoft.CodeAnalysis.CSharp.Binder:GetSwitchBinder(Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.SwitchBinder (FullOpts)
; ============================================================
Unwind Info:
@@ -60,7 +86,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 46 (0x00002e)
+ Function Length : 40 (0x00028) Actual length = 80 (0x000050)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+48 (+82.76%) : 8858.dasm - FSharp.Compiler.TypedTreeOps:accFreeInTypesLeftToRight(FSharp.Compiler.TcGlobals+TcGlobals,ubyte,ubyte,Microsoft.FSharp.Collections.FSharpList1[FSharp.Compiler.TypedTree+Typar],Microsoft.FSharp.Collections.FSharpList1[FSharp.Compiler.TypedTree+TType]):Microsoft.FSharp.Collections.FSharpList`1FSharp.Compiler.TypedTree+Typar
@@ -8,66 +8,93 @@
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 3, 6 ) ref -> r5 class-hnd single-def <FSharp.Compiler.TcGlobals+TcGlobals>
-; V01 arg1 [V01,T04] ( 3, 6 ) ubyte -> r6 single-def
-; V02 arg2 [V02,T05] ( 3, 6 ) ubyte -> r7 single-def
-; V03 arg3 [V03,T02] ( 5, 11 ) ref -> r3 class-hnd <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar]>
-; V04 arg4 [V04,T01] ( 3, 16 ) ref -> r4 class-hnd <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]>
+; V00 arg0 [V00,T05] ( 4, 7 ) ref -> r5 class-hnd single-def <FSharp.Compiler.TcGlobals+TcGlobals>
+; V01 arg1 [V01,T08] ( 3, 3 ) ubyte -> r1 single-def
+; V02 arg2 [V02,T09] ( 3, 3 ) ubyte -> r2 single-def
+; V03 arg3 [V03,T02] ( 7, 13 ) ref -> r3 class-hnd <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar]>
+; V04 arg4 [V04,T01] ( 6, 19 ) ref -> r4 class-hnd <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]>
;* V05 loc0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]>
-; V06 loc1 [V06,T06] ( 2, 8 ) ref -> r2 class-hnd exact <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]>
-; V07 loc2 [V07,T07] ( 2, 8 ) ref -> r1 class-hnd <FSharp.Compiler.TypedTree+TType>
+; V06 loc1 [V06,T03] ( 4, 10 ) ref -> lr class-hnd exact <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]>
+; V07 loc2 [V07,T04] ( 4, 10 ) ref -> r6 class-hnd <FSharp.Compiler.TypedTree+TType>
; V08 OutArgs [V08 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 cse0 [V09,T00] ( 3, 20 ) ref -> r2 "CSE - aggressive"
+; V09 cse0 [V09,T00] ( 3, 20 ) ref -> lr "CSE - aggressive"
+; V10 cse1 [V10,T10] ( 3, 3 ) ref -> lr "CSE - aggressive"
+; V11 cse2 [V11,T06] ( 3, 6 ) int -> r7 "CSE - aggressive"
+; V12 cse3 [V12,T07] ( 3, 6 ) int -> r8 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 12
-G_M38869_IG01: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r6,r7,r11,lr}
- add r11, sp, 24
+G_M38869_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push {r4,r5,r6,r7,r8,r11,lr}
+ sub sp, 12
+ add r11, sp, 32
mov r5, r0
; gcrRegs +[r5]
- mov r6, r1
- mov r7, r2
- ldr r4, [sp+0x20]
+ ldr r4, [sp+0x28]
; gcrRegs +[r4]
- ;; size=16 bbWeight=8 PerfScore 48.00
-G_M38869_IG02: ; bbWeight=8, gcrefRegs=0038 {r3 r4 r5}, byrefRegs=0000 {}, byref, isz
+ ;; size=14 bbWeight=1 PerfScore 5.00
+G_M38869_IG02: ; bbWeight=1, gcrefRegs=0038 {r3 r4 r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r3]
- ldr r2, [r4+0x08]
- ; gcrRegs +[r2]
- cmp r2, 0
- beq SHORT G_M38869_IG04
- ;; size=6 bbWeight=8 PerfScore 24.00
-G_M38869_IG03: ; bbWeight=4, gcrefRegs=003C {r2 r3 r4 r5}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r4+0x04]
- ; gcrRegs +[r1]
- mov r4, r2
- str r1, [sp]
- uxtb r2, r7
- ; gcrRegs -[r2]
- uxtb r1, r6
- ; gcrRegs -[r1]
+ ldr lr, [r4+0x08]
+ ; gcrRegs +[lr]
+ cmp lr, 0
+ beq SHORT G_M38869_IG05
+ ldr r6, [r4+0x04]
+ ; gcrRegs +[r6]
+ mov r4, lr
+ str r6, [sp]
+ uxtb r7, r2
+ mov r2, r7
+ uxtb r8, r1
+ mov r1, r8
mov r0, r5
; gcrRegs +[r0]
movw lr, 0xd1ff
+ ; gcrRegs -[lr]
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // <unknown method>
- ; gcrRegs -[r3]
+ ; gcrRegs -[r3 r6]
mov r3, r0
; gcrRegs +[r3]
- b SHORT G_M38869_IG02
+ ;; size=44 bbWeight=1 PerfScore 16.00
+G_M38869_IG03: ; bbWeight=8, gcrefRegs=0038 {r3 r4 r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0]
+ ldr lr, [r4+0x08]
+ ; gcrRegs +[lr]
+ cmp lr, 0
+ beq SHORT G_M38869_IG05
+ ;; size=10 bbWeight=8 PerfScore 24.00
+G_M38869_IG04: ; bbWeight=4, gcrefRegs=4038 {r3 r4 r5 lr}, byrefRegs=0000 {}, byref, isz
+ ldr r6, [r4+0x04]
+ ; gcrRegs +[r6]
+ mov r4, lr
+ str r6, [sp]
+ mov r2, r7
+ mov r1, r8
+ mov r0, r5
+ ; gcrRegs +[r0]
+ movw lr, 0xd1ff
+ ; gcrRegs -[lr]
+ movt lr, 0xd1ff
+ ldr lr, [lr]
+ blx lr // <unknown method>
+ ; gcrRegs -[r3 r6]
+ mov r3, r0
+ ; gcrRegs +[r3]
+ b SHORT G_M38869_IG03
;; size=30 bbWeight=4 PerfScore 48.00
-G_M38869_IG04: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref
+G_M38869_IG05: ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref
; gcrRegs -[r0 r4-r5]
mov r0, r3
; gcrRegs +[r0]
;; size=2 bbWeight=1 PerfScore 1.00
-G_M38869_IG05: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r4,r5,r6,r7,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
+G_M38869_IG06: ; bbWeight=1, epilog, nogc, extend
+ add sp, 12
+ pop {r4,r5,r6,r7,r8,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 58, prolog size 8, PerfScore 122.00, instruction count 23, allocated bytes for code 58 (MethodHash=5afc682a) for method FSharp.Compiler.TypedTreeOps:accFreeInTypesLeftToRight(FSharp.Compiler.TcGlobals+TcGlobals,ubyte,ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar] (FullOpts)
+; Total bytes of code 106, prolog size 10, PerfScore 96.00, instruction count 39, allocated bytes for code 106 (MethodHash=5afc682a) for method FSharp.Compiler.TypedTreeOps:accFreeInTypesLeftToRight(FSharp.Compiler.TcGlobals+TcGlobals,ubyte,ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar] (FullOpts)
; ============================================================
Unwind Info:
@@ -79,11 +106,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 29 (0x0001d) Actual length = 58 (0x00003a)
+ Function Length : 53 (0x00035) Actual length = 106 (0x00006a)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 FC pop {r2,r3,r4,r5,r6,r7,r11,lr} ; opsize 32
- FF end
+ 03 add sp, sp, #12 ; opsize 16
+ A9 F0 pop {r4,r5,r6,r7,r8,r11,lr} ; opsize 32
FF end
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.linux.arm.checked.mch |
10,836 |
19 |
10,780 |
37 |
-500 |
+1,464,868 |
| benchmarks.run_pgo.linux.arm.checked.mch |
23,955 |
105 |
23,812 |
38 |
-2,010 |
+4,103,288 |
| benchmarks.run_tiered.linux.arm.checked.mch |
9,401 |
18 |
9,345 |
38 |
-490 |
+1,394,748 |
| coreclr_tests.run.linux.arm.checked.mch |
35,990 |
828 |
34,855 |
307 |
-27,692 |
+6,532,728 |
| libraries.crossgen2.linux.arm.checked.mch |
17,298 |
50 |
17,214 |
34 |
-640 |
+3,331,992 |
| libraries.pmi.linux.arm.checked.mch |
23,072 |
85 |
22,930 |
57 |
-1,136 |
+5,002,702 |
| libraries_tests.run.linux.arm.Release.mch |
72,175 |
877 |
71,037 |
261 |
-16,842 |
+23,342,796 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
22,499 |
124 |
22,263 |
112 |
-3,284 |
+6,455,484 |
| realworld.run.linux.arm.checked.mch |
5,419 |
26 |
5,382 |
11 |
-568 |
+1,873,504 |
|
220,645 |
2,132 |
217,618 |
895 |
-53,162 |
+53,502,110 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.arm.checked.mch |
45,937 |
5,279 |
40,658 |
1,423 (3.00%) |
1,461 (3.08%) |
| benchmarks.run_pgo.linux.arm.checked.mch |
159,214 |
58,093 |
101,121 |
3,553 (2.18%) |
3,611 (2.22%) |
| benchmarks.run_tiered.linux.arm.checked.mch |
71,315 |
38,077 |
33,238 |
1,124 (1.55%) |
1,162 (1.60%) |
| coreclr_tests.run.linux.arm.checked.mch |
471,122 |
259,093 |
212,029 |
7,618 (1.59%) |
7,915 (1.65%) |
| libraries.crossgen2.linux.arm.checked.mch |
195,287 |
14 |
195,273 |
1 (0.00%) |
154 (0.08%) |
| libraries.pmi.linux.arm.checked.mch |
269,754 |
6 |
269,748 |
9,463 (3.39%) |
9,670 (3.46%) |
| libraries_tests.run.linux.arm.Release.mch |
707,528 |
442,850 |
264,678 |
17,522 (2.41%) |
18,246 (2.51%) |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
272,581 |
21,565 |
251,016 |
35,091 (11.40%) |
35,270 (11.46%) |
| realworld.run.linux.arm.checked.mch |
36,008 |
153 |
35,855 |
1,734 (4.59%) |
1,796 (4.75%) |
|
2,228,746 |
825,130 |
1,403,616 |
77,529 (3.36%) |
79,285 (3.44%) |
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: 15030000 (overridden on cmd)
Total bytes of diff: 16494368 (overridden on cmd)
Total bytes of delta: 1464368 (9.74 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
18936 : 29672.dasm (65.05 % of base)
11072 : 25598.dasm (103.86 % of base)
10204 : 13269.dasm (38.14 % of base)
8262 : 38197.dasm (79.95 % of base)
6024 : 36789.dasm (36.37 % of base)
6024 : 18940.dasm (99.21 % of base)
6008 : 24295.dasm (72.98 % of base)
5880 : 13118.dasm (90.74 % of base)
5854 : 12945.dasm (59.10 % of base)
5818 : 10723.dasm (85.63 % of base)
5660 : 19305.dasm (72.58 % of base)
5490 : 18554.dasm (110.02 % of base)
5480 : 39255.dasm (34.34 % of base)
5292 : 21233.dasm (76.47 % of base)
5224 : 2351.dasm (66.19 % of base)
5178 : 24666.dasm (82.93 % of base)
5046 : 25550.dasm (82.94 % of base)
4602 : 25846.dasm (101.19 % of base)
4600 : 13446.dasm (54.12 % of base)
4214 : 2068.dasm (90.66 % of base)
Top file improvements (bytes):
-300 : 6214.dasm (-3.83 % of base)
-72 : 646.dasm (-9.18 % of base)
-52 : 24726.dasm (-6.28 % of base)
-12 : 12710.dasm (-5.17 % of base)
-10 : 13412.dasm (-0.94 % of base)
-10 : 21476.dasm (-1.60 % of base)
-8 : 21494.dasm (-12.90 % of base)
-8 : 26838.dasm (-1.37 % of base)
-6 : 663.dasm (-2.04 % of base)
-4 : 25154.dasm (-0.60 % of base)
-2 : 13184.dasm (-1.79 % of base)
-2 : 7712.dasm (-1.54 % of base)
-2 : 24882.dasm (-0.42 % of base)
-2 : 111.dasm (-1.61 % of base)
-2 : 1942.dasm (-1.22 % of base)
-2 : 1973.dasm (-1.61 % of base)
-2 : 19781.dasm (-0.44 % of base)
-2 : 223.dasm (-1.56 % of base)
-2 : 45913.dasm (-0.34 % of base)
80 total files with Code Size differences (19 improved, 61 regressed), 20 unchanged.
Top method regressions (bytes):
18936 (65.05 % of base) : 29672.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
11072 (103.86 % of base) : 25598.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
10204 (38.14 % of base) : 13269.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
8262 (79.95 % of base) : 38197.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
6024 (36.37 % of base) : 36789.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
6024 (99.21 % of base) : 18940.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (FullOpts)
6008 (72.98 % of base) : 24295.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
5880 (90.74 % of base) : 13118.dasm - BilinearTest:BilinearInterpol_Vector(double[],double[],double,double,double[],double,double,double):double[]:this (FullOpts)
5854 (59.10 % of base) : 12945.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
5818 (85.63 % of base) : 10723.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (FullOpts)
5660 (72.58 % of base) : 19305.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)
5490 (110.02 % of base) : 18554.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (FullOpts)
5480 (34.34 % of base) : 39255.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
5292 (76.47 % of base) : 21233.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.Location,int) (FullOpts)
5224 (66.19 % of base) : 2351.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
5178 (82.93 % of base) : 24666.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)
5046 (82.94 % of base) : 25550.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
4602 (101.19 % of base) : 25846.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
4600 (54.12 % of base) : 13446.dasm - Jil.Deserialize.Methods:SkipWithLeadCharThunkReader(byref,int) (FullOpts)
4214 (90.66 % of base) : 2068.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
Top method improvements (bytes):
-300 (-3.83 % of base) : 6214.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-72 (-9.18 % of base) : 646.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
-52 (-6.28 % of base) : 24726.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:GetNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax],byref,ubyte,ubyte):System.Runtime.CompilerServices.StrongBox`1[Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.String]]:this (FullOpts)
-12 (-5.17 % of base) : 12710.dasm - Sigil.Impl.LinqAlternative+<_Where>d__2`1[int]:MoveNext():ubyte:this (FullOpts)
-10 (-0.94 % of base) : 13412.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:ReadNullable(System.Reflection.MemberInfo,System.Type):this (FullOpts)
-10 (-1.60 % of base) : 21476.dasm - System.MathBenchmarks.Double:MaxTest() (FullOpts)
-8 (-1.37 % of base) : 26838.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetFields>d__31:MoveNext():ubyte:this (FullOpts)
-8 (-12.90 % of base) : 21494.dasm - Struct.SpanWrapper:SumSpanWrapper(Struct.SpanWrapper`1[int]):int:this (FullOpts)
-6 (-2.04 % of base) : 663.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-4 (-0.60 % of base) : 25154.dasm - Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__80:MoveNext():ubyte:this (FullOpts)
-2 (-0.42 % of base) : 24882.dasm - Microsoft.CodeAnalysis.PEModule:ContainsNoPiaLocalTypes():ubyte:this (FullOpts)
-2 (-1.56 % of base) : 223.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (FullOpts)
-2 (-1.22 % of base) : 1942.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int]:MoveNext():ubyte:this (FullOpts)
-2 (-1.61 % of base) : 111.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (FullOpts)
-2 (-1.61 % of base) : 1973.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
-2 (-1.79 % of base) : 13184.dasm - System.Collections.Generic.HashSet`1+Enumerator[int]:MoveNext():ubyte:this (FullOpts)
-2 (-1.54 % of base) : 7712.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-2 (-0.44 % of base) : 19781.dasm - System.MathBenchmarks.Single:CopySignTest() (FullOpts)
-2 (-0.34 % of base) : 45913.dasm - System.MathBenchmarks.Single:MaxTest() (FullOpts)
Top method regressions (percentages):
254 (142.70 % of base) : 10636.dasm - Benchstone.MDBenchI.MDArray2:VerifyCopy(int[,,],int[,,]):ubyte (FullOpts)
934 (123.87 % of base) : 14598.dasm - System.Text.Tests.Perf_StringBuilder:Append_Strings(int):System.Text.StringBuilder:this (FullOpts)
726 (117.10 % of base) : 36489.dasm - System.Number:UInt128ToDecChars[ushort](uint,System.UInt128):uint (FullOpts)
70 (116.67 % of base) : 26528.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:RewriteSpecialBlocks():this (FullOpts)
1796 (115.87 % of base) : 24857.dasm - Microsoft.CodeAnalysis.MetadataReaderExtensions:GetReferencedAssembliesOrThrow(System.Reflection.Metadata.MetadataReader):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AssemblyIdentity] (FullOpts)
1710 (114.77 % of base) : 36664.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (FullOpts)
364 (113.04 % of base) : 3547.dasm - Newtonsoft.Json.JsonTextReader:EatWhitespace():this (FullOpts)
142 (112.70 % of base) : 24562.dasm - Microsoft.CodeAnalysis.GreenNode:GetLastTerminal():Microsoft.CodeAnalysis.GreenNode:this (FullOpts)
146 (112.31 % of base) : 24557.dasm - Microsoft.CodeAnalysis.GreenNode:GetFirstTerminal():Microsoft.CodeAnalysis.GreenNode:this (FullOpts)
926 (111.84 % of base) : 27367.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodDefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes,int):this (FullOpts)
514 (111.74 % of base) : 7976.dasm - System.SpanHelpers:NonPackedIndexOfAnyValueType[ubyte,System.SpanHelpers+DontNegate`1[ubyte]](byref,ubyte,ubyte,int):int (FullOpts)
534 (110.79 % of base) : 24010.dasm - System.SpanHelpers:LastIndexOfAnyValueType[ubyte,System.SpanHelpers+DontNegate`1[ubyte]](byref,ubyte,ubyte,int):int (FullOpts)
5490 (110.02 % of base) : 18554.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (FullOpts)
1126 (109.96 % of base) : 293.dasm - System.Reflection.TypeNameParser:ParseNonQualifiedTypeName():System.Reflection.TypeNameParser+TypeName:this (FullOpts)
166 (109.21 % of base) : 19397.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:Initialize():this (FullOpts)
126 (108.62 % of base) : 19109.dasm - AssignRect:CopyToAssign(int[,],int[,]) (FullOpts)
322 (105.23 % of base) : 21834.dasm - Neural:adjust_mid_wts(int) (FullOpts)
1314 (105.12 % of base) : 42107.dasm - System.Tests.Perf_Array:ArrayRetrieve1D():int:this (FullOpts)
984 (104.90 % of base) : 3106.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (FullOpts)
1030 (104.67 % of base) : 27366.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeTypeDefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
Top method improvements (percentages):
-8 (-12.90 % of base) : 21494.dasm - Struct.SpanWrapper:SumSpanWrapper(Struct.SpanWrapper`1[int]):int:this (FullOpts)
-72 (-9.18 % of base) : 646.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
-52 (-6.28 % of base) : 24726.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:GetNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax],byref,ubyte,ubyte):System.Runtime.CompilerServices.StrongBox`1[Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.String]]:this (FullOpts)
-12 (-5.17 % of base) : 12710.dasm - Sigil.Impl.LinqAlternative+<_Where>d__2`1[int]:MoveNext():ubyte:this (FullOpts)
-300 (-3.83 % of base) : 6214.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-6 (-2.04 % of base) : 663.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-2 (-1.79 % of base) : 13184.dasm - System.Collections.Generic.HashSet`1+Enumerator[int]:MoveNext():ubyte:this (FullOpts)
-2 (-1.61 % of base) : 111.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (FullOpts)
-2 (-1.61 % of base) : 1973.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
-10 (-1.60 % of base) : 21476.dasm - System.MathBenchmarks.Double:MaxTest() (FullOpts)
-2 (-1.56 % of base) : 223.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (FullOpts)
-2 (-1.54 % of base) : 7712.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-8 (-1.37 % of base) : 26838.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetFields>d__31:MoveNext():ubyte:this (FullOpts)
-2 (-1.22 % of base) : 1942.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int]:MoveNext():ubyte:this (FullOpts)
-10 (-0.94 % of base) : 13412.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:ReadNullable(System.Reflection.MemberInfo,System.Type):this (FullOpts)
-4 (-0.60 % of base) : 25154.dasm - Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__80:MoveNext():ubyte:this (FullOpts)
-2 (-0.44 % of base) : 19781.dasm - System.MathBenchmarks.Single:CopySignTest() (FullOpts)
-2 (-0.42 % of base) : 24882.dasm - Microsoft.CodeAnalysis.PEModule:ContainsNoPiaLocalTypes():ubyte:this (FullOpts)
-2 (-0.34 % of base) : 45913.dasm - System.MathBenchmarks.Single:MaxTest() (FullOpts)
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: 63279568 (overridden on cmd)
Total bytes of diff: 67380846 (overridden on cmd)
Total bytes of delta: 4101278 (6.48 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
18936 : 112334.dasm (65.05 % of base)
11378 : 90753.dasm (104.46 % of base)
10204 : 35771.dasm (38.14 % of base)
8262 : 130887.dasm (79.95 % of base)
6834 : 67188.dasm (100.53 % of base)
6024 : 128064.dasm (36.37 % of base)
6008 : 100884.dasm (72.98 % of base)
5880 : 30766.dasm (90.74 % of base)
5854 : 40825.dasm (59.10 % of base)
5822 : 29695.dasm (85.57 % of base)
5768 : 60656.dasm (102.63 % of base)
5668 : 72370.dasm (72.46 % of base)
5480 : 134131.dasm (34.34 % of base)
5368 : 90557.dasm (82.58 % of base)
5336 : 88201.dasm (83.35 % of base)
5326 : 14126.dasm (66.48 % of base)
5292 : 75325.dasm (76.47 % of base)
4838 : 91370.dasm (102.24 % of base)
4430 : 7707.dasm (93.54 % of base)
3924 : 36462.dasm (83.95 % of base)
Top file improvements (bytes):
-274 : 21310.dasm (-3.51 % of base)
-98 : 66485.dasm (-6.72 % of base)
-88 : 135126.dasm (-6.64 % of base)
-88 : 137970.dasm (-6.64 % of base)
-84 : 59382.dasm (-6.12 % of base)
-84 : 9750.dasm (-6.52 % of base)
-84 : 123613.dasm (-6.12 % of base)
-84 : 80139.dasm (-6.12 % of base)
-82 : 74028.dasm (-5.97 % of base)
-36 : 88336.dasm (-4.41 % of base)
-26 : 106553.dasm (-4.28 % of base)
-14 : 101728.dasm (-3.70 % of base)
-14 : 156781.dasm (-3.70 % of base)
-14 : 28905.dasm (-3.55 % of base)
-14 : 37109.dasm (-3.55 % of base)
-14 : 39909.dasm (-3.55 % of base)
-14 : 40549.dasm (-3.55 % of base)
-14 : 42741.dasm (-3.55 % of base)
-14 : 51137.dasm (-3.70 % of base)
-14 : 152690.dasm (-3.70 % of base)
87 total files with Code Size differences (25 improved, 62 regressed), 20 unchanged.
Top method regressions (bytes):
18936 (65.05 % of base) : 112334.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
11378 (104.46 % of base) : 90753.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0-FullOpts)
10204 (38.14 % of base) : 35771.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
8262 (79.95 % of base) : 130887.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier0-FullOpts)
6834 (100.53 % of base) : 67188.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier0-FullOpts)
6024 (36.37 % of base) : 128064.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
6008 (72.98 % of base) : 100884.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier0-FullOpts)
5880 (90.74 % of base) : 30766.dasm - BilinearTest:BilinearInterpol_Vector(double[],double[],double,double,double[],double,double,double):double[]:this (Tier0-FullOpts)
5854 (59.10 % of base) : 40825.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
5822 (85.57 % of base) : 29695.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier0-FullOpts)
5768 (102.63 % of base) : 60656.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier0-FullOpts)
5668 (72.46 % of base) : 72370.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (Tier0-FullOpts)
5480 (34.34 % of base) : 134131.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
5368 (82.58 % of base) : 90557.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (Tier0-FullOpts)
5336 (83.35 % of base) : 88201.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 (Tier0-FullOpts)
5326 (66.48 % of base) : 14126.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
5292 (76.47 % of base) : 75325.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.Location,int) (FullOpts)
4838 (102.24 % of base) : 91370.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (Tier0-FullOpts)
4430 (93.54 % of base) : 7707.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier0-FullOpts)
3924 (83.95 % of base) : 36462.dasm - Jil.Deserialize.Methods:SkipEncodedStringWithLeadCharThunkReader(byref,int) (Tier0-FullOpts)
Top method improvements (bytes):
-274 (-3.51 % of base) : 21310.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
-98 (-6.72 % of base) : 66485.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-88 (-6.64 % of base) : 135126.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-88 (-6.64 % of base) : 137970.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-84 (-6.12 % of base) : 59382.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-84 (-6.52 % of base) : 9750.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-84 (-6.12 % of base) : 123613.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-84 (-6.12 % of base) : 80139.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-82 (-5.97 % of base) : 74028.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-36 (-4.41 % of base) : 88336.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:GetNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax],byref,ubyte,ubyte):System.Runtime.CompilerServices.StrongBox`1[Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.String]]:this (Tier0-FullOpts)
-26 (-4.28 % of base) : 106553.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ContextAwareSyntax:PredefinedType(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.PredefinedTypeSyntax:this (Tier1)
-14 (-3.70 % of base) : 101728.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-14 (-3.70 % of base) : 156781.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-14 (-3.55 % of base) : 28905.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-14 (-3.55 % of base) : 37109.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-14 (-3.55 % of base) : 39909.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-14 (-3.55 % of base) : 40549.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-14 (-3.55 % of base) : 42741.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-14 (-3.70 % of base) : 51137.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-14 (-3.70 % of base) : 152690.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
Top method regressions (percentages):
254 (142.70 % of base) : 31637.dasm - Benchstone.MDBenchI.MDArray2:VerifyCopy(int[,,],int[,,]):ubyte (Tier0-FullOpts)
1484 (141.33 % of base) : 95233.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeTypeDefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier0-FullOpts)
1584 (133.11 % of base) : 95296.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeAssemblyRefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier0-FullOpts)
1182 (129.04 % of base) : 95241.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodDefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes,int):this (Tier0-FullOpts)
934 (123.87 % of base) : 42711.dasm - System.Text.Tests.Perf_StringBuilder:Append_Strings(int):System.Text.StringBuilder:this (Tier0-FullOpts)
70 (116.67 % of base) : 92969.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:RewriteSpecialBlocks():this (Tier0-FullOpts)
642 (115.47 % of base) : 95250.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMemberRefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier0-FullOpts)
1710 (114.77 % of base) : 123145.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier0-FullOpts)
336 (113.51 % of base) : 13305.dasm - Newtonsoft.Json.JsonTextReader:EatWhitespace():this (Tier0-FullOpts)
1814 (112.81 % of base) : 88585.dasm - Microsoft.CodeAnalysis.MetadataReaderExtensions:GetReferencedAssembliesOrThrow(System.Reflection.Metadata.MetadataReader):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AssemblyIdentity] (Tier0-FullOpts)
514 (111.74 % of base) : 27516.dasm - System.SpanHelpers:NonPackedIndexOfAnyValueType[ubyte,System.SpanHelpers+DontNegate`1[ubyte]](byref,ubyte,ubyte,int):int (Tier0-FullOpts)
534 (110.79 % of base) : 98819.dasm - System.SpanHelpers:LastIndexOfAnyValueType[ubyte,System.SpanHelpers+DontNegate`1[ubyte]](byref,ubyte,ubyte,int):int (Tier0-FullOpts)
1126 (109.96 % of base) : 761.dasm - System.Reflection.TypeNameParser:ParseNonQualifiedTypeName():System.Reflection.TypeNameParser+TypeName:this (Tier0-FullOpts)
166 (109.21 % of base) : 71649.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:Initialize():this (Tier0-FullOpts)
126 (108.62 % of base) : 69674.dasm - AssignRect:CopyToAssign(int[,],int[,]) (Tier0-FullOpts)
208 (108.33 % of base) : 46500.dasm - System.IO.RowConfigReader:TryFindNextKeyOccurrence(System.String,int,byref):ubyte:this (Tier0-FullOpts)
138 (107.81 % of base) : 87905.dasm - Microsoft.CodeAnalysis.GreenNode:GetLastTerminal():Microsoft.CodeAnalysis.GreenNode:this (Tier0-FullOpts)
142 (107.58 % of base) : 87898.dasm - Microsoft.CodeAnalysis.GreenNode:GetFirstTerminal():Microsoft.CodeAnalysis.GreenNode:this (Tier0-FullOpts)
332 (107.10 % of base) : 115826.dasm - MS.Internal.Xml.XPath.XPathParser:ParseMultiplicativeExpr(MS.Internal.Xml.XPath.AstNode):MS.Internal.Xml.XPath.AstNode:this (Tier0-FullOpts)
636 (107.07 % of base) : 95225.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeTypeRefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier0-FullOpts)
Top method improvements (percentages):
-8 (-12.90 % of base) : 74932.dasm - Struct.SpanWrapper:SumSpanWrapper(Struct.SpanWrapper`1[int]):int:this (Tier0-FullOpts)
-98 (-6.72 % of base) : 66485.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-88 (-6.64 % of base) : 135126.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-88 (-6.64 % of base) : 137970.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-84 (-6.52 % of base) : 9750.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-84 (-6.12 % of base) : 59382.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-84 (-6.12 % of base) : 123613.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-84 (-6.12 % of base) : 80139.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-82 (-5.97 % of base) : 74028.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-12 (-5.17 % of base) : 34936.dasm - Sigil.Impl.LinqAlternative+<_Where>d__2`1[int]:MoveNext():ubyte:this (Tier0-FullOpts)
-36 (-4.41 % of base) : 88336.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:GetNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax],byref,ubyte,ubyte):System.Runtime.CompilerServices.StrongBox`1[Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.String]]:this (Tier0-FullOpts)
-26 (-4.28 % of base) : 106553.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ContextAwareSyntax:PredefinedType(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.PredefinedTypeSyntax:this (Tier1)
-14 (-3.70 % of base) : 101728.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-14 (-3.70 % of base) : 156781.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-14 (-3.70 % of base) : 51137.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-14 (-3.70 % of base) : 152690.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-14 (-3.55 % of base) : 28905.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-14 (-3.55 % of base) : 37109.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-14 (-3.55 % of base) : 39909.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):this (Tier1)
-14 (-3.55 % of base) : 40549.dasm - System.Reflection.RuntimeParameterInfo:.ctor(System.Signature,System.Reflection.MetadataImport,int,int,int,System.Reflection.MemberInfo):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: 17368546 (overridden on cmd)
Total bytes of diff: 18762804 (overridden on cmd)
Total bytes of delta: 1394258 (8.03 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
18936 : 56031.dasm (65.05 % of base)
11072 : 46757.dasm (103.86 % of base)
10204 : 25723.dasm (38.14 % of base)
8262 : 62308.dasm (79.95 % of base)
6024 : 35927.dasm (99.21 % of base)
6024 : 61539.dasm (36.37 % of base)
6008 : 42853.dasm (72.98 % of base)
5880 : 25400.dasm (90.74 % of base)
5854 : 25004.dasm (59.10 % of base)
5818 : 22244.dasm (85.63 % of base)
5660 : 38317.dasm (72.58 % of base)
5490 : 34362.dasm (110.02 % of base)
5480 : 62818.dasm (34.34 % of base)
5292 : 40496.dasm (76.47 % of base)
5224 : 5651.dasm (66.19 % of base)
5178 : 44601.dasm (82.93 % of base)
5046 : 46678.dasm (82.94 % of base)
4602 : 47299.dasm (101.19 % of base)
4600 : 26294.dasm (54.12 % of base)
4214 : 5142.dasm (90.66 % of base)
Top file improvements (bytes):
-300 : 12215.dasm (-3.83 % of base)
-72 : 2777.dasm (-9.92 % of base)
-52 : 44726.dasm (-6.28 % of base)
-12 : 24453.dasm (-5.17 % of base)
-10 : 40292.dasm (-1.60 % of base)
-8 : 40093.dasm (-12.90 % of base)
-8 : 49429.dasm (-1.37 % of base)
-6 : 1793.dasm (-2.03 % of base)
-4 : 45631.dasm (-0.60 % of base)
-2 : 271.dasm (-1.61 % of base)
-2 : 3238.dasm (-1.54 % of base)
-2 : 38215.dasm (-0.44 % of base)
-2 : 14665.dasm (-1.54 % of base)
-2 : 23536.dasm (-1.79 % of base)
-2 : 65883.dasm (-0.34 % of base)
-2 : 44994.dasm (-0.42 % of base)
-2 : 4675.dasm (-1.22 % of base)
-2 : 527.dasm (-1.56 % of base)
79 total files with Code Size differences (18 improved, 61 regressed), 21 unchanged.
Top method regressions (bytes):
18936 (65.05 % of base) : 56031.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
11072 (103.86 % of base) : 46757.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0-FullOpts)
10204 (38.14 % of base) : 25723.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
8262 (79.95 % of base) : 62308.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier0-FullOpts)
6024 (36.37 % of base) : 61539.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
6024 (99.21 % of base) : 35927.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier0-FullOpts)
6008 (72.98 % of base) : 42853.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier0-FullOpts)
5880 (90.74 % of base) : 25400.dasm - BilinearTest:BilinearInterpol_Vector(double[],double[],double,double,double[],double,double,double):double[]:this (Tier0-FullOpts)
5854 (59.10 % of base) : 25004.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
5818 (85.63 % of base) : 22244.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier0-FullOpts)
5660 (72.58 % of base) : 38317.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (Tier0-FullOpts)
5490 (110.02 % of base) : 34362.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier0-FullOpts)
5480 (34.34 % of base) : 62818.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
5292 (76.47 % of base) : 40496.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.Location,int) (FullOpts)
5224 (66.19 % of base) : 5651.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
5178 (82.93 % of base) : 44601.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 (Tier0-FullOpts)
5046 (82.94 % of base) : 46678.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (Tier0-FullOpts)
4602 (101.19 % of base) : 47299.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (Tier0-FullOpts)
4600 (54.12 % of base) : 26294.dasm - Jil.Deserialize.Methods:SkipWithLeadCharThunkReader(byref,int) (Tier1)
4214 (90.66 % of base) : 5142.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier0-FullOpts)
Top method improvements (bytes):
-300 (-3.83 % of base) : 12215.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
-72 (-9.92 % of base) : 2777.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-52 (-6.28 % of base) : 44726.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:GetNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax],byref,ubyte,ubyte):System.Runtime.CompilerServices.StrongBox`1[Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.String]]:this (Tier0-FullOpts)
-12 (-5.17 % of base) : 24453.dasm - Sigil.Impl.LinqAlternative+<_Where>d__2`1[int]:MoveNext():ubyte:this (Tier0-FullOpts)
-10 (-1.60 % of base) : 40292.dasm - System.MathBenchmarks.Double:MaxTest() (Tier0-FullOpts)
-8 (-1.37 % of base) : 49429.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetFields>d__31:MoveNext():ubyte:this (Tier0-FullOpts)
-8 (-12.90 % of base) : 40093.dasm - Struct.SpanWrapper:SumSpanWrapper(Struct.SpanWrapper`1[int]):int:this (Tier0-FullOpts)
-6 (-2.03 % of base) : 1793.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
-4 (-0.60 % of base) : 45631.dasm - Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__80:MoveNext():ubyte:this (Tier0-FullOpts)
-2 (-0.42 % of base) : 44994.dasm - Microsoft.CodeAnalysis.PEModule:ContainsNoPiaLocalTypes():ubyte:this (Tier0-FullOpts)
-2 (-1.56 % of base) : 527.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
-2 (-1.22 % of base) : 4675.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int]:MoveNext():ubyte:this (Tier0-FullOpts)
-2 (-1.61 % of base) : 271.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (Tier0-FullOpts)
-2 (-1.54 % of base) : 3238.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[long,System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
-2 (-1.79 % of base) : 23536.dasm - System.Collections.Generic.HashSet`1+Enumerator[int]:MoveNext():ubyte:this (Tier0-FullOpts)
-2 (-1.54 % of base) : 14665.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
-2 (-0.44 % of base) : 38215.dasm - System.MathBenchmarks.Single:CopySignTest() (Tier0-FullOpts)
-2 (-0.34 % of base) : 65883.dasm - System.MathBenchmarks.Single:MaxTest() (Tier0-FullOpts)
Top method regressions (percentages):
254 (142.70 % of base) : 23901.dasm - Benchstone.MDBenchI.MDArray2:VerifyCopy(int[,,],int[,,]):ubyte (Tier0-FullOpts)
934 (123.87 % of base) : 26430.dasm - System.Text.Tests.Perf_StringBuilder:Append_Strings(int):System.Text.StringBuilder:this (Tier0-FullOpts)
726 (117.10 % of base) : 40810.dasm - System.Number:UInt128ToDecChars[ushort](uint,System.UInt128):uint (Tier0-FullOpts)
70 (116.67 % of base) : 48723.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:RewriteSpecialBlocks():this (Tier0-FullOpts)
1796 (115.87 % of base) : 44947.dasm - Microsoft.CodeAnalysis.MetadataReaderExtensions:GetReferencedAssembliesOrThrow(System.Reflection.Metadata.MetadataReader):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AssemblyIdentity] (Tier0-FullOpts)
1710 (114.77 % of base) : 59668.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier0-FullOpts)
336 (113.51 % of base) : 11283.dasm - Newtonsoft.Json.JsonTextReader:EatWhitespace():this (Tier0-FullOpts)
142 (112.70 % of base) : 44322.dasm - Microsoft.CodeAnalysis.GreenNode:GetLastTerminal():Microsoft.CodeAnalysis.GreenNode:this (Tier0-FullOpts)
146 (112.31 % of base) : 44316.dasm - Microsoft.CodeAnalysis.GreenNode:GetFirstTerminal():Microsoft.CodeAnalysis.GreenNode:this (Tier0-FullOpts)
926 (111.84 % of base) : 50589.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodDefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes,int):this (Tier0-FullOpts)
514 (111.74 % of base) : 15401.dasm - System.SpanHelpers:NonPackedIndexOfAnyValueType[ubyte,System.SpanHelpers+DontNegate`1[ubyte]](byref,ubyte,ubyte,int):int (Tier0-FullOpts)
534 (110.79 % of base) : 43021.dasm - System.SpanHelpers:LastIndexOfAnyValueType[ubyte,System.SpanHelpers+DontNegate`1[ubyte]](byref,ubyte,ubyte,int):int (Tier0-FullOpts)
5490 (110.02 % of base) : 34362.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier0-FullOpts)
1126 (109.96 % of base) : 704.dasm - System.Reflection.TypeNameParser:ParseNonQualifiedTypeName():System.Reflection.TypeNameParser+TypeName:this (Tier0-FullOpts)
166 (109.21 % of base) : 37983.dasm - System.Collections.Generic.SortedSet`1+Enumerator[int]:Initialize():this (Tier0-FullOpts)
126 (108.62 % of base) : 37171.dasm - AssignRect:CopyToAssign(int[,],int[,]) (Tier0-FullOpts)
208 (108.33 % of base) : 28528.dasm - System.IO.RowConfigReader:TryFindNextKeyOccurrence(System.String,int,byref):ubyte:this (Tier0-FullOpts)
332 (107.10 % of base) : 56918.dasm - MS.Internal.Xml.XPath.XPathParser:ParseMultiplicativeExpr(MS.Internal.Xml.XPath.AstNode):MS.Internal.Xml.XPath.AstNode:this (Tier0-FullOpts)
322 (105.23 % of base) : 40789.dasm - Neural:adjust_mid_wts(int) (Tier0-FullOpts)
1294 (105.20 % of base) : 65596.dasm - System.Tests.Perf_Array:ArrayRetrieve1D():int:this (Tier0-FullOpts)
Top method improvements (percentages):
-8 (-12.90 % of base) : 40093.dasm - Struct.SpanWrapper:SumSpanWrapper(Struct.SpanWrapper`1[int]):int:this (Tier0-FullOpts)
-72 (-9.92 % of base) : 2777.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-52 (-6.28 % of base) : 44726.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:GetNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax],byref,ubyte,ubyte):System.Runtime.CompilerServices.StrongBox`1[Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.String]]:this (Tier0-FullOpts)
-12 (-5.17 % of base) : 24453.dasm - Sigil.Impl.LinqAlternative+<_Where>d__2`1[int]:MoveNext():ubyte:this (Tier0-FullOpts)
-300 (-3.83 % of base) : 12215.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
-6 (-2.03 % of base) : 1793.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
-2 (-1.79 % of base) : 23536.dasm - System.Collections.Generic.HashSet`1+Enumerator[int]:MoveNext():ubyte:this (Tier0-FullOpts)
-2 (-1.61 % of base) : 271.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (Tier0-FullOpts)
-10 (-1.60 % of base) : 40292.dasm - System.MathBenchmarks.Double:MaxTest() (Tier0-FullOpts)
-2 (-1.56 % of base) : 527.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
-2 (-1.54 % of base) : 3238.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[long,System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
-2 (-1.54 % of base) : 14665.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
-8 (-1.37 % of base) : 49429.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetFields>d__31:MoveNext():ubyte:this (Tier0-FullOpts)
-2 (-1.22 % of base) : 4675.dasm - System.Collections.Generic.Dictionary`2+Enumerator[System.Linq.Expressions.Compiler.BoundConstants+TypedConstant,int]:MoveNext():ubyte:this (Tier0-FullOpts)
-4 (-0.60 % of base) : 45631.dasm - Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__80:MoveNext():ubyte:this (Tier0-FullOpts)
-2 (-0.44 % of base) : 38215.dasm - System.MathBenchmarks.Single:CopySignTest() (Tier0-FullOpts)
-2 (-0.42 % of base) : 44994.dasm - Microsoft.CodeAnalysis.PEModule:ContainsNoPiaLocalTypes():ubyte:this (Tier0-FullOpts)
-2 (-0.34 % of base) : 65883.dasm - System.MathBenchmarks.Single:MaxTest() (Tier0-FullOpts)
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: 320937174 (overridden on cmd)
Total bytes of diff: 327442210 (overridden on cmd)
Total bytes of delta: 6505036 (2.03 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
133502 : 312855.dasm (99.89 % of base)
133502 : 106865.dasm (99.89 % of base)
20802 : 219432.dasm (99.51 % of base)
20802 : 450294.dasm (99.51 % of base)
12714 : 211189.dasm (98.01 % of base)
12714 : 448402.dasm (98.01 % of base)
11150 : 112514.dasm (103.61 % of base)
11124 : 326742.dasm (103.40 % of base)
8270 : 116521.dasm (80.01 % of base)
8270 : 336562.dasm (80.01 % of base)
8124 : 219751.dasm (91.26 % of base)
8124 : 450718.dasm (91.26 % of base)
7368 : 444141.dasm (88.09 % of base)
6976 : 209250.dasm (86.38 % of base)
6972 : 209240.dasm (81.75 % of base)
6966 : 444117.dasm (81.59 % of base)
6482 : 132031.dasm (95.07 % of base)
6016 : 336419.dasm (73.06 % of base)
6016 : 116463.dasm (73.06 % of base)
5994 : 345547.dasm (96.30 % of base)
Top file improvements (bytes):
-350 : 249406.dasm (-4.37 % of base)
-350 : 19636.dasm (-4.38 % of base)
-126 : 284627.dasm (-19.03 % of base)
-126 : 284715.dasm (-19.03 % of base)
-126 : 82365.dasm (-18.92 % of base)
-126 : 82435.dasm (-18.92 % of base)
-120 : 115048.dasm (-51.72 % of base)
-120 : 333272.dasm (-51.72 % of base)
-116 : 82325.dasm (-17.85 % of base)
-116 : 284578.dasm (-17.96 % of base)
-98 : 115050.dasm (-42.98 % of base)
-98 : 333274.dasm (-42.98 % of base)
-92 : 90385.dasm (-6.48 % of base)
-92 : 296990.dasm (-6.48 % of base)
-86 : 263495.dasm (-13.11 % of base)
-86 : 66930.dasm (-13.11 % of base)
-82 : 90453.dasm (-5.93 % of base)
-82 : 297088.dasm (-5.93 % of base)
-76 : 89685.dasm (-5.92 % of base)
-76 : 263597.dasm (-11.45 % of base)
75 total files with Code Size differences (30 improved, 45 regressed), 20 unchanged.
Top method regressions (bytes):
133502 (99.89 % of base) : 106865.dasm - Program:TestEntryPoint():int (FullOpts)
133502 (99.89 % of base) : 312855.dasm - Program:TestEntryPoint():int (Tier0-FullOpts)
20802 (99.51 % of base) : 219432.dasm - CseTest.Test_Main:TestEntryPoint():int (FullOpts)
20802 (99.51 % of base) : 450294.dasm - CseTest.Test_Main:TestEntryPoint():int (Tier0-FullOpts)
12714 (98.01 % of base) : 211189.dasm - Internal.IL.ILImporter:ImportBasicBlock(Internal.IL.ILImporter+BasicBlock):this (FullOpts)
12714 (98.01 % of base) : 448402.dasm - Internal.IL.ILImporter:ImportBasicBlock(Internal.IL.ILImporter+BasicBlock):this (Tier0-FullOpts)
11150 (103.61 % of base) : 112514.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
11124 (103.40 % of base) : 326742.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0-FullOpts)
8270 (80.01 % of base) : 116521.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (FullOpts)
8270 (80.01 % of base) : 336562.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier0-FullOpts)
8124 (91.26 % of base) : 219751.dasm - SimpleArray_01.Test:Test1() (FullOpts)
8124 (91.26 % of base) : 450718.dasm - SimpleArray_01.Test:Test1() (Tier0-FullOpts)
7368 (88.09 % of base) : 444141.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugDirectoryNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier0-FullOpts)
6976 (86.38 % of base) : 209250.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugDirectoryNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
6972 (81.75 % of base) : 209240.dasm - ILCompiler.Win32Resources.ResourceData:WriteResources(ILCompiler.DependencyAnalysis.ISymbolNode,byref,byref):this (FullOpts)
6966 (81.59 % of base) : 444117.dasm - ILCompiler.Win32Resources.ResourceData:WriteResources(ILCompiler.DependencyAnalysis.ISymbolNode,byref,byref):this (Tier0-FullOpts)
6482 (95.07 % of base) : 132031.dasm - Program:TestEntryPoint() (Tier0-FullOpts)
6016 (73.06 % of base) : 116463.dasm - Benchstone.BenchF.LLoops:Main1(int):this (FullOpts)
6016 (73.06 % of base) : 336419.dasm - Benchstone.BenchF.LLoops:Main1(int):this (Tier0-FullOpts)
5994 (96.30 % of base) : 345547.dasm - System.Diagnostics.Tracing.EventPipePayloadDecoder:DecodePayload(byref,System.ReadOnlySpan`1[ubyte]):System.Object[] (Instrumented Tier1)
Top method improvements (bytes):
-350 (-4.38 % of base) : 19636.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-350 (-4.37 % of base) : 249406.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
-126 (-18.92 % of base) : 82365.dasm - JIT.HardwareIntrinsics.General._Vector64_1.VectorGetAndWithElement__GetAndWithElementInt640:ValidateWithResult(long[],long[],long,System.String):this (FullOpts)
-126 (-19.03 % of base) : 284627.dasm - JIT.HardwareIntrinsics.General._Vector64_1.VectorGetAndWithElement__GetAndWithElementInt640:ValidateWithResult(long[],long[],long,System.String):this (Tier0-FullOpts)
-126 (-18.92 % of base) : 82435.dasm - JIT.HardwareIntrinsics.General._Vector64_1.VectorGetAndWithElement__GetAndWithElementUInt640:ValidateWithResult(ulong[],ulong[],ulong,System.String):this (FullOpts)
-126 (-19.03 % of base) : 284715.dasm - JIT.HardwareIntrinsics.General._Vector64_1.VectorGetAndWithElement__GetAndWithElementUInt640:ValidateWithResult(ulong[],ulong[],ulong,System.String):this (Tier0-FullOpts)
-120 (-51.72 % of base) : 115048.dasm - Benchstone.BenchF.BenchMk2:Bench():ubyte (FullOpts)
-120 (-51.72 % of base) : 333272.dasm - Benchstone.BenchF.BenchMk2:Bench():ubyte (Tier0-FullOpts)
-116 (-17.85 % of base) : 82325.dasm - JIT.HardwareIntrinsics.General._Vector64_1.VectorGetAndWithElement__GetAndWithElementDouble0:ValidateWithResult(double[],double[],double,System.String):this (FullOpts)
-116 (-17.96 % of base) : 284578.dasm - JIT.HardwareIntrinsics.General._Vector64_1.VectorGetAndWithElement__GetAndWithElementDouble0:ValidateWithResult(double[],double[],double,System.String):this (Tier0-FullOpts)
-98 (-42.98 % of base) : 115050.dasm - Benchstone.BenchF.BenchMrk:Bench():ubyte (FullOpts)
-98 (-42.98 % of base) : 333274.dasm - Benchstone.BenchF.BenchMrk:Bench():ubyte (Tier0-FullOpts)
-92 (-6.48 % of base) : 90385.dasm - JIT.HardwareIntrinsics.General._Vector64.VectorWidenTest__WidenInt64:ValidateResult(int[],long[],long[],System.String):this (FullOpts)
-92 (-6.48 % of base) : 296990.dasm - JIT.HardwareIntrinsics.General._Vector64.VectorWidenTest__WidenInt64:ValidateResult(int[],long[],long[],System.String):this (Tier0-FullOpts)
-86 (-13.11 % of base) : 66930.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperDouble:ValidateWithResult(double[],double[],System.String):this (FullOpts)
-86 (-13.11 % of base) : 263495.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperDouble:ValidateWithResult(double[],double[],System.String):this (Tier0-FullOpts)
-82 (-5.93 % of base) : 90453.dasm - JIT.HardwareIntrinsics.General._Vector64.VectorWidenTest__WidenUInt64:ValidateResult(uint[],ulong[],ulong[],System.String):this (FullOpts)
-82 (-5.93 % of base) : 297088.dasm - JIT.HardwareIntrinsics.General._Vector64.VectorWidenTest__WidenUInt64:ValidateResult(uint[],ulong[],ulong[],System.String):this (Tier0-FullOpts)
-76 (-11.45 % of base) : 263597.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperUInt64:ValidateWithResult(ulong[],ulong[],System.String):this (Tier0-FullOpts)
-76 (-5.92 % of base) : 89685.dasm - JIT.HardwareIntrinsics.General._Vector64.VectorBinaryOpTest__NarrowInt64:ValidateResult(long[],long[],int[],System.String):this (FullOpts)
Top method regressions (percentages):
1274 (143.47 % of base) : 153227.dasm - struct1:Process2DArray(byref) (FullOpts)
1274 (143.47 % of base) : 360620.dasm - struct1:Process2DArray(byref) (Tier0-FullOpts)
254 (142.70 % of base) : 116501.dasm - Benchstone.MDBenchI.MDArray2:VerifyCopy(int[,,],int[,,]):ubyte (FullOpts)
254 (142.70 % of base) : 336521.dasm - Benchstone.MDBenchI.MDArray2:VerifyCopy(int[,,],int[,,]):ubyte (Tier0-FullOpts)
1484 (141.33 % of base) : 331388.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeTypeDefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier0-FullOpts)
838 (138.74 % of base) : 152537.dasm - class1:ProcessJagged2DArray(byref) (FullOpts)
838 (138.74 % of base) : 359380.dasm - class1:ProcessJagged2DArray(byref) (Tier0-FullOpts)
480 (134.83 % of base) : 309123.dasm - Chaos.A0:RecurseA0(int):this (Tier1)
480 (134.83 % of base) : 309791.dasm - Chaos.A0:RecurseA0(int):this (Tier1)
480 (134.83 % of base) : 309808.dasm - Chaos.A0A0:RecurseA0A0(int):this (Tier1)
480 (134.83 % of base) : 309143.dasm - Chaos.A0A0:RecurseA0A0(int):this (Tier1)
480 (134.83 % of base) : 309798.dasm - Chaos.A0A0A0A1`2[System.__Canon,System.__Canon]:RecurseA0A0A0A1(int):this (Tier1)
480 (134.83 % of base) : 309131.dasm - Chaos.A0A0A0A1`2[System.__Canon,System.__Canon]:RecurseA0A0A0A1(int):this (Tier1)
480 (134.83 % of base) : 309139.dasm - Chaos.A0A0A1:RecurseA0A0A1(int):this (Tier1)
480 (134.83 % of base) : 309795.dasm - Chaos.A0A0A1A2`1[System.__Canon]:RecurseA0A0A1A2(int):this (Tier1)
480 (134.83 % of base) : 309134.dasm - Chaos.A0A0A3`1[System.__Canon]:RecurseA0A0A3(int):this (Tier1)
480 (134.83 % of base) : 309140.dasm - Chaos.A0A3:RecurseA0A3(int):this (Tier1)
480 (134.83 % of base) : 309810.dasm - Chaos.A0A3:RecurseA0A3(int):this (Tier1)
480 (134.83 % of base) : 309130.dasm - Chaos.A0A3A6`1[System.__Canon]:RecurseA0A3A6(int):this (Tier1)
480 (134.83 % of base) : 309135.dasm - Chaos.A0A4`1[System.__Canon]:RecurseA0A4(int):this (Tier1)
Top method improvements (percentages):
-38 (-54.29 % of base) : 169809.dasm - foo:Main():int (FullOpts)
-38 (-54.29 % of base) : 381750.dasm - foo:Main():int (Tier0-FullOpts)
-120 (-51.72 % of base) : 115048.dasm - Benchstone.BenchF.BenchMk2:Bench():ubyte (FullOpts)
-120 (-51.72 % of base) : 333272.dasm - Benchstone.BenchF.BenchMk2:Bench():ubyte (Tier0-FullOpts)
-98 (-42.98 % of base) : 115050.dasm - Benchstone.BenchF.BenchMrk:Bench():ubyte (FullOpts)
-98 (-42.98 % of base) : 333274.dasm - Benchstone.BenchF.BenchMrk:Bench():ubyte (Tier0-FullOpts)
-32 (-21.92 % of base) : 115070.dasm - Benchstone.BenchI.BubbleSort2:Bench():ubyte (FullOpts)
-32 (-21.92 % of base) : 333304.dasm - Benchstone.BenchI.BubbleSort2:Bench():ubyte (Tier0-FullOpts)
-126 (-19.03 % of base) : 284627.dasm - JIT.HardwareIntrinsics.General._Vector64_1.VectorGetAndWithElement__GetAndWithElementInt640:ValidateWithResult(long[],long[],long,System.String):this (Tier0-FullOpts)
-126 (-19.03 % of base) : 284715.dasm - JIT.HardwareIntrinsics.General._Vector64_1.VectorGetAndWithElement__GetAndWithElementUInt640:ValidateWithResult(ulong[],ulong[],ulong,System.String):this (Tier0-FullOpts)
-126 (-18.92 % of base) : 82365.dasm - JIT.HardwareIntrinsics.General._Vector64_1.VectorGetAndWithElement__GetAndWithElementInt640:ValidateWithResult(long[],long[],long,System.String):this (FullOpts)
-126 (-18.92 % of base) : 82435.dasm - JIT.HardwareIntrinsics.General._Vector64_1.VectorGetAndWithElement__GetAndWithElementUInt640:ValidateWithResult(ulong[],ulong[],ulong,System.String):this (FullOpts)
-116 (-17.96 % of base) : 284578.dasm - JIT.HardwareIntrinsics.General._Vector64_1.VectorGetAndWithElement__GetAndWithElementDouble0:ValidateWithResult(double[],double[],double,System.String):this (Tier0-FullOpts)
-116 (-17.85 % of base) : 82325.dasm - JIT.HardwareIntrinsics.General._Vector64_1.VectorGetAndWithElement__GetAndWithElementDouble0:ValidateWithResult(double[],double[],double,System.String):this (FullOpts)
-4 (-16.67 % of base) : 166566.dasm - Runtime_96591_2:Foo(int):int (FullOpts)
-4 (-16.67 % of base) : 376364.dasm - Runtime_96591_2:Foo(int):int (Tier0-FullOpts)
-34 (-14.53 % of base) : 24927.dasm - ValueNumberingUnorderedComparisonsOfConstants:TestDoubleComparisonsEvaluatingToFalse() (FullOpts)
-34 (-14.53 % of base) : 256007.dasm - ValueNumberingUnorderedComparisonsOfConstants:TestDoubleComparisonsEvaluatingToFalse() (Tier0-FullOpts)
-34 (-14.53 % of base) : 24928.dasm - ValueNumberingUnorderedComparisonsOfConstants:TestSingleComparisonsEvaluatingToFalse() (FullOpts)
-34 (-14.53 % of base) : 256008.dasm - ValueNumberingUnorderedComparisonsOfConstants:TestSingleComparisonsEvaluatingToFalse() (Tier0-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: 36614296 (overridden on cmd)
Total bytes of diff: 39945648 (overridden on cmd)
Total bytes of delta: 3331352 (9.10 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
53942 : 5477.dasm (74.65 % of base)
14998 : 160407.dasm (67.28 % of base)
12816 : 67602.dasm (10.80 % of base)
11066 : 36546.dasm (88.56 % of base)
9628 : 100301.dasm (74.95 % of base)
9260 : 36442.dasm (100.78 % of base)
8108 : 29014.dasm (74.29 % of base)
6798 : 55412.dasm (95.21 % of base)
6384 : 98143.dasm (42.55 % of base)
6070 : 13963.dasm (71.33 % of base)
5160 : 61932.dasm (87.61 % of base)
5084 : 189833.dasm (68.72 % of base)
4470 : 181161.dasm (65.50 % of base)
4384 : 28947.dasm (94.00 % of base)
4366 : 55728.dasm (83.29 % of base)
4364 : 103914.dasm (77.96 % of base)
4264 : 4989.dasm (30.90 % of base)
4242 : 98470.dasm (89.08 % of base)
4196 : 29200.dasm (91.26 % of base)
4108 : 98196.dasm (92.98 % of base)
Top file improvements (bytes):
-342 : 193198.dasm (-4.92 % of base)
-20 : 148625.dasm (-1.43 % of base)
-14 : 152847.dasm (-4.17 % of base)
-14 : 185234.dasm (-4.61 % of base)
-14 : 84326.dasm (-4.37 % of base)
-12 : 131460.dasm (-2.65 % of base)
-10 : 128468.dasm (-3.65 % of base)
-10 : 151034.dasm (-3.65 % of base)
-10 : 163406.dasm (-3.31 % of base)
-10 : 18403.dasm (-3.94 % of base)
-10 : 129382.dasm (-1.96 % of base)
-10 : 163782.dasm (-3.70 % of base)
-8 : 17515.dasm (-4.76 % of base)
-8 : 194794.dasm (-2.67 % of base)
-8 : 17509.dasm (-4.76 % of base)
-8 : 17510.dasm (-4.76 % of base)
-8 : 17513.dasm (-4.76 % of base)
-8 : 17514.dasm (-4.76 % of base)
-8 : 61553.dasm (-1.69 % of base)
-8 : 17508.dasm (-4.76 % of base)
86 total files with Code Size differences (23 improved, 63 regressed), 20 unchanged.
Top method regressions (bytes):
53942 (74.65 % of base) : 5477.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvExprToLinqInContext(Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+ConvEnv,Microsoft.FSharp.Quotations.FSharpExpr):System.Linq.Expressions.Expression (FullOpts)
14998 (67.28 % of base) : 160407.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)
12816 (10.80 % of base) : 67602.dasm - Microsoft.Diagnostics.Tracing.Parsers.ApplicationServerTraceEventParser:EnumerateTemplates(System.Func`3[System.String,System.String,int],System.Action`1[Microsoft.Diagnostics.Tracing.TraceEvent]):this (FullOpts)
11066 (88.56 % of base) : 36546.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
9628 (74.95 % of base) : 100301.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
9260 (100.78 % of base) : 36442.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
8108 (74.29 % of base) : 29014.dasm - System.Data.XmlTreeGen:HandleTable(System.Data.DataTable,System.Xml.XmlDocument,System.Xml.XmlElement,ubyte):System.Xml.XmlElement:this (FullOpts)
6798 (95.21 % of base) : 55412.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
6384 (42.55 % of base) : 98143.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,ubyte,ubyte,System.Xml.Serialization.RecursionLimiter):this (FullOpts)
6070 (71.33 % of base) : 13963.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
5160 (87.61 % of base) : 61932.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
5084 (68.72 % of base) : 189833.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
4470 (65.50 % of base) : 181161.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitLift(int,System.Type,System.Linq.Expressions.MethodCallExpression,System.Linq.Expressions.ParameterExpression[],System.Linq.Expressions.Expression[]):this (FullOpts)
4384 (94.00 % of base) : 28947.dasm - System.Data.RBTree`1[System.__Canon]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
4366 (83.29 % of base) : 55728.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
4364 (77.96 % of base) : 103914.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberFieldSymbol:Create(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+MembersAndInitializersBuilder,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag) (FullOpts)
4264 (30.90 % of base) : 4989.dasm - Microsoft.FSharp.Linq.QueryModule:TransInner(int,ubyte,Microsoft.FSharp.Quotations.FSharpExpr):System.Tuple`2[Microsoft.FSharp.Linq.QueryModule+TransInnerResult,Microsoft.FSharp.Linq.RuntimeHelpers.Adapters+ConversionDescription] (FullOpts)
4242 (89.08 % of base) : 98470.dasm - System.Xml.Schema.SchemaCollectionPreprocessor:PreprocessRedefine(System.Xml.Schema.XmlSchemaRedefine):this (FullOpts)
4196 (91.26 % of base) : 29200.dasm - System.Data.RBTree`1[int]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
4108 (92.98 % of base) : 98196.dasm - System.Xml.Serialization.XmlSerializationReaderCodeGen:WriteMemberElementsIf(System.Xml.Serialization.XmlSerializationReaderCodeGen+Member[],System.Xml.Serialization.XmlSerializationReaderCodeGen+Member,System.String,System.String):this (FullOpts)
Top method improvements (bytes):
-342 (-4.92 % of base) : 193198.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-20 (-1.43 % of base) : 148625.dasm - Newtonsoft.Json.Converters.XmlNodeConverter:ReadAttributeElements(Newtonsoft.Json.JsonReader,System.Xml.XmlNamespaceManager):System.Collections.Generic.Dictionary`2[System.String,System.String]:this (FullOpts)
-14 (-4.37 % of base) : 84326.dasm - Microsoft.Diagnostics.Tracing.Etlx.TraceEvents+<ByEventType>d__0`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-14 (-4.61 % of base) : 185234.dasm - R2RTest.CompileSerpCommand+<FilterAssembliesNoSimpleNameDuplicates>d__32:MoveNext():ubyte:this (FullOpts)
-14 (-4.17 % of base) : 152847.dasm - System.Reflection.Context.Custom.AttributeUtils+<FilterCustomAttributes>d__12:MoveNext():ubyte:this (FullOpts)
-12 (-2.65 % of base) : 131460.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,byref):ubyte:this (FullOpts)
-10 (-3.31 % of base) : 163406.dasm - System.Diagnostics.ProcessManager+<EnumerateProcessIds>d__13:MoveNext():ubyte:this (FullOpts)
-10 (-1.96 % of base) : 129382.dasm - System.IO.Compression.Zip64ExtraField:GetJustZip64Block(System.IO.Stream,ubyte,ubyte,ubyte,ubyte):System.IO.Compression.Zip64ExtraField (FullOpts)
-10 (-3.65 % of base) : 128468.dasm - System.Reflection.TypeLoading.RoAssembly+<get_ExportedTypes>d__33:MoveNext():ubyte:this (FullOpts)
-10 (-3.65 % of base) : 151034.dasm - System.Reflection.TypeLoading.RoAssembly+<get_ExportedTypes>d__33:MoveNext():ubyte:this (FullOpts)
-10 (-3.70 % of base) : 163782.dasm - System.Security.Claims.ClaimsIdentity+<<FindAll>g__Core|59_0>d:MoveNext():ubyte:this (FullOpts)
-10 (-3.94 % of base) : 18403.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<FilterTasksFromWorkItems>d__6:MoveNext():ubyte:this (FullOpts)
-8 (-1.69 % of base) : 61553.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetEvents>d__29:MoveNext():ubyte:this (FullOpts)
-8 (-4.76 % of base) : 17515.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-8 (-4.76 % of base) : 17509.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-8 (-4.76 % of base) : 17510.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-8 (-4.76 % of base) : 17513.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-8 (-4.76 % of base) : 17514.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-8 (-4.76 % of base) : 17508.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-8 (-4.76 % of base) : 17511.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
Top method regressions (percentages):
220 (118.28 % of base) : 28443.dasm - System.Data.RBTree`1[int]:Search(int):int:this (FullOpts)
1238 (116.57 % of base) : 172479.dasm - System.Reflection.Emit.DllImportData:Create(System.Reflection.Emit.CustomAttributeInfo,byref):System.Reflection.Emit.DllImportData (FullOpts)
238 (112.26 % of base) : 146314.dasm - Newtonsoft.Json.JsonTextReader:EatWhitespace():this (FullOpts)
258 (111.21 % of base) : 28807.dasm - System.Data.Select:Sort(int,int):this (FullOpts)
1850 (108.44 % of base) : 127876.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
510 (108.05 % of base) : 31302.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:<ExpressionOfTypeMatchesPatternTypeForLearningFromSuccessfulTypeTest>g__isRuntimeSimilar|42_0(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte (FullOpts)
216 (108.00 % of base) : 28194.dasm - System.Data.Index:FindNodeByKeyRecord(int):int:this (FullOpts)
196 (107.69 % of base) : 102050.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AttributeDataExtensions:IndexOfAttribute(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData],Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.AttributeDescription):int (FullOpts)
1850 (106.08 % of base) : 150523.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
1358 (104.30 % of base) : 140384.dasm - System.Runtime.Caching.UsageBucket:Reduce():this (FullOpts)
1104 (103.76 % of base) : 153369.dasm - System.Collections.Generic.SegmentedList`1[ubyte]:QuickSort(long,long,System.Collections.Generic.IComparer`1[ubyte]):this (FullOpts)
170 (103.66 % of base) : 29370.dasm - System.Data.Common.DbCommandBuilder+ParameterNames:EliminateConflictingNames():this (FullOpts)
170 (103.66 % of base) : 15126.dasm - System.Random+XoshiroImpl:NextInt64():long:this (FullOpts)
3104 (103.60 % of base) : 29580.dasm - System.Data.RBTree`1[int]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
3104 (103.60 % of base) : 29538.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteFixup(int,int,int,int):int:this (FullOpts)
3036 (103.20 % of base) : 190770.dasm - System.TermInfo+ParameterizedStrings:EvaluateInternal(System.String,byref,System.TermInfo+ParameterizedStrings+FormatParam[],System.Collections.Generic.Stack`1[System.TermInfo+ParameterizedStrings+FormatParam],byref,byref):System.String (FullOpts)
648 (103.18 % of base) : 60643.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer+InterpolatedStringScanner:ScanFormatSpecifier(int):this (FullOpts)
82 (102.50 % of base) : 175378.dasm - System.Number:<FormatBigIntegerToBinary>g__AppendByte|15_0(byref,ubyte,int) (FullOpts)
1740 (102.47 % of base) : 47022.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsTerminator():ubyte:this (FullOpts)
360 (101.69 % of base) : 95551.dasm - System.Xml.Schema.XmlSchemaValidator:CheckForwardRefs():this (FullOpts)
Top method improvements (percentages):
-342 (-4.92 % of base) : 193198.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-8 (-4.76 % of base) : 17515.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-8 (-4.76 % of base) : 17509.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-8 (-4.76 % of base) : 17510.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-8 (-4.76 % of base) : 17513.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-8 (-4.76 % of base) : 17514.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-8 (-4.76 % of base) : 17508.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-8 (-4.76 % of base) : 17511.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-8 (-4.76 % of base) : 17512.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[ubyte],byref,byref,ushort):ubyte (FullOpts)
-14 (-4.61 % of base) : 185234.dasm - R2RTest.CompileSerpCommand+<FilterAssembliesNoSimpleNameDuplicates>d__32:MoveNext():ubyte:this (FullOpts)
-14 (-4.37 % of base) : 84326.dasm - Microsoft.Diagnostics.Tracing.Etlx.TraceEvents+<ByEventType>d__0`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-14 (-4.17 % of base) : 152847.dasm - System.Reflection.Context.Custom.AttributeUtils+<FilterCustomAttributes>d__12:MoveNext():ubyte:this (FullOpts)
-10 (-3.94 % of base) : 18403.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler+<FilterTasksFromWorkItems>d__6:MoveNext():ubyte:this (FullOpts)
-10 (-3.70 % of base) : 163782.dasm - System.Security.Claims.ClaimsIdentity+<<FindAll>g__Core|59_0>d:MoveNext():ubyte:this (FullOpts)
-10 (-3.65 % of base) : 128468.dasm - System.Reflection.TypeLoading.RoAssembly+<get_ExportedTypes>d__33:MoveNext():ubyte:this (FullOpts)
-10 (-3.65 % of base) : 151034.dasm - System.Reflection.TypeLoading.RoAssembly+<get_ExportedTypes>d__33:MoveNext():ubyte:this (FullOpts)
-10 (-3.31 % of base) : 163406.dasm - System.Diagnostics.ProcessManager+<EnumerateProcessIds>d__13:MoveNext():ubyte:this (FullOpts)
-8 (-2.67 % of base) : 194794.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-12 (-2.65 % of base) : 131460.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,System.__Canon]:TryGetValue(Internal.TypeSystem.TypeSystemContext+ArrayTypeKey,byref):ubyte:this (FullOpts)
-4 (-2.20 % of base) : 63244.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:GetUnificationUseSiteDiagnosticRecursive[System.__Canon](byref,System.Collections.Immutable.ImmutableArray`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.Symbol,byref):ubyte (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: 48572466 (overridden on cmd)
Total bytes of diff: 53574032 (overridden on cmd)
Total bytes of delta: 5001566 (10.30 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
17634 : 98122.dasm (89.02 % of base)
15672 : 195248.dasm (68.85 % of base)
13828 : 98081.dasm (102.32 % of base)
11180 : 82284.dasm (103.98 % of base)
8916 : 59513.dasm (86.90 % of base)
8494 : 59407.dasm (99.00 % of base)
7366 : 256421.dasm (87.86 % of base)
6966 : 256017.dasm (81.40 % of base)
6718 : 254769.dasm (107.59 % of base)
6670 : 89458.dasm (91.90 % of base)
6644 : 102339.dasm (89.40 % of base)
6062 : 201437.dasm (89.23 % of base)
5744 : 98071.dasm (93.10 % of base)
5656 : 98397.dasm (74.62 % of base)
5518 : 254771.dasm (110.98 % of base)
5200 : 230061.dasm (68.69 % of base)
5058 : 193748.dasm (113.71 % of base)
5038 : 82635.dasm (82.29 % of base)
4790 : 23590.dasm (104.54 % of base)
4784 : 82296.dasm (100.89 % of base)
Top file improvements (bytes):
-302 : 92.dasm (-3.85 % of base)
-168 : 93486.dasm (-4.03 % of base)
-132 : 264386.dasm (-16.71 % of base)
-52 : 58568.dasm (-6.28 % of base)
-52 : 199123.dasm (-10.32 % of base)
-24 : 272874.dasm (-14.12 % of base)
-22 : 255385.dasm (-2.07 % of base)
-20 : 257547.dasm (-2.07 % of base)
-20 : 209249.dasm (-3.65 % of base)
-18 : 202710.dasm (-3.75 % of base)
-14 : 234808.dasm (-1.79 % of base)
-12 : 220191.dasm (-1.95 % of base)
-12 : 232120.dasm (-2.42 % of base)
-10 : 162704.dasm (-2.82 % of base)
-10 : 174766.dasm (-2.31 % of base)
-10 : 184622.dasm (-3.57 % of base)
-10 : 199773.dasm (-4.17 % of base)
-10 : 251698.dasm (-4.17 % of base)
-10 : 278487.dasm (-4.03 % of base)
-10 : 219236.dasm (-3.38 % of base)
88 total files with Code Size differences (26 improved, 62 regressed), 20 unchanged.
Top method regressions (bytes):
17634 (89.02 % of base) : 98122.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
15672 (68.85 % of base) : 195248.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)
13828 (102.32 % of base) : 98081.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindFieldAndPropertyInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.FieldOrPropertyInitializer]],Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundInitializer] (FullOpts)
11180 (103.98 % of base) : 82284.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
8916 (86.90 % of base) : 59513.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
8494 (99.00 % of base) : 59407.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
7366 (87.86 % of base) : 256421.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugDirectoryNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
6966 (81.40 % of base) : 256017.dasm - ILCompiler.Win32Resources.ResourceData:WriteResources(ILCompiler.DependencyAnalysis.ISymbolNode,byref,byref):this (FullOpts)
6718 (107.59 % of base) : 254769.dasm - Internal.JitInterface.InstructionSetFlags:ExpandInstructionSetByImplicationHelper(int,Internal.JitInterface.InstructionSetFlags):Internal.JitInterface.InstructionSetFlags (FullOpts)
6670 (91.90 % of base) : 89458.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
6644 (89.40 % of base) : 102339.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberFieldSymbol:Create(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+MembersAndInitializersBuilder,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag) (FullOpts)
6062 (89.23 % of base) : 201437.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (FullOpts)
5744 (93.10 % of base) : 98071.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindArrayBounds(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Binder+DimensionSize[],ubyte):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression]:this (FullOpts)
5656 (74.62 % of base) : 98397.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:DecodeParameterList(Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,int,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.VisualBasic.Binder+CheckParameterModifierDelegate,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
5518 (110.98 % of base) : 254771.dasm - Internal.JitInterface.InstructionSetFlags:ExpandInstructionSetByReverseImplicationHelper(int,Internal.JitInterface.InstructionSetFlags):Internal.JitInterface.InstructionSetFlags (FullOpts)
5200 (68.69 % of base) : 230061.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
5058 (113.71 % of base) : 193748.dasm - System.TermInfo+ParameterizedStrings:EvaluateInternal(System.String,byref,System.TermInfo+ParameterizedStrings+FormatParam[],System.Collections.Generic.Stack`1[System.TermInfo+ParameterizedStrings+FormatParam],byref,byref):System.String (FullOpts)
5038 (82.29 % of base) : 82635.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
4790 (104.54 % of base) : 23590.dasm - System.SpanHelpers:IndexOfAny[System.Numerics.Vector`1[float]](byref,System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],int):int (FullOpts)
4784 (100.89 % of base) : 82296.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
Top method improvements (bytes):
-302 (-3.85 % of base) : 92.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-168 (-4.03 % of base) : 93486.dasm - System.Data.RBTree`1[ubyte]:RBDeleteX(int,int,int):int:this (FullOpts)
-132 (-16.71 % of base) : 264386.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreateParameterizedConstructor(System.Reflection.ConstructorInfo,System.Type,System.Type,System.Type,System.Type):System.Reflection.Emit.DynamicMethod (FullOpts)
-52 (-10.32 % of base) : 199123.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[System.Numerics.Vector`1[float],System.__Canon]:TryGetValue(System.Numerics.Vector`1[float],byref):ubyte:this (FullOpts)
-52 (-6.28 % of base) : 58568.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:GetNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax],byref,ubyte,ubyte):System.Runtime.CompilerServices.StrongBox`1[Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.String]]:this (FullOpts)
-24 (-14.12 % of base) : 272874.dasm - Microsoft.Build.Execution.TaskRegistry:GetMatchingRegistration(System.String,System.Collections.Generic.List`1[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskRecord],System.String,System.Collections.Generic.IDictionary`2[System.String,System.String],Microsoft.Build.BackEnd.Logging.TargetLoggingContext,Microsoft.Build.Construction.ElementLocation):Microsoft.Build.Execution.TaskRegistry+RegisteredTaskRecord:this (FullOpts)
-22 (-2.07 % of base) : 255385.dasm - ILCompiler.DisplayNameHelpers:GetParameterDisplayName(Internal.TypeSystem.Ecma.EcmaMethod,int):System.String (FullOpts)
-20 (-2.07 % of base) : 257547.dasm - ILCompiler.DependencyAnalysis.NodeFactory+<EnumerateCompiledMethods>d__80:MoveNext():ubyte:this (FullOpts)
-20 (-3.65 % of base) : 209249.dasm - Newtonsoft.Json.Utilities.ConvertUtils:CreateCastConverter(Newtonsoft.Json.Utilities.StructMultiKey`2[System.Type,System.Type]):System.Func`2[System.Object,System.Object] (FullOpts)
-18 (-3.75 % of base) : 202710.dasm - System.IO.Compression.Zip64ExtraField:GetJustZip64Block(System.IO.Stream,ubyte,ubyte,ubyte,ubyte):System.IO.Compression.Zip64ExtraField (FullOpts)
-14 (-1.79 % of base) : 234808.dasm - System.Collections.Immutable.ImmutableList`1+Node[double]:Find(System.Predicate`1[double]):double:this (FullOpts)
-12 (-1.95 % of base) : 220191.dasm - System.Collections.Generic.SortedSet`1[System.__Canon]:SetEquals(System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte:this (FullOpts)
-12 (-2.42 % of base) : 232120.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.__Canon]:IsProperSubsetOf(System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[System.__Canon]):ubyte (FullOpts)
-10 (-4.17 % of base) : 199773.dasm - Internal.TypeSystem.TypeDesc+<GetVirtualMethods>d__80:MoveNext():ubyte:this (FullOpts)
-10 (-2.82 % of base) : 162704.dasm - Microsoft.CodeAnalysis.DiagnosticBag+<AsEnumerableFiltered>d__16:MoveNext():ubyte:this (FullOpts)
-10 (-2.31 % of base) : 174766.dasm - Microsoft.Extensions.FileSystemGlobbing.Internal.MatcherContext:MatchPatternContexts[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float],System.Func`3[Microsoft.Extensions.FileSystemGlobbing.Internal.IPatternContext,System.Numerics.Vector`1[float],Microsoft.Extensions.FileSystemGlobbing.Internal.PatternTestResult]):Microsoft.Extensions.FileSystemGlobbing.Internal.PatternTestResult:this (FullOpts)
-10 (-3.57 % of base) : 184622.dasm - R2RTest.CompileSerpCommand+<FilterAssembliesNoSimpleNameDuplicates>d__32:MoveNext():ubyte:this (FullOpts)
-10 (-3.38 % of base) : 219236.dasm - System.Reflection.Context.Custom.AttributeUtils+<FilterCustomAttributes>d__12:MoveNext():ubyte:this (FullOpts)
-10 (-4.03 % of base) : 278487.dasm - System.Reflection.TypeLoading.RoAssembly+<get_ExportedTypes>d__33:MoveNext():ubyte:this (FullOpts)
-10 (-4.03 % of base) : 223808.dasm - System.Reflection.TypeLoading.RoAssembly+<get_ExportedTypes>d__33:MoveNext():ubyte:this (FullOpts)
Top method regressions (percentages):
368 (131.43 % of base) : 169129.dasm - System.Linq.Parallel.FixedMaxHeap`1[ubyte]:HeapifyRoot():this (FullOpts)
2046 (126.92 % of base) : 78816.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEDeltaAssemblyBuilder:GetAnonymousDelegateMapFromMetadata(System.Reflection.Metadata.MetadataReader,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder):System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Emit.SynthesizedDelegateKey,Microsoft.CodeAnalysis.Emit.SynthesizedDelegateValue] (FullOpts)
210 (120.69 % of base) : 271804.dasm - Microsoft.Build.Evaluation.Scanner:SkipSimpleStringChars():this (FullOpts)
486 (119.12 % of base) : 199673.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseTypeCodeImpl(ubyte):ubyte:this (FullOpts)
200 (119.05 % of base) : 93587.dasm - System.Data.RBTree`1[long]:Search(long):int:this (FullOpts)
170 (118.06 % of base) : 72149.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanToEndOfLine():this (FullOpts)
3972 (117.72 % of base) : 210387.dasm - Newtonsoft.Json.Schema.JsonSchemaBuilder:ProcessSchemaProperties(Newtonsoft.Json.Linq.JObject):this (FullOpts)
462 (117.26 % of base) : 93572.dasm - System.Data.RBTree`1[System.Numerics.Vector`1[float]]:SearchSubTree(int,System.Numerics.Vector`1[float]):int:this (FullOpts)
70 (116.67 % of base) : 161526.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:RewriteSpecialBlocks():this (FullOpts)
446 (116.15 % of base) : 187566.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeLocalConstantTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
1400 (115.13 % of base) : 171307.dasm - System.Runtime.Caching.UsageBucket:Reduce():this (FullOpts)
1802 (115.07 % of base) : 151879.dasm - Microsoft.CodeAnalysis.MetadataReaderExtensions:GetReferencedAssembliesOrThrow(System.Reflection.Metadata.MetadataReader):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AssemblyIdentity] (FullOpts)
906 (114.68 % of base) : 216837.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Nullable`1[int]]:PartialQuickSort(int[],int,int,int,int):this (FullOpts)
906 (114.68 % of base) : 216847.dasm - System.Linq.EnumerableSorter`2[ubyte,System.Nullable`1[int]]:PartialQuickSort(int[],int,int,int,int):this (FullOpts)
1096 (114.64 % of base) : 226909.dasm - System.Security.IdentityHelper:ToBase32StringSuitableForDirName(ubyte[]):System.String (FullOpts)
564 (114.63 % of base) : 91349.dasm - System.Data.XSDSchema:HandleRelations(System.Xml.Schema.XmlSchemaAnnotation,ubyte):this (FullOpts)
452 (114.14 % of base) : 265535.dasm - System.Net.HttpListenerRequest+Helpers:FillFromString(System.Collections.Specialized.NameValueCollection,System.String,ubyte,System.Text.Encoding) (FullOpts)
5058 (113.71 % of base) : 193748.dasm - System.TermInfo+ParameterizedStrings:EvaluateInternal(System.String,byref,System.TermInfo+ParameterizedStrings+FormatParam[],System.Collections.Generic.Stack`1[System.TermInfo+ParameterizedStrings+FormatParam],byref,byref):System.String (FullOpts)
336 (113.51 % of base) : 208628.dasm - Newtonsoft.Json.JsonTextReader:EatWhitespace():this (FullOpts)
142 (112.70 % of base) : 153526.dasm - Microsoft.CodeAnalysis.GreenNode:GetLastTerminal():Microsoft.CodeAnalysis.GreenNode:this (FullOpts)
Top method improvements (percentages):
-132 (-16.71 % of base) : 264386.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreateParameterizedConstructor(System.Reflection.ConstructorInfo,System.Type,System.Type,System.Type,System.Type):System.Reflection.Emit.DynamicMethod (FullOpts)
-24 (-14.12 % of base) : 272874.dasm - Microsoft.Build.Execution.TaskRegistry:GetMatchingRegistration(System.String,System.Collections.Generic.List`1[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskRecord],System.String,System.Collections.Generic.IDictionary`2[System.String,System.String],Microsoft.Build.BackEnd.Logging.TargetLoggingContext,Microsoft.Build.Construction.ElementLocation):Microsoft.Build.Execution.TaskRegistry+RegisteredTaskRecord:this (FullOpts)
-52 (-10.32 % of base) : 199123.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[System.Numerics.Vector`1[float],System.__Canon]:TryGetValue(System.Numerics.Vector`1[float],byref):ubyte:this (FullOpts)
-52 (-6.28 % of base) : 58568.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:GetNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax],byref,ubyte,ubyte):System.Runtime.CompilerServices.StrongBox`1[Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.String]]:this (FullOpts)
-10 (-4.17 % of base) : 199773.dasm - Internal.TypeSystem.TypeDesc+<GetVirtualMethods>d__80:MoveNext():ubyte:this (FullOpts)
-10 (-4.17 % of base) : 251698.dasm - System.Security.Claims.ClaimsIdentity+<<FindAll>g__Core|59_0>d:MoveNext():ubyte:this (FullOpts)
-6 (-4.05 % of base) : 148129.dasm - Roslyn.Utilities.PathUtilities:TrimTrailingSeparators(System.String):System.String (FullOpts)
-10 (-4.03 % of base) : 278487.dasm - System.Reflection.TypeLoading.RoAssembly+<get_ExportedTypes>d__33:MoveNext():ubyte:this (FullOpts)
-10 (-4.03 % of base) : 223808.dasm - System.Reflection.TypeLoading.RoAssembly+<get_ExportedTypes>d__33:MoveNext():ubyte:this (FullOpts)
-168 (-4.03 % of base) : 93486.dasm - System.Data.RBTree`1[ubyte]:RBDeleteX(int,int,int):int:this (FullOpts)
-4 (-4.00 % of base) : 168454.dasm - System.Linq.Parallel.ElementAtQueryOperator`1+ElementAtQueryOperatorEnumerator[System.__Canon]:MoveNext(byref,byref):ubyte:this (FullOpts)
-4 (-4.00 % of base) : 168457.dasm - System.Linq.Parallel.ElementAtQueryOperator`1+ElementAtQueryOperatorEnumerator[ubyte]:MoveNext(byref,byref):ubyte:this (FullOpts)
-302 (-3.85 % of base) : 92.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-18 (-3.75 % of base) : 202710.dasm - System.IO.Compression.Zip64ExtraField:GetJustZip64Block(System.IO.Stream,ubyte,ubyte,ubyte,ubyte):System.IO.Compression.Zip64ExtraField (FullOpts)
-20 (-3.65 % of base) : 209249.dasm - Newtonsoft.Json.Utilities.ConvertUtils:CreateCastConverter(Newtonsoft.Json.Utilities.StructMultiKey`2[System.Type,System.Type]):System.Func`2[System.Object,System.Object] (FullOpts)
-10 (-3.57 % of base) : 184622.dasm - R2RTest.CompileSerpCommand+<FilterAssembliesNoSimpleNameDuplicates>d__32:MoveNext():ubyte:this (FullOpts)
-10 (-3.38 % of base) : 219236.dasm - System.Reflection.Context.Custom.AttributeUtils+<FilterCustomAttributes>d__12:MoveNext():ubyte:this (FullOpts)
-10 (-2.82 % of base) : 162704.dasm - Microsoft.CodeAnalysis.DiagnosticBag+<AsEnumerableFiltered>d__16:MoveNext():ubyte:this (FullOpts)
-2 (-2.56 % of base) : 198637.dasm - Internal.TypeSystem.InstantiatedType:IsCanonicalSubtype(int):ubyte:this (FullOpts)
-8 (-2.52 % of base) : 277326.dasm - Microsoft.Build.Execution.ProjectItemInstance+TaskItem+<EnumerateMetadata>d__41:MoveNext():ubyte: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: 243987636 (overridden on cmd)
Total bytes of diff: 267313590 (overridden on cmd)
Total bytes of delta: 23325954 (9.56 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
19798 : 287266.dasm (38.00 % of base)
19672 : 292470.dasm (37.51 % of base)
14832 : 187975.dasm (66.42 % of base)
11866 : 565573.dasm (73.50 % of base)
11146 : 16005.dasm (103.57 % of base)
11112 : 142361.dasm (103.79 % of base)
11010 : 154397.dasm (103.93 % of base)
10000 : 703129.dasm (99.23 % of base)
9972 : 327828.dasm (80.06 % of base)
9942 : 366957.dasm (79.68 % of base)
9806 : 245167.dasm (79.67 % of base)
9806 : 499671.dasm (79.67 % of base)
9806 : 699517.dasm (79.67 % of base)
9806 : 380958.dasm (79.67 % of base)
9806 : 483064.dasm (79.67 % of base)
9806 : 94085.dasm (79.67 % of base)
9806 : 252441.dasm (79.67 % of base)
9806 : 474381.dasm (79.67 % of base)
9786 : 404398.dasm (79.42 % of base)
9776 : 562686.dasm (79.29 % of base)
Top file improvements (bytes):
-302 : 783.dasm (-3.85 % of base)
-168 : 255968.dasm (-4.03 % of base)
-156 : 204443.dasm (-2.76 % of base)
-136 : 205148.dasm (-2.50 % of base)
-92 : 662215.dasm (-6.77 % of base)
-86 : 177458.dasm (-7.39 % of base)
-86 : 89073.dasm (-5.37 % of base)
-84 : 172668.dasm (-9.40 % of base)
-82 : 660930.dasm (-7.65 % of base)
-78 : 578257.dasm (-9.47 % of base)
-78 : 680125.dasm (-13.45 % of base)
-78 : 725201.dasm (-9.47 % of base)
-76 : 69683.dasm (-9.18 % of base)
-76 : 271281.dasm (-9.25 % of base)
-74 : 496709.dasm (-8.96 % of base)
-74 : 12041.dasm (-8.96 % of base)
-74 : 199161.dasm (-8.94 % of base)
-74 : 246617.dasm (-8.96 % of base)
-74 : 374335.dasm (-9.61 % of base)
-74 : 385561.dasm (-9.61 % of base)
99 total files with Code Size differences (37 improved, 62 regressed), 20 unchanged.
Top method regressions (bytes):
19798 (38.00 % of base) : 287266.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.freach.freach001.freach001.Test:MainMethod():int (Tier0-FullOpts)
19672 (37.51 % of base) : 292470.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.freach.freach007.freach007.Test:MainMethod():int (Tier0-FullOpts)
14832 (66.42 % of base) : 187975.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)
11866 (73.50 % of base) : 565573.dasm - System.Security.Cryptography.Xml.DSAKeyValue:LoadXml(System.Xml.XmlElement):this (Tier1)
11146 (103.57 % of base) : 16005.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0-FullOpts)
11112 (103.79 % of base) : 142361.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0-FullOpts)
11010 (103.93 % of base) : 154397.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0-FullOpts)
10000 (99.23 % of base) : 703129.dasm - System.Threading.Tasks.Dataflow.Tests.DebugAttributeTests:TestDebuggerDisplaysAndTypeProxies():this (Tier0-FullOpts)
9972 (80.06 % of base) : 327828.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
9942 (79.68 % of base) : 366957.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
9806 (79.67 % of base) : 245167.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
9806 (79.67 % of base) : 499671.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
9806 (79.67 % of base) : 699517.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
9806 (79.67 % of base) : 380958.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
9806 (79.67 % of base) : 483064.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
9806 (79.67 % of base) : 94085.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
9806 (79.67 % of base) : 252441.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
9806 (79.67 % of base) : 474381.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
9786 (79.42 % of base) : 404398.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
9776 (79.29 % of base) : 562686.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
Top method improvements (bytes):
-302 (-3.85 % of base) : 783.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
-168 (-4.03 % of base) : 255968.dasm - System.Data.RBTree`1[int]:RBDeleteX(int,int,int):int:this (Tier0-FullOpts)
-156 (-2.76 % of base) : 204443.dasm - System.Collections.Frozen.Tests.FrozenSet_Generic_Tests`1[int]:ComparingWithOtherSets(int):this (Tier0-FullOpts)
-136 (-2.50 % of base) : 205148.dasm - System.Collections.Frozen.Tests.FrozenSet_Generic_Tests`1[System.__Canon]:ComparingWithOtherSets(int):this (Tier0-FullOpts)
-92 (-6.77 % of base) : 662215.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindMethodGroup(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-86 (-7.39 % of base) : 177458.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindMethodGroup(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-86 (-5.37 % of base) : 89073.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindMethodGroup(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-84 (-9.40 % of base) : 172668.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindMemberAccess(Microsoft.CodeAnalysis.CSharp.Syntax.MemberAccessExpressionSyntax,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-82 (-7.65 % of base) : 660930.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindMemberAccess(Microsoft.CodeAnalysis.CSharp.Syntax.MemberAccessExpressionSyntax,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-78 (-9.47 % of base) : 578257.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-78 (-9.47 % of base) : 725201.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-78 (-13.45 % of base) : 680125.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex28884_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-76 (-9.18 % of base) : 69683.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-76 (-9.25 % of base) : 271281.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-74 (-8.96 % of base) : 496709.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-74 (-8.96 % of base) : 12041.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-74 (-8.94 % of base) : 199161.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-74 (-8.96 % of base) : 246617.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-74 (-9.61 % of base) : 374335.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-74 (-9.61 % of base) : 385561.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
Top method regressions (percentages):
4400 (122.29 % of base) : 678637.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex28215_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
668 (120.14 % of base) : 362972.dasm - System.SpanHelpers:NonPackedIndexOfAnyValueType[ubyte,System.SpanHelpers+DontNegate`1[ubyte]](byref,ubyte,ubyte,int):int (Tier1)
170 (118.06 % of base) : 152174.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanToEndOfLine():this (Tier0-FullOpts)
170 (118.06 % of base) : 20223.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanToEndOfLine():this (Tier0-FullOpts)
1802 (116.71 % of base) : 11502.dasm - Microsoft.CodeAnalysis.MetadataReaderExtensions:GetReferencedAssembliesOrThrow(System.Reflection.Metadata.MetadataReader):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AssemblyIdentity] (Tier0-FullOpts)
1802 (116.71 % of base) : 139798.dasm - Microsoft.CodeAnalysis.MetadataReaderExtensions:GetReferencedAssembliesOrThrow(System.Reflection.Metadata.MetadataReader):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AssemblyIdentity] (Tier0-FullOpts)
1802 (116.71 % of base) : 153263.dasm - Microsoft.CodeAnalysis.MetadataReaderExtensions:GetReferencedAssembliesOrThrow(System.Reflection.Metadata.MetadataReader):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AssemblyIdentity] (Tier0-FullOpts)
70 (116.67 % of base) : 162792.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:RewriteSpecialBlocks():this (Tier0-FullOpts)
70 (116.67 % of base) : 169603.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:RewriteSpecialBlocks():this (Tier0-FullOpts)
70 (116.67 % of base) : 147493.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:RewriteSpecialBlocks():this (Tier0-FullOpts)
436 (116.58 % of base) : 708823.dasm - System.Collections.Generic.ArraySortHelper`1[int]:InsertionSort(System.Span`1[int],System.Comparison`1[int]) (Tier1)
594 (116.47 % of base) : 614363.dasm - System.SpanHelpers:NonPackedIndexOfAnyValueType[ubyte,System.SpanHelpers+DontNegate`1[ubyte]](byref,ubyte,ubyte,int):int (Tier1)
594 (116.47 % of base) : 650018.dasm - System.SpanHelpers:NonPackedIndexOfAnyValueType[ubyte,System.SpanHelpers+DontNegate`1[ubyte]](byref,ubyte,ubyte,int):int (Tier1)
446 (116.15 % of base) : 466601.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeLocalConstantTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier0-FullOpts)
1400 (115.13 % of base) : 473229.dasm - System.Runtime.Caching.UsageBucket:Reduce():this (Tier0-FullOpts)
452 (114.14 % of base) : 375957.dasm - System.Net.HttpListenerRequest+Helpers:FillFromString(System.Collections.Specialized.NameValueCollection,System.String,ubyte,System.Text.Encoding) (Tier0-FullOpts)
422 (114.05 % of base) : 573480.dasm - System.Collections.Generic.ArraySortHelper`1[int]:InsertionSort(System.Span`1[int],System.Comparison`1[int]) (Tier1)
422 (114.05 % of base) : 600040.dasm - System.Collections.Generic.ArraySortHelper`1[int]:InsertionSort(System.Span`1[int],System.Comparison`1[int]) (Tier1)
5084 (113.74 % of base) : 251700.dasm - System.TermInfo+ParameterizedStrings:EvaluateInternal(System.String,byref,System.TermInfo+ParameterizedStrings+FormatParam[],System.Collections.Generic.Stack`1[System.TermInfo+ParameterizedStrings+FormatParam],byref,byref):System.String (Tier0-FullOpts)
420 (113.51 % of base) : 337685.dasm - System.Collections.Generic.ArraySortHelper`1[int]:InsertionSort(System.Span`1[int],System.Comparison`1[int]) (Tier1)
Top method improvements (percentages):
-50 (-20.00 % of base) : 47475.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.FieldDeclarationSyntax:get_Modifiers():Microsoft.CodeAnalysis.SyntaxTokenList:this (Tier1)
-48 (-19.20 % of base) : 660449.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.FieldDeclarationSyntax:get_Modifiers():Microsoft.CodeAnalysis.SyntaxTokenList:this (Tier1)
-46 (-18.70 % of base) : 88843.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.FieldDeclarationSyntax:get_Modifiers():Microsoft.CodeAnalysis.SyntaxTokenList:this (Tier1)
-48 (-15.38 % of base) : 183540.dasm - Microsoft.CodeAnalysis.Syntax.SyntaxList+WithTwoChildren:GetNodeSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
-78 (-13.45 % of base) : 680125.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex28884_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-44 (-13.10 % of base) : 70505.dasm - Microsoft.CodeAnalysis.Syntax.SyntaxList+WithTwoChildren:GetNodeSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
-14 (-10.94 % of base) : 415107.dasm - System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[byte]:NextRandom():byte:this (Tier1)
-14 (-10.94 % of base) : 411285.dasm - System.Numerics.Tensors.Tests.GenericNumberTensorPrimitivesTests`1[ubyte]:NextRandom():ubyte:this (Tier1)
-34 (-10.83 % of base) : 182495.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedElementIfNotToken(byref):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
-44 (-10.78 % of base) : 453229.dasm - System.Xml.XmlConvertTests.EncodeDecodeTests:v3():int:this (Tier0-FullOpts)
-34 (-10.24 % of base) : 180652.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedElementIfNotToken(byref):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
-34 (-10.24 % of base) : 181908.dasm - Microsoft.CodeAnalysis.SyntaxNode:GetRedElementIfNotToken(byref):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
-44 (-10.00 % of base) : 693561.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax:Update(Microsoft.CodeAnalysis.CSharp.Syntax.IdentifierNameSyntax,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax:this (Tier1)
-66 (-9.91 % of base) : 694774.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33121_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-74 (-9.61 % of base) : 374335.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-74 (-9.61 % of base) : 385561.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-66 (-9.51 % of base) : 239342.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-64 (-9.47 % of base) : 391361.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-64 (-9.47 % of base) : 396623.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
-78 (-9.47 % of base) : 578257.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (Tier1)
librariestestsnotieredcompilation.run.linux.arm.Release.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 93237428 (overridden on cmd)
Total bytes of diff: 99689628 (overridden on cmd)
Total bytes of delta: 6452200 (6.92 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
19768 : 114704.dasm (37.94 % of base)
19734 : 105613.dasm (37.59 % of base)
15686 : 59632.dasm (68.98 % of base)
11146 : 6767.dasm (103.57 % of base)
11032 : 44511.dasm (103.57 % of base)
11032 : 49689.dasm (103.41 % of base)
9994 : 298299.dasm (98.54 % of base)
9776 : 54348.dasm (86.68 % of base)
9126 : 55192.dasm (88.24 % of base)
6656 : 6217.dasm (92.19 % of base)
5818 : 269203.dasm (85.61 % of base)
5790 : 23143.dasm (70.16 % of base)
5760 : 120487.dasm (109.34 % of base)
5682 : 44032.dasm (88.62 % of base)
5626 : 49967.dasm (89.27 % of base)
5564 : 296394.dasm (90.27 % of base)
5488 : 263552.dasm (92.99 % of base)
5444 : 232174.dasm (78.97 % of base)
5440 : 152423.dasm (97.49 % of base)
5246 : 43420.dasm (83.91 % of base)
Top file improvements (bytes):
-350 : 45184.dasm (-3.73 % of base)
-350 : 50911.dasm (-3.73 % of base)
-300 : 236.dasm (-3.83 % of base)
-168 : 91526.dasm (-4.03 % of base)
-164 : 67761.dasm (-2.88 % of base)
-142 : 68019.dasm (-2.61 % of base)
-110 : 280100.dasm (-16.92 % of base)
-96 : 284927.dasm (-15.84 % of base)
-88 : 279944.dasm (-15.17 % of base)
-88 : 231961.dasm (-2.97 % of base)
-74 : 280101.dasm (-9.56 % of base)
-68 : 276671.dasm (-7.44 % of base)
-58 : 276819.dasm (-6.37 % of base)
-52 : 4696.dasm (-6.28 % of base)
-44 : 175751.dasm (-10.78 % of base)
-40 : 276454.dasm (-5.39 % of base)
-38 : 279038.dasm (-7.69 % of base)
-36 : 284921.dasm (-9.00 % of base)
-34 : 284923.dasm (-8.81 % of base)
-28 : 144049.dasm (-9.40 % of base)
90 total files with Code Size differences (28 improved, 62 regressed), 20 unchanged.
Top method regressions (bytes):
19768 (37.94 % of base) : 114704.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.freach.freach001.freach001.Test:MainMethod():int (FullOpts)
19734 (37.59 % of base) : 105613.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.freach.freach007.freach007.Test:MainMethod():int (FullOpts)
15686 (68.98 % of base) : 59632.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)
11146 (103.57 % of base) : 6767.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
11032 (103.57 % of base) : 44511.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
11032 (103.41 % of base) : 49689.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
9994 (98.54 % of base) : 298299.dasm - System.Threading.Tasks.Dataflow.Tests.DebugAttributeTests:TestDebuggerDisplaysAndTypeProxies():this (FullOpts)
9776 (86.68 % of base) : 54348.dasm - Enumeration.FirstValidator:Validate(System.String,Enumeration.FirstModel):Microsoft.Extensions.Options.ValidateOptionsResult:this (FullOpts)
9126 (88.24 % of base) : 55192.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
6656 (92.19 % of base) : 6217.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
5818 (85.61 % of base) : 269203.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (FullOpts)
5790 (70.16 % of base) : 23143.dasm - Microsoft.CodeAnalysis.FindSymbols.DependentTypeFinder+ProjectIndex+<CreateIndexAsync>d__8:MoveNext():this (FullOpts)
5760 (109.34 % of base) : 120487.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F41B8911E2F21D4DC5E3A6E6E037C09C91843DEA626D26CDD1D82984E3611395A__GetRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
5682 (88.62 % of base) : 44032.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
5626 (89.27 % of base) : 49967.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
5564 (90.27 % of base) : 296394.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (FullOpts)
5488 (92.99 % of base) : 263552.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestTrySkipPartial(System.String,ubyte) (FullOpts)
5444 (78.97 % of base) : 232174.dasm - System.Text.Encodings.Web.Tests.InboxEncoderCommonTestBase:_RunEncodeUtf8_Battery(ubyte[][],System.String[]):this (FullOpts)
5440 (97.49 % of base) : 152423.dasm - System.Net.Primitives.Functional.Tests.IPEndPointParsing:Parse_InvalidPort_Throws(System.String,ubyte):this (FullOpts)
5246 (83.91 % of base) : 43420.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)
Top method improvements (bytes):
-350 (-3.73 % of base) : 45184.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte) (FullOpts)
-350 (-3.73 % of base) : 50911.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte) (FullOpts)
-300 (-3.83 % of base) : 236.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-168 (-4.03 % of base) : 91526.dasm - System.Data.RBTree`1[int]:RBDeleteX(int,int,int):int:this (FullOpts)
-164 (-2.88 % of base) : 67761.dasm - System.Collections.Frozen.Tests.FrozenSet_Generic_Tests`1[ulong]:ComparingWithOtherSets(int):this (FullOpts)
-142 (-2.61 % of base) : 68019.dasm - System.Collections.Frozen.Tests.FrozenSet_Generic_Tests`1[System.__Canon]:ComparingWithOtherSets(int):this (FullOpts)
-110 (-16.92 % of base) : 280100.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2806_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-96 (-15.84 % of base) : 284927.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5161_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-88 (-15.17 % of base) : 279944.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2631_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-88 (-2.97 % of base) : 231961.dasm - System.Text.Tests.DecoderConvert2:PosTest9():this (FullOpts)
-74 (-9.56 % of base) : 280101.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2807_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-68 (-7.44 % of base) : 276671.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex729_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-58 (-6.37 % of base) : 276819.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex845_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-52 (-6.28 % of base) : 4696.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:GetNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax],byref,ubyte,ubyte):System.Runtime.CompilerServices.StrongBox`1[Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.String]]:this (FullOpts)
-44 (-10.78 % of base) : 175751.dasm - System.Xml.XmlConvertTests.EncodeDecodeTests:v3():int:this (FullOpts)
-40 (-5.39 % of base) : 276454.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex418_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-38 (-7.69 % of base) : 279038.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1284_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-36 (-9.00 % of base) : 284921.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5155_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-34 (-8.81 % of base) : 284923.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5157_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-28 (-7.73 % of base) : 23876.dasm - Microsoft.CodeAnalysis.Shared.Utilities.CommonFormattingHelpers:AppendTrailingTriviaText(Microsoft.CodeAnalysis.SyntaxToken,System.Text.StringBuilder) (FullOpts)
Top method regressions (percentages):
4096 (127.52 % of base) : 286194.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4590_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
170 (118.06 % of base) : 45722.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanToEndOfLine():this (FullOpts)
170 (118.06 % of base) : 48701.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanToEndOfLine():this (FullOpts)
170 (118.06 % of base) : 9392.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanToEndOfLine():this (FullOpts)
726 (117.10 % of base) : 202334.dasm - System.Number:UInt128ToDecChars[ubyte](uint,System.UInt128):uint (FullOpts)
728 (117.04 % of base) : 59341.dasm - Microsoft.VisualBasic.CompilerServices.IOUtils:FindFileFilter(Microsoft.VisualBasic.CompilerServices.AssemblyData):System.String (FullOpts)
1802 (116.71 % of base) : 43566.dasm - Microsoft.CodeAnalysis.MetadataReaderExtensions:GetReferencedAssembliesOrThrow(System.Reflection.Metadata.MetadataReader):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AssemblyIdentity] (FullOpts)
1802 (116.71 % of base) : 49264.dasm - Microsoft.CodeAnalysis.MetadataReaderExtensions:GetReferencedAssembliesOrThrow(System.Reflection.Metadata.MetadataReader):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AssemblyIdentity] (FullOpts)
1802 (116.71 % of base) : 5018.dasm - Microsoft.CodeAnalysis.MetadataReaderExtensions:GetReferencedAssembliesOrThrow(System.Reflection.Metadata.MetadataReader):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AssemblyIdentity] (FullOpts)
70 (116.67 % of base) : 55053.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:RewriteSpecialBlocks():this (FullOpts)
70 (116.67 % of base) : 46743.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:RewriteSpecialBlocks():this (FullOpts)
70 (116.67 % of base) : 52862.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:RewriteSpecialBlocks():this (FullOpts)
446 (116.15 % of base) : 182537.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeLocalConstantTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes):this (FullOpts)
564 (115.57 % of base) : 92221.dasm - System.Data.XSDSchema:HandleRelations(System.Xml.Schema.XmlSchemaAnnotation,ubyte):this (FullOpts)
1400 (115.13 % of base) : 187118.dasm - System.Runtime.Caching.UsageBucket:Reduce():this (FullOpts)
452 (114.14 % of base) : 149590.dasm - System.Net.HttpListenerRequest+Helpers:FillFromString(System.Collections.Specialized.NameValueCollection,System.String,ubyte,System.Text.Encoding) (FullOpts)
5064 (113.64 % of base) : 90172.dasm - System.TermInfo+ParameterizedStrings:EvaluateInternal(System.String,byref,System.TermInfo+ParameterizedStrings+FormatParam[],System.Collections.Generic.Stack`1[System.TermInfo+ParameterizedStrings+FormatParam],byref,byref):System.String (FullOpts)
336 (113.51 % of base) : 20941.dasm - Newtonsoft.Json.JsonTextReader:EatWhitespace():this (FullOpts)
3742 (113.39 % of base) : 10942.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
552 (113.11 % of base) : 131816.dasm - System.Linq.Parallel.FixedMaxHeap`1[System.Linq.Parallel.Producer`1[int]]:HeapifyRoot():this (FullOpts)
Top method improvements (percentages):
-110 (-16.92 % of base) : 280100.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2806_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-96 (-15.84 % of base) : 284927.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5161_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-88 (-15.17 % of base) : 279944.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2631_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-44 (-10.78 % of base) : 175751.dasm - System.Xml.XmlConvertTests.EncodeDecodeTests:v3():int:this (FullOpts)
-74 (-9.56 % of base) : 280101.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2807_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-28 (-9.40 % of base) : 144049.dasm - System.Buffers.Text.Tests.TestData+<get_SingleTestData>d__200:MoveNext():ubyte:this (FullOpts)
-36 (-9.00 % of base) : 284921.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5155_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-34 (-8.81 % of base) : 284923.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5157_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-26 (-8.02 % of base) : 284896.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5117_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-26 (-7.93 % of base) : 284899.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5120_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-26 (-7.93 % of base) : 284901.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5122_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-28 (-7.73 % of base) : 23876.dasm - Microsoft.CodeAnalysis.Shared.Utilities.CommonFormattingHelpers:AppendTrailingTriviaText(Microsoft.CodeAnalysis.SyntaxToken,System.Text.StringBuilder) (FullOpts)
-38 (-7.69 % of base) : 279038.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1284_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-68 (-7.44 % of base) : 276671.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex729_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-14 (-7.14 % of base) : 3068.dasm - System.Linq.Enumerable+WhereSelectListIterator`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.__Canon]:MoveNext():ubyte:this (FullOpts)
-10 (-6.41 % of base) : 125793.dasm - System.IO.Tests.FileSystemWatcherTest:ExpectEvent(System.IO.FileSystemWatcher,int,System.Action,System.Action,System.String[],int,int) (FullOpts)
-58 (-6.37 % of base) : 276819.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex845_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-52 (-6.28 % of base) : 4696.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:GetNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax],byref,ubyte,ubyte):System.Runtime.CompilerServices.StrongBox`1[Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.String]]:this (FullOpts)
-24 (-5.53 % of base) : 276562.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex589_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-24 (-5.53 % of base) : 276565.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex598_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (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: 13249158 (overridden on cmd)
Total bytes of diff: 15122094 (overridden on cmd)
Total bytes of delta: 1872936 (14.14 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
11990 : 1303.dasm (58.57 % of base)
11068 : 25003.dasm (103.83 % of base)
10134 : 1770.dasm (106.16 % of base)
9364 : 1850.dasm (110.55 % of base)
9046 : 28198.dasm (88.12 % of base)
8648 : 2246.dasm (100.70 % of base)
7460 : 2254.dasm (92.62 % of base)
7380 : 16763.dasm (92.53 % of base)
7098 : 2234.dasm (82.29 % of base)
6826 : 1924.dasm (99.88 % of base)
6820 : 2007.dasm (98.90 % of base)
6752 : 2243.dasm (86.08 % of base)
6750 : 23807.dasm (92.39 % of base)
6438 : 14570.dasm (85.95 % of base)
6216 : 1321.dasm (33.41 % of base)
6198 : 2373.dasm (91.52 % of base)
6190 : 1941.dasm (100.52 % of base)
6186 : 1330.dasm (44.57 % of base)
6062 : 2374.dasm (74.78 % of base)
5846 : 2203.dasm (76.12 % of base)
Top file improvements (bytes):
-300 : 34449.dasm (-3.83 % of base)
-72 : 645.dasm (-9.18 % of base)
-52 : 22685.dasm (-6.28 % of base)
-40 : 1832.dasm (-35.09 % of base)
-16 : 14770.dasm (-0.60 % of base)
-10 : 14709.dasm (-6.41 % of base)
-10 : 27387.dasm (-2.82 % of base)
-8 : 26040.dasm (-1.57 % of base)
-8 : 33156.dasm (-1.37 % of base)
-6 : 37492.dasm (-0.67 % of base)
-6 : 37625.dasm (-1.97 % of base)
-6 : 661.dasm (-2.04 % of base)
-4 : 23262.dasm (-0.60 % of base)
-4 : 36055.dasm (-1.28 % of base)
-4 : 6178.dasm (-0.68 % of base)
-2 : 19492.dasm (-1.54 % of base)
-2 : 223.dasm (-1.56 % of base)
-2 : 111.dasm (-1.61 % of base)
-2 : 18074.dasm (-1.75 % of base)
-2 : 10354.dasm (-2.86 % of base)
87 total files with Code Size differences (25 improved, 62 regressed), 11 unchanged.
Top method regressions (bytes):
11990 (58.57 % of base) : 1303.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxConvexHullTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
11068 (103.83 % of base) : 25003.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
10134 (106.16 % of base) : 1770.dasm - BepuPhysics.BoundingBoxBatcher:ExecuteConvexBatch[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide](BepuPhysics.Collidables.ConvexShapeBatch`2[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide]):this (FullOpts)
9364 (110.55 % of base) : 1850.dasm - BepuPhysics.CollisionDetection.CollisionTasks.ConvexCompoundOverlapFinder`3[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.BigCompound]:FindLocalOverlaps(byref,int,BepuUtilities.Memory.BufferPool,BepuPhysics.Collidables.Shapes,float,byref):this (FullOpts)
9046 (88.12 % of base) : 28198.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
8648 (100.70 % of base) : 2246.dasm - BepuPhysics.CollisionDetection.CollisionTasks.CompoundPairOverlapFinder`2[BepuPhysics.Collidables.Compound,BepuPhysics.Collidables.Compound]:FindLocalOverlaps(byref,int,BepuUtilities.Memory.BufferPool,BepuPhysics.Collidables.Shapes,float,byref):this (FullOpts)
7460 (92.62 % of base) : 2254.dasm - BepuPhysics.CollisionDetection.CollisionTasks.MeshPairOverlapFinder`2[BepuPhysics.Collidables.Mesh,BepuPhysics.Collidables.Mesh]:FindLocalOverlaps(byref,int,BepuUtilities.Memory.BufferPool,BepuPhysics.Collidables.Shapes,float,byref):this (FullOpts)
7380 (92.53 % of base) : 16763.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.JpegComponentPostProcessor:CopyBlocksToColorBuffer(int):this (FullOpts)
7098 (82.29 % of base) : 2234.dasm - BepuPhysics.CollisionDetection.CollisionTasks.ManifoldCandidateHelper:ReduceWithoutComputingDepths(byref,System.Numerics.Vector`1[int],int,System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],int,byref,byref,byref,byref,byref,byref,byref,byref) (FullOpts)
6826 (99.88 % of base) : 1924.dasm - BepuPhysics.Constraints.TwoBodyTypeProcessor`7[BepuPhysics.Constraints.BallSocketPrestepData,BepuUtilities.Vector3Wide,BepuPhysics.Constraints.BallSocketFunctions,BepuPhysics.Constraints.AccessNoPosition,BepuPhysics.Constraints.AccessNoPosition,BepuPhysics.Constraints.AccessAll,BepuPhysics.Constraints.AccessAll]:WarmStart[DemoBenchmarks.RagdollTubeBenchmark+DemoPoseIntegratorCallbacks,BepuPhysics.Constraints.BatchShouldAlwaysIntegrate,BepuPhysics.Constraints.DisallowPoseIntegration](byref,byref,BepuPhysics.Bodies,byref,float,float,int,int,int):this (FullOpts)
6820 (98.90 % of base) : 2007.dasm - BepuPhysics.PoseIntegrator`1[DemoBenchmarks.RagdollTubeBenchmark+DemoPoseIntegratorCallbacks]:IntegrateBundlesAfterSubstepping(byref,int,int,float,float,int,int):this (FullOpts)
6752 (86.08 % of base) : 2243.dasm - BepuPhysics.Collidables.ConvexHullWide:GetBounds(byref,int,byref,byref,byref,byref):this (FullOpts)
6750 (92.39 % of base) : 23807.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:<GetUsingsAndDiagnostics>g__buildUsings|16_0(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax],Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,System.Nullable`1[ubyte],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings+UsingsAndDiagnostics:this (FullOpts)
6438 (85.95 % of base) : 14570.dasm - FSharp.Compiler.CheckFormatStrings:parseLoop@185(FSharp.Compiler.Text.Range,FSharp.Compiler.TcGlobals+TcGlobals,ubyte,ubyte,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.NameResolution+FormatStringCheckContext],FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+TType,int,System.Collections.Generic.List`1[System.Tuple`2[FSharp.Compiler.Text.Range,int]],System.Text.StringBuilder,System.Collections.Generic.List`1[FSharp.Compiler.TypedTree+TType],Microsoft.FSharp.Core.FSharpRef`1[int],Microsoft.FSharp.Core.FSharpRef`1[System.String],Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[int],FSharp.Compiler.TypedTree+TType]],int,int,int,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[int,int,FSharp.Compiler.Text.Range]]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType] (FullOpts)
6216 (33.41 % of base) : 1321.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TriangleConvexHullTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
6198 (91.52 % of base) : 2373.dasm - BepuPhysics.Constraints.Contact.ContactNonconvexOneBodyFunctions`2[BepuPhysics.Constraints.Contact.Contact4NonconvexOneBodyPrestepData,BepuPhysics.Constraints.Contact.Contact4NonconvexAccumulatedImpulses]:WarmStart(byref,byref,byref,byref,byref,byref):this (FullOpts)
6190 (100.52 % of base) : 1941.dasm - BepuPhysics.Constraints.Contact.ContactNonconvexTwoBodyFunctions`2[BepuPhysics.Constraints.Contact.Contact4NonconvexPrestepData,BepuPhysics.Constraints.Contact.Contact4NonconvexAccumulatedImpulses]:WarmStart(byref,byref,byref,byref,byref,byref,byref,byref,byref,byref):this (FullOpts)
6186 (44.57 % of base) : 1330.dasm - BepuPhysics.CollisionDetection.CollisionTasks.CylinderConvexHullTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
6062 (74.78 % of base) : 2374.dasm - BepuPhysics.Constraints.Contact.ContactNonconvexOneBodyFunctions`2[BepuPhysics.Constraints.Contact.Contact4NonconvexOneBodyPrestepData,BepuPhysics.Constraints.Contact.Contact4NonconvexAccumulatedImpulses]:Solve(byref,byref,byref,float,float,byref,byref,byref):this (FullOpts)
5846 (76.12 % of base) : 2203.dasm - BepuPhysics.CollisionDetection.CollisionTasks.CapsuleCylinderTester:GetClosestPointBetweenLineSegmentAndCylinder(byref,byref,byref,byref,byref,byref,byref) (FullOpts)
Top method improvements (bytes):
-300 (-3.83 % of base) : 34449.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-72 (-9.18 % of base) : 645.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
-52 (-6.28 % of base) : 22685.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:GetNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax],byref,ubyte,ubyte):System.Runtime.CompilerServices.StrongBox`1[Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.String]]:this (FullOpts)
-40 (-35.09 % of base) : 1832.dasm - BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)
-16 (-0.60 % of base) : 14770.dasm - FSharp.Compiler.TypedTreePickle:p_ValData(FSharp.Compiler.TypedTree+Val,FSharp.Compiler.TypedTreePickle+WriterState) (FullOpts)
-10 (-6.41 % of base) : 14709.dasm - FSharp.Compiler.TypedTreePickle+p_tcaug@1979-16:Invoke(Microsoft.FSharp.Core.Unit,FSharp.Compiler.TypedTreePickle+WriterState):Microsoft.FSharp.Core.Unit:this (FullOpts)
-10 (-2.82 % of base) : 27387.dasm - Microsoft.CodeAnalysis.DiagnosticBag+<AsEnumerableFiltered>d__16:MoveNext():ubyte:this (FullOpts)
-8 (-1.37 % of base) : 33156.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetFields>d__31:MoveNext():ubyte:this (FullOpts)
-8 (-1.57 % of base) : 26040.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Contains(System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte:this (FullOpts)
-6 (-2.04 % of base) : 661.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-6 (-1.97 % of base) : 37625.dasm - System.Management.Automation.CompiledCommandParameter+<GetMatchingParameterSetData>d__78:MoveNext():ubyte:this (FullOpts)
-6 (-0.67 % of base) : 37492.dasm - System.Management.Automation.Runspaces.CommandParameter:ToCommandParameterInternal(System.Management.Automation.Runspaces.CommandParameter,ubyte):System.Management.Automation.CommandParameterInternal (FullOpts)
-4 (-0.68 % of base) : 6178.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:seekReadIndexedRows$cont@793[System.__Canon,FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+TypeOrMethodDefTag],System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],int,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+TypeOrMethodDefTag]],Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+TypeOrMethodDefTag],int],Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
-4 (-0.60 % of base) : 23262.dasm - Microsoft.CodeAnalysis.PEModule+<GetTypeDefsOrThrow>d__80:MoveNext():ubyte:this (FullOpts)
-4 (-1.28 % of base) : 36055.dasm - System.Management.Automation.SessionStateInternal:IsItemContainer(System.String,System.Management.Automation.CmdletProviderContext):ubyte:this (FullOpts)
-2 (-2.86 % of base) : 10354.dasm - FSharp.Compiler.NameResolution+MakeCtorGroup@243:Invoke(FSharp.Compiler.Infos+MethInfo):int:this (FullOpts)
-2 (-1.41 % of base) : 27916.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
-2 (-0.42 % of base) : 23018.dasm - Microsoft.CodeAnalysis.PEModule:ContainsNoPiaLocalTypes():ubyte:this (FullOpts)
-2 (-1.75 % of base) : 18074.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
-2 (-1.56 % of base) : 223.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (FullOpts)
Top method regressions (percentages):
428 (126.63 % of base) : 17169.dasm - SixLabors.ImageSharp.Compression.Zlib.Deflater:Deflate(System.Span`1[ubyte],int,int):int:this (FullOpts)
4902 (122.24 % of base) : 2405.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+IntertreeOverlapHandler[DemoBenchmarks.ShapePileBenchmark+DemoNarrowPhaseCallbacks]](byref,byref,byref,byref):this (FullOpts)
170 (118.06 % of base) : 21010.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanToEndOfLine():this (FullOpts)
70 (116.67 % of base) : 31458.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:RewriteSpecialBlocks():this (FullOpts)
1796 (115.87 % of base) : 22958.dasm - Microsoft.CodeAnalysis.MetadataReaderExtensions:GetReferencedAssembliesOrThrow(System.Reflection.Metadata.MetadataReader):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AssemblyIdentity] (FullOpts)
2072 (114.35 % of base) : 17000.dasm - SixLabors.ImageSharp.Advanced.ParallelRowIterator+RowOperationWrapper`1[SixLabors.ImageSharp.Processing.Processors.Convolution.BokehBlurProcessor+SecondPassConvolutionRowOperation]:Invoke(int):this (FullOpts)
448 (113.71 % of base) : 2412.dasm - BepuPhysics.IslandAwakener:<PrepareJobs>g__EnsurePairCacheTypeCapacities|38_1(byref,byref,BepuUtilities.Memory.BufferPool) (FullOpts)
142 (112.70 % of base) : 21353.dasm - Microsoft.CodeAnalysis.GreenNode:GetLastTerminal():Microsoft.CodeAnalysis.GreenNode:this (FullOpts)
906 (112.69 % of base) : 2236.dasm - BepuPhysics.Collidables.Compound:FindLocalOverlaps[BepuPhysics.CollisionDetection.CollisionTasks.ConvexCompoundTaskOverlaps,BepuPhysics.CollisionDetection.CollisionTasks.ConvexCompoundOverlaps](byref,BepuUtilities.Memory.BufferPool,BepuPhysics.Collidables.Shapes,byref):this (FullOpts)
146 (112.31 % of base) : 21195.dasm - Microsoft.CodeAnalysis.GreenNode:GetFirstTerminal():Microsoft.CodeAnalysis.GreenNode:this (FullOpts)
926 (111.84 % of base) : 34081.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodDefTable(System.Reflection.Metadata.BlobBuilder,System.Collections.Immutable.ImmutableArray`1[int],System.Reflection.Metadata.Ecma335.MetadataSizes,int):this (FullOpts)
514 (111.74 % of base) : 19667.dasm - System.SpanHelpers:NonPackedIndexOfAnyValueType[ubyte,System.SpanHelpers+DontNegate`1[ubyte]](byref,ubyte,ubyte,int):int (FullOpts)
4242 (111.57 % of base) : 1302.dasm - DemoBenchmarks.ConvexCollisionTesterBenchmarks:Test4Contact[BepuPhysics.CollisionDetection.CollisionTasks.BoxConvexHullTester,BepuPhysics.Collidables.BoxWide,BepuPhysics.Collidables.ConvexHullWide](BepuPhysics.Collidables.BoxWide,BepuPhysics.Collidables.ConvexHullWide):System.Numerics.Vector`1[float]:this (FullOpts)
4502 (111.11 % of base) : 2591.dasm - DemoBenchmarks.GatherScatterBenchmarks:GatherState():System.Numerics.Vector`1[float]:this (FullOpts)
854 (110.91 % of base) : 17182.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree:WriteTree(SixLabors.ImageSharp.Compression.Zlib.DeflaterPendingBuffer,SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree):this (FullOpts)
9364 (110.55 % of base) : 1850.dasm - BepuPhysics.CollisionDetection.CollisionTasks.ConvexCompoundOverlapFinder`3[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.BigCompound]:FindLocalOverlaps(byref,int,BepuUtilities.Memory.BufferPool,BepuPhysics.Collidables.Shapes,float,byref):this (FullOpts)
1126 (109.96 % of base) : 292.dasm - System.Reflection.TypeNameParser:ParseNonQualifiedTypeName():System.Reflection.TypeNameParser+TypeName:this (FullOpts)
4136 (109.36 % of base) : 16974.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:DecodeBlockProgressiveACRefined(byref,byref):this (FullOpts)
3176 (109.14 % of base) : 1815.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+SelfOverlapHandler[DemoBenchmarks.RagdollTubeBenchmark+SubgroupFilteredCallbacks]](byref,byref,byref):this (FullOpts)
466 (108.88 % of base) : 29793.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:<ExpressionOfTypeMatchesPatternTypeForLearningFromSuccessfulTypeTest>g__isRuntimeSimilar|42_0(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte (FullOpts)
Top method improvements (percentages):
-40 (-35.09 % of base) : 1832.dasm - BepuPhysics.CollisionDetection.ContactConstraintAccessor`6[BepuPhysics.Constraints.Contact.Contact1,BepuPhysics.CollisionDetection.TwoBodyHandles,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses,BepuPhysics.CollisionDetection.ContactImpulses1,BepuPhysics.CollisionDetection.ConstraintCache1]:CopyContactData(byref,byref,byref) (FullOpts)
-72 (-9.18 % of base) : 645.dasm - System.Reflection.MethodBaseInvoker:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this (FullOpts)
-10 (-6.41 % of base) : 14709.dasm - FSharp.Compiler.TypedTreePickle+p_tcaug@1979-16:Invoke(Microsoft.FSharp.Core.Unit,FSharp.Compiler.TypedTreePickle+WriterState):Microsoft.FSharp.Core.Unit:this (FullOpts)
-52 (-6.28 % of base) : 22685.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:GetNonTypeMemberNames(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax],byref,ubyte,ubyte):System.Runtime.CompilerServices.StrongBox`1[Microsoft.CodeAnalysis.Collections.ImmutableSegmentedHashSet`1[System.String]]:this (FullOpts)
-300 (-3.83 % of base) : 34449.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-2 (-2.86 % of base) : 10354.dasm - FSharp.Compiler.NameResolution+MakeCtorGroup@243:Invoke(FSharp.Compiler.Infos+MethInfo):int:this (FullOpts)
-10 (-2.82 % of base) : 27387.dasm - Microsoft.CodeAnalysis.DiagnosticBag+<AsEnumerableFiltered>d__16:MoveNext():ubyte:this (FullOpts)
-6 (-2.04 % of base) : 661.dasm - System.Linq.Enumerable+<OfTypeIterator>d__64`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-6 (-1.97 % of base) : 37625.dasm - System.Management.Automation.CompiledCommandParameter+<GetMatchingParameterSetData>d__78:MoveNext():ubyte:this (FullOpts)
-2 (-1.75 % of base) : 18074.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,int]:MoveNext():ubyte:this (FullOpts)
-2 (-1.67 % of base) : 5567.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[FSharp.Compiler.Text.Position,System.ValueTuple`3[int,int,ubyte]]:MoveNext():ubyte:this (FullOpts)
-2 (-1.61 % of base) : 111.dasm - System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.__Canon,ubyte]:MoveNext():ubyte:this (FullOpts)
-2 (-1.61 % of base) : 4105.dasm - System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
-8 (-1.57 % of base) : 26040.dasm - Roslyn.Utilities.MultiDictionary`2+ValueSet[System.__Canon,System.__Canon]:Contains(System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte:this (FullOpts)
-2 (-1.56 % of base) : 223.dasm - System.Collections.Generic.Dictionary`2+Enumerator[int,System.__Canon]:MoveNext():ubyte:this (FullOpts)
-2 (-1.54 % of base) : 19492.dasm - System.Collections.Generic.HashSet`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-2 (-1.41 % of base) : 27916.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
-2 (-1.39 % of base) : 28395.dasm - System.Collections.Generic.HashSet`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:MoveNext():ubyte:this (FullOpts)
-8 (-1.37 % of base) : 33156.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetFields>d__31:MoveNext():ubyte:this (FullOpts)
-4 (-1.28 % of base) : 36055.dasm - System.Management.Automation.SessionStateInternal:IsItemContainer(System.String,System.Management.Automation.CmdletProviderContext):ubyte:this (FullOpts)