Assembly Diffs
linux arm
Diffs are based on 2,238,105 contexts (829,328 MinOpts, 1,408,777 FullOpts).
MISSED contexts: base: 71,274 (3.08%), diff: 72,559 (3.14%)
Overall (-122,174 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.arm.checked.mch |
15,250,208 |
-1,344 |
benchmarks.run_pgo.linux.arm.checked.mch |
63,745,630 |
-18,358 |
benchmarks.run_tiered.linux.arm.checked.mch |
21,504,686 |
-1,306 |
coreclr_tests.run.linux.arm.checked.mch |
321,631,208 |
-10,726 |
libraries.crossgen2.linux.arm.checked.mch |
34,521,638 |
-22 |
libraries.pmi.linux.arm.checked.mch |
49,769,404 |
-7,214 |
libraries_tests.run.linux.arm.Release.mch |
243,597,272 |
-52,352 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch |
94,156,910 |
-29,380 |
realworld.run.linux.arm.checked.mch |
13,589,492 |
-1,472 |
MinOpts (+532 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run_pgo.linux.arm.checked.mch |
11,199,966 |
-76 |
benchmarks.run_tiered.linux.arm.checked.mch |
8,653,000 |
-26 |
coreclr_tests.run.linux.arm.checked.mch |
212,477,588 |
+414 |
libraries_tests.run.linux.arm.Release.mch |
120,969,132 |
+220 |
FullOpts (-122,706 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.arm.checked.mch |
14,861,006 |
-1,344 |
benchmarks.run_pgo.linux.arm.checked.mch |
52,545,664 |
-18,282 |
benchmarks.run_tiered.linux.arm.checked.mch |
12,851,686 |
-1,280 |
coreclr_tests.run.linux.arm.checked.mch |
109,153,620 |
-11,140 |
libraries.crossgen2.linux.arm.checked.mch |
34,520,408 |
-22 |
libraries.pmi.linux.arm.checked.mch |
49,663,180 |
-7,214 |
libraries_tests.run.linux.arm.Release.mch |
122,628,140 |
-52,572 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch |
84,086,174 |
-29,380 |
realworld.run.linux.arm.checked.mch |
13,154,192 |
-1,472 |
Example diffs
benchmarks.run.linux.arm.checked.mch
-16 (-34.78%) : 44877.dasm - System.Threading.Tests.PerfInterlocked:Exchangeint():int:this (FullOpts)
@@ -2,70 +2,57 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
-; fully interruptible
+; sp based frame
+; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.Threading.Tests.Perf_Interlocked>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 3, 6 ) byref -> r0 single-def "Inlining Arg"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M44979_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_M44979_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M44979_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- ldrsb r1, [r0]
+ ldrsb r3, [r0]
adds r0, 28
; gcrRegs -[r0]
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M44979_IG04
- movs r1, 1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ;; size=20 bbWeight=1 PerfScore 7.00
-G_M44979_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,lr}
- bx r3 // <unknown method>
- ; gcr arg pop 0
- ;; size=6 bbWeight=1 PerfScore 2.00
-G_M44979_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movs r3, 1
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M44979_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ strex r2, r3, [r0]
+ cmp r2, 0
+ bne SHORT G_M44979_IG03
+ dmb 15
+ mov r0, r1
; byrRegs -[r0]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- ; gcr arg pop 0
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=18 bbWeight=1 PerfScore 6.00
+G_M44979_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 46, prolog size 6, PerfScore 11.00, instruction count 16, allocated bytes for code 46 (MethodHash=f5bc504c) for method System.Threading.Tests.Perf_Interlocked:Exchange_int():int:this (FullOpts)
+; Total bytes of code 30, prolog size 2, PerfScore 11.00, instruction count 11, allocated bytes for code 30 (MethodHash=f5bc504c) for method System.Threading.Tests.Perf_Interlocked:Exchange_int():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 : 23 (0x00017) Actual length = 46 (0x00002e)
- ---- 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 : 15 (0x0000f) Actual length = 30 (0x00001e)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
-16 (-33.33%) : 2985.dasm - System.Threading.Tests.PerfInterlocked:Incrementint():int:this (FullOpts)
@@ -2,69 +2,60 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.Threading.Tests.Perf_Interlocked>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 3, 6 ) byref -> r0 single-def "Inlining Arg"
+;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M31305_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_M31305_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M31305_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- ldrsb r1, [r0]
+ ldrsb r3, [r0]
adds r0, 28
; gcrRegs -[r0]
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M31305_IG04
- movs r1, 1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
+ movs r3, 1
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M31305_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ adds r1, r1, r3
+ strex r2, r1, [r0]
+ cmp r2, 0
+ bne SHORT G_M31305_IG03
+ dmb 15
+ adds r0, r1, 1
; byrRegs -[r0]
- adds r0, r0, 1
- ;; size=24 bbWeight=1 PerfScore 9.00
-G_M31305_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M31305_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M31305_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 48, prolog size 6, PerfScore 12.00, instruction count 17, allocated bytes for code 48 (MethodHash=a3c585b6) for method System.Threading.Tests.Perf_Interlocked:Increment_int():int:this (FullOpts)
+; Total bytes of code 32, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 32 (MethodHash=a3c585b6) for method System.Threading.Tests.Perf_Interlocked:Increment_int():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 : 24 (0x00018) Actual length = 48 (0x000030)
- ---- 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 : 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
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
-16 (-33.33%) : 40843.dasm - System.Threading.Tests.PerfInterlocked:Addint():int:this (FullOpts)
@@ -2,69 +2,60 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.Threading.Tests.Perf_Interlocked>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 3, 6 ) byref -> r0 single-def "Inlining Arg"
+;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M13801_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_M13801_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M13801_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- ldrsb r1, [r0]
+ ldrsb r3, [r0]
adds r0, 28
; gcrRegs -[r0]
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M13801_IG04
- movs r1, 2
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
+ movs r3, 2
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M13801_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ adds r1, r1, r3
+ strex r2, r1, [r0]
+ cmp r2, 0
+ bne SHORT G_M13801_IG03
+ dmb 15
+ adds r0, r1, 2
; byrRegs -[r0]
- adds r0, r0, 2
- ;; size=24 bbWeight=1 PerfScore 9.00
-G_M13801_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M13801_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M13801_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 48, prolog size 6, PerfScore 12.00, instruction count 17, allocated bytes for code 48 (MethodHash=c78fca16) for method System.Threading.Tests.Perf_Interlocked:Add_int():int:this (FullOpts)
+; Total bytes of code 32, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 32 (MethodHash=c78fca16) for method System.Threading.Tests.Perf_Interlocked:Add_int():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 : 24 (0x00018) Actual length = 48 (0x000030)
- ---- 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 : 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
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
+24 (+12.77%) : 29059.dasm - System.Threading.Tests.Perf_SpinLock:TryEnterExit():ubyte:this (FullOpts)
@@ -5,23 +5,22 @@
; r11 based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 6 single block inlinees; 8 inlinees without PGO data
+; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Threading.Tests.Perf_SpinLock>
; V01 loc0 [V01 ] ( 8, 5.50) struct ( 4) [sp+0x04] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.SpinLock>
; V02 loc1 [V02 ] ( 4, 3 ) ubyte -> [sp+0x00] do-not-enreg[X] must-init addr-exposed ld-addr-op
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 3.50) int -> r4 single-def "Inline stloc first use temp"
+; V04 tmp1 [V04,T01] ( 6, 3.50) int -> r0 single-def "Inline stloc first use temp"
;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V06 tmp3 [V06,T03] ( 3, 1.50) int -> r0 single-def "Inline stloc first use temp"
-;* V07 tmp4 [V07 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V08 tmp5 [V08,T04] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V11 tmp8 [V11 ] ( 8, 5.50) int -> [sp+0x04] do-not-enreg[X] addr-exposed "field V01._owner (fldOffset=0x0)" P-DEP
-;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V13 cse0 [V13,T02] ( 2, 2 ) int -> r3 "CSE - aggressive"
+; V06 tmp3 [V06,T03] ( 3, 1.50) int -> lr single-def "Inline stloc first use temp"
+;* V07 tmp4 [V07,T04] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
+;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V10 tmp7 [V10 ] ( 8, 5.50) int -> [sp+0x04] do-not-enreg[X] addr-exposed "field V01._owner (fldOffset=0x0)" P-DEP
+;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V12 cse0 [V12,T02] ( 2, 2 ) int -> r3 "CSE - aggressive"
;
; Lcl frame size = 12
@@ -35,40 +34,49 @@ G_M62046_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=16 bbWeight=1 PerfScore 6.00
G_M62046_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
- ldr r1, [r0+0x04]
- str r1, [sp+0x04] // [V11 tmp8]
- ldr r4, [sp+0x04] // [V11 tmp8]
- ldrb r1, [sp] // [V02 loc1]
- cmp r1, 0
- bne SHORT G_M62046_IG06
+ ldr r0, [r0+0x04]
+ ; gcrRegs -[r0]
+ str r0, [sp+0x04] // [V10 tmp7]
+ ldr r0, [sp+0x04] // [V10 tmp7]
+ ldrb r2, [sp] // [V02 loc1]
+ cmp r2, 0
+ bne SHORT G_M62046_IG08
;; size=14 bbWeight=1 PerfScore 6.00
G_M62046_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0]
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- ands r1, r4
- cmp r1, 0x80000000
- bne SHORT G_M62046_IG06
- orr r1, r4, 1
- add r0, sp, 4 // [V11 tmp8]
- mov r2, r4
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- cmp r0, r4
- beq SHORT G_M62046_IG04
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ ands r2, r0
+ cmp r2, 0x80000000
+ bne SHORT G_M62046_IG08
+ add r2, sp, 4 // [V10 tmp7]
+ ; byrRegs +[r2]
+ orr r1, r0, 1
+ ;; size=22 bbWeight=0.50 PerfScore 3.50
+G_M62046_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {r2}, byref, isz
+ ldrex lr, [r2]
+ cmp lr, r0
+ bne SHORT G_M62046_IG05
+ strex r3, r1, [r2]
+ cmp lr, 0
+ bne SHORT G_M62046_IG04
+ ;; size=18 bbWeight=0.50 PerfScore 3.00
+G_M62046_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {r2}, byref, isz
+ dmb 15
+ cmp lr, r0
+ beq SHORT G_M62046_IG06
movs r2, 0
- b SHORT G_M62046_IG05
- ;; size=42 bbWeight=0.50 PerfScore 7.50
-G_M62046_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r2]
+ b SHORT G_M62046_IG07
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
+G_M62046_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r2, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M62046_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M62046_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
str r2, [sp] // [V02 loc1]
- cmp r0, r4
- beq SHORT G_M62046_IG07
+ cmp lr, r0
+ beq SHORT G_M62046_IG09
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M62046_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M62046_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add r0, sp, 4 // [V01 loc0]
add r2, sp, 0 // [V02 loc1]
movs r1, 0
@@ -77,43 +85,56 @@ G_M62046_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr r3, [r3]
blx r3 // <unknown method>
;; size=18 bbWeight=0.50 PerfScore 3.50
-G_M62046_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x04] // [V11 tmp8]
+G_M62046_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ldr r3, [sp+0x04] // [V10 tmp7]
ands r3, r3, 0x80000000
cmp r3, 0
- bne SHORT G_M62046_IG09
+ bne SHORT G_M62046_IG12
;; size=10 bbWeight=1 PerfScore 4.00
-G_M62046_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x04] // [V11 tmp8]
+G_M62046_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ldr r3, [sp+0x04] // [V10 tmp7]
mvn r2, 0x80000000
and r4, r3, r2
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // <unknown method>
cmp r4, r0
- bne SHORT G_M62046_IG12
- add r0, sp, 4 // [V11 tmp8]
- movs r1, 0
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- b SHORT G_M62046_IG10
- ;; size=40 bbWeight=0.50 PerfScore 7.00
-G_M62046_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add r0, sp, 4 // [V11 tmp8]
- mov r1, -1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M62046_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bne SHORT G_M62046_IG16
+ add r0, sp, 4 // [V10 tmp7]
+ ; byrRegs +[r0]
+ movs r3, 0
+ ;; size=28 bbWeight=0.50 PerfScore 5.00
+G_M62046_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ strex r2, r3, [r0]
+ cmp r2, 0
+ bne SHORT G_M62046_IG11
+ dmb 15
+ b SHORT G_M62046_IG14
+ ;; size=18 bbWeight=0.50 PerfScore 3.00
+G_M62046_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r0]
+ add r0, sp, 4 // [V10 tmp7]
+ ; byrRegs +[r0]
+ mov r3, -1
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M62046_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ adds r1, r1, r3
+ strex r2, r1, [r0]
+ cmp r2, 0
+ bne SHORT G_M62046_IG13
+ dmb 15
+ ;; size=18 bbWeight=0.50 PerfScore 3.00
+G_M62046_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r0]
ldrb r0, [sp] // [V02 loc1]
;; size=4 bbWeight=1 PerfScore 1.00
-G_M62046_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M62046_IG15: ; bbWeight=1, epilog, nogc, extend
add sp, 12
pop {r4,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M62046_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62046_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -121,7 +142,7 @@ G_M62046_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 188, prolog size 16, PerfScore 41.50, instruction count 69, allocated bytes for code 188 (MethodHash=c5c10da1) for method System.Threading.Tests.Perf_SpinLock:TryEnterExit():ubyte:this (FullOpts)
+; Total bytes of code 212, prolog size 16, PerfScore 45.50, instruction count 77, allocated bytes for code 212 (MethodHash=c5c10da1) for method System.Threading.Tests.Perf_SpinLock:TryEnterExit():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -133,7 +154,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 94 (0x0005e) Actual length = 188 (0x0000bc)
+ Function Length : 106 (0x0006a) Actual length = 212 (0x0000d4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+6 (+14.29%) : 9496.dasm - System.Collections.Immutable.SecureObjectPool:NewId():int (FullOpts)
@@ -5,43 +5,47 @@
; r11 based frame
; fully interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 3, 17 ) int -> r0
+; V00 loc0 [V00,T00] ( 3, 17 ) int -> r3
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 cse0 [V02,T01] ( 2, 9 ) byref -> r4 hoist "CSE - aggressive"
+; V02 cse0 [V02,T01] ( 2, 9 ) byref -> r0 hoist "CSE - aggressive"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M34283_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
- add r11, sp, 8
- ;; size=8 bbWeight=1 PerfScore 2.00
+ push {r11,lr}
+ mov r11, sp
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M34283_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movw r4, 0xd1ff
- movt r4, 0xd1ff
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
;; size=8 bbWeight=1 PerfScore 2.00
-G_M34283_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
- ; byrRegs +[r4]
- mov r0, r4
+G_M34283_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- movs r1, 1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- ; gcr arg pop 0
- adds r0, r0, 1
- cmp r0, -1
+ movs r3, 1
+ ;; size=2 bbWeight=8 PerfScore 8.00
+G_M34283_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ adds r1, r1, r3
+ strex r2, r1, [r0]
+ cmp r2, 0
+ bne SHORT G_M34283_IG04
+ dmb 15
+ adds r3, r1, 1
+ cmp r3, -1
beq SHORT G_M34283_IG03
- ;; size=22 bbWeight=8 PerfScore 64.00
-G_M34283_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[r4]
- pop {r3,r4,r11,pc}
+ ;; size=26 bbWeight=8 PerfScore 72.00
+G_M34283_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r0]
+ mov r0, r3
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M34283_IG06: ; bbWeight=1, epilog, nogc, extend
+ pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 42, prolog size 8, PerfScore 69.00, instruction count 13, allocated bytes for code 42 (MethodHash=0ac07a14) for method System.Collections.Immutable.SecureObjectPool:NewId():int (FullOpts)
+; Total bytes of code 48, prolog size 6, PerfScore 86.00, instruction count 16, allocated bytes for code 48 (MethodHash=0ac07a14) for method System.Collections.Immutable.SecureObjectPool:NewId():int (FullOpts)
; ============================================================
Unwind Info:
@@ -53,11 +57,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 21 (0x00015) Actual length = 42 (0x00002a)
+ Function Length : 24 (0x00018) Actual length = 48 (0x000030)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
+14 (+15.22%) : 2128.dasm - System.ConsolePal:CheckTerminalSettingsInvalidated() (FullOpts)
@@ -5,7 +5,7 @@
; r11 based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
;* V00 loc0 [V00 ] ( 0, 0 ) ubyte -> zero-ref
@@ -31,18 +31,26 @@ G_M21378_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr r3, [r3]
blx r3 // <unknown method>
;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M21378_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movs r1, 0
- movs r2, 1
+G_M21378_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // <unknown method>
- cmp r0, 1
+ movs r2, 0
+ movs r1, 1
+ ;; size=12 bbWeight=1 PerfScore 4.00
+G_M21378_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ldrex lr, [r3]
+ cmp lr, r1
bne SHORT G_M21378_IG06
- ;; size=26 bbWeight=1 PerfScore 9.00
-G_M21378_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ strex r0, r2, [r3]
+ cmp lr, 0
+ bne SHORT G_M21378_IG05
+ ;; size=18 bbWeight=1 PerfScore 6.00
+G_M21378_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ dmb 15
+ cmp lr, 1
+ bne SHORT G_M21378_IG08
+ ;; size=10 bbWeight=1 PerfScore 3.00
+G_M21378_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -52,11 +60,11 @@ G_M21378_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movt r2, 0xd1ff
str r3, [r2]
;; size=26 bbWeight=0.50 PerfScore 4.00
-G_M21378_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M21378_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 92, prolog size 6, PerfScore 24.00, instruction count 30, allocated bytes for code 92 (MethodHash=edd1ac7d) for method System.ConsolePal:CheckTerminalSettingsInvalidated() (FullOpts)
+; Total bytes of code 106, prolog size 6, PerfScore 28.00, instruction count 34, allocated bytes for code 106 (MethodHash=edd1ac7d) for method System.ConsolePal:CheckTerminalSettingsInvalidated() (FullOpts)
; ============================================================
Unwind Info:
@@ -68,7 +76,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 46 (0x0002e) Actual length = 92 (0x00005c)
+ Function Length : 53 (0x00035) Actual length = 106 (0x00006a)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
benchmarks.run_pgo.linux.arm.checked.mch
-22 (-47.83%) : 9765.dasm - System.Threading.Interlocked:Add(byref,int):int (Tier1)
@@ -2,66 +2,52 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; Tier1 code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 4 ) byref -> r0 single-def
-; V01 arg1 [V01,T01] ( 4, 4 ) int -> r4 single-def
+; V00 arg0 [V00,T01] ( 3, 3 ) byref -> r0 single-def
+; V01 arg1 [V01,T00] ( 4, 4 ) int -> r1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 4
G_M51449_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
- add r11, sp, 8
- mov r4, r1
- ;; size=10 bbWeight=1 PerfScore 3.00
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
G_M51449_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M51449_IG04
- mov r1, r4
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
+ ldrex r2, [r0]
+ adds r2, r2, r1
+ strex r3, r2, [r0]
+ cmp r3, 0
+ bne SHORT G_M51449_IG02
+ dmb 15
+ adds r0, r2, r1
; byrRegs -[r0]
- adds r0, r0, r4
- ;; size=18 bbWeight=1 PerfScore 7.00
+ ;; size=20 bbWeight=1 PerfScore 7.00
G_M51449_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r3,r4,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M51449_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 46, prolog size 8, PerfScore 11.00, instruction count 16, allocated bytes for code 46 (MethodHash=c2693706) for method System.Threading.Interlocked:Add(byref,int):int (Tier1)
+; Total bytes of code 24, prolog size 2, PerfScore 9.00, instruction count 9, allocated bytes for code 24 (MethodHash=c2693706) for method System.Threading.Interlocked:Add(byref,int):int (Tier1)
; ============================================================
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 : 23 (0x00017) Actual length = 46 (0x00002e)
- ---- 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 : 12 (0x0000c) Actual length = 24 (0x000018)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
-16 (-42.11%) : 17291.dasm - System.Threading.Interlocked:Exchange(byref,int):int (Tier1)
@@ -2,63 +2,51 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; Tier1 code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 4 ) byref -> r0 single-def
+; V00 arg0 [V00,T00] ( 3, 3 ) byref -> r0 single-def
; V01 arg1 [V01,T01] ( 3, 3 ) int -> r1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M7811_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr}
- mov r11, sp
- ;; size=6 bbWeight=1 PerfScore 2.00
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
G_M7811_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M7811_IG04
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
+ ldrex r2, [r0]
+ strex r3, r1, [r0]
+ cmp r3, 0
+ bne SHORT G_M7811_IG02
+ dmb 15
+ mov r0, r2
; byrRegs -[r0]
- ;; size=14 bbWeight=1 PerfScore 5.00
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M7811_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M7811_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 38, prolog size 6, PerfScore 8.00, instruction count 13, allocated bytes for code 38 (MethodHash=911fe17c) for method System.Threading.Interlocked:Exchange(byref,int):int (Tier1)
+; Total bytes of code 22, prolog size 2, PerfScore 8.00, instruction count 8, allocated bytes for code 22 (MethodHash=911fe17c) for method System.Threading.Interlocked:Exchange(byref,int):int (Tier1)
; ============================================================
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 : 19 (0x00013) Actual length = 38 (0x000026)
- ---- 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 : 11 (0x0000b) Actual length = 22 (0x000016)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
-30 (-39.47%) : 27642.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
@@ -3,69 +3,52 @@
; Tier1 code
; optimized code
; optimized using Dynamic PGO
-; r11 based frame
+; sp based frame
; fully interruptible
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 3
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.Threading.CancellationTokenSource+Registrations>
-; V01 loc0 [V01,T01] ( 4, 3 ) byref -> r4 single-def
+; V00 this [V00,T00] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Threading.CancellationTokenSource+Registrations>
+; V01 loc0 [V01,T01] ( 3, 2 ) byref -> r0 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 4
-G_M3949_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
- add r11, sp, 8
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M3949_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M3949_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M3949_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- ldrsb r1, [r0]
- add r4, r0, 40
- ; byrRegs +[r4]
- cmp r4, 0
- beq SHORT G_M3949_IG04
- mov r0, r4
+ adds r0, 40
; gcrRegs -[r0]
; byrRegs +[r0]
- movs r1, 1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- ; gcr arg pop 0
- cmp r0, 0
+ movs r3, 1
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M3949_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ strex r2, r3, [r0]
+ cmp r2, 0
+ bne SHORT G_M3949_IG03
+ dmb 15
+ cmp r1, 0
bne SHORT G_M3949_IG05
- ;; size=30 bbWeight=1 PerfScore 11.00
-G_M3949_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r3,r4,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M3949_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[r4]
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M3949_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M3949_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- ; gcr arg pop 0
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M3949_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
- ; byrRegs +[r4]
- mov r0, r4
- ; byrRegs +[r0]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=10 bbWeight=0 PerfScore 0.00
G_M3949_IG06: ; bbWeight=0, epilog, nogc, extend
add sp, 4
- pop {r4,r11,lr}
+ pop lr
bx r3 // <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 14.00, instruction count 26, allocated bytes for code 76 (MethodHash=522df092) for method System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
+; Total bytes of code 46, prolog size 2, PerfScore 11.00, instruction count 17, allocated bytes for code 46 (MethodHash=522df092) for method System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
; ============================================================
Unwind Info:
@@ -77,7 +60,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 23 (0x00017) Actual length = 46 (0x00002e)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -89,11 +72,11 @@ Unwind Info:
Epilog Start Index : 3 (0x03)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
---- Epilog start at index 3 ----
01 add sp, sp, #4 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ A0 00 pop {lr} ; opsize 32
FF end
FF end
+8 (+21.05%) : 111779.dasm - System.Threading.ReaderWriterLockSlim+SpinLock:TryEnter():ubyte:this (Tier1)
@@ -2,44 +2,49 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; Tier1 code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 4 ) byref -> r0 this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M25306_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_M25306_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M25306_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- ldrsb r1, [r0]
- movs r1, 1
+ ldrsb r3, [r0]
+ movs r3, 1
movs r2, 0
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- cmp r0, 0
- beq SHORT G_M25306_IG03
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M25306_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex lr, [r0]
+ cmp lr, r2
+ bne SHORT G_M25306_IG04
+ strex r1, r3, [r0]
+ cmp lr, 0
+ bne SHORT G_M25306_IG03
+ ;; size=18 bbWeight=1 PerfScore 6.00
+G_M25306_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ dmb 15
+ cmp lr, 0
+ beq SHORT G_M25306_IG05
movs r0, 0
- b SHORT G_M25306_IG04
- ;; size=26 bbWeight=1 PerfScore 10.00
-G_M25306_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r0]
+ b SHORT G_M25306_IG06
+ ;; size=14 bbWeight=1 PerfScore 5.00
+G_M25306_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M25306_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
+G_M25306_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 38, prolog size 6, PerfScore 14.00, instruction count 14, allocated bytes for code 38 (MethodHash=a1c89d25) for method System.Threading.ReaderWriterLockSlim+SpinLock:TryEnter():ubyte:this (Tier1)
+; Total bytes of code 46, prolog size 2, PerfScore 17.00, instruction count 17, allocated bytes for code 46 (MethodHash=a1c89d25) for method System.Threading.ReaderWriterLockSlim+SpinLock:TryEnter():ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -51,11 +56,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 19 (0x00013) Actual length = 38 (0x000026)
+ Function Length : 23 (0x00017) Actual length = 46 (0x00002e)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
+10 (+25.00%) : 241.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)
@@ -21,22 +21,29 @@ G_M59963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str r2, [sp+0x04]
;; size=16 bbWeight=1 PerfScore 6.00
G_M59963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r0, [sp+0x0C]
- ; byrRegs +[r0]
- ldr r1, [sp+0x08]
- ldr r2, [sp+0x04]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M59963_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr r3, [sp+0x0C]
+ ; byrRegs +[r3]
+ ldr r2, [sp+0x08]
+ ldr r1, [sp+0x04]
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M59963_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ldrex r4, [r3]
+ cmp r4, r1
+ bne SHORT G_M59963_IG04
+ strex r0, r2, [r3]
+ cmp r4, 0
+ bne SHORT G_M59963_IG03
+ ;; size=16 bbWeight=1 PerfScore 6.00
+G_M59963_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+ dmb 15
+ mov r0, r4
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M59963_IG05: ; bbWeight=1, epilog, nogc, extend
add sp, 16
pop {r4,r10,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 40, prolog size 10, PerfScore 15.00, instruction count 15, allocated bytes for code 40 (MethodHash=599f15c4) for method System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)
+; Total bytes of code 50, prolog size 10, PerfScore 19.00, instruction count 19, allocated bytes for code 50 (MethodHash=599f15c4) for method System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)
; ============================================================
Unwind Info:
@@ -48,7 +55,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 40 (0x000028)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+10 (+25.00%) : 994.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Instrumented Tier0)
@@ -21,22 +21,29 @@ G_M59963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str r2, [sp+0x04]
;; size=16 bbWeight=1 PerfScore 6.00
G_M59963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r0, [sp+0x0C]
- ; byrRegs +[r0]
- ldr r1, [sp+0x08]
- ldr r2, [sp+0x04]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M59963_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr r3, [sp+0x0C]
+ ; byrRegs +[r3]
+ ldr r2, [sp+0x08]
+ ldr r1, [sp+0x04]
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M59963_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ldrex r4, [r3]
+ cmp r4, r1
+ bne SHORT G_M59963_IG04
+ strex r0, r2, [r3]
+ cmp r4, 0
+ bne SHORT G_M59963_IG03
+ ;; size=16 bbWeight=1 PerfScore 6.00
+G_M59963_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+ dmb 15
+ mov r0, r4
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M59963_IG05: ; bbWeight=1, epilog, nogc, extend
add sp, 16
pop {r4,r10,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 40, prolog size 10, PerfScore 15.00, instruction count 15, allocated bytes for code 40 (MethodHash=599f15c4) for method System.Threading.Interlocked:CompareExchange(byref,int,int):int (Instrumented Tier0)
+; Total bytes of code 50, prolog size 10, PerfScore 19.00, instruction count 19, allocated bytes for code 50 (MethodHash=599f15c4) for method System.Threading.Interlocked:CompareExchange(byref,int,int):int (Instrumented Tier0)
; ============================================================
Unwind Info:
@@ -48,7 +55,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 40 (0x000028)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
benchmarks.run_tiered.linux.arm.checked.mch
-22 (-47.83%) : 7258.dasm - System.Threading.Interlocked:Add(byref,int):int (Tier1)
@@ -2,66 +2,52 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; Tier1 code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 4 ) byref -> r0 single-def
-; V01 arg1 [V01,T01] ( 4, 4 ) int -> r4 single-def
+; V00 arg0 [V00,T01] ( 3, 3 ) byref -> r0 single-def
+; V01 arg1 [V01,T00] ( 4, 4 ) int -> r1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 4
G_M51449_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
- add r11, sp, 8
- mov r4, r1
- ;; size=10 bbWeight=1 PerfScore 3.00
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
G_M51449_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M51449_IG04
- mov r1, r4
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
+ ldrex r2, [r0]
+ adds r2, r2, r1
+ strex r3, r2, [r0]
+ cmp r3, 0
+ bne SHORT G_M51449_IG02
+ dmb 15
+ adds r0, r2, r1
; byrRegs -[r0]
- adds r0, r0, r4
- ;; size=18 bbWeight=1 PerfScore 7.00
+ ;; size=20 bbWeight=1 PerfScore 7.00
G_M51449_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r3,r4,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M51449_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 46, prolog size 8, PerfScore 11.00, instruction count 16, allocated bytes for code 46 (MethodHash=c2693706) for method System.Threading.Interlocked:Add(byref,int):int (Tier1)
+; Total bytes of code 24, prolog size 2, PerfScore 9.00, instruction count 9, allocated bytes for code 24 (MethodHash=c2693706) for method System.Threading.Interlocked:Add(byref,int):int (Tier1)
; ============================================================
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 : 23 (0x00017) Actual length = 46 (0x00002e)
- ---- 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 : 12 (0x0000c) Actual length = 24 (0x000018)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
-16 (-42.11%) : 10686.dasm - System.Threading.Interlocked:Exchange(byref,int):int (Tier1)
@@ -2,63 +2,51 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; Tier1 code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 4 ) byref -> r0 single-def
+; V00 arg0 [V00,T00] ( 3, 3 ) byref -> r0 single-def
; V01 arg1 [V01,T01] ( 3, 3 ) int -> r1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M7811_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr}
- mov r11, sp
- ;; size=6 bbWeight=1 PerfScore 2.00
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
G_M7811_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M7811_IG04
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
+ ldrex r2, [r0]
+ strex r3, r1, [r0]
+ cmp r3, 0
+ bne SHORT G_M7811_IG02
+ dmb 15
+ mov r0, r2
; byrRegs -[r0]
- ;; size=14 bbWeight=1 PerfScore 5.00
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M7811_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M7811_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 38, prolog size 6, PerfScore 8.00, instruction count 13, allocated bytes for code 38 (MethodHash=911fe17c) for method System.Threading.Interlocked:Exchange(byref,int):int (Tier1)
+; Total bytes of code 22, prolog size 2, PerfScore 8.00, instruction count 8, allocated bytes for code 22 (MethodHash=911fe17c) for method System.Threading.Interlocked:Exchange(byref,int):int (Tier1)
; ============================================================
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 : 19 (0x00013) Actual length = 38 (0x000026)
- ---- 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 : 11 (0x0000b) Actual length = 22 (0x000016)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
-30 (-39.47%) : 20172.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
@@ -2,68 +2,53 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; Tier1 code
; optimized code
-; r11 based frame
+; sp based frame
; fully interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.Threading.CancellationTokenSource+Registrations>
-; V01 loc0 [V01,T01] ( 4, 3.50) byref -> r4 single-def
+; V00 this [V00,T00] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Threading.CancellationTokenSource+Registrations>
+; V01 loc0 [V01,T01] ( 3, 2.50) byref -> r0 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 4
-G_M3949_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
- add r11, sp, 8
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M3949_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M3949_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M3949_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- ldrsb r1, [r0]
- add r4, r0, 40
- ; byrRegs +[r4]
- cmp r4, 0
- beq SHORT G_M3949_IG06
- mov r0, r4
+ adds r0, 40
; gcrRegs -[r0]
; byrRegs +[r0]
- movs r1, 1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- ; gcr arg pop 0
- cmp r0, 0
- beq SHORT G_M3949_IG05
- ;; size=30 bbWeight=1 PerfScore 11.00
-G_M3949_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
- mov r0, r4
- ; byrRegs +[r0]
+ movs r3, 1
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M3949_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ strex r2, r3, [r0]
+ cmp r2, 0
+ bne SHORT G_M3949_IG03
+ dmb 15
+ cmp r1, 0
+ beq SHORT G_M3949_IG06
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M3949_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M3949_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=10 bbWeight=0.50 PerfScore 1.50
+G_M3949_IG05: ; bbWeight=0.50, epilog, nogc, extend
add sp, 4
- pop {r4,r11,lr}
+ pop lr
bx r3 // <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M3949_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[r0 r4]
- pop {r3,r4,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3949_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- ; gcr arg pop 0
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+G_M3949_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; byrRegs -[r0]
+ pop {r3,pc}
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 76, prolog size 8, PerfScore 17.00, instruction count 26, allocated bytes for code 76 (MethodHash=522df092) for method System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
+; Total bytes of code 46, prolog size 2, PerfScore 13.50, instruction count 17, allocated bytes for code 46 (MethodHash=522df092) for method System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
; ============================================================
Unwind Info:
@@ -75,7 +60,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 23 (0x00017) Actual length = 46 (0x00002e)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -87,11 +72,11 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
---- Epilog start at index 3 ----
01 add sp, sp, #4 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ A0 00 pop {lr} ; opsize 32
FF end
FF end
+8 (+19.05%) : 11304.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetContention():int:this (Tier0)
@@ -22,22 +22,29 @@ G_M306_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r3]
ldr r3, [sp+0x04]
; gcrRegs +[r3]
- add r0, r3, 56
- ; byrRegs +[r0]
- movs r1, 0
- movs r2, 0
- movw r3, 0xd1ff
+ adds r3, 56
; gcrRegs -[r3]
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- ;; size=28 bbWeight=1 PerfScore 10.00
-G_M306_IG03: ; bbWeight=1, epilog, nogc, extend
+ ; byrRegs +[r3]
+ movs r2, 0
+ movs r1, 0
+ ;; size=14 bbWeight=1 PerfScore 6.00
+G_M306_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ldrex r4, [r3]
+ cmp r4, r1
+ bne SHORT G_M306_IG04
+ strex r0, r2, [r3]
+ cmp r4, 0
+ bne SHORT G_M306_IG03
+ ;; size=16 bbWeight=1 PerfScore 6.00
+G_M306_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+ dmb 15
+ mov r0, r4
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M306_IG05: ; bbWeight=1, epilog, nogc, extend
pop {r2,r3,r4,r10,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 42, prolog size 8, PerfScore 14.00, instruction count 14, allocated bytes for code 42 (MethodHash=6b4bfecd) for method ProtoBuf.Meta.RuntimeTypeModel:GetContention():int:this (Tier0)
+; Total bytes of code 50, prolog size 8, PerfScore 18.00, instruction count 18, allocated bytes for code 50 (MethodHash=6b4bfecd) for method ProtoBuf.Meta.RuntimeTypeModel:GetContention():int:this (Tier0)
; ============================================================
Unwind Info:
@@ -49,7 +56,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 21 (0x00015) Actual length = 42 (0x00002a)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+8 (+21.05%) : 61364.dasm - System.Threading.ReaderWriterLockSlim+SpinLock:TryEnter():ubyte:this (Tier1)
@@ -2,44 +2,49 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; Tier1 code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 4 ) byref -> r0 this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M25306_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_M25306_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M25306_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- ldrsb r1, [r0]
- movs r1, 1
+ ldrsb r3, [r0]
+ movs r3, 1
movs r2, 0
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- cmp r0, 0
- beq SHORT G_M25306_IG03
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M25306_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex lr, [r0]
+ cmp lr, r2
+ bne SHORT G_M25306_IG04
+ strex r1, r3, [r0]
+ cmp lr, 0
+ bne SHORT G_M25306_IG03
+ ;; size=18 bbWeight=1 PerfScore 6.00
+G_M25306_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ dmb 15
+ cmp lr, 0
+ beq SHORT G_M25306_IG05
movs r0, 0
- b SHORT G_M25306_IG04
- ;; size=26 bbWeight=1 PerfScore 10.00
-G_M25306_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r0]
+ b SHORT G_M25306_IG06
+ ;; size=14 bbWeight=1 PerfScore 5.00
+G_M25306_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M25306_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
+G_M25306_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 38, prolog size 6, PerfScore 14.00, instruction count 14, allocated bytes for code 38 (MethodHash=a1c89d25) for method System.Threading.ReaderWriterLockSlim+SpinLock:TryEnter():ubyte:this (Tier1)
+; Total bytes of code 46, prolog size 2, PerfScore 17.00, instruction count 17, allocated bytes for code 46 (MethodHash=a1c89d25) for method System.Threading.ReaderWriterLockSlim+SpinLock:TryEnter():ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -51,11 +56,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 19 (0x00013) Actual length = 38 (0x000026)
+ Function Length : 23 (0x00017) Actual length = 46 (0x00002e)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
+10 (+25.00%) : 230.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)
@@ -21,22 +21,29 @@ G_M59963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str r2, [sp+0x04]
;; size=16 bbWeight=1 PerfScore 6.00
G_M59963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r0, [sp+0x0C]
- ; byrRegs +[r0]
- ldr r1, [sp+0x08]
- ldr r2, [sp+0x04]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M59963_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr r3, [sp+0x0C]
+ ; byrRegs +[r3]
+ ldr r2, [sp+0x08]
+ ldr r1, [sp+0x04]
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M59963_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ldrex r4, [r3]
+ cmp r4, r1
+ bne SHORT G_M59963_IG04
+ strex r0, r2, [r3]
+ cmp r4, 0
+ bne SHORT G_M59963_IG03
+ ;; size=16 bbWeight=1 PerfScore 6.00
+G_M59963_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+ dmb 15
+ mov r0, r4
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M59963_IG05: ; bbWeight=1, epilog, nogc, extend
add sp, 16
pop {r4,r10,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 40, prolog size 10, PerfScore 15.00, instruction count 15, allocated bytes for code 40 (MethodHash=599f15c4) for method System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)
+; Total bytes of code 50, prolog size 10, PerfScore 19.00, instruction count 19, allocated bytes for code 50 (MethodHash=599f15c4) for method System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)
; ============================================================
Unwind Info:
@@ -48,7 +55,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 40 (0x000028)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
coreclr_tests.run.linux.arm.checked.mch
-22 (-47.83%) : 2429.dasm - System.Threading.Interlocked:Add(byref,int):int (Tier1)
@@ -2,66 +2,52 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; Tier1 code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 4 ) byref -> r0 single-def
-; V01 arg1 [V01,T01] ( 4, 4 ) int -> r4 single-def
+; V00 arg0 [V00,T01] ( 3, 3 ) byref -> r0 single-def
+; V01 arg1 [V01,T00] ( 4, 4 ) int -> r1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 4
G_M51449_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
- add r11, sp, 8
- mov r4, r1
- ;; size=10 bbWeight=1 PerfScore 3.00
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
G_M51449_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M51449_IG04
- mov r1, r4
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
+ ldrex r2, [r0]
+ adds r2, r2, r1
+ strex r3, r2, [r0]
+ cmp r3, 0
+ bne SHORT G_M51449_IG02
+ dmb 15
+ adds r0, r2, r1
; byrRegs -[r0]
- adds r0, r0, r4
- ;; size=18 bbWeight=1 PerfScore 7.00
+ ;; size=20 bbWeight=1 PerfScore 7.00
G_M51449_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r3,r4,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M51449_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 46, prolog size 8, PerfScore 11.00, instruction count 16, allocated bytes for code 46 (MethodHash=c2693706) for method System.Threading.Interlocked:Add(byref,int):int (Tier1)
+; Total bytes of code 24, prolog size 2, PerfScore 9.00, instruction count 9, allocated bytes for code 24 (MethodHash=c2693706) for method System.Threading.Interlocked:Add(byref,int):int (Tier1)
; ============================================================
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 : 23 (0x00017) Actual length = 46 (0x00002e)
- ---- 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 : 12 (0x0000c) Actual length = 24 (0x000018)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
-22 (-47.83%) : 1674.dasm - System.Threading.Interlocked:Add(byref,int):int (Instrumented Tier1)
@@ -2,66 +2,52 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; Instrumented Tier1 code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 4 ) byref -> r0 single-def
-; V01 arg1 [V01,T01] ( 4, 4 ) int -> r4 single-def
+; V00 arg0 [V00,T01] ( 3, 3 ) byref -> r0 single-def
+; V01 arg1 [V01,T00] ( 4, 4 ) int -> r1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 4
G_M51449_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
- add r11, sp, 8
- mov r4, r1
- ;; size=10 bbWeight=1 PerfScore 3.00
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
G_M51449_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M51449_IG04
- mov r1, r4
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
+ ldrex r2, [r0]
+ adds r2, r2, r1
+ strex r3, r2, [r0]
+ cmp r3, 0
+ bne SHORT G_M51449_IG02
+ dmb 15
+ adds r0, r2, r1
; byrRegs -[r0]
- adds r0, r0, r4
- ;; size=18 bbWeight=1 PerfScore 7.00
+ ;; size=20 bbWeight=1 PerfScore 7.00
G_M51449_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r3,r4,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M51449_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 46, prolog size 8, PerfScore 11.00, instruction count 16, allocated bytes for code 46 (MethodHash=c2693706) for method System.Threading.Interlocked:Add(byref,int):int (Instrumented Tier1)
+; Total bytes of code 24, prolog size 2, PerfScore 9.00, instruction count 9, allocated bytes for code 24 (MethodHash=c2693706) for method System.Threading.Interlocked:Add(byref,int):int (Instrumented Tier1)
; ============================================================
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 : 23 (0x00017) Actual length = 46 (0x00002e)
- ---- 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 : 12 (0x0000c) Actual length = 24 (0x000018)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
-18 (-42.86%) : 156763.dasm - System.Threading.Interlocked:Exchange(byref,byte):byte (Instrumented Tier1)
@@ -2,66 +2,54 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; Instrumented Tier1 code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 4 ) byref -> r0 single-def
+; V00 arg0 [V00,T00] ( 3, 3 ) byref -> r0 single-def
; V01 arg1 [V01,T01] ( 3, 3 ) byte -> r1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M16771_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_M16771_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M16771_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M16771_IG04
- uxtb r1, r1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
+ uxtb r3, r1
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M16771_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrexb r1, [r0]
+ strexb r2, r3, [r0]
+ cmp r2, 0
+ bne SHORT G_M16771_IG03
+ dmb 15
+ sxtb r0, r1
; byrRegs -[r0]
- sxtb r0, r0
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M16771_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M16771_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=18 bbWeight=1 PerfScore 6.00
+G_M16771_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 42, prolog size 6, PerfScore 10.00, instruction count 15, allocated bytes for code 42 (MethodHash=5298be7c) for method System.Threading.Interlocked:Exchange(byref,byte):byte (Instrumented Tier1)
+; Total bytes of code 24, prolog size 2, PerfScore 9.00, instruction count 9, allocated bytes for code 24 (MethodHash=5298be7c) for method System.Threading.Interlocked:Exchange(byref,byte):byte (Instrumented Tier1)
; ============================================================
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 : 21 (0x00015) Actual length = 42 (0x00002a)
- ---- 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 : 12 (0x0000c) Actual length = 24 (0x000018)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
+16 (+100.00%) : 399179.dasm - InterlockedTest.Program+<>c:b_113():this (FullOpts)
@@ -5,7 +5,6 @@
; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <InterlockedTest.Program+<>c>
@@ -13,19 +12,31 @@
;
; Lcl frame size = 4
-G_M24919_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M24919_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,lr}
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M24919_IG02: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- ; gcr arg pop 0
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M24919_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movs r3, 0
+ movs r2, 0
+ movs r1, 0
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M24919_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ; byrRegs +[r3]
+ ldrexb lr, [r3]
+ cmp lr, r1
+ bne SHORT G_M24919_IG04
+ strexb r0, r2, [r3]
+ cmp lr, 0
+ bne SHORT G_M24919_IG03
+ ;; size=18 bbWeight=1 PerfScore 6.00
+G_M24919_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+ dmb 15
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M24919_IG05: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 16, prolog size 2, PerfScore 0.00, instruction count 6, allocated bytes for code 16 (MethodHash=b32a9ea8) for method InterlockedTest.Program+<>c:<TestEntryPoint>b__1_13():this (FullOpts)
+; Total bytes of code 32, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 32 (MethodHash=b32a9ea8) for method InterlockedTest.Program+<>c:<TestEntryPoint>b__1_13():this (FullOpts)
; ============================================================
Unwind Info:
@@ -34,13 +45,13 @@ Unwind Info:
Code Words : 1
Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0
Vers : 0
- Function Length : 8 (0x00008) Actual length = 16 (0x000010)
- ---- Epilog scopes ----
- No epilogs
+ Function Length : 16 (0x00010) Actual length = 32 (0x000020)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
+ ---- Epilog start at index 0 ----
ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
+20 (+125.00%) : 399181.dasm - InterlockedTest.Program+<>c:b_115():this (FullOpts)
@@ -5,7 +5,6 @@
; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <InterlockedTest.Program+<>c>
@@ -13,19 +12,32 @@
;
; Lcl frame size = 4
-G_M10769_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M10769_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,lr}
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M10769_IG02: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- ; gcr arg pop 0
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M10769_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movs r3, 0
+ movs r2, 0
+ movs r1, 0
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M10769_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ; byrRegs +[r3]
+ ldrexh lr, [r3]
+ cmp lr, r1
+ bne SHORT G_M10769_IG04
+ strexh r0, r2, [r3]
+ cmp lr, 0
+ bne SHORT G_M10769_IG03
+ ;; size=18 bbWeight=1 PerfScore 6.00
+G_M10769_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+ dmb 15
+ sxth lr, lr
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M10769_IG05: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 16, prolog size 2, PerfScore 0.00, instruction count 6, allocated bytes for code 16 (MethodHash=da60d5ee) for method InterlockedTest.Program+<>c:<TestEntryPoint>b__1_15():this (FullOpts)
+; Total bytes of code 36, prolog size 2, PerfScore 13.00, instruction count 13, allocated bytes for code 36 (MethodHash=da60d5ee) for method InterlockedTest.Program+<>c:<TestEntryPoint>b__1_15():this (FullOpts)
; ============================================================
Unwind Info:
@@ -34,13 +46,13 @@ Unwind Info:
Code Words : 1
Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0
Vers : 0
- Function Length : 8 (0x00008) Actual length = 16 (0x000010)
- ---- Epilog scopes ----
- No epilogs
+ Function Length : 18 (0x00012) Actual length = 36 (0x000024)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
+ ---- Epilog start at index 0 ----
ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
+20 (+125.00%) : 399180.dasm - InterlockedTest.Program+<>c:b_114():this (FullOpts)
@@ -5,7 +5,6 @@
; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <InterlockedTest.Program+<>c>
@@ -13,19 +12,32 @@
;
; Lcl frame size = 4
-G_M36336_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M36336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,lr}
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M36336_IG02: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- ; gcr arg pop 0
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M36336_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movs r3, 0
+ movs r2, 0
+ movs r1, 0
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M36336_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ; byrRegs +[r3]
+ ldrexb lr, [r3]
+ cmp lr, r1
+ bne SHORT G_M36336_IG04
+ strexb r0, r2, [r3]
+ cmp lr, 0
+ bne SHORT G_M36336_IG03
+ ;; size=18 bbWeight=1 PerfScore 6.00
+G_M36336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+ dmb 15
+ sxtb lr, lr
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M36336_IG05: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 16, prolog size 2, PerfScore 0.00, instruction count 6, allocated bytes for code 16 (MethodHash=b8c3720f) for method InterlockedTest.Program+<>c:<TestEntryPoint>b__1_14():this (FullOpts)
+; Total bytes of code 36, prolog size 2, PerfScore 13.00, instruction count 13, allocated bytes for code 36 (MethodHash=b8c3720f) for method InterlockedTest.Program+<>c:<TestEntryPoint>b__1_14():this (FullOpts)
; ============================================================
Unwind Info:
@@ -34,13 +46,13 @@ Unwind Info:
Code Words : 1
Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0
Vers : 0
- Function Length : 8 (0x00008) Actual length = 16 (0x000010)
- ---- Epilog scopes ----
- No epilogs
+ Function Length : 18 (0x00012) Actual length = 36 (0x000024)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
+ ---- Epilog start at index 0 ----
ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
libraries.crossgen2.linux.arm.checked.mch
-28 (-53.85%) : 6094.dasm - System.Threading.Interlocked:Add(byref,int):int (FullOpts)
@@ -3,69 +3,52 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 4 ) byref -> r0 single-def
-; V01 arg1 [V01,T01] ( 4, 4 ) int -> r5 single-def
+; V00 arg0 [V00,T01] ( 3, 3 ) byref -> r0 single-def
+; V01 arg1 [V01,T00] ( 4, 4 ) int -> r1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M51449_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- add r11, sp, 8
- mov r5, r1
- ;; size=10 bbWeight=1 PerfScore 3.00
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
G_M51449_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M51449_IG04
- mov r1, r5
- movw r4, LOW RELOC 0xD1FFAB1E
- movt r4, HIGH RELOC 0xD1FFAB1E
- add r4, pc
- ldr r3, [r4]
- blx r3 // <unknown method>
+ ldrex r2, [r0]
+ adds r2, r2, r1
+ strex r3, r2, [r0]
+ cmp r3, 0
+ bne SHORT G_M51449_IG02
+ dmb 15
+ adds r0, r2, r1
; byrRegs -[r0]
- adds r0, r0, r5
- ;; size=22 bbWeight=1 PerfScore 9.00
+ ;; size=20 bbWeight=1 PerfScore 7.00
G_M51449_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r4,r5,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M51449_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r4, LOW RELOC 0xD1FFAB1E
- movt r4, HIGH RELOC 0xD1FFAB1E
- add r4, pc
- ldr r3, [r4]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- bkpt
- ;; size=16 bbWeight=0 PerfScore 0.00
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 52, prolog size 8, PerfScore 13.00, instruction count 19, allocated bytes for code 52 (MethodHash=c2693706) for method System.Threading.Interlocked:Add(byref,int):int (FullOpts)
+; Total bytes of code 24, prolog size 2, PerfScore 9.00, instruction count 9, allocated bytes for code 24 (MethodHash=c2693706) for method System.Threading.Interlocked:Add(byref,int):int (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 : 26 (0x0001a) Actual length = 52 (0x000034)
- ---- 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 : 12 (0x0000c) Actual length = 24 (0x000018)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
-28 (-53.85%) : 6118.dasm - System.Threading.Interlocked:Add(byref,uint):uint (FullOpts)
@@ -3,69 +3,53 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 4 ) byref -> r0 single-def
-; V01 arg1 [V01,T01] ( 4, 4 ) int -> r5 single-def
+; V00 arg0 [V00,T01] ( 3, 3 ) byref -> r0 single-def
+; V01 arg1 [V01,T00] ( 4, 4 ) int -> r1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M43385_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- add r11, sp, 8
- mov r5, r1
- ;; size=10 bbWeight=1 PerfScore 3.00
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
G_M43385_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M43385_IG04
- mov r1, r5
- movw r4, LOW RELOC 0xD1FFAB1E
- movt r4, HIGH RELOC 0xD1FFAB1E
- add r4, pc
- ldr r3, [r4]
- blx r3 // <unknown method>
+ ldrex r2, [r0]
+ adds r2, r2, r1
+ strex r3, r2, [r0]
+ cmp r3, 0
+ bne SHORT G_M43385_IG02
+ dmb 15
+ adds r0, r2, r1
; byrRegs -[r0]
- adds r0, r0, r5
- ;; size=22 bbWeight=1 PerfScore 9.00
+ ;; size=20 bbWeight=1 PerfScore 7.00
G_M43385_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r4,r5,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M43385_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r4, LOW RELOC 0xD1FFAB1E
- movt r4, HIGH RELOC 0xD1FFAB1E
- add r4, pc
- ldr r3, [r4]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- bkpt
- ;; size=16 bbWeight=0 PerfScore 0.00
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 52, prolog size 8, PerfScore 13.00, instruction count 19, allocated bytes for code 52 (MethodHash=a61d5686) for method System.Threading.Interlocked:Add(byref,uint):uint (FullOpts)
+; Total bytes of code 24, prolog size 2, PerfScore 9.00, instruction count 9, allocated bytes for code 24 (MethodHash=a61d5686) for method System.Threading.Interlocked:Add(byref,uint):uint (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 : 26 (0x0001a) Actual length = 52 (0x000034)
- ---- 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 : 12 (0x0000c) Actual length = 24 (0x000018)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
-24 (-52.17%) : 6109.dasm - System.Threading.Interlocked:Exchange(byref,uint):uint (FullOpts)
@@ -3,66 +3,51 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 4 ) byref -> r0 single-def
+; V00 arg0 [V00,T00] ( 3, 3 ) byref -> r0 single-def
; V01 arg1 [V01,T01] ( 3, 3 ) int -> r1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 4
G_M28803_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
- add r11, sp, 8
- ;; size=8 bbWeight=1 PerfScore 2.00
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
G_M28803_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M28803_IG04
- movw r4, LOW RELOC 0xD1FFAB1E
- movt r4, HIGH RELOC 0xD1FFAB1E
- add r4, pc
- ldr r3, [r4]
- blx r3 // <unknown method>
+ ldrex r2, [r0]
+ strex r3, r1, [r0]
+ cmp r3, 0
+ bne SHORT G_M28803_IG02
+ dmb 15
+ mov r0, r2
; byrRegs -[r0]
- ;; size=18 bbWeight=1 PerfScore 7.00
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M28803_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r3,r4,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M28803_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r4, LOW RELOC 0xD1FFAB1E
- movt r4, HIGH RELOC 0xD1FFAB1E
- add r4, pc
- ldr r3, [r4]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- bkpt
- ;; size=16 bbWeight=0 PerfScore 0.00
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 46, prolog size 8, PerfScore 10.00, instruction count 16, allocated bytes for code 46 (MethodHash=3b898f7c) for method System.Threading.Interlocked:Exchange(byref,uint):uint (FullOpts)
+; Total bytes of code 22, prolog size 2, PerfScore 8.00, instruction count 8, allocated bytes for code 22 (MethodHash=3b898f7c) for method System.Threading.Interlocked:Exchange(byref,uint):uint (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 : 23 (0x00017) Actual length = 46 (0x00002e)
- ---- 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 : 11 (0x0000b) Actual length = 22 (0x000016)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
+10 (+22.73%) : 161101.dasm - System.Net.LazyAsyncResult:get_CompletedSynchronously():ubyte:this (FullOpts)
@@ -9,49 +9,54 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 3.50) ref -> r0 this class-hnd single-def <System.Net.LazyAsyncResult>
-; V01 loc0 [V01,T01] ( 4, 3.50) int -> r5
+; V01 loc0 [V01,T01] ( 4, 3.50) int -> r3
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 4
G_M21063_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,lr}
+ push {r3,lr}
;; size=2 bbWeight=1 PerfScore 1.00
G_M21063_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
- ldr r5, [r0+0x18]
- cmp r5, 0
- bne SHORT G_M21063_IG04
+ ldr r3, [r0+0x18]
+ cmp r3, 0
+ bne SHORT G_M21063_IG06
;; size=6 bbWeight=1 PerfScore 3.00
G_M21063_IG03: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
- adds r0, 24
+ add r3, r0, 24
+ ; byrRegs +[r3]
+ mov r0, 0x80000000
; gcrRegs -[r0]
- ; byrRegs +[r0]
- movw r4, LOW RELOC 0xD1FFAB1E
- movt r4, HIGH RELOC 0xD1FFAB1E
- add r4, pc
- mov r1, 0x80000000
movs r2, 0
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- ; gcr arg pop 0
- mov r5, r0
- ;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M21063_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r5, 0
- bgt SHORT G_M21063_IG05
+ ;; size=10 bbWeight=0.50 PerfScore 1.50
+G_M21063_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ldrex lr, [r3]
+ cmp lr, r2
+ bne SHORT G_M21063_IG05
+ strex r1, r0, [r3]
+ cmp lr, 0
+ bne SHORT G_M21063_IG04
+ ;; size=18 bbWeight=0.50 PerfScore 3.00
+G_M21063_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+ dmb 15
+ mov r3, lr
+ ; byrRegs -[r3]
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M21063_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp r3, 0
+ bgt SHORT G_M21063_IG07
movs r0, 0
- b SHORT G_M21063_IG06
+ b SHORT G_M21063_IG08
;; size=8 bbWeight=1 PerfScore 4.00
-G_M21063_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M21063_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M21063_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r3,r4,r5,pc}
+G_M21063_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 44, prolog size 2, PerfScore 14.50, instruction count 19, allocated bytes for code 44 (MethodHash=d964adb8) for method System.Net.LazyAsyncResult:get_CompletedSynchronously():ubyte:this (FullOpts)
+; Total bytes of code 54, prolog size 2, PerfScore 15.50, instruction count 21, allocated bytes for code 54 (MethodHash=d964adb8) for method System.Net.LazyAsyncResult:get_CompletedSynchronously():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -63,11 +68,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 22 (0x00016) Actual length = 44 (0x00002c)
+ Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- ED 38 pop {r3,r4,r5,lr} ; opsize 16
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
+10 (+22.73%) : 100983.dasm - System.Net.LazyAsyncResult:get_CompletedSynchronously():ubyte:this (FullOpts)
@@ -9,49 +9,54 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 3.50) ref -> r0 this class-hnd single-def <System.Net.LazyAsyncResult>
-; V01 loc0 [V01,T01] ( 4, 3.50) int -> r5
+; V01 loc0 [V01,T01] ( 4, 3.50) int -> r3
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 4
G_M21063_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,lr}
+ push {r3,lr}
;; size=2 bbWeight=1 PerfScore 1.00
G_M21063_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
- ldr r5, [r0+0x18]
- cmp r5, 0
- bne SHORT G_M21063_IG04
+ ldr r3, [r0+0x18]
+ cmp r3, 0
+ bne SHORT G_M21063_IG06
;; size=6 bbWeight=1 PerfScore 3.00
G_M21063_IG03: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
- adds r0, 24
+ add r3, r0, 24
+ ; byrRegs +[r3]
+ mov r0, 0x80000000
; gcrRegs -[r0]
- ; byrRegs +[r0]
- movw r4, LOW RELOC 0xD1FFAB1E
- movt r4, HIGH RELOC 0xD1FFAB1E
- add r4, pc
- mov r1, 0x80000000
movs r2, 0
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- ; gcr arg pop 0
- mov r5, r0
- ;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M21063_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r5, 0
- bgt SHORT G_M21063_IG05
+ ;; size=10 bbWeight=0.50 PerfScore 1.50
+G_M21063_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ldrex lr, [r3]
+ cmp lr, r2
+ bne SHORT G_M21063_IG05
+ strex r1, r0, [r3]
+ cmp lr, 0
+ bne SHORT G_M21063_IG04
+ ;; size=18 bbWeight=0.50 PerfScore 3.00
+G_M21063_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+ dmb 15
+ mov r3, lr
+ ; byrRegs -[r3]
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M21063_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp r3, 0
+ bgt SHORT G_M21063_IG07
movs r0, 0
- b SHORT G_M21063_IG06
+ b SHORT G_M21063_IG08
;; size=8 bbWeight=1 PerfScore 4.00
-G_M21063_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M21063_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=1 PerfScore 1.00
-G_M21063_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r3,r4,r5,pc}
+G_M21063_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 44, prolog size 2, PerfScore 14.50, instruction count 19, allocated bytes for code 44 (MethodHash=d964adb8) for method System.Net.LazyAsyncResult:get_CompletedSynchronously():ubyte:this (FullOpts)
+; Total bytes of code 54, prolog size 2, PerfScore 15.50, instruction count 21, allocated bytes for code 54 (MethodHash=d964adb8) for method System.Net.LazyAsyncResult:get_CompletedSynchronously():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -63,11 +68,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 22 (0x00016) Actual length = 44 (0x00002c)
+ Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- ED 38 pop {r3,r4,r5,lr} ; opsize 16
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
+10 (+35.71%) : 76266.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.EmbeddedSymbolManager:SealCollection():this (FullOpts)
@@ -11,32 +11,36 @@
; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Symbols.EmbeddedSymbolManager>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M42395_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,lr}
+ push {r3,lr}
;; size=2 bbWeight=1 PerfScore 1.00
G_M42395_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- ldrsb r1, [r0]
- adds r0, 12
+ ldrsb r3, [r0]
+ add r3, r0, 12
+ ; byrRegs +[r3]
+ movs r2, 1
+ movs r1, 0
+ ;; size=12 bbWeight=1 PerfScore 4.00
+G_M42395_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
; gcrRegs -[r0]
- ; byrRegs +[r0]
- movw r4, LOW RELOC 0xD1FFAB1E
- movt r4, HIGH RELOC 0xD1FFAB1E
- add r4, pc
- movs r1, 1
- movs r2, 0
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- ; gcr arg pop 0
- ;; size=24 bbWeight=1 PerfScore 9.00
-G_M42395_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r4,pc}
+ ldrex lr, [r3]
+ cmp lr, r1
+ bne SHORT G_M42395_IG04
+ strex r0, r2, [r3]
+ cmp lr, 0
+ bne SHORT G_M42395_IG03
+ ;; size=18 bbWeight=1 PerfScore 6.00
+G_M42395_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+ dmb 15
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M42395_IG05: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 28, prolog size 2, PerfScore 11.00, instruction count 11, allocated bytes for code 28 (MethodHash=61665a64) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.EmbeddedSymbolManager:SealCollection():this (FullOpts)
+; Total bytes of code 38, prolog size 2, PerfScore 13.00, instruction count 13, allocated bytes for code 38 (MethodHash=61665a64) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.EmbeddedSymbolManager:SealCollection():this (FullOpts)
; ============================================================
Unwind Info:
@@ -48,12 +52,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 28 (0x00001c)
+ Function Length : 19 (0x00013) Actual length = 38 (0x000026)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- D4 pop {r4,lr} ; opsize 16
- FF end
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
libraries.pmi.linux.arm.checked.mch
-22 (-40.74%) : 151345.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:get_NextProjectId():int:this (FullOpts)
@@ -2,74 +2,60 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <Microsoft.Build.BackEnd.Logging.LoggingService>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 3, 6 ) byref -> r1 single-def "impAppendStmt"
-; V03 tmp2 [V03,T02] ( 3, 6 ) int -> r4 "Inlining Arg"
+; V02 tmp1 [V02,T02] ( 2, 4 ) byref -> r3 single-def "impAppendStmt"
+; V03 tmp2 [V03,T01] ( 3, 6 ) int -> r0 "Inlining Arg"
;
; Lcl frame size = 4
G_M52121_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
- add r11, sp, 8
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M52121_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M52121_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- add r1, r0, 124
- ; byrRegs +[r1]
+ add r3, r0, 124
+ ; byrRegs +[r3]
ldr r0, [r0+0x74]
; gcrRegs -[r0]
- adds r4, r0, 2
- cmp r1, 0
- beq SHORT G_M52121_IG04
- mov r0, r1
- ; byrRegs +[r0]
- mov r1, r4
- ; byrRegs -[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- adds r0, r0, r4
- ;; size=28 bbWeight=1 PerfScore 11.00
-G_M52121_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r3,r4,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M52121_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ adds r0, r0, 2
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M52121_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ldrex r1, [r3]
+ adds r1, r1, r0
+ strex r2, r1, [r3]
+ cmp r2, 0
+ bne SHORT G_M52121_IG03
+ dmb 15
+ adds r0, r1, r0
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M52121_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 54, prolog size 8, PerfScore 14.00, instruction count 19, allocated bytes for code 54 (MethodHash=6f743466) for method Microsoft.Build.BackEnd.Logging.LoggingService:get_NextProjectId():int:this (FullOpts)
+; Total bytes of code 32, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 32 (MethodHash=6f743466) for method Microsoft.Build.BackEnd.Logging.LoggingService:get_NextProjectId():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 : 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)
- 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 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
-22 (-40.74%) : 151344.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:get_NextEvaluationId():int:this (FullOpts)
@@ -2,74 +2,60 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <Microsoft.Build.BackEnd.Logging.LoggingService>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 3, 6 ) byref -> r1 single-def "impAppendStmt"
-; V03 tmp2 [V03,T02] ( 3, 6 ) int -> r4 "Inlining Arg"
+; V02 tmp1 [V02,T02] ( 2, 4 ) byref -> r3 single-def "impAppendStmt"
+; V03 tmp2 [V03,T01] ( 3, 6 ) int -> r0 "Inlining Arg"
;
; Lcl frame size = 4
G_M35322_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
- add r11, sp, 8
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M35322_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M35322_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- add r1, r0, 120
- ; byrRegs +[r1]
+ add r3, r0, 120
+ ; byrRegs +[r3]
ldr r0, [r0+0x74]
; gcrRegs -[r0]
- adds r4, r0, 2
- cmp r1, 0
- beq SHORT G_M35322_IG04
- mov r0, r1
- ; byrRegs +[r0]
- mov r1, r4
- ; byrRegs -[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- adds r0, r0, r4
- ;; size=28 bbWeight=1 PerfScore 11.00
-G_M35322_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r3,r4,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M35322_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ adds r0, r0, 2
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M35322_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ldrex r1, [r3]
+ adds r1, r1, r0
+ strex r2, r1, [r3]
+ cmp r2, 0
+ bne SHORT G_M35322_IG03
+ dmb 15
+ adds r0, r1, r0
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M35322_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 54, prolog size 8, PerfScore 14.00, instruction count 19, allocated bytes for code 54 (MethodHash=8e0f7605) for method Microsoft.Build.BackEnd.Logging.LoggingService:get_NextEvaluationId():int:this (FullOpts)
+; Total bytes of code 32, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 32 (MethodHash=8e0f7605) for method Microsoft.Build.BackEnd.Logging.LoggingService:get_NextEvaluationId():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 : 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)
- 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 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
-16 (-34.78%) : 223058.dasm - System.IO.Pipelines.SequencePipeReader:CancelPendingRead():this (FullOpts)
@@ -2,68 +2,55 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.IO.Pipelines.SequencePipeReader>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 3, 6 ) byref -> r0 single-def "Inlining Arg"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M63484_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_M63484_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M63484_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- ldrsb r1, [r0]
- adds r0, 8
+ ldrsb r3, [r0]
+ add r3, r0, 8
+ ; byrRegs +[r3]
+ movs r2, 1
+ ;; size=10 bbWeight=1 PerfScore 3.00
+G_M63484_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
; gcrRegs -[r0]
- ; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M63484_IG04
- movs r1, 1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- ;; size=22 bbWeight=1 PerfScore 8.00
-G_M63484_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M63484_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ldrex r0, [r3]
+ strex r1, r2, [r3]
+ cmp r1, 0
+ bne SHORT G_M63484_IG03
+ dmb 15
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M63484_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 46, prolog size 6, PerfScore 11.00, instruction count 16, allocated bytes for code 46 (MethodHash=fa430803) for method System.IO.Pipelines.SequencePipeReader:CancelPendingRead():this (FullOpts)
+; Total bytes of code 30, prolog size 2, PerfScore 10.00, instruction count 10, allocated bytes for code 30 (MethodHash=fa430803) for method System.IO.Pipelines.SequencePipeReader:CancelPendingRead():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 : 23 (0x00017) Actual length = 46 (0x00002e)
- ---- 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 : 15 (0x0000f) Actual length = 30 (0x00001e)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
+48 (+20.00%) : 227546.dasm - System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged:DeriveBytes(System.ReadOnlySpan1[ushort],System.ReadOnlySpan
1[ushort],System.Span`1[ubyte]):this (FullOpts)
@@ -5,40 +5,40 @@
; r11 based frame
; fully interruptible
; No matching PGO data
-; 2 inlinees with PGO data; 5 single block inlinees; 2 inlinees without PGO data
+; 2 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 8 ) ref -> [sp+0x1C] this class-hnd EH-live single-def <System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged>
-; V01 arg1 [V01,T02] ( 4, 4 ) struct ( 8) [sp+0x2C] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
-; V02 arg2 [V02,T04] ( 3, 3 ) struct ( 8) [sp+0x34] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
-; V03 arg3 [V03,T10] ( 1, 1 ) struct ( 8) [sp+0x3C] do-not-enreg[S] single-def <System.Span`1[ubyte]>
-; V04 loc0 [V04,T05] ( 4, 3.81) ref -> r0 class-hnd single-def <ubyte[]>
+; V00 this [V00,T00] ( 11, 6 ) ref -> [sp+0x1C] this class-hnd EH-live single-def <System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged>
+; V01 arg1 [V01,T01] ( 4, 4 ) struct ( 8) [sp+0x34] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
+; V02 arg2 [V02,T02] ( 3, 3 ) struct ( 8) [sp+0x3C] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ushort]>
+; V03 arg3 [V03,T10] ( 1, 1 ) struct ( 8) [sp+0x44] do-not-enreg[S] single-def <System.Span`1[ubyte]>
+; V04 loc0 [V04,T04] ( 4, 2.90) ref -> r0 class-hnd single-def <ubyte[]>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (20) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V09 tmp4 [V09,T03] ( 3, 6 ) byref -> r0 single-def "Inlining Arg"
+; V08 tmp3 [V08,T05] ( 4, 2 ) int -> r4 "Inline stloc first use temp"
+;* V09 tmp4 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V10 tmp5 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
-; V11 tmp6 [V11,T01] ( 4, 8.00) ref -> r0 class-hnd single-def "Inlining Arg" <ubyte[]>
+; V11 tmp6 [V11,T03] ( 8, 4.00) ref -> r5 class-hnd "Inlining Arg" <ubyte[]>
;* V12 tmp7 [V12 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V13 tmp8 [V13 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x4)" P-INDEP
-; V15 tmp10 [V15,T06] ( 3, 2 ) byref -> registers "field V07._reference (fldOffset=0x0)" P-INDEP
-; V16 tmp11 [V16,T08] ( 3, 2 ) int -> registers "field V07._length (fldOffset=0x4)" P-INDEP
+; V15 tmp10 [V15,T06] ( 3, 1.50) byref -> registers "field V07._reference (fldOffset=0x0)" P-INDEP
+; V16 tmp11 [V16,T07] ( 3, 1.50) int -> registers "field V07._length (fldOffset=0x4)" P-INDEP
;* V17 tmp12 [V17 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP
-; V19 tmp14 [V19,T07] ( 3, 2 ) byref -> registers "field V12._reference (fldOffset=0x0)" P-INDEP
-; V20 tmp15 [V20,T09] ( 3, 2 ) int -> registers "field V12._length (fldOffset=0x4)" P-INDEP
+; V19 tmp14 [V19,T08] ( 6, 1 ) byref -> r0 "field V12._reference (fldOffset=0x0)" P-INDEP
+; V20 tmp15 [V20,T09] ( 6, 1 ) int -> r1 "field V12._length (fldOffset=0x4)" P-INDEP
; V21 PSPSym [V21,T11] ( 1, 1 ) int -> [sp+0x20] do-not-enreg[V] "PSPSym"
;
; Lcl frame size = 36
G_M28902_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r1,r2,r3}
- push {r11,lr}
+ push {r4,r5,r11,lr}
sub sp, 36
- add r11, sp, 36
- add r1, sp, 56
+ add r11, sp, 44
+ add r1, sp, 64
str r1, [sp+0x20]
str r0, [sp+0x1C]
; GC ptr vars +{V00}
@@ -55,7 +55,7 @@ G_M28902_IG03: ; bbWeight=1.00, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b
cmp r0, 0
bne SHORT G_M28902_IG05
;; size=4 bbWeight=1.00 PerfScore 2.00
-G_M28902_IG04: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M28902_IG04: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
movs r0, 0
movs r1, 0
@@ -63,8 +63,8 @@ G_M28902_IG04: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov r1, r0
; byrRegs +[r1]
b SHORT G_M28902_IG06
- ;; size=10 bbWeight=0.10 PerfScore 0.48
-G_M28902_IG05: ; bbWeight=0.90, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
+ ;; size=10 bbWeight=0.05 PerfScore 0.24
+G_M28902_IG05: ; bbWeight=0.45, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
; byrRegs -[r1]
add r1, r0, 8
@@ -72,29 +72,29 @@ G_M28902_IG05: ; bbWeight=0.90, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b
ldr r0, [r0+0x04]
; gcrRegs -[r0]
mov r3, r0
- ;; size=8 bbWeight=0.90 PerfScore 2.71
+ ;; size=8 bbWeight=0.45 PerfScore 1.35
G_M28902_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref
- ldr r0, [sp+0x34]
+ ldr r0, [sp+0x3C]
; byrRegs +[r0]
str r0, [sp+0x04]
; byr arg write
- ldr r0, [sp+0x38]
+ ldr r0, [sp+0x40]
; byrRegs -[r0]
str r0, [sp+0x08]
- ldr r0, [sp+0x3C]
+ ldr r0, [sp+0x44]
; byrRegs +[r0]
str r0, [sp+0x0C]
; byr arg write
- ldr r0, [sp+0x40]
+ ldr r0, [sp+0x48]
; byrRegs -[r0]
str r0, [sp+0x10]
mov r0, r1
; byrRegs +[r0]
mov r1, r3
; byrRegs -[r1]
- ldr r3, [sp+0x2C]
+ ldr r3, [sp+0x34]
; byrRegs +[r3]
- ldr r2, [sp+0x30]
+ ldr r2, [sp+0x38]
str r2, [sp]
ldr lr, [sp+0x1C] // [V00 this]
; gcrRegs +[lr]
@@ -109,87 +109,104 @@ G_M28902_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byre
; gcr arg pop 0
;; size=48 bbWeight=1 PerfScore 19.00
G_M28902_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- bl G_M28902_IG10
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M28902_IG08: ; bbWeight=1, nogc, extend
- nop
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M28902_IG09: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+ ldr lr, [sp+0x1C] // [V00 this]
+ ; gcrRegs +[lr]
+ add r0, lr, 8
+ ; byrRegs +[r0]
+ mov r1, -1
+ ;; size=12 bbWeight=1 PerfScore 3.00
+G_M28902_IG08: ; bbWeight=1, gcrefRegs=4000 {lr}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r2, [r0]
+ adds r2, r2, r1
+ strex r3, r2, [r0]
+ cmp r3, 0
+ bne SHORT G_M28902_IG08
+ dmb 15
+ subs r4, r2, 1
+ cmp r4, 0
+ bne SHORT G_M28902_IG12
+ ;; size=24 bbWeight=1 PerfScore 9.00
+G_M28902_IG09: ; bbWeight=0.50, gcrefRegs=4000 {lr}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r0]
+ ldr r5, [lr+0x04]
+ ; gcrRegs +[r5]
+ cmp r5, 0
+ beq SHORT G_M28902_IG13
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M28902_IG10: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[lr]
+ add r0, r5, 8
+ ; byrRegs +[r0]
+ ldr r1, [r5+0x04]
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M28902_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
+ ; gcrRegs -[r5]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ ; byrRegs -[r0]
+ ; gcr arg pop 0
+ movs r0, 0
+ ldr lr, [sp+0x1C]
+ ; gcrRegs +[lr]
+ str r0, [lr+0x04]
+ ;; size=22 bbWeight=0.50 PerfScore 3.50
+G_M28902_IG12: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+ ; gcrRegs -[lr]
; GC ptr vars -{V00}
add sp, 36
- pop {r11,lr}
+ pop {r4,r5,r11,lr}
add sp, 12
bx lr
;; size=10 bbWeight=1 PerfScore 4.00
-G_M28902_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
- push {r11,lr}
+G_M28902_IG13: ; bbWeight=0.00, gcVars=00000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V00}
+ movs r0, 0
+ movs r1, 0
+ b SHORT G_M28902_IG11
+ ;; size=6 bbWeight=0.00 PerfScore 0.00
+G_M28902_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ push {r4,r5,r11,lr}
sub sp, 40
add r3, r11, 20
str r3, [sp+0x18]
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M28902_IG11: ; bbWeight=1, gcVars=00000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars +{V00}
- ldr lr, [r11-0x08] // [V00 this]
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M28902_IG15: ; bbWeight=0, gcVars=00000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ldr lr, [r11-0x10] // [V00 this]
; gcrRegs +[lr]
ldrsb r0, [lr]
add r0, lr, 8
; byrRegs +[r0]
- cmp r0, 0
- bne SHORT G_M28902_IG13
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M28902_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[lr]
- ; byrRegs -[r0]
- ; GC ptr vars -{V00}
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- ; gcr arg pop 0
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M28902_IG13: ; bbWeight=1, gcVars=00000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz
- ; byrRegs +[r0]
- ; GC ptr vars +{V00}
mov r1, -1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- ; gcr arg pop 0
- subs r0, r0, 1
- cmp r0, 0
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M28902_IG16: ; bbWeight=0, gcrefRegs=4000 {lr}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r2, [r0]
+ adds r2, r2, r1
+ strex r3, r2, [r0]
+ cmp r3, 0
+ bne SHORT G_M28902_IG16
+ dmb 15
+ subs r4, r2, 1
+ cmp r4, 0
+ bne SHORT G_M28902_IG19
+ ldr r5, [lr+0x04]
+ ; gcrRegs +[r5]
+ cmp r5, 0
bne SHORT G_M28902_IG17
- ldr lr, [r11-0x08]
- ; gcrRegs +[lr]
- ldr r0, [lr+0x04]
- ; gcrRegs +[r0]
- cmp r0, 0
- bne SHORT G_M28902_IG15
- ;; size=32 bbWeight=1 PerfScore 11.00
-G_M28902_IG14: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0 lr]
movs r0, 0
...
+8 (+23.53%) : 87903.dasm - System.Data.DataRelationCollection:.ctor():this (FullOpts)
@@ -5,37 +5,42 @@
; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Data.DataRelationCollection>
+; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.Data.DataRelationCollection>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M34636_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,lr}
- mov r4, r0
- ; gcrRegs +[r4]
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M34636_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- movs r0, 1
- str r0, [r4+0x10]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movs r1, 1
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M34636_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r0]
+ movs r3, 1
+ str r3, [r0+0x10]
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; gcr arg pop 0
- adds r3, r0, 1
- str r3, [r4+0x14]
- ;; size=28 bbWeight=1 PerfScore 10.00
-G_M34636_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r4,pc}
+ movs r2, 1
+ ;; size=14 bbWeight=1 PerfScore 5.00
+G_M34636_IG03: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0008 {r3}, byref, isz
+ ; byrRegs +[r3]
+ ldrex lr, [r3]
+ add lr, r2
+ strex r1, lr, [r3]
+ cmp r1, 0
+ bne SHORT G_M34636_IG03
+ dmb 15
+ add r3, lr, 1
+ ; byrRegs -[r3]
+ str r3, [r0+0x14]
+ ;; size=24 bbWeight=1 PerfScore 8.00
+G_M34636_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 34, prolog size 2, PerfScore 13.00, instruction count 13, allocated bytes for code 34 (MethodHash=9fa878b3) for method System.Data.DataRelationCollection:.ctor():this (FullOpts)
+; Total bytes of code 42, prolog size 2, PerfScore 15.00, instruction count 15, allocated bytes for code 42 (MethodHash=9fa878b3) for method System.Data.DataRelationCollection:.ctor():this (FullOpts)
; ============================================================
Unwind Info:
@@ -47,12 +52,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 34 (0x000022)
+ Function Length : 21 (0x00015) Actual length = 42 (0x00002a)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- D4 pop {r4,lr} ; opsize 16
- FF end
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
+10 (+29.41%) : 21960.dasm - System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:InterlockedCompareExchange(System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks,System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks):System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:this (FullOpts)
@@ -2,10 +2,10 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 4 ) byref -> r0 this single-def
@@ -13,40 +13,43 @@
; V02 arg2 [V02 ] ( 4, 4 ) struct ( 4) [sp+0x0C] single-def <System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks>
-;* V05 tmp2 [V05 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-;* V06 tmp3 [V06 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V07 tmp4 [V07 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V11 tmp8 [V11,T01] ( 4, 4 ) int -> [sp+0x08] do-not-enreg[] single-def "field V01._data (fldOffset=0x0)" P-DEP
-; V12 tmp9 [V12,T02] ( 4, 4 ) int -> [sp+0x0C] do-not-enreg[] single-def "field V02._data (fldOffset=0x0)" P-DEP
-; V13 tmp10 [V13,T03] ( 2, 2 ) int -> r0 "field V04._data (fldOffset=0x0)" P-INDEP
+; V05 tmp2 [V05,T03] ( 2, 4 ) int -> r0 "Inlining Arg"
+; V06 tmp3 [V06,T01] ( 4, 4 ) int -> [sp+0x08] do-not-enreg[] single-def "field V01._data (fldOffset=0x0)" P-DEP
+; V07 tmp4 [V07,T02] ( 4, 4 ) int -> [sp+0x0C] do-not-enreg[] single-def "field V02._data (fldOffset=0x0)" P-DEP
+;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "field V04._data (fldOffset=0x0)" P-INDEP
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M62777_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r1,r2}
- push {r11,lr}
- mov r11, sp
- ;; size=8 bbWeight=1 PerfScore 3.00
+ push {r3,lr}
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M62777_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- ldrsb r1, [r0]
- ldr r1, [sp+0x08]
+ ldrsb r3, [r0]
+ ldr r3, [sp+0x08]
ldr r2, [sp+0x0C]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0]
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M62777_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex lr, [r0]
+ cmp lr, r2
+ bne SHORT G_M62777_IG04
+ strex r1, r3, [r0]
+ cmp lr, 0
+ bne SHORT G_M62777_IG03
;; size=18 bbWeight=1 PerfScore 6.00
-G_M62777_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,lr}
+G_M62777_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
+ dmb 15
+ mov r0, lr
+ ; byrRegs -[r0]
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M62777_IG05: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,lr}
add sp, 8
bx lr
;; size=8 bbWeight=1 PerfScore 3.00
-; Total bytes of code 34, prolog size 8, PerfScore 12.00, instruction count 12, allocated bytes for code 34 (MethodHash=dde70ac6) for method System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:InterlockedCompareExchange(System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks,System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks):System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:this (FullOpts)
+; Total bytes of code 44, prolog size 4, PerfScore 16.00, instruction count 16, allocated bytes for code 44 (MethodHash=dde70ac6) for method System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:InterlockedCompareExchange(System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks,System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks):System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:this (FullOpts)
; ============================================================
Unwind Info:
@@ -58,18 +61,18 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 34 (0x000022)
+ Function Length : 22 (0x00016) Actual length = 44 (0x00002c)
---- 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 : 5 (0x05)
---- Unwind codes ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
EC 06 pop {r1,r2} ; opsize 16
FF end
---- Epilog start at index 5 ----
- A8 00 pop {r11,lr} ; opsize 32
+ A0 08 pop {r3,lr} ; opsize 32
02 add sp, sp, #8 ; opsize 16
FD end + nop ; opsize 16
FF end
libraries_tests.run.linux.arm.Release.mch
-22 (-47.83%) : 123207.dasm - System.Threading.Interlocked:Add(byref,int):int (Tier1)
@@ -2,66 +2,52 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; Tier1 code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 4 ) byref -> r0 single-def
-; V01 arg1 [V01,T01] ( 4, 4 ) int -> r4 single-def
+; V00 arg0 [V00,T01] ( 3, 3 ) byref -> r0 single-def
+; V01 arg1 [V01,T00] ( 4, 4 ) int -> r1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 4
G_M51449_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
- add r11, sp, 8
- mov r4, r1
- ;; size=10 bbWeight=1 PerfScore 3.00
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
G_M51449_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M51449_IG04
- mov r1, r4
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
+ ldrex r2, [r0]
+ adds r2, r2, r1
+ strex r3, r2, [r0]
+ cmp r3, 0
+ bne SHORT G_M51449_IG02
+ dmb 15
+ adds r0, r2, r1
; byrRegs -[r0]
- adds r0, r0, r4
- ;; size=18 bbWeight=1 PerfScore 7.00
+ ;; size=20 bbWeight=1 PerfScore 7.00
G_M51449_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r3,r4,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M51449_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 46, prolog size 8, PerfScore 11.00, instruction count 16, allocated bytes for code 46 (MethodHash=c2693706) for method System.Threading.Interlocked:Add(byref,int):int (Tier1)
+; Total bytes of code 24, prolog size 2, PerfScore 9.00, instruction count 9, allocated bytes for code 24 (MethodHash=c2693706) for method System.Threading.Interlocked:Add(byref,int):int (Tier1)
; ============================================================
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 : 23 (0x00017) Actual length = 46 (0x00002e)
- ---- 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 : 12 (0x0000c) Actual length = 24 (0x000018)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
-22 (-47.83%) : 121988.dasm - System.Threading.Interlocked:Add(byref,int):int (Instrumented Tier1)
@@ -2,66 +2,52 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; Instrumented Tier1 code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 4 ) byref -> r0 single-def
-; V01 arg1 [V01,T01] ( 4, 4 ) int -> r4 single-def
+; V00 arg0 [V00,T01] ( 3, 3 ) byref -> r0 single-def
+; V01 arg1 [V01,T00] ( 4, 4 ) int -> r1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 4
G_M51449_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
- add r11, sp, 8
- mov r4, r1
- ;; size=10 bbWeight=1 PerfScore 3.00
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
G_M51449_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M51449_IG04
- mov r1, r4
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
+ ldrex r2, [r0]
+ adds r2, r2, r1
+ strex r3, r2, [r0]
+ cmp r3, 0
+ bne SHORT G_M51449_IG02
+ dmb 15
+ adds r0, r2, r1
; byrRegs -[r0]
- adds r0, r0, r4
- ;; size=18 bbWeight=1 PerfScore 7.00
+ ;; size=20 bbWeight=1 PerfScore 7.00
G_M51449_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r3,r4,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M51449_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 46, prolog size 8, PerfScore 11.00, instruction count 16, allocated bytes for code 46 (MethodHash=c2693706) for method System.Threading.Interlocked:Add(byref,int):int (Instrumented Tier1)
+; Total bytes of code 24, prolog size 2, PerfScore 9.00, instruction count 9, allocated bytes for code 24 (MethodHash=c2693706) for method System.Threading.Interlocked:Add(byref,int):int (Instrumented Tier1)
; ============================================================
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 : 23 (0x00017) Actual length = 46 (0x00002e)
- ---- 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 : 12 (0x0000c) Actual length = 24 (0x000018)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
-16 (-42.11%) : 59993.dasm - System.Threading.Interlocked:Exchange(byref,int):int (Tier1)
@@ -2,63 +2,51 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; Tier1 code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 4 ) byref -> r0 single-def
+; V00 arg0 [V00,T00] ( 3, 3 ) byref -> r0 single-def
; V01 arg1 [V01,T01] ( 3, 3 ) int -> r1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M7811_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr}
- mov r11, sp
- ;; size=6 bbWeight=1 PerfScore 2.00
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
G_M7811_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M7811_IG04
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
+ ldrex r2, [r0]
+ strex r3, r1, [r0]
+ cmp r3, 0
+ bne SHORT G_M7811_IG02
+ dmb 15
+ mov r0, r2
; byrRegs -[r0]
- ;; size=14 bbWeight=1 PerfScore 5.00
+ ;; size=18 bbWeight=1 PerfScore 6.00
G_M7811_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M7811_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 38, prolog size 6, PerfScore 8.00, instruction count 13, allocated bytes for code 38 (MethodHash=911fe17c) for method System.Threading.Interlocked:Exchange(byref,int):int (Tier1)
+; Total bytes of code 22, prolog size 2, PerfScore 8.00, instruction count 8, allocated bytes for code 22 (MethodHash=911fe17c) for method System.Threading.Interlocked:Exchange(byref,int):int (Tier1)
; ============================================================
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 : 19 (0x00013) Actual length = 38 (0x000026)
- ---- 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 : 11 (0x0000b) Actual length = 22 (0x000016)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
+8 (+30.77%) : 162592.dasm - Microsoft.CodeAnalysis.VersionStamp:GetNextGlobalVersion():int (Tier1)
@@ -5,7 +5,7 @@
; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -18,18 +18,24 @@ G_M28066_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M28066_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
- movs r1, 1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; gcr arg pop 0
- adds r0, r0, 1
- ;; size=22 bbWeight=1 PerfScore 7.00
-G_M28066_IG03: ; bbWeight=1, epilog, nogc, extend
+ movs r3, 1
+ ;; size=10 bbWeight=1 PerfScore 3.00
+G_M28066_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ; byrRegs +[r0]
+ ldrex r1, [r0]
+ adds r1, r1, r3
+ strex r2, r1, [r0]
+ cmp r2, 0
+ bne SHORT G_M28066_IG03
+ dmb 15
+ adds r0, r1, 1
+ ; byrRegs -[r0]
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M28066_IG04: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 26, prolog size 2, PerfScore 9.00, instruction count 9, allocated bytes for code 26 (MethodHash=3e0f925d) for method Microsoft.CodeAnalysis.VersionStamp:GetNextGlobalVersion():int (Tier1)
+; Total bytes of code 34, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 34 (MethodHash=3e0f925d) for method Microsoft.CodeAnalysis.VersionStamp:GetNextGlobalVersion():int (Tier1)
; ============================================================
Unwind Info:
@@ -41,7 +47,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 26 (0x00001a)
+ Function Length : 17 (0x00011) Actual length = 34 (0x000022)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+8 (+30.77%) : 338460.dasm - System.Linq.Parallel.PlinqEtwProvider:NextQueryId():int (Tier1)
@@ -5,7 +5,7 @@
; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -18,18 +18,24 @@ G_M41951_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M41951_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
- movs r1, 1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; gcr arg pop 0
- adds r0, r0, 1
- ;; size=22 bbWeight=1 PerfScore 7.00
-G_M41951_IG03: ; bbWeight=1, epilog, nogc, extend
+ movs r3, 1
+ ;; size=10 bbWeight=1 PerfScore 3.00
+G_M41951_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ; byrRegs +[r0]
+ ldrex r1, [r0]
+ adds r1, r1, r3
+ strex r2, r1, [r0]
+ cmp r2, 0
+ bne SHORT G_M41951_IG03
+ dmb 15
+ adds r0, r1, 1
+ ; byrRegs -[r0]
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M41951_IG04: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 26, prolog size 2, PerfScore 9.00, instruction count 9, allocated bytes for code 26 (MethodHash=f9f95c20) for method System.Linq.Parallel.PlinqEtwProvider:NextQueryId():int (Tier1)
+; Total bytes of code 34, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 34 (MethodHash=f9f95c20) for method System.Linq.Parallel.PlinqEtwProvider:NextQueryId():int (Tier1)
; ============================================================
Unwind Info:
@@ -41,7 +47,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 26 (0x00001a)
+ Function Length : 17 (0x00011) Actual length = 34 (0x000022)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+10 (+31.25%) : 715696.dasm - System.Threading.Tests.InterlockedTests+<>c:b_380():System.Object:this (Tier0)
@@ -16,20 +16,31 @@ G_M24868_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str r0, [sp+0x04]
;; size=10 bbWeight=1 PerfScore 3.00
G_M24868_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movs r0, 0
- movs r1, 0
+ movs r3, 0
movs r2, 0
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
+ movs r1, 0
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M24868_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ; byrRegs +[r3]
+ ldrex r4, [r3]
+ ; gcrRegs +[r4]
+ cmp r4, r1
+ bne SHORT G_M24868_IG04
+ strex r0, r2, [r3]
+ cmp r4, 0
+ bne SHORT G_M24868_IG03
+ ;; size=16 bbWeight=1 PerfScore 6.00
+G_M24868_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+ ; gcrRegs -[r4]
+ dmb 15
+ mov r0, r4
; gcrRegs +[r0]
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M24868_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M24868_IG05: ; bbWeight=1, epilog, nogc, extend
pop {r2,r3,r4,r10,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 32, prolog size 8, PerfScore 11.00, instruction count 11, allocated bytes for code 32 (MethodHash=ccd39edb) for method System.Threading.Tests.InterlockedTests+<>c:<InterlockedCompareExchange_Object>b__38_0():System.Object:this (Tier0)
+; Total bytes of code 42, prolog size 8, PerfScore 15.00, instruction count 15, allocated bytes for code 42 (MethodHash=ccd39edb) for method System.Threading.Tests.InterlockedTests+<>c:<InterlockedCompareExchange_Object>b__38_0():System.Object:this (Tier0)
; ============================================================
Unwind Info:
@@ -41,7 +52,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 16 (0x00010) Actual length = 32 (0x000020)
+ Function Length : 21 (0x00015) Actual length = 42 (0x00002a)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
librariestestsnotieredcompilation.run.linux.arm.Release.mch
-20 (-38.46%) : 297901.dasm - System.Threading.RateLimiting.Tests.TestEquality:GetHashCode(int):int:this (FullOpts)
@@ -2,71 +2,61 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.Threading.RateLimiting.Tests.TestEquality>
-; V01 arg1 [V01,T02] ( 3, 3 ) int -> r4 ld-addr-op single-def
+; V01 arg1 [V01,T01] ( 3, 3 ) int -> r1 ld-addr-op single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 6 ) byref -> r0 single-def "Inlining Arg"
+;* V03 tmp1 [V03 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;
; Lcl frame size = 4
G_M17353_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
- add r11, sp, 8
- mov r4, r1
- ;; size=10 bbWeight=1 PerfScore 3.00
-G_M17353_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M17353_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- ldrsb r1, [r0]
+ ldrsb r3, [r0]
adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M17353_IG04
- movs r1, 1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
+ movs r3, 1
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M17353_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex lr, [r0]
+ add lr, r3
+ strex r2, lr, [r0]
+ cmp r2, 0
+ bne SHORT G_M17353_IG03
+ dmb 15
+ mov r0, r1
; byrRegs -[r0]
- mov r0, r4
- ;; size=24 bbWeight=1 PerfScore 9.00
-G_M17353_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r3,r4,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M17353_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M17353_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 52, prolog size 8, PerfScore 13.00, instruction count 18, allocated bytes for code 52 (MethodHash=81b8bc36) for method System.Threading.RateLimiting.Tests.TestEquality:GetHashCode(int):int:this (FullOpts)
+; Total bytes of code 32, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 32 (MethodHash=81b8bc36) for method System.Threading.RateLimiting.Tests.TestEquality:GetHashCode(int):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 : 26 (0x0001a) Actual length = 52 (0x000034)
- ---- 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 : 16 (0x00010) Actual length = 32 (0x000020)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
-16 (-36.36%) : 301413.dasm - System.Threading.Tasks.Tests.ParallelForTests+<>cDisplayClass1_0:b1(int,System.Threading.Tasks.ParallelLoopState):this (FullOpts)
@@ -2,69 +2,59 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.Threading.Tasks.Tests.ParallelForTests+<>c__DisplayClass1_0>
-; V01 arg1 [V01,T02] ( 3, 3 ) int -> r1 single-def
+; V01 arg1 [V01,T01] ( 3, 3 ) int -> r1 single-def
;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Threading.Tasks.ParallelLoopState>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 3, 6 ) byref -> r0 single-def "Inlining Arg"
+;* V04 tmp1 [V04 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M47151_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_M47151_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M47151_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
ldrsb r3, [r0]
- adds r0, r0, 4
+ adds r3, r0, 4
+ ; byrRegs +[r3]
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M47151_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
; gcrRegs -[r0]
- ; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M47151_IG04
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- ;; size=20 bbWeight=1 PerfScore 7.00
-G_M47151_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M47151_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ldrex r0, [r3]
+ adds r0, r0, r1
+ strex r2, r0, [r3]
+ cmp r2, 0
+ bne SHORT G_M47151_IG03
+ dmb 15
+ ;; size=18 bbWeight=1 PerfScore 6.00
+G_M47151_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 44, prolog size 6, PerfScore 10.00, instruction count 15, allocated bytes for code 44 (MethodHash=fa3247d0) for method System.Threading.Tasks.Tests.ParallelForTests+<>c__DisplayClass1_0:<TestParallelForEachConversions>b__1(int,System.Threading.Tasks.ParallelLoopState):this (FullOpts)
+; Total bytes of code 28, prolog size 2, PerfScore 10.00, instruction count 10, allocated bytes for code 28 (MethodHash=fa3247d0) for method System.Threading.Tasks.Tests.ParallelForTests+<>c__DisplayClass1_0:<TestParallelForEachConversions>b__1(int,System.Threading.Tasks.ParallelLoopState):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 : 22 (0x00016) Actual length = 44 (0x00002c)
- ---- 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 : 14 (0x0000e) Actual length = 28 (0x00001c)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
-16 (-36.36%) : 301414.dasm - System.Threading.Tasks.Tests.ParallelForTests+<>cDisplayClass1_0:b2(int,System.Threading.Tasks.ParallelLoopState,long):this (FullOpts)
@@ -2,70 +2,60 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.Threading.Tasks.Tests.ParallelForTests+<>c__DisplayClass1_0>
-; V01 arg1 [V01,T02] ( 3, 3 ) int -> r1 single-def
+; V01 arg1 [V01,T01] ( 3, 3 ) int -> r1 single-def
;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Threading.Tasks.ParallelLoopState>
;* V03 arg3 [V03 ] ( 0, 0 ) long -> zero-ref single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T01] ( 3, 6 ) byref -> r0 single-def "Inlining Arg"
+;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M8106_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_M8106_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M8106_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
ldrsb r3, [r0]
- adds r0, r0, 4
+ adds r3, r0, 4
+ ; byrRegs +[r3]
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M8106_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
; gcrRegs -[r0]
- ; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M8106_IG04
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- ;; size=20 bbWeight=1 PerfScore 7.00
-G_M8106_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M8106_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ldrex r0, [r3]
+ adds r0, r0, r1
+ strex r2, r0, [r3]
+ cmp r2, 0
+ bne SHORT G_M8106_IG03
+ dmb 15
+ ;; size=18 bbWeight=1 PerfScore 6.00
+G_M8106_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 44, prolog size 6, PerfScore 10.00, instruction count 15, allocated bytes for code 44 (MethodHash=03f7e055) for method System.Threading.Tasks.Tests.ParallelForTests+<>c__DisplayClass1_0:<TestParallelForEachConversions>b__2(int,System.Threading.Tasks.ParallelLoopState,long):this (FullOpts)
+; Total bytes of code 28, prolog size 2, PerfScore 10.00, instruction count 10, allocated bytes for code 28 (MethodHash=03f7e055) for method System.Threading.Tasks.Tests.ParallelForTests+<>c__DisplayClass1_0:<TestParallelForEachConversions>b__2(int,System.Threading.Tasks.ParallelLoopState,long):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 : 22 (0x00016) Actual length = 44 (0x00002c)
- ---- 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 : 14 (0x0000e) Actual length = 28 (0x00001c)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
+48 (+20.00%) : 24134.dasm - System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged:DeriveBytes(System.ReadOnlySpan1[ubyte],System.ReadOnlySpan
1[ubyte],System.Span`1[ubyte]):this (FullOpts)
@@ -5,40 +5,40 @@
; r11 based frame
; fully interruptible
; No matching PGO data
-; 2 inlinees with PGO data; 5 single block inlinees; 2 inlinees without PGO data
+; 2 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 8, 8 ) ref -> [sp+0x1C] this class-hnd EH-live single-def <System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged>
-; V01 arg1 [V01,T02] ( 4, 4 ) struct ( 8) [sp+0x2C] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
-; V02 arg2 [V02,T04] ( 3, 3 ) struct ( 8) [sp+0x34] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ubyte]>
-; V03 arg3 [V03,T10] ( 1, 1 ) struct ( 8) [sp+0x3C] do-not-enreg[S] single-def <System.Span`1[ubyte]>
-; V04 loc0 [V04,T05] ( 4, 3.81) ref -> r0 class-hnd single-def <ubyte[]>
+; V00 this [V00,T00] ( 11, 6 ) ref -> [sp+0x1C] this class-hnd EH-live single-def <System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged>
+; V01 arg1 [V01,T01] ( 4, 4 ) struct ( 8) [sp+0x34] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
+; V02 arg2 [V02,T02] ( 3, 3 ) struct ( 8) [sp+0x3C] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ubyte]>
+; V03 arg3 [V03,T10] ( 1, 1 ) struct ( 8) [sp+0x44] do-not-enreg[S] single-def <System.Span`1[ubyte]>
+; V04 loc0 [V04,T04] ( 4, 2.90) ref -> r0 class-hnd single-def <ubyte[]>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (20) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V09 tmp4 [V09,T03] ( 3, 6 ) byref -> r0 single-def "Inlining Arg"
+; V08 tmp3 [V08,T05] ( 4, 2 ) int -> r4 "Inline stloc first use temp"
+;* V09 tmp4 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V10 tmp5 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
-; V11 tmp6 [V11,T01] ( 4, 8.00) ref -> r0 class-hnd single-def "Inlining Arg" <ubyte[]>
+; V11 tmp6 [V11,T03] ( 8, 4.00) ref -> r5 class-hnd "Inlining Arg" <ubyte[]>
;* V12 tmp7 [V12 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V13 tmp8 [V13 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x4)" P-INDEP
-; V15 tmp10 [V15,T06] ( 3, 2 ) byref -> registers "field V07._reference (fldOffset=0x0)" P-INDEP
-; V16 tmp11 [V16,T08] ( 3, 2 ) int -> registers "field V07._length (fldOffset=0x4)" P-INDEP
+; V15 tmp10 [V15,T06] ( 3, 1.50) byref -> registers "field V07._reference (fldOffset=0x0)" P-INDEP
+; V16 tmp11 [V16,T07] ( 3, 1.50) int -> registers "field V07._length (fldOffset=0x4)" P-INDEP
;* V17 tmp12 [V17 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP
-; V19 tmp14 [V19,T07] ( 3, 2 ) byref -> registers "field V12._reference (fldOffset=0x0)" P-INDEP
-; V20 tmp15 [V20,T09] ( 3, 2 ) int -> registers "field V12._length (fldOffset=0x4)" P-INDEP
+; V19 tmp14 [V19,T08] ( 6, 1 ) byref -> r0 "field V12._reference (fldOffset=0x0)" P-INDEP
+; V20 tmp15 [V20,T09] ( 6, 1 ) int -> r1 "field V12._length (fldOffset=0x4)" P-INDEP
; V21 PSPSym [V21,T11] ( 1, 1 ) int -> [sp+0x20] do-not-enreg[V] "PSPSym"
;
; Lcl frame size = 36
G_M63238_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r1,r2,r3}
- push {r11,lr}
+ push {r4,r5,r11,lr}
sub sp, 36
- add r11, sp, 36
- add r1, sp, 56
+ add r11, sp, 44
+ add r1, sp, 64
str r1, [sp+0x20]
str r0, [sp+0x1C]
; GC ptr vars +{V00}
@@ -55,7 +55,7 @@ G_M63238_IG03: ; bbWeight=1.00, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b
cmp r0, 0
bne SHORT G_M63238_IG05
;; size=4 bbWeight=1.00 PerfScore 2.00
-G_M63238_IG04: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M63238_IG04: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
movs r0, 0
movs r1, 0
@@ -63,8 +63,8 @@ G_M63238_IG04: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov r1, r0
; byrRegs +[r1]
b SHORT G_M63238_IG06
- ;; size=10 bbWeight=0.10 PerfScore 0.48
-G_M63238_IG05: ; bbWeight=0.90, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
+ ;; size=10 bbWeight=0.05 PerfScore 0.24
+G_M63238_IG05: ; bbWeight=0.45, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
; byrRegs -[r1]
add r1, r0, 8
@@ -72,29 +72,29 @@ G_M63238_IG05: ; bbWeight=0.90, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b
ldr r0, [r0+0x04]
; gcrRegs -[r0]
mov r3, r0
- ;; size=8 bbWeight=0.90 PerfScore 2.71
+ ;; size=8 bbWeight=0.45 PerfScore 1.35
G_M63238_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref
- ldr r0, [sp+0x34]
+ ldr r0, [sp+0x3C]
; byrRegs +[r0]
str r0, [sp+0x04]
; byr arg write
- ldr r0, [sp+0x38]
+ ldr r0, [sp+0x40]
; byrRegs -[r0]
str r0, [sp+0x08]
- ldr r0, [sp+0x3C]
+ ldr r0, [sp+0x44]
; byrRegs +[r0]
str r0, [sp+0x0C]
; byr arg write
- ldr r0, [sp+0x40]
+ ldr r0, [sp+0x48]
; byrRegs -[r0]
str r0, [sp+0x10]
mov r0, r1
; byrRegs +[r0]
mov r1, r3
; byrRegs -[r1]
- ldr r3, [sp+0x2C]
+ ldr r3, [sp+0x34]
; byrRegs +[r3]
- ldr r2, [sp+0x30]
+ ldr r2, [sp+0x38]
str r2, [sp]
ldr lr, [sp+0x1C] // [V00 this]
; gcrRegs +[lr]
@@ -109,87 +109,104 @@ G_M63238_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byre
; gcr arg pop 0
;; size=48 bbWeight=1 PerfScore 19.00
G_M63238_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- bl G_M63238_IG10
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M63238_IG08: ; bbWeight=1, nogc, extend
- nop
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M63238_IG09: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+ ldr lr, [sp+0x1C] // [V00 this]
+ ; gcrRegs +[lr]
+ add r0, lr, 8
+ ; byrRegs +[r0]
+ mov r1, -1
+ ;; size=12 bbWeight=1 PerfScore 3.00
+G_M63238_IG08: ; bbWeight=1, gcrefRegs=4000 {lr}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r2, [r0]
+ adds r2, r2, r1
+ strex r3, r2, [r0]
+ cmp r3, 0
+ bne SHORT G_M63238_IG08
+ dmb 15
+ subs r4, r2, 1
+ cmp r4, 0
+ bne SHORT G_M63238_IG12
+ ;; size=24 bbWeight=1 PerfScore 9.00
+G_M63238_IG09: ; bbWeight=0.50, gcrefRegs=4000 {lr}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r0]
+ ldr r5, [lr+0x04]
+ ; gcrRegs +[r5]
+ cmp r5, 0
+ beq SHORT G_M63238_IG13
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M63238_IG10: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[lr]
+ add r0, r5, 8
+ ; byrRegs +[r0]
+ ldr r1, [r5+0x04]
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M63238_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
+ ; gcrRegs -[r5]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
+ ; byrRegs -[r0]
+ ; gcr arg pop 0
+ movs r0, 0
+ ldr lr, [sp+0x1C]
+ ; gcrRegs +[lr]
+ str r0, [lr+0x04]
+ ;; size=22 bbWeight=0.50 PerfScore 3.50
+G_M63238_IG12: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+ ; gcrRegs -[lr]
; GC ptr vars -{V00}
add sp, 36
- pop {r11,lr}
+ pop {r4,r5,r11,lr}
add sp, 12
bx lr
;; size=10 bbWeight=1 PerfScore 4.00
-G_M63238_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
- push {r11,lr}
+G_M63238_IG13: ; bbWeight=0.00, gcVars=00000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars +{V00}
+ movs r0, 0
+ movs r1, 0
+ b SHORT G_M63238_IG11
+ ;; size=6 bbWeight=0.00 PerfScore 0.00
+G_M63238_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ push {r4,r5,r11,lr}
sub sp, 40
add r3, r11, 20
str r3, [sp+0x18]
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M63238_IG11: ; bbWeight=1, gcVars=00000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars +{V00}
- ldr lr, [r11-0x08] // [V00 this]
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M63238_IG15: ; bbWeight=0, gcVars=00000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ldr lr, [r11-0x10] // [V00 this]
; gcrRegs +[lr]
ldrsb r0, [lr]
add r0, lr, 8
; byrRegs +[r0]
- cmp r0, 0
- bne SHORT G_M63238_IG13
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M63238_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[lr]
- ; byrRegs -[r0]
- ; GC ptr vars -{V00}
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- ; gcr arg pop 0
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M63238_IG13: ; bbWeight=1, gcVars=00000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz
- ; byrRegs +[r0]
- ; GC ptr vars +{V00}
mov r1, -1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- ; gcr arg pop 0
- subs r0, r0, 1
- cmp r0, 0
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M63238_IG16: ; bbWeight=0, gcrefRegs=4000 {lr}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r2, [r0]
+ adds r2, r2, r1
+ strex r3, r2, [r0]
+ cmp r3, 0
+ bne SHORT G_M63238_IG16
+ dmb 15
+ subs r4, r2, 1
+ cmp r4, 0
+ bne SHORT G_M63238_IG19
+ ldr r5, [lr+0x04]
+ ; gcrRegs +[r5]
+ cmp r5, 0
bne SHORT G_M63238_IG17
- ldr lr, [r11-0x08]
- ; gcrRegs +[lr]
- ldr r0, [lr+0x04]
- ; gcrRegs +[r0]
- cmp r0, 0
- bne SHORT G_M63238_IG15
- ;; size=32 bbWeight=1 PerfScore 11.00
-G_M63238_IG14: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0 lr]
movs r0, 0
...
+10 (+62.50%) : 303774.dasm - System.Threading.Tests.InterlockedTests+<>c:b_240():System.Object:this (FullOpts)
@@ -5,7 +5,6 @@
; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Threading.Tests.InterlockedTests+<>c>
@@ -13,19 +12,30 @@
;
; Lcl frame size = 4
-G_M26382_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M26382_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,lr}
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M26382_IG02: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- ; gcr arg pop 0
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M26382_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movs r0, 0
+ movs r3, 0
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M26382_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ; byrRegs +[r0]
+ ldrex r1, [r0]
+ ; gcrRegs +[r1]
+ strex r2, r3, [r0]
+ cmp r2, 0
+ bne SHORT G_M26382_IG03
+ dmb 15
+ mov r0, r1
+ ; gcrRegs +[r0]
+ ; byrRegs -[r0]
+ ;; size=18 bbWeight=1 PerfScore 6.00
+G_M26382_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 16, prolog size 2, PerfScore 0.00, instruction count 6, allocated bytes for code 16 (MethodHash=ca9e98f1) for method System.Threading.Tests.InterlockedTests+<>c:<InterlockedExchange_Object>b__24_0():System.Object:this (FullOpts)
+; Total bytes of code 26, prolog size 2, PerfScore 10.00, instruction count 10, allocated bytes for code 26 (MethodHash=ca9e98f1) for method System.Threading.Tests.InterlockedTests+<>c:<InterlockedExchange_Object>b__24_0():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -34,13 +44,13 @@ Unwind Info:
Code Words : 1
Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0
Vers : 0
- Function Length : 8 (0x00008) Actual length = 16 (0x000010)
- ---- Epilog scopes ----
- No epilogs
+ Function Length : 13 (0x0000d) Actual length = 26 (0x00001a)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
+ ---- Epilog start at index 0 ----
ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
+18 (+112.50%) : 303789.dasm - System.Threading.Tests.InterlockedTests+<>c:b_380():System.Object:this (FullOpts)
@@ -5,7 +5,6 @@
; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Threading.Tests.InterlockedTests+<>c>
@@ -13,19 +12,36 @@
;
; Lcl frame size = 4
-G_M24868_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M24868_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,lr}
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M24868_IG02: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- ; gcr arg pop 0
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M24868_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movs r0, 0
+ movs r3, 0
+ movs r2, 0
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M24868_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ; byrRegs +[r0]
+ ldrex lr, [r0]
+ ; gcrRegs +[lr]
+ cmp lr, r2
+ bne SHORT G_M24868_IG04
+ strex r1, r3, [r0]
+ cmp lr, 0
+ bne SHORT G_M24868_IG03
+ ;; size=18 bbWeight=1 PerfScore 6.00
+G_M24868_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
+ ; gcrRegs -[lr]
+ dmb 15
+ mov r0, lr
+ ; gcrRegs +[r0]
+ ; byrRegs -[r0]
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M24868_IG05: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 16, prolog size 2, PerfScore 0.00, instruction count 6, allocated bytes for code 16 (MethodHash=ccd39edb) for method System.Threading.Tests.InterlockedTests+<>c:<InterlockedCompareExchange_Object>b__38_0():System.Object:this (FullOpts)
+; Total bytes of code 34, prolog size 2, PerfScore 13.00, instruction count 13, allocated bytes for code 34 (MethodHash=ccd39edb) for method System.Threading.Tests.InterlockedTests+<>c:<InterlockedCompareExchange_Object>b__38_0():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -34,13 +50,13 @@ Unwind Info:
Code Words : 1
Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0
Vers : 0
- Function Length : 8 (0x00008) Actual length = 16 (0x000010)
- ---- Epilog scopes ----
- No epilogs
+ Function Length : 17 (0x00011) Actual length = 34 (0x000022)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
+ ---- Epilog start at index 0 ----
ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
realworld.run.linux.arm.checked.mch
-20 (-41.67%) : 16925.dasm - SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:AddRef():this (FullOpts)
@@ -2,70 +2,61 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) ref -> r0 this class-hnd single-def <SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]>
+; V00 this [V00,T00] ( 3, 3 ) ref -> r0 this class-hnd single-def <SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T00] ( 3, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V03 tmp2 [V03,T01] ( 3, 6 ) byref -> r0 single-def "Inlining Arg"
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> r3 class-hnd single-def "Inlining Arg" <<unknown class>>
+;* V03 tmp2 [V03 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M2256_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_M2256_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M2256_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- ldr r0, [r0+0x04]
- ldrsb r1, [r0]
- adds r0, 8
+ ldr r3, [r0+0x04]
+ ; gcrRegs +[r3]
+ adds r3, 8
+ ; gcrRegs -[r3]
+ ; byrRegs +[r3]
+ movs r2, 1
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M2256_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
; gcrRegs -[r0]
- ; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M2256_IG04
- movs r1, 1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- ;; size=24 bbWeight=1 PerfScore 9.00
-G_M2256_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M2256_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ldrex r0, [r3]
+ adds r0, r0, r2
+ strex r1, r0, [r3]
+ cmp r1, 0
+ bne SHORT G_M2256_IG03
+ dmb 15
+ ;; size=18 bbWeight=1 PerfScore 6.00
+G_M2256_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 48, prolog size 6, PerfScore 12.00, instruction count 17, allocated bytes for code 48 (MethodHash=e993f72f) for method SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:AddRef():this (FullOpts)
+; Total bytes of code 28, prolog size 2, PerfScore 11.00, instruction count 11, allocated bytes for code 28 (MethodHash=e993f72f) for method SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:AddRef():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 : 24 (0x00018) Actual length = 48 (0x000030)
- ---- 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 : 14 (0x0000e) Actual length = 28 (0x00001c)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
-20 (-32.26%) : 25393.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:EnsureFrozenForEnqueues():this (FullOpts)
@@ -2,81 +2,70 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 6, 4.50) ref -> r0 this class-hnd single-def <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 3, 3 ) byref -> r1 single-def "impAppendStmt"
-; V03 tmp2 [V03,T02] ( 2, 2 ) int -> r3 "Inlining Arg"
+; V02 tmp1 [V02,T01] ( 2, 2 ) byref -> r3 single-def "impAppendStmt"
+; V03 tmp2 [V03,T02] ( 2, 2 ) int -> r2 "Inlining Arg"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M8978_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr}
- mov r11, sp
- ;; size=6 bbWeight=1 PerfScore 2.00
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
G_M8978_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
- ldrb r1, [r0+0x11]
+ ldrb r3, [r0+0x11]
+ cmp r3, 0
+ bne SHORT G_M8978_IG05
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M8978_IG03: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
+ movs r3, 1
+ strb r3, [r0+0x11]
+ add r3, r0, 148
+ ; byrRegs +[r3]
+ ldr r2, [r0+0x04]
+ ; gcrRegs +[r2]
+ ldr r2, [r2+0x04]
+ ; gcrRegs -[r2]
+ lsls r2, r2, 1
+ ;; size=14 bbWeight=0.50 PerfScore 3.00
+G_M8978_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ; gcrRegs -[r0]
+ ldrex r0, [r3]
+ adds r0, r0, r2
+ strex r1, r0, [r3]
cmp r1, 0
bne SHORT G_M8978_IG04
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M8978_IG03: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- movs r1, 1
- strb r1, [r0+0x11]
- add r1, r0, 148
- ; byrRegs +[r1]
- ldr r0, [r0+0x04]
- ldr r0, [r0+0x04]
- ; gcrRegs -[r0]
- lsls r3, r0, 1
- cmp r1, 0
- beq SHORT G_M8978_IG05
- mov r0, r1
- ; byrRegs +[r0]
- mov r1, r3
- ; byrRegs -[r1]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- ;; size=32 bbWeight=0.50 PerfScore 6.50
-G_M8978_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M8978_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ dmb 15
+ ;; size=18 bbWeight=0.50 PerfScore 3.00
+G_M8978_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; byrRegs -[r3]
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 62, prolog size 6, PerfScore 12.50, instruction count 24, allocated bytes for code 62 (MethodHash=ffdcdced) for method System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:EnsureFrozenForEnqueues():this (FullOpts)
+; Total bytes of code 42, prolog size 2, PerfScore 11.00, instruction count 17, allocated bytes for code 42 (MethodHash=ffdcdced) for method System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:EnsureFrozenForEnqueues():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 : 31 (0x0001f) Actual length = 62 (0x00003e)
- ---- Epilog scopes ----
- ---- Scope 0
- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
- Condition : 14 (0xe) (always)
- Epilog Start Index : 0 (0x00)
+ Function Length : 21 (0x00015) Actual length = 42 (0x00002a)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
-16 (-25.81%) : 2693.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:CloseDirectoryHandle():this (FullOpts)
@@ -2,77 +2,67 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]>
-; V01 loc0 [V01,T02] ( 3, 2.50) int -> r0
+; V01 loc0 [V01,T01] ( 3, 2.50) int -> r1
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 6 ) byref -> r0 single-def "Inlining Arg"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M12834_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_M12834_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M12834_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- ldrsb r1, [r0]
+ ldrsb r3, [r0]
adds r0, 44
; gcrRegs -[r0]
; byrRegs +[r0]
- cmp r0, 0
+ movs r3, 0
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M12834_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ strex r2, r3, [r0]
+ cmp r2, 0
+ bne SHORT G_M12834_IG03
+ dmb 15
+ cmp r1, 0
beq SHORT G_M12834_IG05
- movs r1, 0
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M12834_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r0]
- cmp r0, 0
- beq SHORT G_M12834_IG04
- ;; size=26 bbWeight=1 PerfScore 10.00
-G_M12834_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r0, r1
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // Interop+Sys:CloseDir(int):int
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M12834_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M12834_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ; gcr arg pop 0
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M12834_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 62, prolog size 6, PerfScore 15.00, instruction count 22, allocated bytes for code 62 (MethodHash=7d34cddd) for method System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:CloseDirectoryHandle():this (FullOpts)
+; Total bytes of code 46, prolog size 2, PerfScore 14.50, instruction count 17, allocated bytes for code 46 (MethodHash=7d34cddd) for method System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:CloseDirectoryHandle():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 : 31 (0x0001f) Actual length = 62 (0x00003e)
- ---- Epilog scopes ----
- ---- Scope 0
- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
- Condition : 14 (0xe) (always)
- Epilog Start Index : 0 (0x00)
+ Function Length : 23 (0x00017) Actual length = 46 (0x00002e)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
+4 (+7.14%) : 16447.dasm - SixLabors.ImageSharp.Diagnostics.MemoryDiagnostics:DecrementTotalUndisposedAllocationCount() (FullOpts)
@@ -2,67 +2,73 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; fully interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V01 tmp1 [V01,T00] ( 4, 6 ) ref -> r3 class-hnd exact single-def "dup spill" <<unknown class>>
;* V02 tmp2 [V02 ] ( 0, 0 ) ref -> zero-ref single-def
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M9260_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r11,lr}
- mov r11, sp
- ;; size=6 bbWeight=1 PerfScore 2.00
-G_M9260_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M9260_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
- mov r1, -1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; gcr arg pop 0
+ mov r3, -1
+ ;; size=12 bbWeight=1 PerfScore 3.00
+G_M9260_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ; byrRegs +[r0]
+ ldrex r1, [r0]
+ adds r1, r1, r3
+ strex r2, r1, [r0]
+ cmp r2, 0
+ bne SHORT G_M9260_IG03
+ dmb 15
movw r0, 0xd1ff
+ ; byrRegs -[r0]
movt r0, 0xd1ff
ldr r3, [r0]
; gcrRegs +[r3]
cmp r3, 0
- bne SHORT G_M9260_IG04
- ;; size=36 bbWeight=1 PerfScore 11.00
-G_M9260_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ bne SHORT G_M9260_IG05
+ ;; size=32 bbWeight=1 PerfScore 11.00
+G_M9260_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r3]
- pop {r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M9260_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, gcvars, byref
+ pop {r3,pc}
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M9260_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r3]
ldr r0, [r3+0x04]
; gcrRegs +[r0]
ldr r3, [r3+0x0C]
; gcrRegs -[r3]
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M9260_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r11,lr}
+G_M9260_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ add sp, 4
+ pop lr
bx r3 // <unknown method>
; gcr arg pop 0
- ;; size=6 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 56, prolog size 6, PerfScore 15.50, instruction count 18, allocated bytes for code 56 (MethodHash=53dedbd3) for method SixLabors.ImageSharp.Diagnostics.MemoryDiagnostics:DecrementTotalUndisposedAllocationCount() (FullOpts)
+; Total bytes of code 60, prolog size 2, PerfScore 18.00, instruction count 21, allocated bytes for code 60 (MethodHash=53dedbd3) for method SixLabors.ImageSharp.Diagnostics.MemoryDiagnostics:DecrementTotalUndisposedAllocationCount() (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2
F bit : 0
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 56 (0x000038)
+ Function Length : 30 (0x0001e) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -71,10 +77,14 @@ Unwind Info:
---- 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)
+ Epilog Start Index : 3 (0x03)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
+ FF end
+ ---- Epilog start at index 3 ----
+ 01 add sp, sp, #4 ; opsize 16
+ A0 00 pop {lr} ; opsize 32
FF end
FF end
+4 (+7.41%) : 16436.dasm - SixLabors.ImageSharp.Diagnostics.MemoryDiagnostics:IncrementTotalUndisposedAllocationCount() (FullOpts)
@@ -2,67 +2,73 @@
; Emitting BLENDED_CODE for generic ARM - Unix
; FullOpts code
; optimized code
-; r11 based frame
+; sp based frame
; fully interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V01 tmp1 [V01,T00] ( 4, 6 ) ref -> r3 class-hnd exact single-def "dup spill" <<unknown class>>
;* V02 tmp2 [V02 ] ( 0, 0 ) ref -> zero-ref single-def
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M39626_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r11,lr}
- mov r11, sp
- ;; size=6 bbWeight=1 PerfScore 2.00
-G_M39626_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M39626_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
- movs r1, 1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; gcr arg pop 0
+ movs r3, 1
+ ;; size=10 bbWeight=1 PerfScore 3.00
+G_M39626_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ; byrRegs +[r0]
+ ldrex r1, [r0]
+ adds r1, r1, r3
+ strex r2, r1, [r0]
+ cmp r2, 0
+ bne SHORT G_M39626_IG03
+ dmb 15
movw r0, 0xd1ff
+ ; byrRegs -[r0]
movt r0, 0xd1ff
ldr r3, [r0]
; gcrRegs +[r3]
cmp r3, 0
- bne SHORT G_M39626_IG04
- ;; size=34 bbWeight=1 PerfScore 11.00
-G_M39626_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ bne SHORT G_M39626_IG05
+ ;; size=32 bbWeight=1 PerfScore 11.00
+G_M39626_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r3]
- pop {r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M39626_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, gcvars, byref
+ pop {r3,pc}
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M39626_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r3]
ldr r0, [r3+0x04]
; gcrRegs +[r0]
ldr r3, [r3+0x0C]
; gcrRegs -[r3]
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M39626_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r11,lr}
+G_M39626_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ add sp, 4
+ pop lr
bx r3 // <unknown method>
; gcr arg pop 0
- ;; size=6 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 54, prolog size 6, PerfScore 15.50, instruction count 18, allocated bytes for code 54 (MethodHash=58786535) for method SixLabors.ImageSharp.Diagnostics.MemoryDiagnostics:IncrementTotalUndisposedAllocationCount() (FullOpts)
+; Total bytes of code 58, prolog size 2, PerfScore 18.00, instruction count 21, allocated bytes for code 58 (MethodHash=58786535) for method SixLabors.ImageSharp.Diagnostics.MemoryDiagnostics:IncrementTotalUndisposedAllocationCount() (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2
F bit : 0
E bit : 0
X bit : 0
Vers : 0
- Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
+ Function Length : 29 (0x0001d) Actual length = 58 (0x00003a)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -71,10 +77,14 @@ Unwind Info:
---- 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)
+ Epilog Start Index : 3 (0x03)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
+ FF end
+ ---- Epilog start at index 3 ----
+ 01 add sp, sp, #4 ; opsize 16
+ A0 00 pop {lr} ; opsize 32
FF end
FF end
+6 (+14.29%) : 20800.dasm - System.Collections.Immutable.SecureObjectPool:NewId():int (FullOpts)
@@ -5,43 +5,47 @@
; r11 based frame
; fully interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 3, 17 ) int -> r0
+; V00 loc0 [V00,T00] ( 3, 17 ) int -> r3
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 cse0 [V02,T01] ( 2, 9 ) byref -> r4 hoist "CSE - aggressive"
+; V02 cse0 [V02,T01] ( 2, 9 ) byref -> r0 hoist "CSE - aggressive"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M34283_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr}
- add r11, sp, 8
- ;; size=8 bbWeight=1 PerfScore 2.00
+ push {r11,lr}
+ mov r11, sp
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M34283_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movw r4, 0xd1ff
- movt r4, 0xd1ff
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
;; size=8 bbWeight=1 PerfScore 2.00
-G_M34283_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
- ; byrRegs +[r4]
- mov r0, r4
+G_M34283_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- movs r1, 1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- ; gcr arg pop 0
- adds r0, r0, 1
- cmp r0, -1
+ movs r3, 1
+ ;; size=2 bbWeight=8 PerfScore 8.00
+G_M34283_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ adds r1, r1, r3
+ strex r2, r1, [r0]
+ cmp r2, 0
+ bne SHORT G_M34283_IG04
+ dmb 15
+ adds r3, r1, 1
+ cmp r3, -1
beq SHORT G_M34283_IG03
- ;; size=22 bbWeight=8 PerfScore 64.00
-G_M34283_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[r4]
- pop {r3,r4,r11,pc}
+ ;; size=26 bbWeight=8 PerfScore 72.00
+G_M34283_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r0]
+ mov r0, r3
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M34283_IG06: ; bbWeight=1, epilog, nogc, extend
+ pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 42, prolog size 8, PerfScore 69.00, instruction count 13, allocated bytes for code 42 (MethodHash=0ac07a14) for method System.Collections.Immutable.SecureObjectPool:NewId():int (FullOpts)
+; Total bytes of code 48, prolog size 6, PerfScore 86.00, instruction count 16, allocated bytes for code 48 (MethodHash=0ac07a14) for method System.Collections.Immutable.SecureObjectPool:NewId():int (FullOpts)
; ============================================================
Unwind Info:
@@ -53,11 +57,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 21 (0x00015) Actual length = 42 (0x00002a)
+ Function Length : 24 (0x00018) Actual length = 48 (0x000030)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.linux.arm.checked.mch |
317 |
174 |
67 |
76 |
-1,956 |
+612 |
benchmarks.run_pgo.linux.arm.checked.mch |
1,948 |
1,544 |
353 |
51 |
-21,428 |
+3,070 |
benchmarks.run_tiered.linux.arm.checked.mch |
350 |
183 |
113 |
54 |
-2,066 |
+760 |
coreclr_tests.run.linux.arm.checked.mch |
2,572 |
1,684 |
868 |
20 |
-19,146 |
+8,420 |
libraries.crossgen2.linux.arm.checked.mch |
378 |
145 |
217 |
16 |
-1,702 |
+1,680 |
libraries.pmi.linux.arm.checked.mch |
1,540 |
1,035 |
445 |
60 |
-11,888 |
+4,674 |
libraries_tests.run.linux.arm.Release.mch |
8,274 |
5,773 |
2,367 |
134 |
-86,822 |
+34,470 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch |
6,728 |
3,605 |
3,086 |
37 |
-42,896 |
+13,516 |
realworld.run.linux.arm.checked.mch |
260 |
170 |
79 |
11 |
-2,120 |
+648 |
|
22,367 |
14,313 |
7,595 |
459 |
-190,024 |
+67,850 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.linux.arm.checked.mch |
45,927 |
5,344 |
40,583 |
1,203 (2.55%) |
1,240 (2.63%) |
benchmarks.run_pgo.linux.arm.checked.mch |
159,302 |
56,729 |
102,573 |
3,201 (1.97%) |
3,412 (2.10%) |
benchmarks.run_tiered.linux.arm.checked.mch |
80,061 |
43,607 |
36,454 |
1,086 (1.34%) |
1,124 (1.38%) |
coreclr_tests.run.linux.arm.checked.mch |
471,832 |
259,195 |
212,637 |
7,171 (1.50%) |
7,331 (1.53%) |
libraries.crossgen2.linux.arm.checked.mch |
188,188 |
14 |
188,174 |
0 (0.00%) |
3 (0.00%) |
libraries.pmi.linux.arm.checked.mch |
272,229 |
6 |
272,223 |
7,786 (2.78%) |
7,917 (2.83%) |
libraries_tests.run.linux.arm.Release.mch |
709,943 |
442,672 |
267,271 |
16,195 (2.23%) |
16,483 (2.27%) |
librariestestsnotieredcompilation.run.linux.arm.Release.mch |
274,235 |
21,604 |
252,631 |
33,224 (10.79%) |
33,622 (10.92%) |
realworld.run.linux.arm.checked.mch |
36,388 |
157 |
36,231 |
1,408 (3.72%) |
1,427 (3.77%) |
|
2,238,105 |
829,328 |
1,408,777 |
71,274 (3.08%) |
72,559 (3.14%) |
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: 15250208 (overridden on cmd)
Total bytes of diff: 15248864 (overridden on cmd)
Total bytes of delta: -1344 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
42 : 34405.dasm (3.29 % of base)
24 : 9121.dasm (12.00 % of base)
24 : 27874.dasm (12.63 % of base)
24 : 29059.dasm (12.77 % of base)
18 : 11811.dasm (2.59 % of base)
16 : 4609.dasm (1.44 % of base)
16 : 5745.dasm (1.88 % of base)
16 : 28910.dasm (1.63 % of base)
14 : 6783.dasm (2.80 % of base)
14 : 2128.dasm (15.22 % of base)
12 : 13832.dasm (2.00 % of base)
12 : 7977.dasm (2.96 % of base)
12 : 9279.dasm (0.57 % of base)
12 : 25443.dasm (0.47 % of base)
12 : 4001.dasm (0.91 % of base)
10 : 6784.dasm (2.94 % of base)
10 : 6831.dasm (2.98 % of base)
10 : 7354.dasm (3.36 % of base)
10 : 7394.dasm (3.21 % of base)
10 : 9285.dasm (3.21 % of base)
Top file improvements (bytes):
-36 : 25808.dasm (-6.27 % of base)
-32 : 7313.dasm (-2.62 % of base)
-32 : 25760.dasm (-1.37 % of base)
-30 : 7699.dasm (-1.50 % of base)
-30 : 25805.dasm (-9.15 % of base)
-30 : 25968.dasm (-0.48 % of base)
-30 : 28146.dasm (-1.47 % of base)
-28 : 17978.dasm (-1.96 % of base)
-28 : 5746.dasm (-5.58 % of base)
-26 : 5810.dasm (-27.08 % of base)
-26 : 7093.dasm (-1.86 % of base)
-24 : 684.dasm (-2.23 % of base)
-22 : 7189.dasm (-4.23 % of base)
-22 : 25774.dasm (-1.41 % of base)
-22 : 29081.dasm (-5.56 % of base)
-20 : 17994.dasm (-25.64 % of base)
-20 : 4607.dasm (-0.87 % of base)
-20 : 16888.dasm (-32.26 % of base)
-20 : 20559.dasm (-32.26 % of base)
-20 : 2883.dasm (-1.78 % of base)
72 total files with Code Size differences (39 improved, 33 regressed), 20 unchanged.
Top method regressions (bytes):
42 (3.29 % of base) : 34405.dasm - BenchmarksGame.FannkuchRedux_9:Run(int,int) (FullOpts)
24 (12.00 % of base) : 9121.dasm - System.Threading.LowLevelSpinWaiter:SpinWaitForCondition(System.Func`2[System.Object,ubyte],System.Object,int,int):ubyte:this (FullOpts)
24 (12.63 % of base) : 27874.dasm - System.Threading.Tests.Perf_SpinLock:EnterExit():ubyte:this (FullOpts)
24 (12.77 % of base) : 29059.dasm - System.Threading.Tests.Perf_SpinLock:TryEnterExit():ubyte:this (FullOpts)
18 (2.59 % of base) : 11811.dasm - System.Threading.Tasks.Task:InternalRunSynchronously(System.Threading.Tasks.TaskScheduler,ubyte):this (FullOpts)
16 (1.63 % of base) : 28910.dasm - System.Diagnostics.Process:ForkAndExecProcess(System.Diagnostics.ProcessStartInfo,System.String,System.String[],System.String[],System.String,ubyte,uint,uint,uint[],byref,byref,byref,ubyte,ubyte):ubyte:this (FullOpts)
16 (1.88 % of base) : 5745.dasm - System.Threading.SemaphoreSlim:Release(int):int:this (FullOpts)
16 (1.44 % of base) : 4609.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (FullOpts)
14 (15.22 % of base) : 2128.dasm - System.ConsolePal:CheckTerminalSettingsInvalidated() (FullOpts)
14 (2.80 % of base) : 6783.dasm - System.Net.Sockets.SocketAsyncEventArgs:SetBuffer(ubyte[],int,int):this (FullOpts)
12 (0.47 % of base) : 25443.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
12 (0.91 % of base) : 4001.dasm - System.Threading.Barrier:SignalAndWait(int,System.Threading.CancellationToken):ubyte:this (FullOpts)
12 (2.00 % of base) : 13832.dasm - System.Threading.SpinLock:ContinueTryEnter(int,byref):this (FullOpts)
12 (2.96 % of base) : 7977.dasm - System.Threading.Tasks.Task:TrySetException(System.Object):ubyte:this (FullOpts)
12 (0.57 % of base) : 9279.dasm - System.Threading.Tasks.Task+WhenAllPromise:Invoke(System.Threading.Tasks.Task):this (FullOpts)
10 (10.00 % of base) : 20306.dasm - System.Diagnostics.Tracing.NameInfo:ReserveEventIDsBelow(int) (FullOpts)
10 (2.94 % of base) : 6784.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:AcceptAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Sockets.Socket]:this (FullOpts)
10 (2.40 % of base) : 7092.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ConnectAsync(System.Net.Sockets.Socket):System.Threading.Tasks.ValueTask:this (FullOpts)
10 (3.21 % of base) : 7394.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ReceiveAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
10 (3.21 % of base) : 42562.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ReceiveFromSocketAddressAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
Top method improvements (bytes):
-36 (-6.27 % of base) : 25808.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureNullableAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (FullOpts)
-32 (-1.37 % of base) : 25760.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AfterMembersChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-32 (-2.62 % of base) : 7313.dasm - System.Security.Cryptography.X509Certificates.OpenSslCachedSystemStoreProvider:<LoadMachineStores>g__ProcessFile|26_1(System.String,byref,byref):ubyte (FullOpts)
-30 (-0.48 % of base) : 25968.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (FullOpts)
-30 (-9.15 % of base) : 25805.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureScopedRefAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (FullOpts)
-30 (-1.50 % of base) : 7699.dasm - System.Net.Http.HttpConnectionPool:ReturnHttp11Connection(System.Net.Http.HttpConnection,ubyte,System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.Net.Http.HttpConnection]):this (FullOpts)
-30 (-1.47 % of base) : 28146.dasm - System.Threading.ReaderWriterLockSlim:TryEnterWriteLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (FullOpts)
-28 (-1.96 % of base) : 17978.dasm - System.Net.WebSockets.ManagedWebSocket:SendFrameLockAcquiredNonCancelableAsync(ubyte,ubyte,ubyte,System.ReadOnlyMemory`1[ubyte]):System.Threading.Tasks.ValueTask:this (FullOpts)
-28 (-5.58 % of base) : 5746.dasm - System.Threading.ThreadPoolWorkQueue+WorkStealingQueue:LocalPopCore():System.Object:this (FullOpts)
-26 (-1.86 % of base) : 7093.dasm - System.Net.Sockets.Socket:ConnectAsync(System.Net.Sockets.SocketAsyncEventArgs,ubyte,ubyte):ubyte:this (FullOpts)
-26 (-27.08 % of base) : 5810.dasm - System.Threading.Channels.AsyncOperation`1[int]:TryOwnAndReset():ubyte:this (FullOpts)
-24 (-2.23 % of base) : 684.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (FullOpts)
-22 (-1.41 % of base) : 25774.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodOrUserDefinedOperatorSymbol:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-22 (-5.56 % of base) : 29081.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[int]:TrySteal(byref,ubyte):ubyte:this (FullOpts)
-22 (-4.23 % of base) : 7189.dasm - System.Threading.CancellationTokenSource+Registrations:Unregister(long,System.Threading.CancellationTokenSource+CallbackNode):ubyte:this (FullOpts)
-20 (-1.78 % of base) : 2883.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Trim():ubyte:this (FullOpts)
-20 (-32.26 % of base) : 16888.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[int]:EnsureFrozenForEnqueues():this (FullOpts)
-20 (-32.26 % of base) : 20559.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:EnsureFrozenForEnqueues():this (FullOpts)
-20 (-25.64 % of base) : 17994.dasm - System.Threading.AsyncMutex:Exit():this (FullOpts)
-20 (-0.87 % of base) : 4607.dasm - System.Threading.PortableThreadPool+GateThread:GateThreadStart() (FullOpts)
Top method regressions (percentages):
14 (15.22 % of base) : 2128.dasm - System.ConsolePal:CheckTerminalSettingsInvalidated() (FullOpts)
6 (14.29 % of base) : 9496.dasm - System.Collections.Immutable.SecureObjectPool:NewId():int (FullOpts)
24 (12.77 % of base) : 29059.dasm - System.Threading.Tests.Perf_SpinLock:TryEnterExit():ubyte:this (FullOpts)
24 (12.63 % of base) : 27874.dasm - System.Threading.Tests.Perf_SpinLock:EnterExit():ubyte:this (FullOpts)
8 (12.12 % of base) : 10454.dasm - Jil.Deserialize.NameAutomata`1+Helper[int]:GetNextName():System.String (FullOpts)
24 (12.00 % of base) : 9121.dasm - System.Threading.LowLevelSpinWaiter:SpinWaitForCondition(System.Func`2[System.Object,ubyte],System.Object,int,int):ubyte:this (FullOpts)
10 (10.00 % of base) : 20306.dasm - System.Diagnostics.Tracing.NameInfo:ReserveEventIDsBelow(int) (FullOpts)
6 (7.14 % of base) : 1354.dasm - System.Runtime.InteropServices.GCHandle:Free():this (FullOpts)
10 (6.67 % of base) : 5742.dasm - System.Threading.SpinLock:ExitSlowPath(ubyte):this (FullOpts)
10 (6.17 % of base) : 7165.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ReleaseForAsyncCompletion():this (FullOpts)
8 (5.19 % of base) : 24750.dasm - Roslyn.Utilities.StringTable:AddSharedSlow(int,System.String) (FullOpts)
8 (4.65 % of base) : 6806.dasm - System.Net.Sockets.SocketAsyncEngine:TryRegisterSocket(int,System.Net.Sockets.SocketAsyncContext,byref,byref):ubyte (FullOpts)
2 (3.85 % of base) : 24886.dasm - Roslyn.Utilities.ThreadSafeFlagOperations:Set(byref,int):ubyte (FullOpts)
10 (3.36 % of base) : 7354.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:SendAsyncForNetworkStream(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (FullOpts)
42 (3.29 % of base) : 34405.dasm - BenchmarksGame.FannkuchRedux_9:Run(int,int) (FullOpts)
10 (3.21 % of base) : 7394.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ReceiveAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
10 (3.21 % of base) : 42562.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ReceiveFromSocketAddressAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
10 (3.21 % of base) : 9285.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:SendAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
10 (3.21 % of base) : 42352.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:SendToAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
4 (3.03 % of base) : 3976.dasm - System.Threading.Tasks.TaskScheduler:get_Id():int:this (FullOpts)
Top method improvements (percentages):
-16 (-34.78 % of base) : 44877.dasm - System.Threading.Tests.Perf_Interlocked:Exchange_int():int:this (FullOpts)
-16 (-33.33 % of base) : 40843.dasm - System.Threading.Tests.Perf_Interlocked:Add_int():int:this (FullOpts)
-16 (-33.33 % of base) : 2985.dasm - System.Threading.Tests.Perf_Interlocked:Increment_int():int:this (FullOpts)
-20 (-32.26 % of base) : 16888.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[int]:EnsureFrozenForEnqueues():this (FullOpts)
-20 (-32.26 % of base) : 20559.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:EnsureFrozenForEnqueues():this (FullOpts)
-16 (-32.00 % of base) : 13581.dasm - System.Threading.Tests.Perf_Interlocked:Decrement_int():int:this (FullOpts)
-26 (-27.08 % of base) : 5810.dasm - System.Threading.Channels.AsyncOperation`1[int]:TryOwnAndReset():ubyte:this (FullOpts)
-16 (-25.81 % of base) : 7483.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:CloseDirectoryHandle():this (FullOpts)
-20 (-25.64 % of base) : 17994.dasm - System.Threading.AsyncMutex:Exit():this (FullOpts)
-10 (-20.83 % of base) : 46342.dasm - System.Threading.Tests.Perf_Interlocked:CompareExchange_int():int:this (FullOpts)
-16 (-20.00 % of base) : 7183.dasm - System.Net.Sockets.SocketAsyncEventArgs:Dispose():this (FullOpts)
-12 (-18.18 % of base) : 5817.dasm - System.Threading.Channels.AsyncOperation`1[int]:TryReserveCompletionIfCancelable():ubyte:this (FullOpts)
-12 (-15.79 % of base) : 25104.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENestedNamespaceSymbol:EnsureAllMembersLoaded():this (FullOpts)
-12 (-15.00 % of base) : 4600.dasm - System.Threading.PortableThreadPool+WorkerThread:TakeActiveRequest(System.Threading.PortableThreadPool):ubyte (FullOpts)
-14 (-14.29 % of base) : 27104.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol:IsMetadataVirtual(ubyte):ubyte:this (FullOpts)
-14 (-13.73 % of base) : 34730.dasm - System.Threading.Tests.Perf_ThreadPool+<>c__DisplayClass1_0:<QueueUserWorkItem_WaitCallback_Throughput>b__0(System.Object):this (FullOpts)
-18 (-12.16 % of base) : 4015.dasm - System.Threading.ManualResetEventSlim:Reset():this (FullOpts)
-12 (-11.76 % of base) : 5655.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
-14 (-11.29 % of base) : 30688.dasm - System.Threading.Tests.Perf_SpinLock:TryEnter_Fail():ubyte:this (FullOpts)
-14 (-10.94 % of base) : 30686.dasm - System.Threading.Tests.Perf_SpinLock:AcquireAcquiredSpinLock():this (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: 63745630 (overridden on cmd)
Total bytes of diff: 63727272 (overridden on cmd)
Total bytes of delta: -18358 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
86 : 69236.dasm (7.13 % of base)
86 : 141537.dasm (7.13 % of base)
78 : 27291.dasm (0.74 % of base)
42 : 124562.dasm (3.29 % of base)
38 : 129950.dasm (3.14 % of base)
38 : 132081.dasm (3.14 % of base)
38 : 148277.dasm (3.14 % of base)
34 : 149659.dasm (0.66 % of base)
30 : 76636.dasm (5.86 % of base)
24 : 20166.dasm (11.54 % of base)
24 : 37424.dasm (7.55 % of base)
24 : 66639.dasm (1.53 % of base)
22 : 107033.dasm (4.01 % of base)
22 : 37425.dasm (5.88 % of base)
22 : 113602.dasm (4.01 % of base)
22 : 36977.dasm (5.91 % of base)
20 : 100663.dasm (0.25 % of base)
20 : 36975.dasm (3.42 % of base)
20 : 36976.dasm (4.31 % of base)
18 : 159181.dasm (0.89 % of base)
Top file improvements (bytes):
-98 : 133878.dasm (-8.77 % of base)
-98 : 160765.dasm (-8.77 % of base)
-98 : 56320.dasm (-8.77 % of base)
-98 : 58029.dasm (-8.77 % of base)
-98 : 72556.dasm (-8.77 % of base)
-98 : 85688.dasm (-8.77 % of base)
-98 : 127179.dasm (-8.77 % of base)
-98 : 162488.dasm (-8.77 % of base)
-98 : 129563.dasm (-8.77 % of base)
-98 : 132450.dasm (-8.77 % of base)
-98 : 13951.dasm (-8.77 % of base)
-98 : 31184.dasm (-8.77 % of base)
-98 : 64977.dasm (-8.77 % of base)
-98 : 68626.dasm (-8.77 % of base)
-96 : 116770.dasm (-8.99 % of base)
-96 : 44198.dasm (-8.99 % of base)
-96 : 118842.dasm (-8.99 % of base)
-96 : 124265.dasm (-8.99 % of base)
-96 : 120655.dasm (-8.99 % of base)
-96 : 108701.dasm (-8.99 % of base)
84 total files with Code Size differences (40 improved, 44 regressed), 20 unchanged.
Top method regressions (bytes):
86 (7.13 % of base) : 69236.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
86 (7.13 % of base) : 141537.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
78 (0.74 % of base) : 27291.dasm - System.Net.Http.HttpConnection+<SendAsync>d__57:MoveNext():this (Tier0-FullOpts)
42 (3.29 % of base) : 124562.dasm - BenchmarksGame.FannkuchRedux_9:Run(int,int) (Tier0-FullOpts)
38 (3.14 % of base) : 129950.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
38 (3.14 % of base) : 132081.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
38 (3.14 % of base) : 148277.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
34 (0.66 % of base) : 149659.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__48:MoveNext():this (Tier1)
30 (5.86 % of base) : 76636.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
24 (11.54 % of base) : 20166.dasm - System.Threading.LowLevelSpinWaiter:SpinWaitForCondition(System.Func`2[System.Object,ubyte],System.Object,int,int):ubyte:this (Tier0-FullOpts)
24 (1.53 % of base) : 66639.dasm - System.Threading.PortableThreadPool:AdjustMaxWorkersActive():this (Tier1)
24 (7.55 % of base) : 37424.dasm - System.Threading.ThreadPool:UnsafeQueueUserWorkItem(System.Threading.IThreadPoolWorkItem,ubyte):ubyte (Tier1)
22 (4.01 % of base) : 107033.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
22 (5.88 % of base) : 37425.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
22 (4.01 % of base) : 113602.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
22 (5.91 % of base) : 36977.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
20 (0.25 % of base) : 100663.dasm - Microsoft.CodeAnalysis.Compilation:Emit(System.IO.Stream,System.IO.Stream,System.IO.Stream,System.IO.Stream,System.IO.Stream,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.ResourceDescription],Microsoft.CodeAnalysis.Emit.EmitOptions,Microsoft.CodeAnalysis.IMethodSymbol,System.IO.Stream,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.EmbeddedText],Microsoft.CodeAnalysis.RebuildData,Microsoft.CodeAnalysis.CodeGen.CompilationTestData,System.Threading.CancellationToken):Microsoft.CodeAnalysis.Emit.EmitResult:this (Tier1)
20 (3.42 % of base) : 36975.dasm - System.Threading.Tasks.TaskScheduler:InternalQueueTask(System.Threading.Tasks.Task):this (Tier1)
20 (4.31 % of base) : 36976.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:QueueTask(System.Threading.Tasks.Task):this (Tier1)
18 (0.89 % of base) : 159181.dasm - System.Threading.Tasks.Task:ExecuteWithThreadLocal(byref,System.Threading.Thread):this (Tier1)
Top method improvements (bytes):
-98 (-8.77 % of base) : 133878.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-98 (-8.77 % of base) : 160765.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-98 (-8.77 % of base) : 56320.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-98 (-8.77 % of base) : 58029.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-98 (-8.77 % of base) : 72556.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-98 (-8.77 % of base) : 85688.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-98 (-8.77 % of base) : 127179.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-98 (-8.77 % of base) : 162488.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-98 (-8.77 % of base) : 129563.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-98 (-8.77 % of base) : 132450.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-98 (-8.77 % of base) : 13951.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-98 (-8.77 % of base) : 31184.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-98 (-8.77 % of base) : 64977.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-98 (-8.77 % of base) : 68626.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-96 (-8.99 % of base) : 116770.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-96 (-8.99 % of base) : 44198.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-96 (-8.99 % of base) : 118842.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-96 (-8.99 % of base) : 124265.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-96 (-8.99 % of base) : 120655.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-96 (-8.99 % of base) : 108701.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
Top method regressions (percentages):
10 (25.00 % of base) : 994.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Instrumented Tier0)
10 (25.00 % of base) : 241.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)
8 (21.05 % of base) : 111779.dasm - System.Threading.ReaderWriterLockSlim+SpinLock:TryEnter():ubyte:this (Tier1)
8 (19.05 % of base) : 10178.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetContention():int:this (Instrumented Tier0)
8 (19.05 % of base) : 10015.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetContention():int:this (Tier0)
8 (19.05 % of base) : 160170.dasm - System.Threading.Tests.Perf_Interlocked:CompareExchange_int():int:this (Tier0)
6 (16.67 % of base) : 8652.dasm - System.Threading.Interlocked:Add(byref,int):int (Instrumented Tier0)
6 (16.67 % of base) : 4833.dasm - System.Threading.Interlocked:Add(byref,int):int (Tier0)
8 (16.67 % of base) : 111591.dasm - System.Threading.ReaderWriterLockSlim+SpinLock:TryEnter():ubyte:this (Instrumented Tier0)
8 (16.67 % of base) : 60085.dasm - System.Threading.ReaderWriterLockSlim+SpinLock:TryEnter():ubyte:this (Tier0)
6 (14.29 % of base) : 28240.dasm - System.Collections.Immutable.SecureObjectPool:NewId():int (Tier0-FullOpts)
4 (12.50 % of base) : 17244.dasm - System.Threading.Interlocked:Exchange(byref,int):int (Instrumented Tier0)
4 (12.50 % of base) : 5023.dasm - System.Threading.Interlocked:Exchange(byref,int):int (Tier0)
8 (12.50 % of base) : 13897.dasm - System.Threading.SpinLock:CompareExchange(byref,int,int,byref):int (Instrumented Tier0)
8 (12.50 % of base) : 12265.dasm - System.Threading.SpinLock:CompareExchange(byref,int,int,byref):int (Tier0)
6 (11.54 % of base) : 134493.dasm - System.Net.Sockets.SafeSocketHandle:TryOwnClose():ubyte:this (Instrumented Tier0)
6 (11.54 % of base) : 16913.dasm - System.Net.Sockets.SafeSocketHandle:TryOwnClose():ubyte:this (Tier0)
24 (11.54 % of base) : 20166.dasm - System.Threading.LowLevelSpinWaiter:SpinWaitForCondition(System.Func`2[System.Object,ubyte],System.Object,int,int):ubyte:this (Tier0-FullOpts)
10 (10.00 % of base) : 71579.dasm - System.Diagnostics.Tracing.NameInfo:ReserveEventIDsBelow(int) (Tier0-FullOpts)
6 (10.00 % of base) : 12103.dasm - System.Threading.ThreadPoolWorkQueue:EnsureThreadRequested():this (Tier0)
Top method improvements (percentages):
-22 (-47.83 % of base) : 9765.dasm - System.Threading.Interlocked:Add(byref,int):int (Tier1)
-16 (-42.11 % of base) : 17291.dasm - System.Threading.Interlocked:Exchange(byref,int):int (Tier1)
-30 (-39.47 % of base) : 69232.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 141516.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 132082.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 27642.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 129951.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 148262.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-16 (-38.10 % of base) : 9764.dasm - System.Threading.Interlocked:Increment(byref):int (Tier1)
-16 (-36.36 % of base) : 13976.dasm - System.Threading.Interlocked:Decrement(byref):int (Tier1)
-20 (-31.25 % of base) : 98164.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:EnsureFrozenForEnqueues():this (Tier1)
-18 (-31.03 % of base) : 13937.dasm - System.Threading.SpinLock:CompareExchange(byref,int,int,byref):int (Tier1)
-26 (-27.08 % of base) : 32524.dasm - System.Threading.Channels.AsyncOperation`1[int]:TryOwnAndReset():ubyte:this (Tier1)
-26 (-27.08 % of base) : 129205.dasm - System.Threading.Channels.AsyncOperation`1[int]:TryOwnAndReset():ubyte:this (Tier1)
-26 (-27.08 % of base) : 118882.dasm - System.Threading.Channels.AsyncOperation`1[int]:TryOwnAndReset():ubyte:this (Tier1)
-26 (-26.53 % of base) : 161301.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryOwnAndReset():ubyte:this (Tier1)
-26 (-26.53 % of base) : 38777.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryOwnAndReset():ubyte:this (Tier1)
-26 (-26.53 % of base) : 160125.dasm - System.Threading.Channels.AsyncOperation`1[ubyte]:TryOwnAndReset():ubyte:this (Tier1)
-26 (-26.53 % of base) : 153001.dasm - System.Threading.Channels.AsyncOperation`1[ubyte]:TryOwnAndReset():ubyte:this (Tier1)
-26 (-26.53 % of base) : 38786.dasm - System.Threading.Channels.AsyncOperation`1[ubyte]:TryOwnAndReset():ubyte: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: 21504686 (overridden on cmd)
Total bytes of diff: 21503380 (overridden on cmd)
Total bytes of delta: -1306 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
42 : 64622.dasm (3.29 % of base)
24 : 10177.dasm (12.00 % of base)
18 : 54040.dasm (2.59 % of base)
16 : 22449.dasm (1.88 % of base)
16 : 8274.dasm (1.44 % of base)
14 : 58438.dasm (2.80 % of base)
12 : 49878.dasm (0.47 % of base)
12 : 50670.dasm (6.19 % of base)
12 : 10367.dasm (2.00 % of base)
12 : 8446.dasm (0.57 % of base)
12 : 15461.dasm (0.91 % of base)
10 : 13287.dasm (6.67 % of base)
10 : 41971.dasm (2.98 % of base)
10 : 69516.dasm (2.40 % of base)
10 : 71783.dasm (2.36 % of base)
10 : 71786.dasm (3.21 % of base)
10 : 20922.dasm (3.36 % of base)
10 : 20926.dasm (6.17 % of base)
10 : 230.dasm (25.00 % of base)
10 : 40624.dasm (10.00 % of base)
Top file improvements (bytes):
-54 : 1933.dasm (-21.26 % of base)
-50 : 20091.dasm (-23.81 % of base)
-36 : 50664.dasm (-6.27 % of base)
-32 : 50584.dasm (-1.37 % of base)
-32 : 20040.dasm (-2.62 % of base)
-30 : 20172.dasm (-39.47 % of base)
-30 : 20869.dasm (-1.48 % of base)
-30 : 50935.dasm (-0.48 % of base)
-30 : 50661.dasm (-9.15 % of base)
-30 : 61020.dasm (-1.47 % of base)
-28 : 12567.dasm (-5.58 % of base)
-26 : 10266.dasm (-26.53 % of base)
-26 : 69517.dasm (-1.86 % of base)
-24 : 1914.dasm (-2.23 % of base)
-24 : 8720.dasm (-8.39 % of base)
-22 : 21192.dasm (-4.23 % of base)
-22 : 50605.dasm (-1.41 % of base)
-22 : 62375.dasm (-5.56 % of base)
-22 : 7258.dasm (-47.83 % of base)
-20 : 52436.dasm (-32.26 % of base)
81 total files with Code Size differences (38 improved, 43 regressed), 20 unchanged.
Top method regressions (bytes):
42 (3.29 % of base) : 64622.dasm - BenchmarksGame.FannkuchRedux_9:Run(int,int) (Tier0-FullOpts)
24 (12.00 % of base) : 10177.dasm - System.Threading.LowLevelSpinWaiter:SpinWaitForCondition(System.Func`2[System.Object,ubyte],System.Object,int,int):ubyte:this (Tier0-FullOpts)
18 (2.59 % of base) : 54040.dasm - System.Threading.Tasks.Task:InternalRunSynchronously(System.Threading.Tasks.TaskScheduler,ubyte):this (Tier1)
16 (1.88 % of base) : 22449.dasm - System.Threading.SemaphoreSlim:Release(int):int:this (Tier0-FullOpts)
16 (1.44 % of base) : 8274.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier0-FullOpts)
14 (2.80 % of base) : 58438.dasm - System.Net.Sockets.SocketAsyncEventArgs:SetBuffer(ubyte[],int,int):this (Tier1)
12 (0.47 % of base) : 49878.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier0-FullOpts)
12 (6.19 % of base) : 50670.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:get_KnownCircularStruct():ubyte:this (Tier0)
12 (0.91 % of base) : 15461.dasm - System.Threading.Barrier:SignalAndWait(int,System.Threading.CancellationToken):ubyte:this (Tier0-FullOpts)
12 (2.00 % of base) : 10367.dasm - System.Threading.SpinLock:ContinueTryEnter(int,byref):this (Tier0-FullOpts)
12 (0.57 % of base) : 8446.dasm - System.Threading.Tasks.Task+WhenAllPromise:Invoke(System.Threading.Tasks.Task):this (Tier0-FullOpts)
10 (10.00 % of base) : 40624.dasm - System.Diagnostics.Tracing.NameInfo:ReserveEventIDsBelow(int) (Tier0-FullOpts)
10 (2.40 % of base) : 69516.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ConnectAsync(System.Net.Sockets.Socket):System.Threading.Tasks.ValueTask:this (Tier1)
10 (2.36 % of base) : 71783.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ReceiveFromAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Sockets.SocketReceiveFromResult]:this (Tier1)
10 (3.21 % of base) : 75302.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ReceiveFromSocketAddressAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
10 (6.17 % of base) : 20926.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ReleaseForAsyncCompletion():this (Tier1)
10 (3.36 % of base) : 20922.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:SendAsyncForNetworkStream(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
10 (3.21 % of base) : 71786.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:SendToAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
10 (25.00 % of base) : 230.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)
10 (6.67 % of base) : 13287.dasm - System.Threading.SpinLock:ExitSlowPath(ubyte):this (Tier1)
Top method improvements (bytes):
-54 (-21.26 % of base) : 1933.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Enumerator[System.__Canon,System.__Canon]:Dispose():this (Tier0)
-50 (-23.81 % of base) : 20091.dasm - System.IO.Enumeration.FileSystemEnumerable`1[System.__Canon]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier0)
-36 (-6.27 % of base) : 50664.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureNullableAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (Tier0-FullOpts)
-32 (-1.37 % of base) : 50584.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AfterMembersChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0-FullOpts)
-32 (-2.62 % of base) : 20040.dasm - System.Security.Cryptography.X509Certificates.OpenSslCachedSystemStoreProvider:<LoadMachineStores>g__ProcessFile|26_1(System.String,byref,byref):ubyte (Tier0-FullOpts)
-30 (-0.48 % of base) : 50935.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (Tier0-FullOpts)
-30 (-9.15 % of base) : 50661.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureScopedRefAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (Tier0-FullOpts)
-30 (-1.48 % of base) : 20869.dasm - System.Net.Http.HttpConnectionPool:ReturnHttp11Connection(System.Net.Http.HttpConnection,ubyte,System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.Net.Http.HttpConnection]):this (Tier0-FullOpts)
-30 (-39.47 % of base) : 20172.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-1.47 % of base) : 61020.dasm - System.Threading.ReaderWriterLockSlim:TryEnterWriteLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier0-FullOpts)
-28 (-5.58 % of base) : 12567.dasm - System.Threading.ThreadPoolWorkQueue+WorkStealingQueue:LocalPopCore():System.Object:this (Tier0-FullOpts)
-26 (-1.86 % of base) : 69517.dasm - System.Net.Sockets.Socket:ConnectAsync(System.Net.Sockets.SocketAsyncEventArgs,ubyte,ubyte):ubyte:this (Tier1)
-26 (-26.53 % of base) : 10266.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryOwnAndReset():ubyte:this (Tier1)
-24 (-2.23 % of base) : 1914.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (Tier0-FullOpts)
-24 (-8.39 % of base) : 8720.dasm - System.Net.Sockets.Socket:DisposeCachedTaskSocketAsyncEventArgs():this (Tier0)
-22 (-1.41 % of base) : 50605.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodOrUserDefinedOperatorSymbol:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0-FullOpts)
-22 (-5.56 % of base) : 62375.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[int]:TrySteal(byref,ubyte):ubyte:this (Tier0-FullOpts)
-22 (-4.23 % of base) : 21192.dasm - System.Threading.CancellationTokenSource+Registrations:Unregister(long,System.Threading.CancellationTokenSource+CallbackNode):ubyte:this (Tier1)
-22 (-47.83 % of base) : 7258.dasm - System.Threading.Interlocked:Add(byref,int):int (Tier1)
-20 (-32.26 % of base) : 52436.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:EnsureFrozenForEnqueues():this (Tier1)
Top method regressions (percentages):
10 (25.00 % of base) : 230.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)
8 (21.05 % of base) : 61364.dasm - System.Threading.ReaderWriterLockSlim+SpinLock:TryEnter():ubyte:this (Tier1)
8 (19.05 % of base) : 11304.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetContention():int:this (Tier0)
8 (19.05 % of base) : 78062.dasm - System.Threading.Tests.Perf_Interlocked:CompareExchange_int():int:this (Tier0)
6 (16.67 % of base) : 3512.dasm - System.Threading.Interlocked:Add(byref,int):int (Tier0)
8 (16.67 % of base) : 35445.dasm - System.Threading.ReaderWriterLockSlim+SpinLock:TryEnter():ubyte:this (Tier0)
6 (14.29 % of base) : 21663.dasm - System.Collections.Immutable.SecureObjectPool:NewId():int (Tier0-FullOpts)
4 (12.50 % of base) : 3818.dasm - System.Threading.Interlocked:Exchange(byref,int):int (Tier0)
8 (12.50 % of base) : 10116.dasm - System.Threading.SpinLock:CompareExchange(byref,int,int,byref):int (Tier0)
8 (12.12 % of base) : 25642.dasm - Jil.Deserialize.NameAutomata`1+Helper[int]:GetNextName():System.String (Tier1)
24 (12.00 % of base) : 10177.dasm - System.Threading.LowLevelSpinWaiter:SpinWaitForCondition(System.Func`2[System.Object,ubyte],System.Object,int,int):ubyte:this (Tier0-FullOpts)
6 (11.54 % of base) : 8688.dasm - System.Net.Sockets.SafeSocketHandle:TryOwnClose():ubyte:this (Tier0)
10 (10.00 % of base) : 40624.dasm - System.Diagnostics.Tracing.NameInfo:ReserveEventIDsBelow(int) (Tier0-FullOpts)
6 (10.00 % of base) : 8223.dasm - System.Threading.ThreadPoolWorkQueue:EnsureThreadRequested():this (Tier0)
6 (8.82 % of base) : 8087.dasm - System.Net.Sockets.SocketAsyncEventArgs:StartConfiguring():this (Tier0)
4 (8.70 % of base) : 52161.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsUnmanagedCallersOnlyAttributePopulated():this (Tier1)
8 (8.70 % of base) : 8840.dasm - System.ConsolePal:CheckTerminalSettingsInvalidated() (Tier0)
6 (8.33 % of base) : 8721.dasm - System.Net.Sockets.SocketAsyncEventArgs:Dispose():this (Tier0)
6 (8.11 % of base) : 8467.dasm - System.Threading.LowLevelLock:TryAcquire_NoFastPath(int):ubyte:this (Tier0)
4 (7.69 % of base) : 52955.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol+PackedFlags:SetIsVolatile(ubyte):this (Tier1)
Top method improvements (percentages):
-22 (-47.83 % of base) : 7258.dasm - System.Threading.Interlocked:Add(byref,int):int (Tier1)
-16 (-42.11 % of base) : 10686.dasm - System.Threading.Interlocked:Exchange(byref,int):int (Tier1)
-30 (-39.47 % of base) : 20172.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-16 (-38.10 % of base) : 7257.dasm - System.Threading.Interlocked:Increment(byref):int (Tier1)
-16 (-36.36 % of base) : 8584.dasm - System.Threading.Interlocked:Decrement(byref):int (Tier1)
-20 (-32.26 % of base) : 52436.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:EnsureFrozenForEnqueues():this (Tier1)
-18 (-31.03 % of base) : 10198.dasm - System.Threading.SpinLock:CompareExchange(byref,int,int,byref):int (Tier1)
-26 (-26.53 % of base) : 10266.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryOwnAndReset():ubyte:this (Tier1)
-10 (-26.32 % of base) : 959.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier1)
-20 (-26.32 % of base) : 10243.dasm - System.Threading.LowLevelLock:TryAcquire_NoFastPath(int):ubyte:this (Tier1)
-16 (-25.81 % of base) : 32596.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.ValueTuple`3[System.__Canon,System.__Canon,ubyte]]:CloseDirectoryHandle():this (Tier1)
-20 (-25.64 % of base) : 37324.dasm - System.Threading.AsyncMutex:Exit():this (Tier1)
-50 (-23.81 % of base) : 20091.dasm - System.IO.Enumeration.FileSystemEnumerable`1[System.__Canon]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier0)
-54 (-21.26 % of base) : 1933.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Enumerator[System.__Canon,System.__Canon]:Dispose():this (Tier0)
-10 (-20.83 % of base) : 11398.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetContention():int:this (Tier1)
-16 (-20.51 % of base) : 8643.dasm - System.Net.Sockets.SocketAsyncEventArgs:StartConfiguring():this (Tier1)
-16 (-20.00 % of base) : 8727.dasm - System.Net.Sockets.SocketAsyncEventArgs:Dispose():this (Tier1)
-12 (-18.18 % of base) : 10280.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryReserveCompletionIfCancelable():ubyte:this (Tier1)
-10 (-17.24 % of base) : 46515.dasm - System.Net.Sockets.SafeSocketHandle:TryOwnClose():ubyte:this (Tier1)
-12 (-15.79 % of base) : 49045.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENestedNamespaceSymbol:EnsureAllMembersLoaded():this (Tier1)
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: 321631208 (overridden on cmd)
Total bytes of diff: 321620482 (overridden on cmd)
Total bytes of delta: -10726 (-0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
276 : 399159.dasm (5.05 % of base)
196 : 159126.dasm (2.44 % of base)
138 : 310983.dasm (26.95 % of base)
134 : 306920.dasm (26.27 % of base)
60 : 2120.dasm (2.35 % of base)
52 : 276355.dasm (2.82 % of base)
52 : 117421.dasm (2.82 % of base)
52 : 157193.dasm (2.82 % of base)
52 : 2564.dasm (2.82 % of base)
46 : 294887.dasm (3.85 % of base)
42 : 151737.dasm (3.29 % of base)
42 : 382461.dasm (3.29 % of base)
32 : 328341.dasm (1.28 % of base)
30 : 210989.dasm (2.52 % of base)
30 : 110766.dasm (2.52 % of base)
30 : 194128.dasm (2.52 % of base)
30 : 121730.dasm (2.52 % of base)
30 : 70646.dasm (2.52 % of base)
30 : 181700.dasm (2.52 % of base)
24 : 313972.dasm (12.12 % of base)
Top file improvements (bytes):
-68 : 198917.dasm (-5.74 % of base)
-68 : 416072.dasm (-5.74 % of base)
-54 : 153666.dasm (-4.29 % of base)
-46 : 166541.dasm (-3.62 % of base)
-44 : 206611.dasm (-8.18 % of base)
-40 : 476700.dasm (-33.33 % of base)
-36 : 379268.dasm (-6.27 % of base)
-36 : 137940.dasm (-1.75 % of base)
-36 : 143744.dasm (-6.27 % of base)
-36 : 70689.dasm (-0.79 % of base)
-36 : 110816.dasm (-0.79 % of base)
-36 : 155703.dasm (-17.65 % of base)
-34 : 302239.dasm (-0.75 % of base)
-34 : 166464.dasm (-0.75 % of base)
-34 : 117530.dasm (-0.75 % of base)
-34 : 276612.dasm (-0.75 % of base)
-32 : 379217.dasm (-1.37 % of base)
-32 : 58905.dasm (-2.56 % of base)
-32 : 180069.dasm (-2.55 % of base)
-32 : 58910.dasm (-2.45 % of base)
97 total files with Code Size differences (41 improved, 56 regressed), 20 unchanged.
Top method regressions (bytes):
276 (5.05 % of base) : 399159.dasm - InterlockedTest.Program:TestEntryPoint():int (FullOpts)
196 (2.44 % of base) : 159126.dasm - InterlockedTest.Program:TestEntryPoint():int (Tier0)
138 (26.95 % of base) : 310983.dasm - System.Threading.ThreadInt64PersistentCounter:get_Count():long:this (Tier1)
134 (26.27 % of base) : 306920.dasm - System.Threading.ThreadInt64PersistentCounter:get_Count():long:this (Tier1)
60 (2.35 % of base) : 2120.dasm - System.Threading.ReaderWriterLockSlim:TryEnterWriteLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Instrumented Tier1)
52 (2.82 % of base) : 276355.dasm - System.Threading.ReaderWriterLockSlim:TryEnterWriteLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier1)
52 (2.82 % of base) : 117421.dasm - System.Threading.ReaderWriterLockSlim:TryEnterWriteLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier1)
52 (2.82 % of base) : 157193.dasm - System.Threading.ReaderWriterLockSlim:TryEnterWriteLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier1)
52 (2.82 % of base) : 2564.dasm - System.Threading.ReaderWriterLockSlim:TryEnterWriteLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier1)
46 (3.85 % of base) : 294887.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
42 (3.29 % of base) : 382461.dasm - BenchmarksGame.FannkuchRedux_9:Run(int,int) (FullOpts)
42 (3.29 % of base) : 151737.dasm - BenchmarksGame.FannkuchRedux_9:Run(int,int) (Tier0-FullOpts)
32 (1.28 % of base) : 328341.dasm - IntrinsicTest:MainTest():ubyte (FullOpts)
30 (2.52 % of base) : 210989.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
30 (2.52 % of base) : 110766.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
30 (2.52 % of base) : 194128.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
30 (2.52 % of base) : 121730.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
30 (2.52 % of base) : 70646.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
30 (2.52 % of base) : 181700.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
24 (12.12 % of base) : 313972.dasm - System.Threading.LowLevelSpinWaiter:SpinWaitForCondition(System.Func`2[System.Object,ubyte],System.Object,int,int):ubyte:this (Tier1)
Top method improvements (bytes):
-68 (-5.74 % of base) : 416072.dasm - DefaultNamespace.RootMem:Main():int (FullOpts)
-68 (-5.74 % of base) : 198917.dasm - DefaultNamespace.RootMem:Main():int (Tier0-FullOpts)
-54 (-4.29 % of base) : 153666.dasm - System.Threading.Tasks.Task:ScheduleAndStart(ubyte):this (Tier1)
-46 (-3.62 % of base) : 166541.dasm - System.Buffers.SharedArrayPool`1[int]:Trim():ubyte:this (Tier1)
-44 (-8.18 % of base) : 206611.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
-40 (-33.33 % of base) : 476700.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:CreateEvaluationBuildEventContext(int,int):Microsoft.Build.Framework.BuildEventContext:this (FullOpts)
-36 (-6.27 % of base) : 379268.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureNullableAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (FullOpts)
-36 (-6.27 % of base) : 143744.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureNullableAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (Tier0-FullOpts)
-36 (-1.75 % of base) : 137940.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Trim():ubyte:this (Instrumented Tier1)
-36 (-0.79 % of base) : 70689.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__48:MoveNext():this (Tier1)
-36 (-0.79 % of base) : 110816.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__48:MoveNext():this (Tier1)
-36 (-17.65 % of base) : 155703.dasm - System.Threading.ManualResetEventSlim:Reset():this (Instrumented Tier1)
-34 (-0.75 % of base) : 302239.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__48:MoveNext():this (Tier1)
-34 (-0.75 % of base) : 166464.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__48:MoveNext():this (Tier1)
-34 (-0.75 % of base) : 117530.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__48:MoveNext():this (Tier1)
-34 (-0.75 % of base) : 276612.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__48:MoveNext():this (Tier1)
-32 (-1.37 % of base) : 379217.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AfterMembersChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-32 (-2.45 % of base) : 58910.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Trim():ubyte:this (Tier1)
-32 (-2.56 % of base) : 58905.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (Tier1)
-32 (-2.55 % of base) : 180069.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (Tier1)
Top method regressions (percentages):
20 (125.00 % of base) : 399180.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_14():this (FullOpts)
20 (125.00 % of base) : 399181.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_15():this (FullOpts)
16 (100.00 % of base) : 399179.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_13():this (FullOpts)
16 (100.00 % of base) : 399182.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_16():this (FullOpts)
12 (75.00 % of base) : 474186.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (FullOpts)
10 (62.50 % of base) : 399176.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_10():this (FullOpts)
10 (62.50 % of base) : 399177.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_11():this (FullOpts)
8 (50.00 % of base) : 399178.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_12():this (FullOpts)
8 (50.00 % of base) : 399175.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_9():this (FullOpts)
6 (37.50 % of base) : 474302.dasm - System.Threading.Interlocked:Exchange(byref,int):int (FullOpts)
8 (33.33 % of base) : 313527.dasm - Gen`1[int]:Target() (Tier1)
8 (33.33 % of base) : 477981.dasm - Gen`1[System.__Canon]:Target() (FullOpts)
8 (33.33 % of base) : 313530.dasm - Gen`1[System.__Canon]:Target() (Tier1)
8 (33.33 % of base) : 477770.dasm - Gen`1[System.__Canon]:Target():this (FullOpts)
8 (33.33 % of base) : 477817.dasm - Gen`1[System.__Canon]:Target():this (FullOpts)
8 (33.33 % of base) : 313214.dasm - Gen`1[System.__Canon]:Target():this (Tier1)
8 (33.33 % of base) : 313321.dasm - Gen`1[System.__Canon]:Target():this (Tier1)
8 (33.33 % of base) : 313272.dasm - Gen`1[System.Guid]:Target():this (Tier1)
10 (31.25 % of base) : 159147.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_14():this (Tier0)
10 (31.25 % of base) : 159148.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_15():this (Tier0)
Top method improvements (percentages):
-22 (-47.83 % of base) : 1674.dasm - System.Threading.Interlocked:Add(byref,int):int (Instrumented Tier1)
-22 (-47.83 % of base) : 2429.dasm - System.Threading.Interlocked:Add(byref,int):int (Tier1)
-18 (-42.86 % of base) : 156763.dasm - System.Threading.Interlocked:Exchange(byref,byte):byte (Instrumented Tier1)
-16 (-42.11 % of base) : 198697.dasm - System.Threading.Interlocked:Exchange(byref,int):int (Instrumented Tier1)
-30 (-39.47 % of base) : 110747.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 31110.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 312855.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 121714.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 138457.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 173892.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 213427.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 1833.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 187082.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 201548.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 70587.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 155752.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 157008.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 171039.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 181670.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 279102.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
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: 34521638 (overridden on cmd)
Total bytes of diff: 34521616 (overridden on cmd)
Total bytes of delta: -22 (-0.00 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
42 : 153852.dasm (5.32 % of base)
40 : 185187.dasm (7.58 % of base)
40 : 185188.dasm (7.35 % of base)
40 : 154456.dasm (2.20 % of base)
40 : 185185.dasm (2.63 % of base)
40 : 154311.dasm (5.54 % of base)
40 : 154316.dasm (4.76 % of base)
28 : 101860.dasm (1.57 % of base)
26 : 116687.dasm (5.46 % of base)
22 : 145154.dasm (3.28 % of base)
20 : 154313.dasm (9.90 % of base)
20 : 154318.dasm (9.09 % of base)
20 : 154446.dasm (12.35 % of base)
20 : 154312.dasm (7.35 % of base)
20 : 154314.dasm (10.20 % of base)
20 : 154321.dasm (3.51 % of base)
20 : 154317.dasm (11.24 % of base)
20 : 154306.dasm (3.07 % of base)
20 : 154451.dasm (5.05 % of base)
20 : 154459.dasm (2.62 % of base)
Top file improvements (bytes):
-44 : 169647.dasm (-3.61 % of base)
-44 : 166994.dasm (-3.61 % of base)
-30 : 135698.dasm (-37.50 % of base)
-28 : 6118.dasm (-53.85 % of base)
-28 : 6094.dasm (-53.85 % of base)
-26 : 6106.dasm (-48.15 % of base)
-26 : 150670.dasm (-6.67 % of base)
-26 : 6102.dasm (-52.00 % of base)
-24 : 169439.dasm (-0.82 % of base)
-24 : 6104.dasm (-52.17 % of base)
-24 : 6098.dasm (-48.00 % of base)
-24 : 6100.dasm (-46.15 % of base)
-24 : 166783.dasm (-0.81 % of base)
-24 : 6080.dasm (-48.00 % of base)
-24 : 6103.dasm (-48.00 % of base)
-24 : 6082.dasm (-46.15 % of base)
-24 : 6108.dasm (-52.17 % of base)
-24 : 6109.dasm (-52.17 % of base)
-22 : 6674.dasm (-26.83 % of base)
-22 : 169441.dasm (-0.89 % of base)
72 total files with Code Size differences (32 improved, 40 regressed), 16 unchanged.
Top method regressions (bytes):
42 (5.32 % of base) : 153852.dasm - System.ComponentModel.Composition.MetadataViewGenerator:GetMetadataViewFactory(System.Type):System.ComponentModel.Composition.MetadataViewGenerator+MetadataViewFactory (FullOpts)
40 (5.54 % of base) : 154311.dasm - System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection:Clear():this (FullOpts)
40 (4.76 % of base) : 154316.dasm - System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection:Remove(System.ComponentModel.Composition.Primitives.ComposablePartCatalog):ubyte:this (FullOpts)
40 (2.20 % of base) : 154456.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:Refresh():this (FullOpts)
40 (2.63 % of base) : 185185.dasm - System.ComponentModel.Composition.Registration.RegistrationBuilder:GetCustomAttributes(System.Reflection.MemberInfo,System.Collections.Generic.IEnumerable`1[System.Object]):System.Collections.Generic.IEnumerable`1[System.Object]:this (FullOpts)
40 (7.58 % of base) : 185187.dasm - System.ComponentModel.Composition.Registration.RegistrationBuilder:ReadMemberCustomAttributes(System.Reflection.MemberInfo):System.Collections.Generic.List`1[System.Attribute]:this (FullOpts)
40 (7.35 % of base) : 185188.dasm - System.ComponentModel.Composition.Registration.RegistrationBuilder:ReadParameterCustomAttributes(System.Reflection.ParameterInfo):System.Collections.Generic.List`1[System.Attribute]:this (FullOpts)
28 (1.57 % of base) : 101860.dasm - System.Net.TimerThread:ThreadProc() (FullOpts)
26 (5.46 % of base) : 116687.dasm - Internal.TypeSystem.DefType:ComputeInstanceLayout(int):this (FullOpts)
22 (3.28 % of base) : 145154.dasm - System.Data.ProviderBase.DbConnectionPool:WaitForPendingOpen():this (FullOpts)
20 (3.07 % of base) : 154306.dasm - System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection:Add(System.ComponentModel.Composition.Primitives.ComposablePartCatalog):this (FullOpts)
20 (7.35 % of base) : 154312.dasm - System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection:Contains(System.ComponentModel.Composition.Primitives.ComposablePartCatalog):ubyte:this (FullOpts)
20 (9.90 % of base) : 154313.dasm - System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection:CopyTo(System.ComponentModel.Composition.Primitives.ComposablePartCatalog[],int):this (FullOpts)
20 (3.51 % of base) : 154321.dasm - System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection:Dispose(ubyte):this (FullOpts)
20 (10.20 % of base) : 154314.dasm - System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection:get_Count():int:this (FullOpts)
20 (11.24 % of base) : 154317.dasm - System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection:get_HasChanged():ubyte:this (FullOpts)
20 (9.09 % of base) : 154318.dasm - System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.ComponentModel.Composition.Primitives.ComposablePartCatalog]:this (FullOpts)
20 (2.62 % of base) : 154459.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:DiffChanges(System.String[],System.String[],byref,byref):this (FullOpts)
20 (5.05 % of base) : 154451.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:Dispose(ubyte):this (FullOpts)
20 (12.35 % of base) : 154446.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:get_LoadedFiles():System.Collections.ObjectModel.ReadOnlyCollection`1[System.String]:this (FullOpts)
Top method improvements (bytes):
-44 (-3.61 % of base) : 169647.dasm - System.Configuration.SectionInformation:SetRuntimeConfigurationInformation(System.Configuration.BaseConfigurationRecord,System.Configuration.FactoryRecord,System.Configuration.SectionRecord):this (FullOpts)
-44 (-3.61 % of base) : 166994.dasm - System.Configuration.SectionInformation:SetRuntimeConfigurationInformation(System.Configuration.BaseConfigurationRecord,System.Configuration.FactoryRecord,System.Configuration.SectionRecord):this (FullOpts)
-30 (-37.50 % of base) : 135698.dasm - Microsoft.CodeAnalysis.Shared.Collections.TemporaryArray`1[System.__Canon]:Dispose():this (FullOpts)
-28 (-53.85 % of base) : 6094.dasm - System.Threading.Interlocked:Add(byref,int):int (FullOpts)
-28 (-53.85 % of base) : 6118.dasm - System.Threading.Interlocked:Add(byref,uint):uint (FullOpts)
-26 (-6.67 % of base) : 150670.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:Dispose():this (FullOpts)
-26 (-52.00 % of base) : 6102.dasm - System.Threading.Interlocked:Exchange(byref,byte):byte (FullOpts)
-26 (-48.15 % of base) : 6106.dasm - System.Threading.Interlocked:Exchange(byref,float):float (FullOpts)
-24 (-0.82 % of base) : 169439.dasm - System.Configuration.MgmtConfigurationRecord:GetConfigDefinitionUpdates(ubyte,int,ubyte,byref,byref):this (FullOpts)
-24 (-0.81 % of base) : 166783.dasm - System.Configuration.MgmtConfigurationRecord:GetConfigDefinitionUpdates(ubyte,int,ubyte,byref,byref):this (FullOpts)
-24 (-46.15 % of base) : 6082.dasm - System.Threading.Interlocked:Decrement(byref):int (FullOpts)
-24 (-46.15 % of base) : 6100.dasm - System.Threading.Interlocked:Decrement(byref):uint (FullOpts)
-24 (-52.17 % of base) : 6108.dasm - System.Threading.Interlocked:Exchange(byref,int):int (FullOpts)
-24 (-52.17 % of base) : 6104.dasm - System.Threading.Interlocked:Exchange(byref,uint):uint (FullOpts)
-24 (-52.17 % of base) : 6109.dasm - System.Threading.Interlocked:Exchange(byref,uint):uint (FullOpts)
-24 (-48.00 % of base) : 6103.dasm - System.Threading.Interlocked:Exchange(byref,ushort):ushort (FullOpts)
-24 (-48.00 % of base) : 6080.dasm - System.Threading.Interlocked:Increment(byref):int (FullOpts)
-24 (-48.00 % of base) : 6098.dasm - System.Threading.Interlocked:Increment(byref):uint (FullOpts)
-22 (-0.89 % of base) : 169441.dasm - System.Configuration.MgmtConfigurationRecord:UpdateRecords():this (FullOpts)
-22 (-26.83 % of base) : 6674.dasm - System.Threading.Tasks.Task:get_Id():int:this (FullOpts)
Top method regressions (percentages):
10 (35.71 % of base) : 76266.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.EmbeddedSymbolManager:SealCollection():this (FullOpts)
10 (22.73 % of base) : 101653.dasm - System.Net.LazyAsyncResult:get_CompletedSynchronously():ubyte:this (FullOpts)
10 (22.73 % of base) : 100983.dasm - System.Net.LazyAsyncResult:get_CompletedSynchronously():ubyte:this (FullOpts)
10 (22.73 % of base) : 161101.dasm - System.Net.LazyAsyncResult:get_CompletedSynchronously():ubyte:this (FullOpts)
10 (20.00 % of base) : 178760.dasm - System.Net.Http.HttpConnection:TryOwnReadAheadTaskCompletion():ubyte:this (FullOpts)
10 (20.00 % of base) : 100984.dasm - System.Net.LazyAsyncResult:get_IsCompleted():ubyte:this (FullOpts)
10 (20.00 % of base) : 161102.dasm - System.Net.LazyAsyncResult:get_IsCompleted():ubyte:this (FullOpts)
10 (20.00 % of base) : 101654.dasm - System.Net.LazyAsyncResult:get_IsCompleted():ubyte:this (FullOpts)
8 (17.39 % of base) : 96844.dasm - Microsoft.CodeAnalysis.VisualBasic.WithBlockBinder+WithBlockInfo:RegisterAccessFromNestedLambda():this (FullOpts)
8 (12.90 % of base) : 154607.dasm - Microsoft.Internal.ReadLock:Dispose():this (FullOpts)
8 (12.90 % of base) : 154612.dasm - Microsoft.Internal.ReadWriteLock:Dispose():this (FullOpts)
8 (12.90 % of base) : 154615.dasm - Microsoft.Internal.WriteLock:Dispose():this (FullOpts)
8 (12.90 % of base) : 185132.dasm - System.Threading.ReadLock:Dispose():this (FullOpts)
8 (12.90 % of base) : 185137.dasm - System.Threading.ReadWriteLock:Dispose():this (FullOpts)
8 (12.90 % of base) : 185140.dasm - System.Threading.WriteLock:Dispose():this (FullOpts)
8 (12.50 % of base) : 154378.dasm - System.ComponentModel.Composition.Hosting.CompositionLock:Dispose():this (FullOpts)
20 (12.35 % of base) : 154446.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:get_LoadedFiles():System.Collections.ObjectModel.ReadOnlyCollection`1[System.String]:this (FullOpts)
20 (11.24 % of base) : 154317.dasm - System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection:get_HasChanged():ubyte:this (FullOpts)
20 (10.20 % of base) : 154314.dasm - System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection:get_Count():int:this (FullOpts)
10 (10.20 % of base) : 108110.dasm - System.Runtime.InteropServices.Marshalling.ComObject:FinalRelease():this (FullOpts)
Top method improvements (percentages):
-28 (-53.85 % of base) : 6094.dasm - System.Threading.Interlocked:Add(byref,int):int (FullOpts)
-28 (-53.85 % of base) : 6118.dasm - System.Threading.Interlocked:Add(byref,uint):uint (FullOpts)
-24 (-52.17 % of base) : 6108.dasm - System.Threading.Interlocked:Exchange(byref,int):int (FullOpts)
-24 (-52.17 % of base) : 6104.dasm - System.Threading.Interlocked:Exchange(byref,uint):uint (FullOpts)
-24 (-52.17 % of base) : 6109.dasm - System.Threading.Interlocked:Exchange(byref,uint):uint (FullOpts)
-26 (-52.00 % of base) : 6102.dasm - System.Threading.Interlocked:Exchange(byref,byte):byte (FullOpts)
-26 (-48.15 % of base) : 6106.dasm - System.Threading.Interlocked:Exchange(byref,float):float (FullOpts)
-24 (-48.00 % of base) : 6103.dasm - System.Threading.Interlocked:Exchange(byref,ushort):ushort (FullOpts)
-24 (-48.00 % of base) : 6080.dasm - System.Threading.Interlocked:Increment(byref):int (FullOpts)
-24 (-48.00 % of base) : 6098.dasm - System.Threading.Interlocked:Increment(byref):uint (FullOpts)
-24 (-46.15 % of base) : 6082.dasm - System.Threading.Interlocked:Decrement(byref):int (FullOpts)
-24 (-46.15 % of base) : 6100.dasm - System.Threading.Interlocked:Decrement(byref):uint (FullOpts)
-18 (-39.13 % of base) : 6116.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (FullOpts)
-18 (-39.13 % of base) : 6112.dasm - System.Threading.Interlocked:CompareExchange(byref,uint,uint):uint (FullOpts)
-18 (-39.13 % of base) : 6117.dasm - System.Threading.Interlocked:CompareExchange(byref,uint,uint):uint (FullOpts)
-30 (-37.50 % of base) : 135698.dasm - Microsoft.CodeAnalysis.Shared.Collections.TemporaryArray`1[System.__Canon]:Dispose():this (FullOpts)
-18 (-34.62 % of base) : 6110.dasm - System.Threading.Interlocked:CompareExchange(byref,byte,byte):byte (FullOpts)
-20 (-34.48 % of base) : 6114.dasm - System.Threading.Interlocked:CompareExchange(byref,float,float):float (FullOpts)
-14 (-26.92 % of base) : 6111.dasm - System.Threading.Interlocked:CompareExchange(byref,ushort,ushort):ushort (FullOpts)
-22 (-26.83 % of base) : 6674.dasm - System.Threading.Tasks.Task:get_Id():int:this (FullOpts)
libraries.pmi.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 49769404 (overridden on cmd)
Total bytes of diff: 49762190 (overridden on cmd)
Total bytes of delta: -7214 (-0.01 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
154 : 242347.dasm (12.75 % of base)
134 : 170172.dasm (40.85 % of base)
122 : 170289.dasm (32.28 % of base)
120 : 242351.dasm (10.02 % of base)
114 : 242349.dasm (8.61 % of base)
84 : 228835.dasm (3.40 % of base)
56 : 170153.dasm (6.22 % of base)
56 : 268714.dasm (11.72 % of base)
56 : 169660.dasm (6.03 % of base)
56 : 170148.dasm (7.61 % of base)
56 : 170294.dasm (2.78 % of base)
56 : 268712.dasm (4.02 % of base)
56 : 268715.dasm (11.52 % of base)
48 : 227545.dasm (20.00 % of base)
48 : 227546.dasm (20.00 % of base)
40 : 86963.dasm (3.23 % of base)
40 : 87007.dasm (3.23 % of base)
40 : 87232.dasm (3.82 % of base)
40 : 87235.dasm (2.92 % of base)
40 : 87439.dasm (2.14 % of base)
Top file improvements (bytes):
-74 : 209534.dasm (-1.78 % of base)
-74 : 245777.dasm (-1.60 % of base)
-62 : 264578.dasm (-2.20 % of base)
-62 : 176197.dasm (-2.20 % of base)
-40 : 151429.dasm (-33.33 % of base)
-40 : 249085.dasm (-2.45 % of base)
-38 : 194560.dasm (-3.94 % of base)
-38 : 194693.dasm (-2.57 % of base)
-38 : 21506.dasm (-3.61 % of base)
-38 : 85174.dasm (-4.01 % of base)
-34 : 245942.dasm (-1.50 % of base)
-34 : 77533.dasm (-5.54 % of base)
-34 : 249063.dasm (-1.24 % of base)
-32 : 209561.dasm (-0.67 % of base)
-32 : 249081.dasm (-1.41 % of base)
-32 : 228725.dasm (-2.62 % of base)
-32 : 77950.dasm (-1.28 % of base)
-30 : 53977.dasm (-0.47 % of base)
-30 : 223623.dasm (-1.88 % of base)
-30 : 77530.dasm (-9.15 % of base)
89 total files with Code Size differences (52 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
154 (12.75 % of base) : 242347.dasm - System.Net.Sockets.SocketPal:SysSend(System.Net.Sockets.SafeSocketHandle,int,System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
134 (40.85 % of base) : 170172.dasm - System.ComponentModel.Composition.Hosting.ComposablePartExportProvider:Dispose(ubyte):this (FullOpts)
122 (32.28 % of base) : 170289.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:Dispose(ubyte):this (FullOpts)
120 (10.02 % of base) : 242351.dasm - System.Net.Sockets.SocketPal:SysReceiveMessageFrom(System.Net.Sockets.SafeSocketHandle,int,System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],System.Span`1[ubyte],byref,ubyte,ubyte,byref,byref,byref):int (FullOpts)
114 (8.61 % of base) : 242349.dasm - System.Net.Sockets.SocketPal:SysReceive(System.Net.Sockets.SafeSocketHandle,int,System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],System.Span`1[ubyte],byref,byref,byref):int (FullOpts)
84 (3.40 % of base) : 228835.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509CertificateReader:CopyWithPrivateKey(System.Security.Cryptography.RSA):System.Security.Cryptography.X509Certificates.ICertificatePal:this (FullOpts)
56 (7.61 % of base) : 170148.dasm - System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection:Clear():this (FullOpts)
56 (6.22 % of base) : 170153.dasm - System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection:Remove(System.ComponentModel.Composition.Primitives.ComposablePartCatalog):ubyte:this (FullOpts)
56 (2.78 % of base) : 170294.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:Refresh():this (FullOpts)
56 (6.03 % of base) : 169660.dasm - System.ComponentModel.Composition.MetadataViewGenerator:GetMetadataViewFactory(System.Type):System.ComponentModel.Composition.MetadataViewGenerator+MetadataViewFactory (FullOpts)
56 (4.02 % of base) : 268712.dasm - System.ComponentModel.Composition.Registration.RegistrationBuilder:GetCustomAttributes(System.Reflection.MemberInfo,System.Collections.Generic.IEnumerable`1[System.Object]):System.Collections.Generic.IEnumerable`1[System.Object]:this (FullOpts)
56 (11.72 % of base) : 268714.dasm - System.ComponentModel.Composition.Registration.RegistrationBuilder:ReadMemberCustomAttributes(System.Reflection.MemberInfo):System.Collections.Generic.List`1[System.Attribute]:this (FullOpts)
56 (11.52 % of base) : 268715.dasm - System.ComponentModel.Composition.Registration.RegistrationBuilder:ReadParameterCustomAttributes(System.Reflection.ParameterInfo):System.Collections.Generic.List`1[System.Attribute]:this (FullOpts)
48 (20.00 % of base) : 227545.dasm - System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged:DeriveBytes(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):this (FullOpts)
48 (20.00 % of base) : 227546.dasm - System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged:DeriveBytes(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):this (FullOpts)
40 (3.82 % of base) : 87232.dasm - System.Data.ConstraintCollection:BaseRemove(System.Data.Constraint):this (FullOpts)
40 (2.92 % of base) : 87235.dasm - System.Data.ConstraintCollection:Clear():this (FullOpts)
40 (2.14 % of base) : 87439.dasm - System.Data.DataColumnCollection:CanRemove(System.Data.DataColumn,ubyte):ubyte:this (FullOpts)
40 (3.23 % of base) : 87007.dasm - System.Data.XmlDataTreeWriter:CreateToplevelTables():System.Data.DataTable[]:this (FullOpts)
40 (3.23 % of base) : 86963.dasm - System.Data.XmlTreeGen:CreateToplevelTables():System.Data.DataTable[]:this (FullOpts)
Top method improvements (bytes):
-74 (-1.78 % of base) : 209534.dasm - Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder:<VisitForToLoop>g__initializeLoop|139_1(byref):this (FullOpts)
-74 (-1.60 % of base) : 245777.dasm - System.Net.Http.Http3Connection+<ProcessServerStreamAsync>d__41:MoveNext():this (FullOpts)
-62 (-2.20 % of base) : 264578.dasm - System.Configuration.MgmtConfigurationRecord:GetConfigDefinitionUpdates(ubyte,int,ubyte,byref,byref):this (FullOpts)
-62 (-2.20 % of base) : 176197.dasm - System.Configuration.MgmtConfigurationRecord:GetConfigDefinitionUpdates(ubyte,int,ubyte,byref,byref):this (FullOpts)
-40 (-33.33 % of base) : 151429.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:CreateEvaluationBuildEventContext(int,int):Microsoft.Build.Framework.BuildEventContext:this (FullOpts)
-40 (-2.45 % of base) : 249085.dasm - System.Net.WebSockets.ManagedWebSocket+<WaitForWriteTaskAsync>d__58:MoveNext():this (FullOpts)
-38 (-4.01 % of base) : 85174.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:Complete(Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.SyntaxReference,System.Threading.CancellationToken):this (FullOpts)
-38 (-3.61 % of base) : 21506.dasm - System.Buffers.SharedArrayPool`1[short]:Trim():ubyte:this (FullOpts)
-38 (-2.57 % of base) : 194693.dasm - System.Net.Quic.QuicListener+<AcceptConnectionAsync>d__15:MoveNext():this (FullOpts)
-38 (-3.94 % of base) : 194560.dasm - System.Net.Quic.ResettableValueTaskSource:TryComplete(System.Exception,ubyte):ubyte:this (FullOpts)
-34 (-5.54 % of base) : 77533.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureNullableAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (FullOpts)
-34 (-1.50 % of base) : 245942.dasm - System.Net.Http.HttpConnectionPool:ReturnHttp11Connection(System.Net.Http.HttpConnection,ubyte,System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.Net.Http.HttpConnection]):this (FullOpts)
-34 (-1.24 % of base) : 249063.dasm - System.Net.WebSockets.ManagedWebSocket+<CloseAsyncPrivate>d__72:MoveNext():this (FullOpts)
-32 (-1.28 % of base) : 77950.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AfterMembersChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-32 (-0.67 % of base) : 209561.dasm - Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder:<VisitWith>g__handleAnonymousTypeWithExpression|257_0(Microsoft.CodeAnalysis.Operations.WithOperation,System.Nullable`1[int]):Microsoft.CodeAnalysis.IOperation:this (FullOpts)
-32 (-1.41 % of base) : 249081.dasm - System.Net.WebSockets.ManagedWebSocket+<SendFrameFallbackAsync>d__59:MoveNext():this (FullOpts)
-32 (-2.62 % of base) : 228725.dasm - System.Security.Cryptography.X509Certificates.OpenSslCachedSystemStoreProvider:<LoadMachineStores>g__ProcessFile|26_1(System.String,byref,byref):ubyte (FullOpts)
-30 (-0.47 % of base) : 53977.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (FullOpts)
-30 (-9.15 % of base) : 77530.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureScopedRefAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (FullOpts)
-30 (-1.88 % of base) : 223623.dasm - System.IO.Compression.DeflateStream+CopyToStream+<CopyFromSourceToDestinationAsync>d__6:MoveNext():this (FullOpts)
Top method regressions (percentages):
134 (40.85 % of base) : 170172.dasm - System.ComponentModel.Composition.Hosting.ComposablePartExportProvider:Dispose(ubyte):this (FullOpts)
122 (32.28 % of base) : 170289.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:Dispose(ubyte):this (FullOpts)
10 (29.41 % of base) : 21960.dasm - System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:InterlockedCompareExchange(System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks,System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks):System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:this (FullOpts)
8 (23.53 % of base) : 87903.dasm - System.Data.DataRelationCollection:.ctor():this (FullOpts)
48 (20.00 % of base) : 227545.dasm - System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged:DeriveBytes(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):this (FullOpts)
48 (20.00 % of base) : 227546.dasm - System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged:DeriveBytes(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):this (FullOpts)
28 (17.95 % of base) : 170284.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:get_LoadedFiles():System.Collections.ObjectModel.ReadOnlyCollection`1[System.String]:this (FullOpts)
28 (16.47 % of base) : 170154.dasm - System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection:get_HasChanged():ubyte:this (FullOpts)
28 (16.28 % of base) : 170151.dasm - System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection:get_Count():int:this (FullOpts)
14 (15.22 % of base) : 161.dasm - System.ConsolePal:CheckTerminalSettingsInvalidated() (FullOpts)
6 (14.29 % of base) : 258568.dasm - System.Collections.Immutable.SecureObjectPool:NewId():int (FullOpts)
28 (13.86 % of base) : 170150.dasm - System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection:CopyTo(System.ComponentModel.Composition.Primitives.ComposablePartCatalog[],int):this (FullOpts)
154 (12.75 % of base) : 242347.dasm - System.Net.Sockets.SocketPal:SysSend(System.Net.Sockets.SafeSocketHandle,int,System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
28 (12.73 % of base) : 170155.dasm - System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.ComponentModel.Composition.Primitives.ComposablePartCatalog]:this (FullOpts)
16 (12.50 % of base) : 196824.dasm - System.Data.Odbc.OdbcConnectionStringBuilder:.ctor(System.String):this (FullOpts)
6 (12.00 % of base) : 243564.dasm - System.Runtime.Serialization.Formatters.Binary.ReadObjectInfo:GetObjectInfo(System.Runtime.Serialization.Formatters.Binary.SerObjectInfoInit):System.Runtime.Serialization.Formatters.Binary.ReadObjectInfo (FullOpts)
10 (11.90 % of base) : 181374.dasm - System.ComponentModel.InterlockedBitVector32:set_Item(int,ubyte):this (FullOpts)
56 (11.72 % of base) : 268714.dasm - System.ComponentModel.Composition.Registration.RegistrationBuilder:ReadMemberCustomAttributes(System.Reflection.MemberInfo):System.Collections.Generic.List`1[System.Attribute]:this (FullOpts)
56 (11.52 % of base) : 268715.dasm - System.ComponentModel.Composition.Registration.RegistrationBuilder:ReadParameterCustomAttributes(System.Reflection.ParameterInfo):System.Collections.Generic.List`1[System.Attribute]:this (FullOpts)
16 (11.43 % of base) : 149153.dasm - Microsoft.Build.Execution.BuildManager:GetNewConfigurationId():int:this (FullOpts)
Top method improvements (percentages):
-22 (-40.74 % of base) : 151344.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:get_NextEvaluationId():int:this (FullOpts)
-22 (-40.74 % of base) : 151345.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:get_NextProjectId():int:this (FullOpts)
-16 (-34.78 % of base) : 10548.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel+Choose@2023-3:Invoke(int):this (FullOpts)
-16 (-34.78 % of base) : 10764.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel+countAndCollectTrueItems@2352-2:Invoke(int):this (FullOpts)
-16 (-34.78 % of base) : 223058.dasm - System.IO.Pipelines.SequencePipeReader:CancelPendingRead():this (FullOpts)
-40 (-33.33 % of base) : 151429.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:CreateEvaluationBuildEventContext(int,int):Microsoft.Build.Framework.BuildEventContext:this (FullOpts)
-16 (-33.33 % of base) : 151346.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:get_NextTargetId():int:this (FullOpts)
-16 (-33.33 % of base) : 151347.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:get_NextTaskId():int:this (FullOpts)
-16 (-33.33 % of base) : 217638.dasm - Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+CaptureIdDispenser:GetNextId():int:this (FullOpts)
-20 (-32.26 % of base) : 26515.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[ubyte]:EnsureFrozenForEnqueues():this (FullOpts)
-18 (-32.14 % of base) : 242051.dasm - System.Net.Sockets.SocketAsyncEventArgs+MultiConnectSocketAsyncEventArgs:ReachedCoordinationPointFirst():ubyte:this (FullOpts)
-18 (-32.14 % of base) : 180783.dasm - System.Net.TimerThread+InfiniteTimer:Cancel():ubyte:this (FullOpts)
-14 (-30.43 % of base) : 205106.dasm - Microsoft.CodeAnalysis.Compilation:RegisterPossibleUpcomingEventEnqueue():this (FullOpts)
-14 (-30.43 % of base) : 161845.dasm - System.Net.Mime.MultiAsyncResult:Enter():this (FullOpts)
-14 (-30.43 % of base) : 161849.dasm - System.Net.Mime.MultiAsyncResult:Increment():this (FullOpts)
-14 (-30.43 % of base) : 143234.dasm - System.Transactions.CheapUnfairReaderWriterLock:ExitReadLock():this (FullOpts)
-14 (-30.43 % of base) : 222187.dasm - Xunit.DelegatingExecutionSummarySink:<OnMessageWithTypes>b__13_0(Xunit.MessageHandlerArgs`1[Xunit.Abstractions.IErrorMessage]):this (FullOpts)
-22 (-29.73 % of base) : 209311.dasm - Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder:GetNextCaptureId(Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+RegionBuilder):int:this (FullOpts)
-14 (-29.17 % of base) : 205107.dasm - Microsoft.CodeAnalysis.Compilation:UnregisterPossibleUpcomingEventEnqueue():this (FullOpts)
-14 (-29.17 % of base) : 270558.dasm - System.Net.WebClient:EndOperation():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: 243597272 (overridden on cmd)
Total bytes of diff: 243544920 (overridden on cmd)
Total bytes of delta: -52352 (-0.02 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
178 : 272454.dasm (22.14 % of base)
174 : 713040.dasm (28.16 % of base)
168 : 713042.dasm (33.47 % of base)
168 : 713031.dasm (11.26 % of base)
168 : 713036.dasm (35.29 % of base)
166 : 272441.dasm (11.31 % of base)
164 : 311888.dasm (33.88 % of base)
162 : 332400.dasm (17.31 % of base)
160 : 391099.dasm (25.72 % of base)
160 : 396758.dasm (25.72 % of base)
160 : 713038.dasm (30.08 % of base)
160 : 322963.dasm (25.72 % of base)
160 : 89821.dasm (25.72 % of base)
158 : 383104.dasm (26.69 % of base)
158 : 404288.dasm (19.46 % of base)
156 : 130951.dasm (17.18 % of base)
156 : 383043.dasm (9.96 % of base)
156 : 454924.dasm (21.31 % of base)
156 : 272497.dasm (30.71 % of base)
156 : 404286.dasm (10.61 % of base)
Top file improvements (bytes):
-140 : 76347.dasm (-2.22 % of base)
-110 : 221369.dasm (-3.73 % of base)
-110 : 222823.dasm (-3.36 % of base)
-110 : 605252.dasm (-3.34 % of base)
-110 : 318457.dasm (-3.73 % of base)
-110 : 318476.dasm (-3.34 % of base)
-106 : 591173.dasm (-3.60 % of base)
-106 : 605249.dasm (-3.34 % of base)
-106 : 183729.dasm (-2.26 % of base)
-106 : 222799.dasm (-3.36 % of base)
-106 : 318472.dasm (-3.34 % of base)
-104 : 578079.dasm (-3.18 % of base)
-104 : 429321.dasm (-3.18 % of base)
-104 : 306161.dasm (-3.18 % of base)
-102 : 370058.dasm (-3.16 % of base)
-102 : 479943.dasm (-3.48 % of base)
-102 : 282553.dasm (-3.45 % of base)
-102 : 264093.dasm (-3.14 % of base)
-102 : 548001.dasm (-3.47 % of base)
-102 : 261566.dasm (-3.52 % of base)
94 total files with Code Size differences (40 improved, 54 regressed), 20 unchanged.
Top method regressions (bytes):
178 (22.14 % of base) : 272454.dasm - System.Threading.PortableThreadPool+WaitThread:UnregisterWait(System.Threading.RegisteredWaitHandle,ubyte):this (Tier1)
174 (28.16 % of base) : 713040.dasm - System.Threading.RegisteredWaitHandle:PerformCallbackPortableCore(ubyte):this (Tier1)
168 (11.26 % of base) : 713031.dasm - System.Threading.PortableThreadPool+WaitThread:ProcessRemovals():int:this (Tier1)
168 (33.47 % of base) : 713042.dasm - System.Threading.RegisteredWaitHandle:CompleteCallbackRequest():this (Tier1)
168 (35.29 % of base) : 713036.dasm - System.Threading.RegisteredWaitHandle:RequestCallback():this (Tier1)
166 (11.31 % of base) : 272441.dasm - System.Threading.PortableThreadPool+WaitThread:ProcessRemovals():int:this (Tier1)
164 (33.88 % of base) : 311888.dasm - System.Threading.PortableThreadPool:PerformBlockingAdjustment(ubyte):uint:this (Tier1)
162 (17.31 % of base) : 332400.dasm - System.Threading.PortableThreadPool:NotifyThreadBlocked():ubyte:this (Tier1)
160 (25.72 % of base) : 391099.dasm - System.Threading.PortableThreadPool:NotifyThreadUnblocked():this (Tier1)
160 (25.72 % of base) : 396758.dasm - System.Threading.PortableThreadPool:NotifyThreadUnblocked():this (Tier1)
160 (25.72 % of base) : 322963.dasm - System.Threading.PortableThreadPool:NotifyThreadUnblocked():this (Tier1)
160 (25.72 % of base) : 89821.dasm - System.Threading.PortableThreadPool:NotifyThreadUnblocked():this (Tier1)
160 (30.08 % of base) : 713038.dasm - System.Threading.RegisteredWaitHandle:OnRemoveWait():this (Tier1)
158 (19.46 % of base) : 404288.dasm - System.Threading.PortableThreadPool+WaitThread:UnregisterWait(System.Threading.RegisteredWaitHandle,ubyte):this (Tier1)
158 (26.69 % of base) : 383104.dasm - System.Threading.RegisteredWaitHandle:PerformCallbackPortableCore(ubyte):this (Tier1)
156 (17.18 % of base) : 130951.dasm - System.Threading.PortableThreadPool:NotifyThreadBlocked():ubyte:this (Tier1)
156 (21.31 % of base) : 454924.dasm - System.Threading.PortableThreadPool:NotifyThreadBlocked():ubyte:this (Tier1)
156 (9.96 % of base) : 383043.dasm - System.Threading.PortableThreadPool+WaitThread:ProcessRemovals():int:this (Tier1)
156 (10.61 % of base) : 404286.dasm - System.Threading.PortableThreadPool+WaitThread:ProcessRemovals():int:this (Tier1)
156 (30.71 % of base) : 272497.dasm - System.Threading.RegisteredWaitHandle:OnRemoveWait():this (Tier1)
Top method improvements (bytes):
-140 (-2.22 % of base) : 76347.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttribute(Microsoft.CodeAnalysis.CSharp.BoundAttribute,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:this (Tier1)
-110 (-3.36 % of base) : 222823.dasm - Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[System.__Canon]:MoveNext():this (Tier1)
-110 (-3.34 % of base) : 605252.dasm - Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[System.__Canon]:MoveNext():this (Tier1)
-110 (-3.34 % of base) : 318476.dasm - Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[System.__Canon]:MoveNext():this (Tier1)
-110 (-3.73 % of base) : 221369.dasm - Xunit.Sdk.TestMethodRunner`1+<RunAsync>d__31[System.__Canon]:MoveNext():this (Tier1)
-110 (-3.73 % of base) : 318457.dasm - Xunit.Sdk.TestMethodRunner`1+<RunAsync>d__31[System.__Canon]:MoveNext():this (Tier1)
-106 (-2.26 % of base) : 183729.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
-106 (-3.34 % of base) : 605249.dasm - Xunit.Sdk.TestCollectionRunner`1+<RunAsync>d__27[System.__Canon]:MoveNext():this (Tier1)
-106 (-3.36 % of base) : 222799.dasm - Xunit.Sdk.TestCollectionRunner`1+<RunAsync>d__27[System.__Canon]:MoveNext():this (Tier1)
-106 (-3.34 % of base) : 318472.dasm - Xunit.Sdk.TestCollectionRunner`1+<RunAsync>d__27[System.__Canon]:MoveNext():this (Tier1)
-106 (-3.60 % of base) : 591173.dasm - Xunit.Sdk.TestMethodRunner`1+<RunAsync>d__31[System.__Canon]:MoveNext():this (Tier1)
-104 (-3.18 % of base) : 578079.dasm - Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[System.__Canon]:MoveNext():this (Tier1)
-104 (-3.18 % of base) : 429321.dasm - Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[System.__Canon]:MoveNext():this (Tier1)
-104 (-3.18 % of base) : 306161.dasm - Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[System.__Canon]:MoveNext():this (Tier1)
-102 (-3.16 % of base) : 370058.dasm - Xunit.Sdk.TestCaseRunner`1+<RunAsync>d__19[System.__Canon]:MoveNext():this (Tier1)
-102 (-3.14 % of base) : 264093.dasm - Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[System.__Canon]:MoveNext():this (Tier1)
-102 (-3.48 % of base) : 479943.dasm - Xunit.Sdk.TestMethodRunner`1+<RunAsync>d__31[System.__Canon]:MoveNext():this (Tier1)
-102 (-3.45 % of base) : 282553.dasm - Xunit.Sdk.TestMethodRunner`1+<RunAsync>d__31[System.__Canon]:MoveNext():this (Tier1)
-102 (-3.47 % of base) : 548001.dasm - Xunit.Sdk.TestMethodRunner`1+<RunAsync>d__31[System.__Canon]:MoveNext():this (Tier1)
-102 (-3.52 % of base) : 261566.dasm - Xunit.Sdk.TestMethodRunner`1+<RunAsync>d__31[System.__Canon]:MoveNext():this (Tier1)
Top method regressions (percentages):
168 (35.29 % of base) : 713036.dasm - System.Threading.RegisteredWaitHandle:RequestCallback():this (Tier1)
164 (33.88 % of base) : 311888.dasm - System.Threading.PortableThreadPool:PerformBlockingAdjustment(ubyte):uint:this (Tier1)
168 (33.47 % of base) : 713042.dasm - System.Threading.RegisteredWaitHandle:CompleteCallbackRequest():this (Tier1)
150 (33.33 % of base) : 383101.dasm - System.Threading.RegisteredWaitHandle:RequestCallback():this (Tier1)
148 (32.03 % of base) : 273321.dasm - System.Threading.RegisteredWaitHandle:RequestCallback():this (Tier1)
152 (31.93 % of base) : 383112.dasm - System.Threading.RegisteredWaitHandle:CompleteCallbackRequest():this (Tier1)
10 (31.25 % of base) : 715696.dasm - System.Threading.Tests.InterlockedTests+<>c:<InterlockedCompareExchange_Object>b__38_0():System.Object:this (Tier0)
154 (31.05 % of base) : 383102.dasm - System.Threading.RegisteredWaitHandle:OnRemoveWait():this (Tier1)
8 (30.77 % of base) : 91971.dasm - Microsoft.CodeAnalysis.Internal.Log.CorrelationIdFactory:GetNextId():int (Tier1)
8 (30.77 % of base) : 149293.dasm - Microsoft.CodeAnalysis.VersionStamp:GetNextGlobalVersion():int (Tier1)
8 (30.77 % of base) : 162592.dasm - Microsoft.CodeAnalysis.VersionStamp:GetNextGlobalVersion():int (Tier1)
8 (30.77 % of base) : 30636.dasm - Microsoft.CodeAnalysis.VersionStamp:GetNextGlobalVersion():int (Tier1)
8 (30.77 % of base) : 338460.dasm - System.Linq.Parallel.PlinqEtwProvider:NextQueryId():int (Tier1)
156 (30.71 % of base) : 272497.dasm - System.Threading.RegisteredWaitHandle:OnRemoveWait():this (Tier1)
148 (30.33 % of base) : 273328.dasm - System.Threading.RegisteredWaitHandle:CompleteCallbackRequest():this (Tier1)
160 (30.08 % of base) : 713038.dasm - System.Threading.RegisteredWaitHandle:OnRemoveWait():this (Tier1)
94 (29.01 % of base) : 716198.dasm - Xunit.Sdk.AsyncTestSyncContext+<>c__DisplayClass7_0:<Post>b__0():this (Tier1)
148 (28.79 % of base) : 178433.dasm - System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode:Dispose():this (Tier1)
148 (28.79 % of base) : 648014.dasm - System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode:Dispose():this (Tier1)
148 (28.79 % of base) : 677259.dasm - System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode:Dispose():this (Tier1)
Top method improvements (percentages):
-22 (-47.83 % of base) : 121988.dasm - System.Threading.Interlocked:Add(byref,int):int (Instrumented Tier1)
-22 (-47.83 % of base) : 123207.dasm - System.Threading.Interlocked:Add(byref,int):int (Tier1)
-16 (-42.11 % of base) : 47476.dasm - System.Threading.Interlocked:Exchange(byref,int):int (Instrumented Tier1)
-16 (-42.11 % of base) : 59993.dasm - System.Threading.Interlocked:Exchange(byref,int):int (Tier1)
-30 (-39.47 % of base) : 110894.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 451588.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 47530.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 710262.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 93898.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 202939.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 322314.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 576789.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 311063.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 315305.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 331670.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 338288.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 707267.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 75345.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-30 (-39.47 % of base) : 164446.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-16 (-38.10 % of base) : 12328.dasm - System.Threading.Interlocked:Increment(byref):int (Instrumented 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: 94156910 (overridden on cmd)
Total bytes of diff: 94127530 (overridden on cmd)
Total bytes of delta: -29380 (-0.03 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
356 : 144458.dasm (21.87 % of base)
356 : 144443.dasm (17.59 % of base)
134 : 79984.dasm (40.85 % of base)
134 : 144256.dasm (13.06 % of base)
132 : 144272.dasm (13.28 % of base)
130 : 144271.dasm (13.57 % of base)
122 : 82098.dasm (32.28 % of base)
118 : 142876.dasm (16.57 % of base)
114 : 144928.dasm (20.88 % of base)
110 : 142913.dasm (20.52 % of base)
108 : 203289.dasm (20.61 % of base)
108 : 203405.dasm (20.77 % of base)
86 : 21012.dasm (0.82 % of base)
84 : 153298.dasm (3.40 % of base)
74 : 302621.dasm (2.78 % of base)
56 : 80020.dasm (6.22 % of base)
56 : 82154.dasm (2.97 % of base)
56 : 79817.dasm (6.03 % of base)
56 : 78890.dasm (4.02 % of base)
56 : 78926.dasm (12.84 % of base)
Top file improvements (bytes):
-40 : 157821.dasm (-2.24 % of base)
-40 : 157939.dasm (-2.71 % of base)
-40 : 157980.dasm (-2.35 % of base)
-40 : 158287.dasm (-2.71 % of base)
-40 : 158383.dasm (-1.58 % of base)
-40 : 157819.dasm (-2.29 % of base)
-40 : 157870.dasm (-2.16 % of base)
-40 : 157876.dasm (-2.05 % of base)
-40 : 158252.dasm (-2.02 % of base)
-40 : 158253.dasm (-2.45 % of base)
-40 : 158591.dasm (-2.68 % of base)
-40 : 7120.dasm (-7.02 % of base)
-38 : 5951.dasm (-4.01 % of base)
-38 : 153013.dasm (-3.94 % of base)
-38 : 153389.dasm (-2.68 % of base)
-36 : 7136.dasm (-6.27 % of base)
-34 : 157904.dasm (-5.54 % of base)
-34 : 158020.dasm (-1.35 % of base)
-34 : 158182.dasm (-1.29 % of base)
-34 : 21009.dasm (-1.67 % of base)
75 total files with Code Size differences (44 improved, 31 regressed), 20 unchanged.
Top method regressions (bytes):
356 (17.59 % of base) : 144443.dasm - System.MemoryTests.MemoryMarshalTests:AsMemory_Roundtrips_Core[int](System.ReadOnlyMemory`1[int],ubyte) (FullOpts)
356 (21.87 % of base) : 144458.dasm - System.MemoryTests.MemoryMarshalTests:AsMemory_Roundtrips_Core[System.__Canon](System.ReadOnlyMemory`1[System.__Canon],ubyte) (FullOpts)
134 (40.85 % of base) : 79984.dasm - System.ComponentModel.Composition.Hosting.ComposablePartExportProvider:Dispose(ubyte):this (FullOpts)
134 (13.06 % of base) : 144256.dasm - System.MemoryTests.MemoryPoolTests:MemoryPoolPin(int) (FullOpts)
132 (13.28 % of base) : 144272.dasm - System.MemoryTests.MemoryPoolTests:MemoryPoolPinOffsetAtEnd() (FullOpts)
130 (13.57 % of base) : 144271.dasm - System.MemoryTests.MemoryPoolTests:MemoryPoolSpan() (FullOpts)
122 (32.28 % of base) : 82098.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:Dispose(ubyte):this (FullOpts)
118 (16.57 % of base) : 142876.dasm - System.MemoryTests.ReadOnlyMemoryTests:AsMemory_StartAndLength(System.String,int,int) (FullOpts)
114 (20.88 % of base) : 144928.dasm - System.MemoryTests.MemoryTests:Memory_Pin_ExpectedPointerValue() (FullOpts)
110 (20.52 % of base) : 142913.dasm - System.MemoryTests.ReadOnlyMemoryTests:AsMemory_Pin_ExpectedPointerValue() (FullOpts)
108 (20.61 % of base) : 203289.dasm - System.Tests.StringTests:Ctor_CharPtr_DoesNotAccessInvalidPage() (FullOpts)
108 (20.77 % of base) : 203405.dasm - System.Tests.StringTests:Ctor_SBytePtr_DoesNotAccessInvalidPage() (FullOpts)
86 (0.82 % of base) : 21012.dasm - System.Net.Http.HttpConnection+<SendAsync>d__57:MoveNext():this (FullOpts)
84 (3.40 % of base) : 153298.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509CertificateReader:CopyWithPrivateKey(System.Security.Cryptography.RSA):System.Security.Cryptography.X509Certificates.ICertificatePal:this (FullOpts)
74 (2.78 % of base) : 302621.dasm - TaskCoverage.Coverage+<Task_WhenAny_TwoTasks_WakesOnFirstCompletion>d__8:MoveNext():this (FullOpts)
56 (6.22 % of base) : 80020.dasm - System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection:Remove(System.ComponentModel.Composition.Primitives.ComposablePartCatalog):ubyte:this (FullOpts)
56 (2.97 % of base) : 82154.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:Refresh():this (FullOpts)
56 (6.03 % of base) : 79817.dasm - System.ComponentModel.Composition.MetadataViewGenerator:GetMetadataViewFactory(System.Type):System.ComponentModel.Composition.MetadataViewGenerator+MetadataViewFactory (FullOpts)
56 (4.02 % of base) : 78890.dasm - System.ComponentModel.Composition.Registration.RegistrationBuilder:GetCustomAttributes(System.Reflection.MemberInfo,System.Collections.Generic.IEnumerable`1[System.Object]):System.Collections.Generic.IEnumerable`1[System.Object]:this (FullOpts)
56 (12.84 % of base) : 78926.dasm - System.ComponentModel.Composition.Registration.RegistrationBuilder:ReadMemberCustomAttributes(System.Reflection.MemberInfo):System.Collections.Generic.List`1[System.Attribute]:this (FullOpts)
Top method improvements (bytes):
-40 (-7.02 % of base) : 7120.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureRefKindAttributesExist(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (FullOpts)
-40 (-2.05 % of base) : 157876.dasm - System.Net.WebSockets.Client.Tests.CloseTest+<>c__DisplayClass15_0+<<CloseAsync_CancelableEvenWhenPendingReceive_Throws>b__0>d:MoveNext():this (FullOpts)
-40 (-2.71 % of base) : 157939.dasm - System.Net.WebSockets.Client.Tests.ConnectTest_Http2+<<ConnectAsync_VersionNotSupported_NoSsl_Throws>b__1_0>d:MoveNext():this (FullOpts)
-40 (-2.71 % of base) : 158287.dasm - System.Net.WebSockets.Client.Tests.ConnectTest_Http2+<<ConnectAsync_VersionNotSupported_WithSsl_Throws>b__2_0>d:MoveNext():this (FullOpts)
-40 (-2.45 % of base) : 158253.dasm - System.Net.WebSockets.Client.Tests.ConnectTest+<<ConnectAsync_HttpResponseDetailsCollectedOnFailure_CustomHeader>b__15_0>d:MoveNext():this (FullOpts)
-40 (-2.02 % of base) : 158252.dasm - System.Net.WebSockets.Client.Tests.DeflateTests+<>c__DisplayClass1_0+<<PerMessageDeflateHeaders>b__0>d:MoveNext():this (FullOpts)
-40 (-2.24 % of base) : 157821.dasm - System.Net.WebSockets.Client.Tests.DeflateTests+<>c__DisplayClass2_0+<<ThrowsWhenContinuationHasDifferentCompressionFlags>b__0>d:MoveNext():this (FullOpts)
-40 (-2.16 % of base) : 157870.dasm - System.Net.WebSockets.Client.Tests.DeflateTests+<>c__DisplayClass3_0+<<SendHelloWithDisableCompression>b__0>d:MoveNext():this (FullOpts)
-40 (-1.58 % of base) : 158383.dasm - System.Net.WebSockets.Client.Tests.InvokerConnectTest+<ConnectAsync_CustomInvokerWithIncompatibleWebSocketOptions_ThrowsArgumentException>d__4:MoveNext():this (FullOpts)
-40 (-2.29 % of base) : 157819.dasm - System.Net.WebSockets.Client.Tests.SendReceiveTest_Http2+<>c__DisplayClass1_0+<<ReceiveNoThrowAfterSend_NoSsl>b__0>d:MoveNext():this (FullOpts)
-40 (-2.35 % of base) : 157980.dasm - System.Net.WebSockets.Client.Tests.SendReceiveTest_Http2+<>c__DisplayClass2_0+<<ReceiveNoThrowAfterSend_WithSsl>b__0>d:MoveNext():this (FullOpts)
-40 (-2.68 % of base) : 158591.dasm - System.Net.WebSockets.ManagedWebSocket+<WaitForWriteTaskAsync>d__58:MoveNext():this (FullOpts)
-38 (-4.01 % of base) : 5951.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:Complete(Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.SyntaxReference,System.Threading.CancellationToken):this (FullOpts)
-38 (-2.68 % of base) : 153389.dasm - System.Net.Quic.QuicListener+<AcceptConnectionAsync>d__15:MoveNext():this (FullOpts)
-38 (-3.94 % of base) : 153013.dasm - System.Net.Quic.ResettableValueTaskSource:TryComplete(System.Exception,ubyte):ubyte:this (FullOpts)
-36 (-6.27 % of base) : 7136.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureNullableAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (FullOpts)
-34 (-1.67 % of base) : 21009.dasm - System.Net.Http.HttpConnectionPool:ReturnHttp11Connection(System.Net.Http.HttpConnection,ubyte,System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.Net.Http.HttpConnection]):this (FullOpts)
-34 (-1.35 % of base) : 158020.dasm - System.Net.Http.HttpConnectionPool:ReturnHttp2Connection(System.Net.Http.Http2Connection,ubyte,System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.Net.Http.Http2Connection]):this (FullOpts)
-34 (-5.54 % of base) : 157904.dasm - System.Net.WebSockets.Client.Tests.ClientWebSocketUnitTest:Abort_CreateAndAbort_StateIsClosed():this (FullOpts)
-34 (-1.29 % of base) : 158182.dasm - System.Net.WebSockets.ManagedWebSocket+<CloseAsyncPrivate>d__72:MoveNext():this (FullOpts)
Top method regressions (percentages):
18 (112.50 % of base) : 303789.dasm - System.Threading.Tests.InterlockedTests+<>c:<InterlockedCompareExchange_Object>b__38_0():System.Object:this (FullOpts)
10 (62.50 % of base) : 303774.dasm - System.Threading.Tests.InterlockedTests+<>c:<InterlockedExchange_Object>b__24_0():System.Object:this (FullOpts)
134 (40.85 % of base) : 79984.dasm - System.ComponentModel.Composition.Hosting.ComposablePartExportProvider:Dispose(ubyte):this (FullOpts)
122 (32.28 % of base) : 82098.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:Dispose(ubyte):this (FullOpts)
356 (21.87 % of base) : 144458.dasm - System.MemoryTests.MemoryMarshalTests:AsMemory_Roundtrips_Core[System.__Canon](System.ReadOnlyMemory`1[System.__Canon],ubyte) (FullOpts)
114 (20.88 % of base) : 144928.dasm - System.MemoryTests.MemoryTests:Memory_Pin_ExpectedPointerValue() (FullOpts)
108 (20.77 % of base) : 203405.dasm - System.Tests.StringTests:Ctor_SBytePtr_DoesNotAccessInvalidPage() (FullOpts)
108 (20.61 % of base) : 203289.dasm - System.Tests.StringTests:Ctor_CharPtr_DoesNotAccessInvalidPage() (FullOpts)
110 (20.52 % of base) : 142913.dasm - System.MemoryTests.ReadOnlyMemoryTests:AsMemory_Pin_ExpectedPointerValue() (FullOpts)
48 (20.00 % of base) : 24134.dasm - System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged:DeriveBytes(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):this (FullOpts)
48 (20.00 % of base) : 24153.dasm - System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged:DeriveBytes(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):this (FullOpts)
28 (17.95 % of base) : 82125.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:get_LoadedFiles():System.Collections.ObjectModel.ReadOnlyCollection`1[System.String]:this (FullOpts)
356 (17.59 % of base) : 144443.dasm - System.MemoryTests.MemoryMarshalTests:AsMemory_Roundtrips_Core[int](System.ReadOnlyMemory`1[int],ubyte) (FullOpts)
118 (16.57 % of base) : 142876.dasm - System.MemoryTests.ReadOnlyMemoryTests:AsMemory_StartAndLength(System.String,int,int) (FullOpts)
28 (16.28 % of base) : 82725.dasm - System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection:get_Count():int:this (FullOpts)
14 (15.22 % of base) : 567.dasm - System.ConsolePal:CheckTerminalSettingsInvalidated() (FullOpts)
6 (14.29 % of base) : 2330.dasm - System.Collections.Immutable.SecureObjectPool:NewId():int (FullOpts)
130 (13.57 % of base) : 144271.dasm - System.MemoryTests.MemoryPoolTests:MemoryPoolSpan() (FullOpts)
132 (13.28 % of base) : 144272.dasm - System.MemoryTests.MemoryPoolTests:MemoryPoolPinOffsetAtEnd() (FullOpts)
134 (13.06 % of base) : 144256.dasm - System.MemoryTests.MemoryPoolTests:MemoryPoolPin(int) (FullOpts)
Top method improvements (percentages):
-20 (-38.46 % of base) : 297901.dasm - System.Threading.RateLimiting.Tests.TestEquality:GetHashCode(int):int:this (FullOpts)
-16 (-36.36 % of base) : 301412.dasm - System.Threading.Tasks.Tests.ParallelForTests+<>c__DisplayClass1_0:<TestParallelForEachConversions>b__0(int):this (FullOpts)
-16 (-36.36 % of base) : 301413.dasm - System.Threading.Tasks.Tests.ParallelForTests+<>c__DisplayClass1_0:<TestParallelForEachConversions>b__1(int,System.Threading.Tasks.ParallelLoopState):this (FullOpts)
-16 (-36.36 % of base) : 301414.dasm - System.Threading.Tasks.Tests.ParallelForTests+<>c__DisplayClass1_0:<TestParallelForEachConversions>b__2(int,System.Threading.Tasks.ParallelLoopState,long):this (FullOpts)
-16 (-34.78 % of base) : 128295.dasm - System.IO.Pipelines.SequencePipeReader:CancelPendingRead():this (FullOpts)
-26 (-34.21 % of base) : 300682.dasm - System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext:Post(System.Threading.SendOrPostCallback,System.Object):this (FullOpts)
-26 (-34.21 % of base) : 24037.dasm - System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext:Post(System.Threading.SendOrPostCallback,System.Object):this (FullOpts)
-16 (-33.33 % of base) : 297344.dasm - System.Threading.RateLimiting.Tests.TrackingRateLimiter:GetStatistics():System.Threading.RateLimiting.RateLimiterStatistics:this (FullOpts)
-20 (-32.26 % of base) : 64681.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[int]:EnsureFrozenForEnqueues():this (FullOpts)
-20 (-32.26 % of base) : 297903.dasm - System.Threading.RateLimiting.Tests.TestEquality:Equals(int,int):ubyte:this (FullOpts)
-18 (-32.14 % of base) : 298053.dasm - System.Threading.RateLimiting.Tests.TrackingRateLimiter:DisposeAsyncCore():System.Threading.Tasks.ValueTask:this (FullOpts)
-14 (-31.82 % of base) : 301256.dasm - System.Threading.Tasks.Tests.ParallelForTests+<>c__DisplayClass11_0:<RunSimpleParallelForeachAddTest_Array>b__1(int):this (FullOpts)
-14 (-31.82 % of base) : 301399.dasm - System.Threading.Tasks.Tests.ParallelForTests+<>c__DisplayClass12_0:<RunSimpleParallelForAverageAggregation>b__3(int):this (FullOpts)
-14 (-31.82 % of base) : 301216.dasm - System.Threading.Tasks.Tests.ParallelForTests+<>c__DisplayClass15_0:<TestParallelForPaths>b__2(int):this (FullOpts)
-14 (-31.82 % of base) : 301238.dasm - System.Threading.Tasks.Tests.ParallelForTests+<>c__DisplayClass15_0:<TestParallelForPaths>b__23(int,System.Threading.Tasks.ParallelLoopState,long):this (FullOpts)
-14 (-31.82 % of base) : 301218.dasm - System.Threading.Tasks.Tests.ParallelForTests+<>c__DisplayClass15_0:<TestParallelForPaths>b__3(int,System.Threading.Tasks.ParallelLoopState):this (FullOpts)
-14 (-31.82 % of base) : 301350.dasm - System.Threading.Tasks.Tests.ParallelForTests+<>c__DisplayClass5_0:<RunSimpleParallelForAddTest>b__1(int):this (FullOpts)
-14 (-31.82 % of base) : 301253.dasm - System.Threading.Tasks.Tests.ParallelForTests+<>c__DisplayClass9_0:<RunSimpleParallelForeachAddTest_Enumerable>b__1(int):this (FullOpts)
-14 (-30.43 % of base) : 300001.dasm - System.Threading.Tasks.Dataflow.Tests.DataflowBlockExtensionsTests+<>c__DisplayClass55_0:<TestChoose_ManyConcurrent>b__1(int):this (FullOpts)
-14 (-30.43 % of base) : 298225.dasm - System.Threading.Tasks.Dataflow.Tests.SimpleNetworkTests+<>c__DisplayClass9_0:<BroadcastToActions>b__2(int):this (FullOpts)
realworld.run.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13589492 (overridden on cmd)
Total bytes of diff: 13588020 (overridden on cmd)
Total bytes of delta: -1472 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
32 : 30392.dasm (1.83 % of base)
32 : 27166.dasm (0.77 % of base)
20 : 34807.dasm (7.04 % of base)
18 : 16804.dasm (2.59 % of base)
16 : 25803.dasm (1.95 % of base)
16 : 24880.dasm (5.37 % of base)
16 : 34765.dasm (2.79 % of base)
16 : 7063.dasm (1.96 % of base)
16 : 3301.dasm (1.44 % of base)
16 : 28619.dasm (0.50 % of base)
14 : 17421.dasm (6.09 % of base)
14 : 35039.dasm (2.80 % of base)
12 : 29331.dasm (0.98 % of base)
12 : 30046.dasm (1.01 % of base)
12 : 36052.dasm (3.09 % of base)
12 : 37738.dasm (2.96 % of base)
12 : 24847.dasm (0.47 % of base)
10 : 34643.dasm (3.07 % of base)
10 : 35040.dasm (2.94 % of base)
10 : 17093.dasm (6.67 % of base)
Top file improvements (bytes):
-48 : 17601.dasm (-3.05 % of base)
-38 : 24435.dasm (-4.06 % of base)
-36 : 25624.dasm (-6.27 % of base)
-32 : 32199.dasm (-2.32 % of base)
-32 : 18514.dasm (-2.70 % of base)
-32 : 25458.dasm (-1.37 % of base)
-30 : 18726.dasm (-1.50 % of base)
-30 : 25611.dasm (-9.15 % of base)
-30 : 27445.dasm (-0.48 % of base)
-28 : 19130.dasm (-5.58 % of base)
-28 : 27240.dasm (-3.70 % of base)
-26 : 25750.dasm (-8.07 % of base)
-26 : 25668.dasm (-3.49 % of base)
-24 : 25677.dasm (-3.83 % of base)
-24 : 682.dasm (-2.23 % of base)
-24 : 20060.dasm (-7.45 % of base)
-22 : 12671.dasm (-4.72 % of base)
-22 : 25526.dasm (-1.46 % of base)
-22 : 25605.dasm (-5.85 % of base)
-20 : 12655.dasm (-12.35 % of base)
79 total files with Code Size differences (44 improved, 35 regressed), 11 unchanged.
Top method regressions (bytes):
32 (0.77 % of base) : 27166.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
32 (1.83 % of base) : 30392.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:MoreSpecificOperator(Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,byref):int:this (FullOpts)
20 (7.04 % of base) : 34807.dasm - Microsoft.ApplicationInsights.Metrics.ConcurrentDatastructures.GrowingCollection`1[System.__Canon]:Add(System.__Canon):this (FullOpts)
18 (2.59 % of base) : 16804.dasm - System.Threading.Tasks.Task:InternalRunSynchronously(System.Threading.Tasks.TaskScheduler,ubyte):this (FullOpts)
16 (2.79 % of base) : 34765.dasm - Microsoft.ApplicationInsights.Metrics.DefaultAggregationPeriodCycle:Run():this (FullOpts)
16 (5.37 % of base) : 24880.dasm - Microsoft.CodeAnalysis.Collections.SmallConcurrentSetOfInts:Add(Microsoft.CodeAnalysis.Collections.SmallConcurrentSetOfInts,int):ubyte (FullOpts)
16 (0.50 % of base) : 28619.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:MakeDecisionDag(byref,System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DagState,Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DagState]):Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DecisionDag:this (FullOpts)
16 (1.95 % of base) : 25803.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbolBase:get_DefaultSyntaxValue():Microsoft.CodeAnalysis.ConstantValue:this (FullOpts)
16 (1.96 % of base) : 7063.dasm - System.Threading.SemaphoreSlim:Release(int):int:this (FullOpts)
16 (1.44 % of base) : 3301.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (FullOpts)
14 (6.09 % of base) : 17421.dasm - SixLabors.ImageSharp.Memory.Internals.UnmanagedMemoryHandle:Free():this (FullOpts)
14 (2.80 % of base) : 35039.dasm - System.Net.Sockets.SocketAsyncEventArgs:SetBuffer(ubyte[],int,int):this (FullOpts)
12 (1.01 % of base) : 30046.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:CreateDecisionDagForSwitchExpression(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundSwitchExpressionArm]):Microsoft.CodeAnalysis.CSharp.BoundDecisionDag:this (FullOpts)
12 (0.98 % of base) : 29331.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:CreateDecisionDagForSwitchStatement(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundSwitchSection]):Microsoft.CodeAnalysis.CSharp.BoundDecisionDag:this (FullOpts)
12 (0.47 % of base) : 24847.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
12 (2.96 % of base) : 37738.dasm - System.Threading.Tasks.Task:TrySetException(System.Object):ubyte:this (FullOpts)
12 (3.09 % of base) : 36052.dasm - System.Threading.Tasks.Task+DelayPromiseWithCancellation+<>c:<.ctor>b__1_0(System.Object,System.Threading.CancellationToken):this (FullOpts)
10 (2.94 % of base) : 35040.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:AcceptAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Sockets.Socket]:this (FullOpts)
10 (3.21 % of base) : 18391.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ReceiveAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
10 (6.17 % of base) : 18892.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ReleaseForAsyncCompletion():this (FullOpts)
Top method improvements (bytes):
-48 (-3.05 % of base) : 17601.dasm - Microsoft.ML.Data.TextLoader+Cursor+LineReader:ThreadProc():this (FullOpts)
-38 (-4.06 % of base) : 24435.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:Complete(Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.SyntaxReference,System.Threading.CancellationToken):this (FullOpts)
-36 (-6.27 % of base) : 25624.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureNullableAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (FullOpts)
-32 (-2.32 % of base) : 32199.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitLocalFunctionStatement(Microsoft.CodeAnalysis.CSharp.BoundLocalFunctionStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
-32 (-1.37 % of base) : 25458.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AfterMembersChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-32 (-2.70 % of base) : 18514.dasm - System.Security.Cryptography.X509Certificates.OpenSslCachedSystemStoreProvider:<LoadMachineStores>g__ProcessFile|26_1(System.String,byref,byref):ubyte (FullOpts)
-30 (-0.48 % of base) : 27445.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (FullOpts)
-30 (-9.15 % of base) : 25611.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureScopedRefAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (FullOpts)
-30 (-1.50 % of base) : 18726.dasm - System.Net.Http.HttpConnectionPool:ReturnHttp11Connection(System.Net.Http.HttpConnection,ubyte,System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.Net.Http.HttpConnection]):this (FullOpts)
-28 (-3.70 % of base) : 27240.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceEventSymbol:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-28 (-5.58 % of base) : 19130.dasm - System.Threading.ThreadPoolWorkQueue+WorkStealingQueue:LocalPopCore():System.Object:this (FullOpts)
-26 (-8.07 % of base) : 25750.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureIsReadOnlyAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (FullOpts)
-26 (-3.49 % of base) : 25668.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceConstructorSymbolBase:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-24 (-3.83 % of base) : 25677.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbol:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-24 (-7.45 % of base) : 20060.dasm - Microsoft.ML.Data.TextLoader+Cursor+ParallelState:ThreadProc(System.Object):this (FullOpts)
-24 (-2.23 % of base) : 682.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (FullOpts)
-22 (-5.85 % of base) : 25605.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureNativeIntegerAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (FullOpts)
-22 (-1.46 % of base) : 25526.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodOrUserDefinedOperatorSymbol:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-22 (-4.72 % of base) : 12671.dasm - System.Threading.CancellationTokenSource+Registrations:Unregister(long,System.Threading.CancellationTokenSource+CallbackNode):ubyte:this (FullOpts)
-20 (-12.35 % of base) : 12655.dasm - <StartupCode$FSharp-Core>.$Async+Parallel@1621-3[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
Top method regressions (percentages):
6 (14.29 % of base) : 20800.dasm - System.Collections.Immutable.SecureObjectPool:NewId():int (FullOpts)
4 (7.41 % of base) : 16436.dasm - SixLabors.ImageSharp.Diagnostics.MemoryDiagnostics:IncrementTotalUndisposedAllocationCount() (FullOpts)
4 (7.14 % of base) : 16447.dasm - SixLabors.ImageSharp.Diagnostics.MemoryDiagnostics:DecrementTotalUndisposedAllocationCount() (FullOpts)
6 (7.14 % of base) : 1370.dasm - System.Runtime.InteropServices.GCHandle:Free():this (FullOpts)
20 (7.04 % of base) : 34807.dasm - Microsoft.ApplicationInsights.Metrics.ConcurrentDatastructures.GrowingCollection`1[System.__Canon]:Add(System.__Canon):this (FullOpts)
8 (6.90 % of base) : 35351.dasm - System.Management.Automation.MshLog:get_NextSequenceNumber():System.String (FullOpts)
10 (6.67 % of base) : 17093.dasm - System.Threading.SpinLock:ExitSlowPath(ubyte):this (FullOpts)
10 (6.17 % of base) : 18892.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ReleaseForAsyncCompletion():this (FullOpts)
14 (6.09 % of base) : 17421.dasm - SixLabors.ImageSharp.Memory.Internals.UnmanagedMemoryHandle:Free():this (FullOpts)
16 (5.37 % of base) : 24880.dasm - Microsoft.CodeAnalysis.Collections.SmallConcurrentSetOfInts:Add(Microsoft.CodeAnalysis.Collections.SmallConcurrentSetOfInts,int):ubyte (FullOpts)
8 (5.19 % of base) : 22974.dasm - Roslyn.Utilities.StringTable:AddSharedSlow(int,System.String) (FullOpts)
8 (4.65 % of base) : 18792.dasm - System.Net.Sockets.SocketAsyncEngine:TryRegisterSocket(int,System.Net.Sockets.SocketAsyncContext,byref,byref):ubyte (FullOpts)
8 (3.92 % of base) : 17403.dasm - SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[SixLabors.ImageSharp.Processing.Processors.Quantization.WuQuantizer`1+Moment[SixLabors.ImageSharp.PixelFormats.Rgba32]]:Allocate(int):SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[SixLabors.ImageSharp.Processing.Processors.Quantization.WuQuantizer`1+Moment[SixLabors.ImageSharp.PixelFormats.Rgba32]] (FullOpts)
2 (3.85 % of base) : 23256.dasm - Roslyn.Utilities.ThreadSafeFlagOperations:Set(byref,int):ubyte (FullOpts)
6 (3.45 % of base) : 25623.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetMembers():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (FullOpts)
10 (3.36 % of base) : 18372.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:SendAsyncForNetworkStream(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (FullOpts)
10 (3.21 % of base) : 18391.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ReceiveAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
2 (3.12 % of base) : 15589.dasm - <StartupCode$FSharp-Compiler-Service>.$Service+lazyCheckFile@602:Invoke(Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Core.Unit:this (FullOpts)
12 (3.09 % of base) : 36052.dasm - System.Threading.Tasks.Task+DelayPromiseWithCancellation+<>c:<.ctor>b__1_0(System.Object,System.Threading.CancellationToken):this (FullOpts)
10 (3.07 % of base) : 34643.dasm - System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.VoidTaskResult]:ProcessInnerTask(System.Threading.Tasks.Task):this (FullOpts)
Top method improvements (percentages):
-20 (-41.67 % of base) : 16925.dasm - SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:AddRef():this (FullOpts)
-20 (-32.26 % of base) : 25393.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:EnsureFrozenForEnqueues():this (FullOpts)
-16 (-25.81 % of base) : 2693.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:CloseDirectoryHandle():this (FullOpts)
-14 (-21.21 % of base) : 29288.dasm - Microsoft.CodeAnalysis.Shared.Collections.TemporaryArray`1[System.__Canon]:Dispose():this (FullOpts)
-14 (-20.59 % of base) : 25801.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberFieldSymbol:get_FixedSize():int:this (FullOpts)
-16 (-20.51 % of base) : 30391.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEEventSymbol:get_DeclaredAccessibility():int:this (FullOpts)
-14 (-18.42 % of base) : 25665.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceSimpleParameterSymbol:GetAttributesBag():Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]:this (FullOpts)
-16 (-17.78 % of base) : 19629.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1+<>c__DisplayClass12_1[System.__Canon]:<TrainWithoutLock>b__1(long,byref):this (FullOpts)
-16 (-17.78 % of base) : 20089.dasm - Microsoft.ML.Trainers.SdcaTrainerBase`3+<>c__DisplayClass19_1[System.__Canon,System.__Canon,System.__Canon]:<TrainWithoutLock>b__1(long,byref):this (FullOpts)
-10 (-17.24 % of base) : 19709.dasm - System.Net.Http.HttpConnection:TryOwnReadAheadTaskCompletion():ubyte:this (FullOpts)
-14 (-16.67 % of base) : 16509.dasm - SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[short]:Pin(int):System.Buffers.MemoryHandle:this (FullOpts)
-12 (-15.79 % of base) : 23634.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENestedNamespaceSymbol:EnsureAllMembersLoaded():this (FullOpts)
-12 (-15.00 % of base) : 3294.dasm - System.Threading.PortableThreadPool+WorkerThread:TakeActiveRequest(System.Threading.PortableThreadPool):ubyte (FullOpts)
-14 (-14.29 % of base) : 25512.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol:IsMetadataVirtual(ubyte):ubyte:this (FullOpts)
-20 (-12.35 % of base) : 12655.dasm - <StartupCode$FSharp-Core>.$Async+Parallel@1621-3[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
-12 (-11.76 % of base) : 3321.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
-10 (-11.36 % of base) : 34806.dasm - Microsoft.ApplicationInsights.Metrics.Extensibility.MetricValuesBufferBase`1[double]:ResetIndicesAndData():this (FullOpts)
-12 (-10.71 % of base) : 16543.dasm - SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[short]:Unpin():this (FullOpts)
-10 (-10.64 % of base) : 19137.dasm - System.Collections.Concurrent.Partitioner+DynamicPartitionerForIEnumerable`1+InternalPartitionEnumerator[System.__Canon]:Dispose():this (FullOpts)
-12 (-10.53 % of base) : 19691.dasm - System.Net.Sockets.NetworkStream:Dispose(ubyte):this (FullOpts)
windows x86
Diffs are based on 2,293,451 contexts (839,658 MinOpts, 1,453,793 FullOpts).
MISSED contexts: 45 (0.00%)
No diffs found.
Details
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.windows.x86.checked.mch |
24,492 |
4 |
24,488 |
1 (0.00%) |
1 (0.00%) |
benchmarks.run_pgo.windows.x86.checked.mch |
117,805 |
41,904 |
75,901 |
2 (0.00%) |
2 (0.00%) |
benchmarks.run_tiered.windows.x86.checked.mch |
47,882 |
28,747 |
19,135 |
1 (0.00%) |
1 (0.00%) |
coreclr_tests.run.windows.x86.checked.mch |
574,647 |
319,847 |
254,800 |
21 (0.00%) |
21 (0.00%) |
libraries.crossgen2.windows.x86.checked.mch |
242,615 |
15 |
242,600 |
4 (0.00%) |
4 (0.00%) |
libraries.pmi.windows.x86.checked.mch |
305,766 |
6 |
305,760 |
7 (0.00%) |
7 (0.00%) |
libraries_tests.run.windows.x86.Release.mch |
627,828 |
427,222 |
200,606 |
5 (0.00%) |
5 (0.00%) |
librariestestsnotieredcompilation.run.windows.x86.Release.mch |
316,432 |
21,910 |
294,522 |
3 (0.00%) |
3 (0.00%) |
realworld.run.windows.x86.checked.mch |
35,984 |
3 |
35,981 |
1 (0.00%) |
1 (0.00%) |
|
2,293,451 |
839,658 |
1,453,793 |
45 (0.00%) |
45 (0.00%) |