Assembly Diffs
linux arm
Diffs are based on 2,268,941 contexts (836,977 MinOpts, 1,431,964 FullOpts).
MISSED contexts: base: 75,116 (3.20%), diff: 76,443 (3.26%)
Overall (-71,712 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.arm.checked.mch |
16,212,460 |
-822 |
benchmarks.run_pgo.linux.arm.checked.mch |
70,700,700 |
-15,306 |
benchmarks.run_tiered.linux.arm.checked.mch |
20,254,108 |
-534 |
coreclr_tests.run.linux.arm.checked.mch |
325,222,616 |
-6,656 |
libraries.crossgen2.linux.arm.checked.mch |
37,766,632 |
+510 |
libraries.pmi.linux.arm.checked.mch |
50,459,272 |
-3,008 |
libraries_tests.run.linux.arm.Release.mch |
238,899,034 |
-41,870 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch |
93,598,228 |
-3,338 |
realworld.run.linux.arm.checked.mch |
13,497,114 |
-688 |
MinOpts (+2,798 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run_pgo.linux.arm.checked.mch |
12,646,282 |
+400 |
benchmarks.run_tiered.linux.arm.checked.mch |
8,137,304 |
+252 |
coreclr_tests.run.linux.arm.checked.mch |
212,484,140 |
+784 |
libraries_tests.run.linux.arm.Release.mch |
121,970,640 |
+1,362 |
FullOpts (-74,510 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.arm.checked.mch |
15,774,288 |
-822 |
benchmarks.run_pgo.linux.arm.checked.mch |
58,054,418 |
-15,706 |
benchmarks.run_tiered.linux.arm.checked.mch |
12,116,804 |
-786 |
coreclr_tests.run.linux.arm.checked.mch |
112,738,476 |
-7,440 |
libraries.crossgen2.linux.arm.checked.mch |
37,765,402 |
+510 |
libraries.pmi.linux.arm.checked.mch |
50,353,048 |
-3,008 |
libraries_tests.run.linux.arm.Release.mch |
116,928,394 |
-43,232 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch |
83,568,466 |
-3,338 |
realworld.run.linux.arm.checked.mch |
13,063,346 |
-688 |
Example diffs
benchmarks.run.linux.arm.checked.mch
-16 (-32.00%) : 39848.dasm - System.Threading.Tests.PerfInterlocked:Decrementint():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_M52399_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_M52399_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M52399_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_M52399_IG04
- mov r1, -1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
+ dmb 15
+ ;; size=10 bbWeight=1 PerfScore 3.00
+G_M52399_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ subs r3, r1, 1
+ strex r2, r3, [r0]
+ cmp r2, 0
+ bne SHORT G_M52399_IG03
+ dmb 15
+ subs r0, r1, 1
; byrRegs -[r0]
- subs r0, r0, 1
- ;; size=26 bbWeight=1 PerfScore 9.00
-G_M52399_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M52399_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_M52399_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 50, prolog size 6, PerfScore 12.00, instruction count 17, allocated bytes for code 50 (MethodHash=3b923350) for method System.Threading.Tests.Perf_Interlocked:Decrement_int():int:this (FullOpts)
+; Total bytes of code 34, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 34 (MethodHash=3b923350) for method System.Threading.Tests.Perf_Interlocked:Decrement_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 : 25 (0x00019) Actual length = 50 (0x000032)
- ---- 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 : 17 (0x00011) Actual length = 34 (0x000022)
+ --- 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
-14 (-29.17%) : 43339.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>
+ dmb 15
+ ;; size=10 bbWeight=1 PerfScore 3.00
+G_M13801_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ adds r3, r1, 2
+ strex r2, r3, [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 34, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 34 (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 : 17 (0x00011) Actual length = 34 (0x000022)
+ --- 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
-14 (-29.17%) : 39628.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>
+ dmb 15
+ ;; size=10 bbWeight=1 PerfScore 3.00
+G_M31305_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ adds r3, r1, 1
+ strex r2, r3, [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 34, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 34 (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 : 17 (0x00011) Actual length = 34 (0x000022)
+ --- 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 (+15.79%) : 24126.dasm - System.Threading.Tests.Perf_SpinLock:EnterExit():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,50 @@ G_M27329_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=16 bbWeight=1 PerfScore 6.00
G_M27329_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_M27329_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_M27329_IG08
;; size=14 bbWeight=1 PerfScore 6.00
G_M27329_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_M27329_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_M27329_IG04
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ ands r2, r0
+ cmp r2, 0x80000000
+ bne SHORT G_M27329_IG08
+ add r2, sp, 4 // [V10 tmp7]
+ ; byrRegs +[r2]
+ orr r1, r0, 1
+ dmb 15
+ ;; size=26 bbWeight=0.50 PerfScore 4.00
+G_M27329_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {r2}, byref, isz
+ ldrex lr, [r2]
+ cmp lr, r0
+ bne SHORT G_M27329_IG05
+ strex r3, r1, [r2]
+ cmp r3, 0
+ bne SHORT G_M27329_IG04
+ ;; size=16 bbWeight=0.50 PerfScore 3.00
+G_M27329_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {r2}, byref, isz
+ dmb 15
+ cmp lr, r0
+ beq SHORT G_M27329_IG06
movs r2, 0
- b SHORT G_M27329_IG05
- ;; size=42 bbWeight=0.50 PerfScore 7.50
-G_M27329_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r2]
+ b SHORT G_M27329_IG07
+ ;; size=12 bbWeight=0.50 PerfScore 2.50
+G_M27329_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r2, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M27329_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M27329_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
str r2, [sp] // [V02 loc1]
- cmp r0, r4
- beq SHORT G_M27329_IG07
+ cmp lr, r0
+ beq SHORT G_M27329_IG09
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M27329_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M27329_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add r0, sp, 4 // [V01 loc0]
add r2, sp, 0 // [V02 loc1]
mov r1, -1
@@ -77,43 +86,57 @@ G_M27329_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr r3, [r3]
blx r3 // <unknown method>
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M27329_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x04] // [V11 tmp8]
+G_M27329_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_M27329_IG09
+ bne SHORT G_M27329_IG12
;; size=10 bbWeight=1 PerfScore 4.00
-G_M27329_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x04] // [V11 tmp8]
+G_M27329_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_M27329_IG12
- add r0, sp, 4 // [V11 tmp8]
- movs r1, 0
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- b SHORT G_M27329_IG10
- ;; size=40 bbWeight=0.50 PerfScore 7.00
-G_M27329_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_M27329_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bne SHORT G_M27329_IG16
+ add r0, sp, 4 // [V10 tmp7]
+ ; byrRegs +[r0]
+ movs r3, 0
+ dmb 15
+ ;; size=32 bbWeight=0.50 PerfScore 5.50
+G_M27329_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ strex r2, r3, [r0]
+ cmp r2, 0
+ bne SHORT G_M27329_IG11
+ dmb 15
+ b SHORT G_M27329_IG14
+ ;; size=18 bbWeight=0.50 PerfScore 3.00
+G_M27329_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r0]
+ add r0, sp, 4 // [V10 tmp7]
+ ; byrRegs +[r0]
+ dmb 15
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M27329_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ subs r3, r1, 1
+ strex r2, r3, [r0]
+ cmp r2, 0
+ bne SHORT G_M27329_IG13
+ dmb 15
+ ;; size=18 bbWeight=0.50 PerfScore 3.00
+G_M27329_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r0]
ldrb r0, [sp] // [V02 loc1]
;; size=4 bbWeight=1 PerfScore 1.00
-G_M27329_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M27329_IG15: ; bbWeight=1, epilog, nogc, extend
add sp, 12
pop {r4,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M27329_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M27329_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -121,7 +144,7 @@ G_M27329_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 190, prolog size 16, PerfScore 41.50, instruction count 69, allocated bytes for code 190 (MethodHash=7427953e) for method System.Threading.Tests.Perf_SpinLock:EnterExit():ubyte:this (FullOpts)
+; Total bytes of code 220, prolog size 16, PerfScore 46.50, instruction count 79, allocated bytes for code 220 (MethodHash=7427953e) for method System.Threading.Tests.Perf_SpinLock:EnterExit():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -133,7 +156,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 95 (0x0005f) Actual length = 190 (0x0000be)
+ Function Length : 110 (0x0006e) Actual length = 220 (0x0000dc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+30 (+15.96%) : 25078.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,50 @@ 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
+ dmb 15
+ ;; size=26 bbWeight=0.50 PerfScore 4.00
+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 r3, 0
+ bne SHORT G_M62046_IG04
+ ;; size=16 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 +86,57 @@ 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
+ dmb 15
+ ;; size=32 bbWeight=0.50 PerfScore 5.50
+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]
+ dmb 15
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M62046_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ subs r3, r1, 1
+ strex r2, r3, [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 +144,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 218, prolog size 16, PerfScore 46.50, instruction count 79, allocated bytes for code 218 (MethodHash=c5c10da1) for method System.Threading.Tests.Perf_SpinLock:TryEnterExit():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -133,7 +156,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 94 (0x0005e) Actual length = 188 (0x0000bc)
+ Function Length : 109 (0x0006d) Actual length = 218 (0x0000da)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+19.05%) : 9373.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
+ dmb 15
+ ;; size=4 bbWeight=8 PerfScore 8.00
+G_M34283_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ adds r3, r1, 1
+ strex r2, r3, [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 50, prolog size 6, PerfScore 86.00, instruction count 16, allocated bytes for code 50 (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 : 25 (0x00019) Actual length = 50 (0x000032)
--- 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
benchmarks.run_pgo.linux.arm.checked.mch
-16 (-36.36%) : 18317.dasm - System.Threading.Interlocked:Decrement(byref):int (Tier1)
@@ -2,64 +2,55 @@
; 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; 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
+; V00 arg0 [V00,T00] ( 3, 3 ) byref -> r0 single-def
;# 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_M7936_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_M7936_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M7936_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M7936_IG04
- mov r1, -1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- subs r0, r0, 1
- ;; size=20 bbWeight=1 PerfScore 7.00
-G_M7936_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,pc}
+ dmb 15
;; size=4 bbWeight=1 PerfScore 1.00
-G_M7936_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
+G_M7936_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ subs r3, r1, 1
+ strex r2, r3, [r0]
+ cmp r2, 0
+ bne SHORT G_M7936_IG03
+ dmb 15
+ subs r0, r1, 1
+ ; byrRegs -[r0]
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M7936_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=b7f6e0ff) for method System.Threading.Interlocked:Decrement(byref):int (Tier1)
+; Total bytes of code 28, prolog size 2, PerfScore 10.00, instruction count 10, allocated bytes for code 28 (MethodHash=b7f6e0ff) for method System.Threading.Interlocked:Decrement(byref):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 : 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
-26 (-34.21%) : 36518.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
@@ -3,69 +3,53 @@
; 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
+ dmb 15
+ ;; size=8 bbWeight=1 PerfScore 3.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 50, prolog size 2, PerfScore 12.00, instruction count 18, allocated bytes for code 50 (MethodHash=522df092) for method System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
; ============================================================
Unwind Info:
@@ -77,7 +61,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -89,11 +73,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
-26 (-34.21%) : 130958.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
@@ -3,69 +3,53 @@
; 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 16210
-; 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
+ dmb 15
+ ;; size=8 bbWeight=1 PerfScore 3.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 50, prolog size 2, PerfScore 12.00, instruction count 18, allocated bytes for code 50 (MethodHash=522df092) for method System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
; ============================================================
Unwind Info:
@@ -77,7 +61,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -89,11 +73,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
+10 (+27.78%) : 12300.dasm - System.Threading.Interlocked:Add(byref,int):int (Instrumented Tier0)
@@ -18,22 +18,27 @@ G_M51449_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str r1, [sp]
;; size=12 bbWeight=1 PerfScore 4.00
G_M51449_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r0, [sp+0x04]
- ; byrRegs +[r0]
- ldr r1, [sp]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ; byrRegs -[r0]
+ ldr r3, [sp+0x04]
+ ; byrRegs +[r3]
+ ldr r2, [sp]
+ dmb 15
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M51449_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ldrex r4, [r3]
+ adds r1, r4, r2
+ strex r0, r1, [r3]
+ cmp r0, 0
+ bne SHORT G_M51449_IG03
+ dmb 15
ldr r3, [sp]
- adds r0, r0, r3
- ;; size=20 bbWeight=1 PerfScore 8.00
-G_M51449_IG03: ; bbWeight=1, epilog, nogc, extend
+ ; byrRegs -[r3]
+ adds r0, r4, r3
+ ;; size=22 bbWeight=1 PerfScore 8.00
+G_M51449_IG04: ; bbWeight=1, epilog, nogc, extend
pop {r2,r3,r4,r10,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 36, prolog size 8, PerfScore 13.00, instruction count 13, allocated bytes for code 36 (MethodHash=c2693706) for method System.Threading.Interlocked:Add(byref,int):int (Instrumented Tier0)
+; Total bytes of code 46, prolog size 8, PerfScore 16.00, instruction count 16, allocated bytes for code 46 (MethodHash=c2693706) for method System.Threading.Interlocked:Add(byref,int):int (Instrumented Tier0)
; ============================================================
Unwind Info:
@@ -45,7 +50,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 18 (0x00012) Actual length = 36 (0x000024)
+ Function Length : 23 (0x00017) Actual length = 46 (0x00002e)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+14 (+35.00%) : 241.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)
@@ -21,22 +21,30 @@ 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]
+ dmb 15
+ ;; size=10 bbWeight=1 PerfScore 4.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 r0, 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 54, prolog size 10, PerfScore 20.00, instruction count 20, allocated bytes for code 54 (MethodHash=599f15c4) for method System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)
; ============================================================
Unwind Info:
@@ -48,7 +56,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 40 (0x000028)
+ Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+14 (+35.00%) : 1036.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Instrumented Tier0)
@@ -21,22 +21,30 @@ 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]
+ dmb 15
+ ;; size=10 bbWeight=1 PerfScore 4.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 r0, 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 54, prolog size 10, PerfScore 20.00, instruction count 20, allocated bytes for code 54 (MethodHash=599f15c4) for method System.Threading.Interlocked:CompareExchange(byref,int,int):int (Instrumented Tier0)
; ============================================================
Unwind Info:
@@ -48,7 +56,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 40 (0x000028)
+ Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
benchmarks.run_tiered.linux.arm.checked.mch
-16 (-36.36%) : 5339.dasm - System.Threading.Interlocked:Decrement(byref):int (Tier1)
@@ -2,64 +2,55 @@
; 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; 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
+; V00 arg0 [V00,T00] ( 3, 3 ) byref -> r0 single-def
;# 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_M7936_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_M7936_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M7936_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M7936_IG04
- mov r1, -1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- subs r0, r0, 1
- ;; size=20 bbWeight=1 PerfScore 7.00
-G_M7936_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,pc}
+ dmb 15
;; size=4 bbWeight=1 PerfScore 1.00
-G_M7936_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
+G_M7936_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ subs r3, r1, 1
+ strex r2, r3, [r0]
+ cmp r2, 0
+ bne SHORT G_M7936_IG03
+ dmb 15
+ subs r0, r1, 1
+ ; byrRegs -[r0]
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M7936_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=b7f6e0ff) for method System.Threading.Interlocked:Decrement(byref):int (Tier1)
+; Total bytes of code 28, prolog size 2, PerfScore 10.00, instruction count 10, allocated bytes for code 28 (MethodHash=b7f6e0ff) for method System.Threading.Interlocked:Decrement(byref):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 : 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
-26 (-34.21%) : 25422.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
@@ -2,68 +2,54 @@
; 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
+ dmb 15
+ ;; size=8 bbWeight=1 PerfScore 3.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 50, prolog size 2, PerfScore 14.50, instruction count 18, allocated bytes for code 50 (MethodHash=522df092) for method System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
; ============================================================
Unwind Info:
@@ -75,7 +61,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -87,11 +73,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
-14 (-33.33%) : 5317.dasm - System.Threading.Interlocked:Increment(byref):int (Tier1)
@@ -2,64 +2,55 @@
; 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; 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
+; V00 arg0 [V00,T00] ( 3, 3 ) byref -> r0 single-def
;# 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_M15654_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_M15654_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M15654_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M15654_IG04
- movs r1, 1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- adds r0, r0, 1
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M15654_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,pc}
+ dmb 15
;; size=4 bbWeight=1 PerfScore 1.00
-G_M15654_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
+G_M15654_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ adds r3, r1, 1
+ strex r2, r3, [r0]
+ cmp r2, 0
+ bne SHORT G_M15654_IG03
+ dmb 15
+ adds r0, r1, 1
+ ; byrRegs -[r0]
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M15654_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=3af8c2d9) for method System.Threading.Interlocked:Increment(byref):int (Tier1)
+; Total bytes of code 28, prolog size 2, PerfScore 10.00, instruction count 10, allocated bytes for code 28 (MethodHash=3af8c2d9) for method System.Threading.Interlocked:Increment(byref):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 : 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 : 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
+8 (+25.00%) : 3810.dasm - System.Threading.Interlocked:Exchange(byref,int):int (Tier0)
@@ -18,20 +18,23 @@ G_M7811_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str r1, [sp]
;; size=12 bbWeight=1 PerfScore 4.00
G_M7811_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r0, [sp+0x04]
- ; byrRegs +[r0]
- ldr r1, [sp]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- ;; size=16 bbWeight=1 PerfScore 6.00
-G_M7811_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr r3, [sp+0x04]
+ ; byrRegs +[r3]
+ ldr r2, [sp]
+ dmb 15
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M7811_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ldrex r0, [r3]
+ strex r1, r2, [r3]
+ cmp r1, 0
+ bne SHORT G_M7811_IG03
+ dmb 15
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M7811_IG04: ; 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=911fe17c) for method System.Threading.Interlocked:Exchange(byref,int):int (Tier0)
+; Total bytes of code 40, prolog size 8, PerfScore 13.00, instruction count 13, allocated bytes for code 40 (MethodHash=911fe17c) for method System.Threading.Interlocked:Exchange(byref,int):int (Tier0)
; ============================================================
Unwind Info:
@@ -43,7 +46,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 16 (0x00010) Actual length = 32 (0x000020)
+ Function Length : 20 (0x00014) Actual length = 40 (0x000028)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+10 (+27.78%) : 3520.dasm - System.Threading.Interlocked:Add(byref,int):int (Tier0)
@@ -18,22 +18,27 @@ G_M51449_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str r1, [sp]
;; size=12 bbWeight=1 PerfScore 4.00
G_M51449_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r0, [sp+0x04]
- ; byrRegs +[r0]
- ldr r1, [sp]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // <unknown method>
- ; byrRegs -[r0]
+ ldr r3, [sp+0x04]
+ ; byrRegs +[r3]
+ ldr r2, [sp]
+ dmb 15
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M51449_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ldrex r4, [r3]
+ adds r1, r4, r2
+ strex r0, r1, [r3]
+ cmp r0, 0
+ bne SHORT G_M51449_IG03
+ dmb 15
ldr r3, [sp]
- adds r0, r0, r3
- ;; size=20 bbWeight=1 PerfScore 8.00
-G_M51449_IG03: ; bbWeight=1, epilog, nogc, extend
+ ; byrRegs -[r3]
+ adds r0, r4, r3
+ ;; size=22 bbWeight=1 PerfScore 8.00
+G_M51449_IG04: ; bbWeight=1, epilog, nogc, extend
pop {r2,r3,r4,r10,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 36, prolog size 8, PerfScore 13.00, instruction count 13, allocated bytes for code 36 (MethodHash=c2693706) for method System.Threading.Interlocked:Add(byref,int):int (Tier0)
+; Total bytes of code 46, prolog size 8, PerfScore 16.00, instruction count 16, allocated bytes for code 46 (MethodHash=c2693706) for method System.Threading.Interlocked:Add(byref,int):int (Tier0)
; ============================================================
Unwind Info:
@@ -45,7 +50,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 18 (0x00012) Actual length = 36 (0x000024)
+ Function Length : 23 (0x00017) Actual length = 46 (0x00002e)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+14 (+35.00%) : 230.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)
@@ -21,22 +21,30 @@ 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]
+ dmb 15
+ ;; size=10 bbWeight=1 PerfScore 4.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 r0, 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 54, prolog size 10, PerfScore 20.00, instruction count 20, allocated bytes for code 54 (MethodHash=599f15c4) for method System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)
; ============================================================
Unwind Info:
@@ -48,7 +56,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 40 (0x000028)
+ Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
coreclr_tests.run.linux.arm.checked.mch
-26 (-34.21%) : 211125.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
@@ -3,69 +3,53 @@
; 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 16
-; 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
+ dmb 15
+ ;; size=8 bbWeight=1 PerfScore 3.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 50, prolog size 2, PerfScore 12.00, instruction count 18, allocated bytes for code 50 (MethodHash=522df092) for method System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
; ============================================================
Unwind Info:
@@ -77,7 +61,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -89,11 +73,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
-26 (-34.21%) : 213293.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
@@ -3,69 +3,53 @@
; 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 76
-; 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
+ dmb 15
+ ;; size=8 bbWeight=1 PerfScore 3.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 50, prolog size 2, PerfScore 12.00, instruction count 18, allocated bytes for code 50 (MethodHash=522df092) for method System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
; ============================================================
Unwind Info:
@@ -77,7 +61,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -89,11 +73,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
-26 (-34.21%) : 274993.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
@@ -3,69 +3,53 @@
; 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 8
-; 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
+ dmb 15
+ ;; size=8 bbWeight=1 PerfScore 3.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 50, prolog size 2, PerfScore 12.00, instruction count 18, allocated bytes for code 50 (MethodHash=522df092) for method System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
; ============================================================
Unwind Info:
@@ -77,7 +61,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -89,11 +73,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
+14 (+87.50%) : 399836.dasm - InterlockedTest.Program+<>c:b_111():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,28 @@
;
; Lcl frame size = 4
-G_M14741_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M14741_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,lr}
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M14741_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_M14741_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movs r3, 0
+ movs r2, 0
+ dmb 15
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M14741_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ; byrRegs +[r3]
+ ldrexh r0, [r3]
+ strexh r1, r2, [r3]
+ cmp r1, 0
+ bne SHORT G_M14741_IG03
+ dmb 15
+ sxth r0, r0
+ ;; size=18 bbWeight=1 PerfScore 6.00
+G_M14741_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=8b63c66a) for method InterlockedTest.Program+<>c:<TestEntryPoint>b__1_11():this (FullOpts)
+; Total bytes of code 30, prolog size 2, PerfScore 11.00, instruction count 11, allocated bytes for code 30 (MethodHash=8b63c66a) for method InterlockedTest.Program+<>c:<TestEntryPoint>b__1_11():this (FullOpts)
; ============================================================
Unwind Info:
@@ -34,13 +42,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 : 15 (0x0000f) Actual length = 30 (0x00001e)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
+ ---- Epilog start at index 0 ----
ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
+16 (+100.00%) : 399839.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,31 @@
;
; 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
+ dmb 15
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M36336_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ; byrRegs +[r3]
+ ldrexb r0, [r3]
+ cbnz r0, SHORT G_M36336_IG04
+ strexb r1, r2, [r3]
+ cmp r1, 0
+ bne SHORT G_M36336_IG03
+ ;; size=14 bbWeight=1 PerfScore 5.00
+G_M36336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+ dmb 15
+ sxtb r0, r0
+ ;; size=6 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 32, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 32 (MethodHash=b8c3720f) for method InterlockedTest.Program+<>c:<TestEntryPoint>b__1_14():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
+16 (+100.00%) : 399840.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,31 @@
;
; 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
+ dmb 15
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M10769_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ; byrRegs +[r3]
+ ldrexh r0, [r3]
+ cbnz r0, SHORT G_M10769_IG04
+ strexh r1, r2, [r3]
+ cmp r1, 0
+ bne SHORT G_M10769_IG03
+ ;; size=14 bbWeight=1 PerfScore 5.00
+G_M10769_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+ dmb 15
+ sxth r0, r0
+ ;; size=6 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 32, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 32 (MethodHash=da60d5ee) for method InterlockedTest.Program+<>c:<TestEntryPoint>b__1_15():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
libraries.crossgen2.linux.arm.checked.mch
-24 (-46.15%) : 5870.dasm - System.Threading.Interlocked:Decrement(byref):int (FullOpts)
@@ -3,67 +3,55 @@
; 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
+; V00 arg0 [V00,T00] ( 3, 3 ) byref -> r0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 4
G_M7936_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_M7936_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M7936_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M7936_IG04
- movw r4, LOW RELOC 0xD1FFAB1E
- movt r4, HIGH RELOC 0xD1FFAB1E
- add r4, pc
- mov r1, -1
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- subs r0, r0, 1
- ;; size=24 bbWeight=1 PerfScore 9.00
-G_M7936_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r3,r4,r11,pc}
+ dmb 15
;; size=4 bbWeight=1 PerfScore 1.00
-G_M7936_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
+G_M7936_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ subs r3, r1, 1
+ strex r2, r3, [r0]
+ cmp r2, 0
+ bne SHORT G_M7936_IG03
+ dmb 15
+ subs r0, r1, 1
+ ; byrRegs -[r0]
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M7936_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 12.00, instruction count 18, allocated bytes for code 52 (MethodHash=b7f6e0ff) for method System.Threading.Interlocked:Decrement(byref):int (FullOpts)
+; Total bytes of code 28, prolog size 2, PerfScore 10.00, instruction count 10, allocated bytes for code 28 (MethodHash=b7f6e0ff) for method System.Threading.Interlocked:Decrement(byref):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 : 14 (0x0000e) Actual length = 28 (0x00001c)
+ --- 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
-24 (-46.15%) : 5888.dasm - System.Threading.Interlocked:Decrement(byref):uint (FullOpts)
@@ -3,67 +3,55 @@
; 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
+; V00 arg0 [V00,T00] ( 3, 3 ) byref -> r0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 4
G_M20501_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_M20501_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M20501_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M20501_IG04
- movw r4, LOW RELOC 0xD1FFAB1E
- movt r4, HIGH RELOC 0xD1FFAB1E
- add r4, pc
- mov r1, -1
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- subs r0, r0, 1
- ;; size=24 bbWeight=1 PerfScore 9.00
-G_M20501_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r3,r4,r11,pc}
+ dmb 15
;; size=4 bbWeight=1 PerfScore 1.00
-G_M20501_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
+G_M20501_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ subs r3, r1, 1
+ strex r2, r3, [r0]
+ cmp r2, 0
+ bne SHORT G_M20501_IG03
+ dmb 15
+ subs r0, r1, 1
+ ; byrRegs -[r0]
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M20501_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 12.00, instruction count 18, allocated bytes for code 52 (MethodHash=b6ddafea) for method System.Threading.Interlocked:Decrement(byref):uint (FullOpts)
+; Total bytes of code 28, prolog size 2, PerfScore 10.00, instruction count 10, allocated bytes for code 28 (MethodHash=b6ddafea) for method System.Threading.Interlocked:Decrement(byref):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 : 14 (0x0000e) Actual length = 28 (0x00001c)
+ --- 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 (-44.00%) : 5886.dasm - System.Threading.Interlocked:Increment(byref):uint (FullOpts)
@@ -3,67 +3,55 @@
; FullOpts code
; ReadyToRun compilation
; 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 arg0 [V00,T00] ( 4, 4 ) byref -> r0 single-def
+; V00 arg0 [V00,T00] ( 3, 3 ) byref -> r0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 4
G_M57779_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_M57779_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M57779_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M57779_IG04
- movw r4, LOW RELOC 0xD1FFAB1E
- movt r4, HIGH RELOC 0xD1FFAB1E
- add r4, pc
- movs r1, 1
- ldr r3, [r4]
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- adds r0, r0, 1
- ;; size=22 bbWeight=1 PerfScore 9.00
-G_M57779_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r3,r4,r11,pc}
+ dmb 15
;; size=4 bbWeight=1 PerfScore 1.00
-G_M57779_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
+G_M57779_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ adds r3, r1, 1
+ strex r2, r3, [r0]
+ cmp r2, 0
+ bne SHORT G_M57779_IG03
+ dmb 15
+ adds r0, r1, 1
+ ; byrRegs -[r0]
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M57779_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 50, prolog size 8, PerfScore 12.00, instruction count 18, allocated bytes for code 50 (MethodHash=9a201e4c) for method System.Threading.Interlocked:Increment(byref):uint (FullOpts)
+; Total bytes of code 28, prolog size 2, PerfScore 10.00, instruction count 10, allocated bytes for code 28 (MethodHash=9a201e4c) for method System.Threading.Interlocked:Increment(byref):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 : 25 (0x00019) Actual length = 50 (0x000032)
- ---- 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 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
+8 (+18.18%) : 150221.dasm - System.Net.LazyAsyncResult:get_CompletedSynchronously():ubyte:this (FullOpts)
@@ -9,49 +9,53 @@
; 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
+ dmb 15
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M21063_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ldrex r1, [r3]
+ cbnz r1, SHORT G_M21063_IG05
+ strex r2, r0, [r3]
+ cmp r2, 0
+ bne SHORT G_M21063_IG04
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M21063_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+ dmb 15
+ mov r3, r1
+ ; 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 52, prolog size 2, PerfScore 15.00, instruction count 20, allocated bytes for code 52 (MethodHash=d964adb8) for method System.Net.LazyAsyncResult:get_CompletedSynchronously():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -63,11 +67,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 22 (0x00016) Actual length = 44 (0x00002c)
+ Function Length : 26 (0x0001a) Actual length = 52 (0x000034)
--- 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
+8 (+18.18%) : 144476.dasm - System.Net.LazyAsyncResult:get_CompletedSynchronously():ubyte:this (FullOpts)
@@ -9,49 +9,53 @@
; 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
+ dmb 15
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M21063_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ldrex r1, [r3]
+ cbnz r1, SHORT G_M21063_IG05
+ strex r2, r0, [r3]
+ cmp r2, 0
+ bne SHORT G_M21063_IG04
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M21063_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+ dmb 15
+ mov r3, r1
+ ; 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 52, prolog size 2, PerfScore 15.00, instruction count 20, allocated bytes for code 52 (MethodHash=d964adb8) for method System.Net.LazyAsyncResult:get_CompletedSynchronously():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -63,11 +67,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 22 (0x00016) Actual length = 44 (0x00002c)
+ Function Length : 26 (0x0001a) Actual length = 52 (0x000034)
--- 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
+8 (+28.57%) : 74290.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.EmbeddedSymbolManager:SealCollection():this (FullOpts)
@@ -11,32 +11,35 @@
; 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
+ dmb 15
+ ;; size=14 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 r0, [r3]
+ cbnz r0, SHORT G_M42395_IG04
+ strex r1, r2, [r3]
+ cmp r1, 0
+ bne SHORT G_M42395_IG03
+ ;; size=14 bbWeight=1 PerfScore 5.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 36, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 36 (MethodHash=61665a64) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.EmbeddedSymbolManager:SealCollection():this (FullOpts)
; ============================================================
Unwind Info:
@@ -48,12 +51,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 28 (0x00001c)
+ Function Length : 18 (0x00012) Actual length = 36 (0x000024)
--- 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
-20 (-34.48%) : 243230.dasm - Roslyn.Utilities.InterlockedOperations:GetOrStore(byref,int,int):int (FullOpts)
@@ -2,57 +2,54 @@
; 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 arg0 [V00,T00] ( 4, 4 ) byref -> r0 single-def
-; V01 arg1 [V01,T02] ( 4, 3.50) int -> r5 single-def
-; V02 arg2 [V02,T01] ( 4, 4 ) int -> r4 single-def
-; V03 loc0 [V03,T03] ( 3, 2.50) int -> r0 single-def
+; V00 arg0 [V00,T02] ( 3, 3 ) byref -> r0 single-def
+; V01 arg1 [V01,T01] ( 4, 3.50) int -> r1 single-def
+; V02 arg2 [V02,T00] ( 4, 4 ) int -> r2 single-def
+; V03 loc0 [V03,T03] ( 3, 2.50) int -> lr single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
-G_M19757_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- add r11, sp, 8
- mov r5, r1
- mov r4, r2
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M19757_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+G_M19757_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_M19757_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M19757_IG06
- mov r1, r5
- mov r2, r4
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
+ dmb 15
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M19757_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex lr, [r0]
+ cmp lr, r2
+ bne SHORT G_M19757_IG04
+ strex r3, r1, [r0]
+ cmp r3, 0
+ bne SHORT G_M19757_IG03
+ ;; size=16 bbWeight=1 PerfScore 6.00
+G_M19757_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ dmb 15
+ cmp lr, r2
+ beq SHORT G_M19757_IG07
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M19757_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r0]
- cmp r0, r4
- beq SHORT G_M19757_IG04
- ;; size=22 bbWeight=1 PerfScore 9.00
-G_M19757_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop {r4,r5,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M19757_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov r0, r5
+ mov r0, lr
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M19757_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r3,pc}
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M19757_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov r0, r1
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M19757_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r3,pc}
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M19757_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop {r4,r5,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M19757_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()
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 58, prolog size 8, PerfScore 14.50, instruction count 21, allocated bytes for code 58 (MethodHash=1013b2d2) for method Roslyn.Utilities.InterlockedOperations:GetOrStore(byref,int,int):int (FullOpts)
+; Total bytes of code 38, prolog size 2, PerfScore 13.00, instruction count 15, allocated bytes for code 38 (MethodHash=1013b2d2) for method Roslyn.Utilities.InterlockedOperations:GetOrStore(byref,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -64,7 +61,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 29 (0x0001d) Actual length = 58 (0x00003a)
+ 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)
@@ -76,7 +73,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
-36 (-30.00%) : 203123.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:CreateEvaluationBuildEventContext(int,int):Microsoft.Build.Framework.BuildEventContext:this (FullOpts)
@@ -2,101 +2,84 @@
; 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; 5 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 4, 4 ) ref -> r0 this class-hnd single-def <Microsoft.Build.BackEnd.Logging.LoggingService>
-; V01 arg1 [V01,T04] ( 3, 3 ) int -> r4 single-def
-; V02 arg2 [V02,T05] ( 3, 3 ) int -> r5 single-def
+; V01 arg1 [V01,T03] ( 3, 3 ) int -> r4 single-def
+; V02 arg2 [V02,T04] ( 3, 3 ) int -> r5 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 9, 18 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <Microsoft.Build.Framework.BuildEventContext>
-; V05 tmp2 [V05,T02] ( 3, 6 ) byref -> r6 single-def "impAppendStmt"
-; V06 tmp3 [V06,T03] ( 3, 6 ) int -> r7 "Inlining Arg"
-; V07 tmp4 [V07,T06] ( 2, 4 ) int -> r0 "Inlining Arg"
+; V04 tmp1 [V04,T00] ( 9, 18 ) ref -> r0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.Build.Framework.BuildEventContext>
+; V05 tmp2 [V05,T05] ( 2, 4 ) byref -> r6 single-def "impAppendStmt"
+; V06 tmp3 [V06,T02] ( 3, 6 ) int -> r7 "Inlining Arg"
+; V07 tmp4 [V07,T06] ( 2, 4 ) int -> r3 "Inlining Arg"
;
; Lcl frame size = 4
G_M19602_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,r6,r7,r8,r11,lr}
- add r11, sp, 24
+ push {r3,r4,r5,r6,r7,lr}
mov r4, r1
mov r5, r2
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M19602_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ;; size=6 bbWeight=1 PerfScore 3.00
+G_M19602_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
add r6, r0, 120
; byrRegs +[r6]
ldr r0, [r0+0x74]
; gcrRegs -[r0]
adds r7, r0, 2
- cmp r6, 0
- beq SHORT G_M19602_IG04
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_NEWSFAST
; gcrRegs +[r0]
- mov r8, r0
- ; gcrRegs +[r8]
- mov r0, r6
- ; gcrRegs -[r0]
- ; byrRegs +[r0]
- mov r1, r7
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0 r6]
- adds r0, r0, r7
- str r5, [r8+0x18]
- str r4, [r8+0x04]
- str r0, [r8+0x1C]
- mov r0, -1
- str r0, [r8+0x08]
- mvn r0, 1
- str r0, [r8+0x0C]
- mov r0, -1
- str r0, [r8+0x10]
- str r0, [r8+0x14]
- mov r0, r8
- ; gcrRegs +[r0]
- ;; size=90 bbWeight=1 PerfScore 28.00
-G_M19602_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r3,r4,r5,r6,r7,r8,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M19602_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0 r8]
- 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
+ dmb 15
+ ;; size=30 bbWeight=1 PerfScore 9.00
+G_M19602_IG03: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0040 {r6}, byref, isz
+ ldrex r1, [r6]
+ adds r3, r1, r7
+ strex r2, r3, [r6]
+ cmp r2, 0
+ bne SHORT G_M19602_IG03
+ dmb 15
+ adds r3, r1, r7
+ str r5, [r0+0x18]
+ str r4, [r0+0x04]
+ str r3, [r0+0x1C]
+ mov r3, -1
+ str r3, [r0+0x08]
+ mvn r3, 1
+ str r3, [r0+0x0C]
+ mov r3, -1
+ str r3, [r0+0x10]
+ str r3, [r0+0x14]
+ ;; size=46 bbWeight=1 PerfScore 17.00
+G_M19602_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,r4,r5,r6,r7,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 120, prolog size 8, PerfScore 33.00, instruction count 38, allocated bytes for code 120 (MethodHash=aa0eb36d) for method Microsoft.Build.BackEnd.Logging.LoggingService:CreateEvaluationBuildEventContext(int,int):Microsoft.Build.Framework.BuildEventContext:this (FullOpts)
+; Total bytes of code 84, prolog size 2, PerfScore 30.00, instruction count 30, allocated bytes for code 84 (MethodHash=aa0eb36d) for method Microsoft.Build.BackEnd.Logging.LoggingService:CreateEvaluationBuildEventContext(int,int):Microsoft.Build.Framework.BuildEventContext: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 : 60 (0x0003c) Actual length = 120 (0x000078)
- ---- 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 : 42 (0x0002a) Actual length = 84 (0x000054)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A9 F8 pop {r3,r4,r5,r6,r7,r8,r11,lr} ; opsize 32
+ ED F8 pop {r3,r4,r5,r6,r7,lr} ; opsize 16
FF end
FF end
-16 (-29.63%) : 203042.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:get_NextEvaluationId():int:this (FullOpts)
@@ -2,74 +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; 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
+ adds r0, r0, 2
+ dmb 15
+ ;; size=12 bbWeight=1 PerfScore 4.00
+G_M35322_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+ ldrex lr, [r3]
+ add r2, lr, r0
+ strex r1, r2, [r3]
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
+ bne SHORT G_M35322_IG03
+ dmb 15
+ add r0, lr
+ ;; size=22 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 38, prolog size 2, PerfScore 13.00, instruction count 13, allocated bytes for code 38 (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 : 19 (0x00013) Actual length = 38 (0x000026)
+ --- 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 (+21.43%) : 230622.dasm - System.ComponentModel.InterlockedBitVector32:set_Item(int,ubyte):this (FullOpts)
@@ -5,88 +5,94 @@
; r11 based frame
; fully interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 6, 11 ) byref -> r4 this single-def
-; V01 arg1 [V01,T05] ( 4, 6.50) int -> r5 single-def
-; V02 arg2 [V02,T08] ( 3, 3 ) ubyte -> r2 single-def
+; V00 this [V00,T02] ( 6, 11 ) byref -> r0 this single-def
+; V01 arg1 [V01,T05] ( 4, 6.50) int -> r1 single-def
+; V02 arg2 [V02,T06] ( 3, 3 ) ubyte -> r2 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T10] ( 2, 2 ) byref -> r0 single-def "Inlining Arg"
-; V05 tmp2 [V05,T00] ( 5, 16.50) int -> r6 "Inline stloc first use temp"
-; V06 tmp3 [V06,T06] ( 2, 8 ) int -> r1 "Inline stloc first use temp"
-; V07 tmp4 [V07,T03] ( 3, 12 ) int -> r0 "Inline stloc first use temp"
-; V08 tmp5 [V08,T11] ( 2, 2 ) byref -> r0 single-def "Inlining Arg"
-; V09 tmp6 [V09,T01] ( 5, 16.50) int -> r6 "Inline stloc first use temp"
+; V04 tmp1 [V04,T08] ( 2, 2 ) byref -> r3 single-def "Inlining Arg"
+; V05 tmp2 [V05,T00] ( 5, 16.50) int -> r3 "Inline stloc first use temp"
+;* V06 tmp3 [V06 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V07 tmp4 [V07,T03] ( 3, 12 ) int -> r12 "Inline stloc first use temp"
+; V08 tmp5 [V08,T09] ( 2, 2 ) byref -> r3 single-def "Inlining Arg"
+; V09 tmp6 [V09,T01] ( 5, 16.50) int -> r3 "Inline stloc first use temp"
;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V11 tmp8 [V11,T07] ( 2, 8 ) int -> r1 "Inline stloc first use temp"
-; V12 tmp9 [V12,T04] ( 3, 12 ) int -> r0 "Inline stloc first use temp"
-; V13 cse0 [V13,T09] ( 2, 4.50) int -> r5 hoist "CSE - aggressive"
+;* V11 tmp8 [V11 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V12 tmp9 [V12,T04] ( 3, 12 ) int -> r12 "Inline stloc first use temp"
+; V13 cse0 [V13,T07] ( 2, 4.50) int -> r2 hoist "CSE - aggressive"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M16025_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,r6,r11,lr}
- add r11, sp, 16
- mov r4, r0
- ; byrRegs +[r4]
- mov r5, r1
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M16025_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
- uxtb r0, r2
- cmp r0, 0
- beq SHORT G_M16025_IG06
+ push {r11,lr}
+ mov r11, sp
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M16025_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ; byrRegs +[r0]
+ uxtb r3, r2
+ cmp r3, 0
+ beq SHORT G_M16025_IG08
;; size=6 bbWeight=1 PerfScore 3.00
-G_M16025_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
- mov r0, r4
- ; byrRegs +[r0]
- ldr r6, [r0]
+G_M16025_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
+ mov r3, r0
+ ; byrRegs +[r3]
+ ldr r3, [r3]
+ ; byrRegs -[r3]
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M16025_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
- ; byrRegs -[r0]
- orr r1, r6, r5
- mov r0, r4
- ; byrRegs +[r0]
- mov r2, r6
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- ; gcr arg pop 0
- cmp r0, r6
- beq SHORT G_M16025_IG05
- mov r6, r0
+G_M16025_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
+ orr r2, r3, r1
+ dmb 15
+ ;; size=8 bbWeight=4 PerfScore 8.00
+G_M16025_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r12, [r0]
+ cmp r12, r3
+ bne SHORT G_M16025_IG06
+ strex lr, r2, [r0]
+ cmp lr, 0
+ bne SHORT G_M16025_IG05
+ ;; size=18 bbWeight=4 PerfScore 24.00
+G_M16025_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ dmb 15
+ cmp r12, r3
+ beq SHORT G_M16025_IG07
+ mov r3, r12
b SHORT G_M16025_IG04
- ;; size=26 bbWeight=4 PerfScore 40.00
-G_M16025_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[r4]
- pop {r3,r4,r5,r6,r11,pc}
+ ;; size=12 bbWeight=4 PerfScore 20.00
+G_M16025_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; byrRegs -[r0]
+ pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M16025_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, gcvars, byref
- ; byrRegs +[r4]
- mov r0, r4
+G_M16025_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref
; byrRegs +[r0]
- ldr r6, [r0]
- mvns r5, r5
+ mov r3, r0
+ ; byrRegs +[r3]
+ ldr r3, [r3]
+ ; byrRegs -[r3]
+ mvns r2, r1
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M16025_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
- ; byrRegs -[r0]
- and r1, r5, r6
- mov r0, r4
- ; byrRegs +[r0]
- mov r2, r6
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- ; gcr arg pop 0
- cmp r0, r6
- beq SHORT G_M16025_IG05
- mov r6, r0
- b SHORT G_M16025_IG07
- ;; size=26 bbWeight=4 PerfScore 40.00
+G_M16025_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
+ and r1, r2, r3
+ dmb 15
+ ;; size=8 bbWeight=4 PerfScore 8.00
+G_M16025_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r12, [r0]
+ cmp r12, r3
+ bne SHORT G_M16025_IG11
+ strex lr, r1, [r0]
+ cmp lr, 0
+ bne SHORT G_M16025_IG10
+ ;; size=18 bbWeight=4 PerfScore 24.00
+G_M16025_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ dmb 15
+ cmp r12, r3
+ beq SHORT G_M16025_IG07
+ mov r3, r12
+ b SHORT G_M16025_IG09
+ ;; size=12 bbWeight=4 PerfScore 20.00
-; Total bytes of code 84, prolog size 12, PerfScore 90.50, instruction count 33, allocated bytes for code 84 (MethodHash=382bc166) for method System.ComponentModel.InterlockedBitVector32:set_Item(int,ubyte):this (FullOpts)
+; Total bytes of code 102, prolog size 6, PerfScore 112.50, instruction count 37, allocated bytes for code 102 (MethodHash=382bc166) for method System.ComponentModel.InterlockedBitVector32:set_Item(int,ubyte):this (FullOpts)
; ============================================================
Unwind Info:
@@ -98,7 +104,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 42 (0x0002a) Actual length = 84 (0x000054)
+ Function Length : 51 (0x00033) Actual length = 102 (0x000066)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -106,7 +112,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end
FF end
+12 (+35.29%) : 21377.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,44 @@
; 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>
+ dmb 15
+ ;; size=12 bbWeight=1 PerfScore 4.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 r1, 0
+ bne SHORT G_M62777_IG03
+ ;; size=16 bbWeight=1 PerfScore 6.00
+G_M62777_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
+ dmb 15
+ mov r0, lr
; byrRegs -[r0]
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M62777_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,lr}
+ ;; 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 46, prolog size 4, PerfScore 17.00, instruction count 17, allocated bytes for code 46 (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 +62,18 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 34 (0x000022)
+ 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 : 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
+12 (+35.29%) : 156600.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}
+ dmb 15
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M34636_IG03: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0008 {r3}, byref, isz
+ ; byrRegs +[r3]
+ ldrex lr, [r3]
+ add r2, lr, 1
+ strex r1, r2, [r3]
+ cmp r1, 0
+ bne SHORT G_M34636_IG03
+ dmb 15
+ add r3, lr, 1
+ ; byrRegs -[r3]
+ str r3, [r0+0x14]
+ ;; size=26 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 46, prolog size 2, PerfScore 15.00, instruction count 15, allocated bytes for code 46 (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 : 23 (0x00017) Actual length = 46 (0x00002e)
--- 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_tests.run.linux.arm.Release.mch
-16 (-36.36%) : 55622.dasm - System.Threading.Interlocked:Decrement(byref):int (Tier1)
@@ -2,64 +2,55 @@
; 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; 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
+; V00 arg0 [V00,T00] ( 3, 3 ) byref -> r0 single-def
;# 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_M7936_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_M7936_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M7936_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M7936_IG04
- mov r1, -1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- subs r0, r0, 1
- ;; size=20 bbWeight=1 PerfScore 7.00
-G_M7936_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,pc}
+ dmb 15
;; size=4 bbWeight=1 PerfScore 1.00
-G_M7936_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
+G_M7936_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ subs r3, r1, 1
+ strex r2, r3, [r0]
+ cmp r2, 0
+ bne SHORT G_M7936_IG03
+ dmb 15
+ subs r0, r1, 1
+ ; byrRegs -[r0]
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M7936_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=b7f6e0ff) for method System.Threading.Interlocked:Decrement(byref):int (Tier1)
+; Total bytes of code 28, prolog size 2, PerfScore 10.00, instruction count 10, allocated bytes for code 28 (MethodHash=b7f6e0ff) for method System.Threading.Interlocked:Decrement(byref):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 : 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%) : 42724.dasm - System.Threading.Interlocked:Decrement(byref):int (Instrumented Tier1)
@@ -2,64 +2,55 @@
; 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; 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
+; V00 arg0 [V00,T00] ( 3, 3 ) byref -> r0 single-def
;# 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_M7936_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_M7936_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M7936_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M7936_IG04
- mov r1, -1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- subs r0, r0, 1
- ;; size=20 bbWeight=1 PerfScore 7.00
-G_M7936_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,pc}
+ dmb 15
;; size=4 bbWeight=1 PerfScore 1.00
-G_M7936_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
+G_M7936_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ subs r3, r1, 1
+ strex r2, r3, [r0]
+ cmp r2, 0
+ bne SHORT G_M7936_IG03
+ dmb 15
+ subs r0, r1, 1
+ ; byrRegs -[r0]
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M7936_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=b7f6e0ff) for method System.Threading.Interlocked:Decrement(byref):int (Instrumented Tier1)
+; Total bytes of code 28, prolog size 2, PerfScore 10.00, instruction count 10, allocated bytes for code 28 (MethodHash=b7f6e0ff) for method System.Threading.Interlocked:Decrement(byref):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 : 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
-26 (-34.21%) : 701005.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
@@ -3,69 +3,53 @@
; 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 5
-; 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
+ dmb 15
+ ;; size=8 bbWeight=1 PerfScore 3.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 50, prolog size 2, PerfScore 12.00, instruction count 18, allocated bytes for code 50 (MethodHash=522df092) for method System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
; ============================================================
Unwind Info:
@@ -77,7 +61,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -89,11 +73,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
+10 (+38.46%) : 61788.dasm - Microsoft.CodeAnalysis.Internal.Log.CorrelationIdFactory:GetNextId():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_M21277_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M21277_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_M21277_IG03: ; bbWeight=1, epilog, nogc, extend
+ dmb 15
+ ;; size=12 bbWeight=1 PerfScore 3.00
+G_M21277_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ; byrRegs +[r0]
+ ldrex r1, [r0]
+ adds r3, r1, 1
+ strex r2, r3, [r0]
+ cmp r2, 0
+ bne SHORT G_M21277_IG03
+ dmb 15
+ adds r0, r1, 1
+ ; byrRegs -[r0]
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M21277_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=0d77ace2) for method Microsoft.CodeAnalysis.Internal.Log.CorrelationIdFactory:GetNextId():int (Tier1)
+; Total bytes of code 36, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 36 (MethodHash=0d77ace2) for method Microsoft.CodeAnalysis.Internal.Log.CorrelationIdFactory:GetNextId():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 : 18 (0x00012) Actual length = 36 (0x000024)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+10 (+38.46%) : 164980.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
+ dmb 15
+ ;; size=12 bbWeight=1 PerfScore 3.00
+G_M28066_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ; byrRegs +[r0]
+ ldrex r1, [r0]
+ adds r3, r1, 1
+ strex r2, r3, [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 36, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 36 (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 : 18 (0x00012) Actual length = 36 (0x000024)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+10 (+38.46%) : 341280.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
+ dmb 15
+ ;; size=12 bbWeight=1 PerfScore 3.00
+G_M41951_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ; byrRegs +[r0]
+ ldrex r1, [r0]
+ adds r3, r1, 1
+ strex r2, r3, [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 36, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 36 (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 : 18 (0x00012) Actual length = 36 (0x000024)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
librariestestsnotieredcompilation.run.linux.arm.Release.mch
-24 (-31.58%) : 24109.dasm - System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext:Post(System.Threading.SendOrPostCallback,System.Object):this (FullOpts)
@@ -2,69 +2,49 @@
; 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 this [V00,T00] ( 5, 5 ) ref -> r4 this class-hnd single-def <System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext>
-; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r5 class-hnd single-def <System.Threading.SendOrPostCallback>
-; V02 arg2 [V02,T03] ( 3, 3 ) ref -> r6 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 5, 5 ) ref -> r0 this class-hnd single-def <System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r1 class-hnd single-def <System.Threading.SendOrPostCallback>
+; V02 arg2 [V02,T02] ( 3, 3 ) ref -> r2 class-hnd single-def <System.Object>
;# 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 = 4
+; Lcl frame size = 0
G_M3300_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,r6,r11,lr}
- add r11, sp, 16
- mov r4, r0
- ; gcrRegs +[r4]
- mov r5, r1
- ; gcrRegs +[r5]
- mov r6, r2
- ; gcrRegs +[r6]
- ;; size=14 bbWeight=1 PerfScore 5.00
-G_M3300_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- ldrsb r0, [r4]
- add r0, r4, 8
- ; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M3300_IG04
- movs r1, 1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- ; gcr arg pop 0
- mov r0, r4
- ; gcrRegs +[r0]
- mov r1, r5
- ; gcrRegs +[r1]
- mov r2, r6
- ; gcrRegs +[r2]
+ push {r4,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M3300_IG02: ; bbWeight=1, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r0-r2]
+ ldrsb r3, [r0]
+ add r3, r0, 8
+ ; byrRegs +[r3]
+ dmb 15
+ ;; size=12 bbWeight=1 PerfScore 3.00
+G_M3300_IG03: ; bbWeight=1, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0008 {r3}, byref, isz
+ ldrex r4, [r3]
+ add lr, r4, 1
+ strex r12, lr, [r3]
+ cmp r12, 0
+ bne SHORT G_M3300_IG03
+ dmb 15
movw r3, 0xd1ff
+ ; byrRegs -[r3]
movt r3, 0xd1ff
ldr r3, [r3]
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M3300_IG03: ; bbWeight=1, epilog, nogc, extend
- add sp, 4
- pop {r4,r5,r6,r11,lr}
+ ;; size=32 bbWeight=1 PerfScore 9.00
+G_M3300_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r4,lr}
bx r3 // System.Threading.SynchronizationContext:Post(System.Threading.SendOrPostCallback,System.Object):this
; gcr arg pop 0
- ;; size=8 bbWeight=1 PerfScore 3.00
-G_M3300_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0-r2 r4-r6]
- 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=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 76, prolog size 14, PerfScore 22.00, instruction count 27, allocated bytes for code 76 (MethodHash=630ef31b) for method System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext:Post(System.Threading.SendOrPostCallback,System.Object):this (FullOpts)
+; Total bytes of code 52, prolog size 2, PerfScore 15.00, instruction count 15, allocated bytes for code 52 (MethodHash=630ef31b) for method System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext:Post(System.Threading.SendOrPostCallback,System.Object):this (FullOpts)
; ============================================================
Unwind Info:
@@ -76,18 +56,19 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ 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 : 3 (0x03)
+ Epilog Start Index : 2 (0x02)
---- Unwind codes ----
- A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
+ D4 pop {r4,lr} ; opsize 16
+ FF end
+ ---- Epilog start at index 2 ----
+ A0 10 pop {r4,lr} ; opsize 32
+ FF end
FF end
- ---- Epilog start at index 3 ----
- 01 add sp, sp, #4 ; opsize 16
- A8 70 pop {r4,r5,r6,r11,lr} ; opsize 32
FF end
FF end
-24 (-31.58%) : 301119.dasm - System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext:Post(System.Threading.SendOrPostCallback,System.Object):this (FullOpts)
@@ -2,69 +2,49 @@
; 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 this [V00,T00] ( 5, 5 ) ref -> r4 this class-hnd single-def <System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext>
-; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r5 class-hnd single-def <System.Threading.SendOrPostCallback>
-; V02 arg2 [V02,T03] ( 3, 3 ) ref -> r6 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 5, 5 ) ref -> r0 this class-hnd single-def <System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r1 class-hnd single-def <System.Threading.SendOrPostCallback>
+; V02 arg2 [V02,T02] ( 3, 3 ) ref -> r2 class-hnd single-def <System.Object>
;# 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 = 4
+; Lcl frame size = 0
G_M3300_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,r6,r11,lr}
- add r11, sp, 16
- mov r4, r0
- ; gcrRegs +[r4]
- mov r5, r1
- ; gcrRegs +[r5]
- mov r6, r2
- ; gcrRegs +[r6]
- ;; size=14 bbWeight=1 PerfScore 5.00
-G_M3300_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
- ldrsb r0, [r4]
- add r0, r4, 8
- ; byrRegs +[r0]
- cmp r0, 0
- beq SHORT G_M3300_IG04
- movs r1, 1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- ; gcr arg pop 0
- mov r0, r4
- ; gcrRegs +[r0]
- mov r1, r5
- ; gcrRegs +[r1]
- mov r2, r6
- ; gcrRegs +[r2]
+ push {r4,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M3300_IG02: ; bbWeight=1, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r0-r2]
+ ldrsb r3, [r0]
+ add r3, r0, 8
+ ; byrRegs +[r3]
+ dmb 15
+ ;; size=12 bbWeight=1 PerfScore 3.00
+G_M3300_IG03: ; bbWeight=1, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0008 {r3}, byref, isz
+ ldrex r4, [r3]
+ add lr, r4, 1
+ strex r12, lr, [r3]
+ cmp r12, 0
+ bne SHORT G_M3300_IG03
+ dmb 15
movw r3, 0xd1ff
+ ; byrRegs -[r3]
movt r3, 0xd1ff
ldr r3, [r3]
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M3300_IG03: ; bbWeight=1, epilog, nogc, extend
- add sp, 4
- pop {r4,r5,r6,r11,lr}
+ ;; size=32 bbWeight=1 PerfScore 9.00
+G_M3300_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r4,lr}
bx r3 // System.Threading.SynchronizationContext:Post(System.Threading.SendOrPostCallback,System.Object):this
; gcr arg pop 0
- ;; size=8 bbWeight=1 PerfScore 3.00
-G_M3300_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0-r2 r4-r6]
- 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=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 76, prolog size 14, PerfScore 22.00, instruction count 27, allocated bytes for code 76 (MethodHash=630ef31b) for method System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext:Post(System.Threading.SendOrPostCallback,System.Object):this (FullOpts)
+; Total bytes of code 52, prolog size 2, PerfScore 15.00, instruction count 15, allocated bytes for code 52 (MethodHash=630ef31b) for method System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext:Post(System.Threading.SendOrPostCallback,System.Object):this (FullOpts)
; ============================================================
Unwind Info:
@@ -76,18 +56,19 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ 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 : 3 (0x03)
+ Epilog Start Index : 2 (0x02)
---- Unwind codes ----
- A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
+ D4 pop {r4,lr} ; opsize 16
+ FF end
+ ---- Epilog start at index 2 ----
+ A0 10 pop {r4,lr} ; opsize 32
+ FF end
FF end
- ---- Epilog start at index 3 ----
- 01 add sp, sp, #4 ; opsize 16
- A8 70 pop {r4,r5,r6,r11,lr} ; opsize 32
FF end
FF end
-16 (-30.77%) : 298325.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>
+ dmb 15
+ ;; size=10 bbWeight=1 PerfScore 3.00
+G_M17353_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex lr, [r0]
+ add r3, lr, 1
+ strex r2, r3, [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=22 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 36, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 36 (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 : 18 (0x00012) Actual length = 36 (0x000024)
+ --- 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 (+20.00%) : 40179.dasm - System.Runtime.Serialization.Formatters.Binary.ReadObjectInfo:GetObjectInfo(System.Runtime.Serialization.Formatters.Binary.SerObjectInfoInit):System.Runtime.Serialization.Formatters.Binary.ReadObjectInfo (FullOpts)
@@ -5,18 +5,18 @@
; 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 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.Serialization.Formatters.Binary.SerObjectInfoInit>
-; V01 loc0 [V01,T00] ( 3, 3 ) ref -> r4 class-hnd exact single-def <System.Runtime.Serialization.Formatters.Binary.ReadObjectInfo>
+; V01 loc0 [V01,T00] ( 3, 3 ) ref -> r0 class-hnd exact single-def <System.Runtime.Serialization.Formatters.Binary.ReadObjectInfo>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Runtime.Serialization.Formatters.Binary.ReadObjectInfo>
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M6134_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_M6134_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
@@ -26,26 +26,27 @@ G_M6134_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blx r3 // CORINFO_HELP_NEWSFAST
; gcrRegs +[r0]
; gcr arg pop 0
- mov r4, r0
- ; gcrRegs +[r4]
- movw r0, 0xd1ff
- ; gcrRegs -[r0]
- movt r0, 0xd1ff
- movs r1, 1
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; gcr arg pop 0
- adds r0, r0, 1
- str r0, [r4+0x28]
- mov r0, r4
- ; gcrRegs +[r0]
- ;; size=46 bbWeight=1 PerfScore 15.00
-G_M6134_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r4,pc}
+ dmb 15
+ ;; size=30 bbWeight=1 PerfScore 8.00
+G_M6134_IG03: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0008 {r3}, byref, isz
+ ; byrRegs +[r3]
+ ldrex lr, [r3]
+ add r2, lr, 1
+ strex r1, r2, [r3]
+ cmp r1, 0
+ bne SHORT G_M6134_IG03
+ dmb 15
+ add r3, lr, 1
+ ; byrRegs -[r3]
+ str r3, [r0+0x28]
+ ;; size=26 bbWeight=1 PerfScore 8.00
+G_M6134_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 50, prolog size 2, PerfScore 17.00, instruction count 17, allocated bytes for code 50 (MethodHash=5f3de809) for method System.Runtime.Serialization.Formatters.Binary.ReadObjectInfo:GetObjectInfo(System.Runtime.Serialization.Formatters.Binary.SerObjectInfoInit):System.Runtime.Serialization.Formatters.Binary.ReadObjectInfo (FullOpts)
+; Total bytes of code 60, prolog size 2, PerfScore 18.00, instruction count 18, allocated bytes for code 60 (MethodHash=5f3de809) for method System.Runtime.Serialization.Formatters.Binary.ReadObjectInfo:GetObjectInfo(System.Runtime.Serialization.Formatters.Binary.SerObjectInfoInit):System.Runtime.Serialization.Formatters.Binary.ReadObjectInfo (FullOpts)
; ============================================================
Unwind Info:
@@ -57,12 +58,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 50 (0x000032)
+ Function Length : 30 (0x0001e) Actual length = 60 (0x00003c)
--- 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
+14 (+87.50%) : 304257.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,31 @@
;
; 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
+ dmb 15
+ ;; size=8 bbWeight=1 PerfScore 3.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 30, prolog size 2, PerfScore 11.00, instruction count 11, allocated bytes for code 30 (MethodHash=ca9e98f1) for method System.Threading.Tests.InterlockedTests+<>c:<InterlockedExchange_Object>b__24_0():System.Object: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 : 15 (0x0000f) Actual length = 30 (0x00001e)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
+ ---- Epilog start at index 0 ----
ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
+16 (+100.00%) : 304272.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,35 @@
;
; 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
+ dmb 15
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M24868_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ; byrRegs +[r0]
+ ldrex r1, [r0]
+ ; gcrRegs +[r1]
+ cbnz r1, SHORT G_M24868_IG04
+ strex r2, r3, [r0]
+ cmp r2, 0
+ bne SHORT G_M24868_IG03
+ ;; size=14 bbWeight=1 PerfScore 5.00
+G_M24868_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
+ ; gcrRegs -[r1]
+ dmb 15
+ mov r0, r1
+ ; 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 32, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 32 (MethodHash=ccd39edb) for method System.Threading.Tests.InterlockedTests+<>c:<InterlockedCompareExchange_Object>b__38_0():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -34,13 +49,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
realworld.run.linux.arm.checked.mch
-18 (-37.50%) : 16965.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]
+ dmb 15
+ ;; size=8 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 r2, r0, 1
+ strex r1, r2, [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 30, prolog size 2, PerfScore 11.00, instruction count 11, allocated bytes for code 30 (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 : 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
-18 (-23.08%) : 27324.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+LazySubstitutedType:GetResolvedAnnotation(ubyte):ubyte:this (FullOpts)
@@ -2,32 +2,29 @@
; 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] ( 6, 5 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+LazySubstitutedType>
;* V01 arg1 [V01 ] ( 0, 0 ) ubyte -> zero-ref single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 3 ) byref -> r5 single-def "impAppendStmt"
-; V04 tmp2 [V04,T02] ( 2, 2 ) int -> r1 "Inlining Arg"
+;* V03 tmp1 [V03 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M21518_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- add r11, sp, 8
+ push {r3,r4,r5,lr}
mov r4, r0
; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M21518_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x08]
cmp r0, -1
- bne SHORT G_M21518_IG04
+ bne SHORT G_M21518_IG06
;; size=8 bbWeight=1 PerfScore 3.00
-G_M21518_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M21518_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
add r5, r4, 8
; byrRegs +[r5]
mov r0, r4
@@ -37,53 +34,45 @@ G_M21518_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r3, [r3]
blx r3 // Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+LazySubstitutedType:<GetResolvedAnnotation>g__getResolvedAnnotationCore|11_0():ubyte:this
; gcrRegs -[r0]
- mov r1, r0
- cmp r5, 0
- beq SHORT G_M21518_IG06
- mov r0, r5
- ; byrRegs +[r0]
- mov r2, -1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
- ; byrRegs -[r0 r5]
- ;; size=40 bbWeight=0.50 PerfScore 7.00
-G_M21518_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
+ dmb 15
+ ;; size=22 bbWeight=0.50 PerfScore 3.50
+G_M21518_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
+ ldrex r2, [r5]
+ cmp r2, -1
+ bne SHORT G_M21518_IG05
+ strex r3, r0, [r5]
+ cmp r3, 0
+ bne SHORT G_M21518_IG04
+ ;; size=18 bbWeight=0.50 PerfScore 3.00
+G_M21518_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref
+ dmb 15
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M21518_IG06: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r5]
ldrb r0, [r4+0x08]
;; size=2 bbWeight=1 PerfScore 1.00
-G_M21518_IG05: ; bbWeight=1, epilog, nogc, extend
- pop {r4,r5,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M21518_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r4]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException()
- bkpt
- ;; size=14 bbWeight=0 PerfScore 0.00
+G_M21518_IG07: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,r4,r5,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 78, prolog size 8, PerfScore 15.00, instruction count 27, allocated bytes for code 78 (MethodHash=5e94abf1) for method Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+LazySubstitutedType:GetResolvedAnnotation(ubyte):ubyte:this (FullOpts)
+; Total bytes of code 60, prolog size 2, PerfScore 14.00, instruction count 21, allocated bytes for code 60 (MethodHash=5e94abf1) for method Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+LazySubstitutedType:GetResolvedAnnotation(ubyte):ubyte: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 : 39 (0x00027) Actual length = 78 (0x00004e)
- ---- Epilog scopes ----
- ---- Scope 0
- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
- Condition : 14 (0xe) (always)
- Epilog Start Index : 0 (0x00)
+ Function Length : 30 (0x0001e) Actual length = 60 (0x00003c)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 30 pop {r4,r5,r11,lr} ; opsize 32
+ ED 38 pop {r3,r4,r5,lr} ; opsize 16
FF end
FF end
-14 (-22.58%) : 25158.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:EnsureFrozenForEnqueues():this (FullOpts)
@@ -2,81 +2,71 @@
; 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]
- cmp r1, 0
- bne SHORT G_M8978_IG04
+ 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, isz
- movs r1, 1
- strb r1, [r0+0x11]
- add r1, r0, 148
- ; byrRegs +[r1]
- ldr r0, [r0+0x04]
- ldr r0, [r0+0x04]
+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
+ dmb 15
+ ;; size=18 bbWeight=0.50 PerfScore 3.50
+G_M8978_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
; 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
+ ldrex lr, [r3]
+ add r1, lr, r2
+ strex r0, r1, [r3]
+ cmp r0, 0
+ bne SHORT G_M8978_IG04
+ dmb 15
+ ;; size=20 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 48, prolog size 2, PerfScore 11.50, instruction count 18, allocated bytes for code 48 (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 : 24 (0x00018) Actual length = 48 (0x000030)
+ --- 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 (+11.90%) : 1396.dasm - System.Runtime.InteropServices.GCHandle:Free():this (FullOpts)
@@ -5,16 +5,15 @@
; r11 based frame
; partially interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 3 single block inlinees; 3 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 4 ) byref -> r0 this single-def
-; V01 loc0 [V01,T02] ( 3, 3 ) int -> r0
+; V01 loc0 [V01,T02] ( 3, 3 ) int -> r1
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref ld-addr-op "NewObj constructor temp"
-;* V05 tmp3 [V05 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V06 tmp4 [V06,T01] ( 3, 5 ) int -> r4 "Inlining Arg"
+;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref ld-addr-op "NewObj constructor temp"
+;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V05 tmp3 [V05,T01] ( 3, 5 ) int -> r4 "Inlining Arg"
;
; Lcl frame size = 4
@@ -22,36 +21,41 @@ G_M30629_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push {r3,r4,r11,lr}
add r11, sp, 8
;; size=8 bbWeight=1 PerfScore 2.00
-G_M30629_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+G_M30629_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- ldrsb r1, [r0]
- movs r1, 0
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
+ ldrsb r3, [r0]
+ movs r3, 0
+ dmb 15
+ ;; size=10 bbWeight=1 PerfScore 3.00
+G_M30629_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ strex r2, r3, [r0]
+ cmp r2, 0
+ bne SHORT G_M30629_IG03
+ dmb 15
+ cmp r1, 0
+ beq SHORT G_M30629_IG06
+ mvn r0, 1
; byrRegs -[r0]
- cmp r0, 0
- beq SHORT G_M30629_IG05
- mvn r3, 1
- and r4, r0, r3
+ and r4, r1, r0
mov r0, r4
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // <unknown method>
cmp r0, 0
- bne SHORT G_M30629_IG04
+ bne SHORT G_M30629_IG05
;; size=44 bbWeight=1 PerfScore 15.00
-G_M30629_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M30629_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov r0, r4
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M30629_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M30629_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
pop {r3,r4,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M30629_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M30629_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -59,7 +63,7 @@ G_M30629_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 84, prolog size 8, PerfScore 20.50, instruction count 28, allocated bytes for code 84 (MethodHash=d6bc885a) for method System.Runtime.InteropServices.GCHandle:Free():this (FullOpts)
+; Total bytes of code 94, prolog size 8, PerfScore 23.50, instruction count 31, allocated bytes for code 94 (MethodHash=d6bc885a) for method System.Runtime.InteropServices.GCHandle:Free():this (FullOpts)
; ============================================================
Unwind Info:
@@ -71,7 +75,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 42 (0x0002a) Actual length = 84 (0x000054)
+ Function Length : 47 (0x0002f) Actual length = 94 (0x00005e)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+26 (+13.27%) : 33085.dasm - System.Threading.LowLevelSpinWaiter:SpinWaitForCondition(System.Func`2[System.Object,ubyte],System.Object,int,int):ubyte:this (FullOpts)
@@ -5,7 +5,7 @@
; r11 based frame
; fully interruptible
; No matching PGO data
-; 0 inlinees with PGO data; 5 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T04] ( 6, 6 ) byref -> [sp+0x00] this EH-live single-def
@@ -19,26 +19,26 @@
; V08 loc3 [V08,T07] ( 2, 2 ) ubyte -> [sp+0x04] do-not-enreg[Z] EH-live
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10,T09] ( 0, 0 ) int -> zero-ref
-;* V11 tmp2 [V11 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+;* V11 tmp2 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V12 tmp3 [V12 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V13 PSPSym [V13,T10] ( 1, 1 ) int -> [sp+0x08] do-not-enreg[V] "PSPSym"
;
; Lcl frame size = 12
-G_M63952_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M63952_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r8,r11,lr}
sub sp, 12
add r11, sp, 32
add r4, sp, 40
- str r4, [sp+0x08]
- str r0, [sp]
+ str r4, [sp+0x08] // [V13 PSPSym]
+ str r0, [sp] // [V00 this]
; GC ptr vars +{V00}
mov r4, r1
; gcrRegs +[r4]
mov r6, r2
; gcrRegs +[r6]
mov r5, r3
- ldr r7, [sp+0x28]
+ ldr r7, [sp+0x28] // [V04 arg4]
;; size=24 bbWeight=1 PerfScore 10.00
G_M63952_IG02: ; bbWeight=1, gcVars=00000010 {V00}, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, gcvars, byref, isz
cmp r4, 0
@@ -57,23 +57,27 @@ G_M63952_IG04: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, b
; gcr arg pop 0
ldr r0, [sp] // [V00 this]
; byrRegs +[r0]
- ldrsb r1, [r0]
- movs r1, 1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // <unknown method>
+ ldrsb r2, [r0]
+ dmb 15
+ ;; size=22 bbWeight=1 PerfScore 7.00
+G_M63952_IG05: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r3, [r0]
+ adds r2, r3, 1
+ strex r1, r2, [r0]
+ cmp r1, 0
+ bne SHORT G_M63952_IG05
+ dmb 15
+ adds r2, r3, 1
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M63952_IG06: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
- ; gcr arg pop 0
- adds r2, r0, 1
- ;; size=32 bbWeight=1 PerfScore 11.00
-G_M63952_IG05: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
cmp r2, 2
- bgt SHORT G_M63952_IG09
+ bgt SHORT G_M63952_IG10
mov r8, 0
cmp r5, 0
- ble SHORT G_M63952_IG09
+ ble SHORT G_M63952_IG10
;; size=12 bbWeight=1 PerfScore 5.00
-G_M63952_IG06: ; bbWeight=8, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
+G_M63952_IG07: ; bbWeight=8, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
movs r2, 0
mov r0, r8
mov r1, r7
@@ -91,76 +95,83 @@ G_M63952_IG06: ; bbWeight=8, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, b
; gcrRegs -[r0-r1]
; gcr arg pop 0
cmp r0, 0
- bne SHORT G_M63952_IG08
+ bne SHORT G_M63952_IG09
add r8, r8, 1
cmp r8, r5
- blt SHORT G_M63952_IG06
+ blt SHORT G_M63952_IG07
;; size=38 bbWeight=8 PerfScore 128.00
-G_M63952_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4 r6]
- b SHORT G_M63952_IG09
- ;; size=2 bbWeight=1 PerfScore 1.00
G_M63952_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r4 r6]
+ b SHORT G_M63952_IG10
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M63952_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movs r0, 1
str r0, [sp+0x04] // [V08 loc3]
- b SHORT G_M63952_IG10
+ b SHORT G_M63952_IG12
;; size=6 bbWeight=1 PerfScore 3.00
-G_M63952_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r0, [sp]
+G_M63952_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ldr r0, [sp] // [V00 this]
; byrRegs +[r0]
- mov r1, -1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
+ dmb 15
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M63952_IG11: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz
; GC ptr vars -{V00}
- blx r3 // <unknown method>
+ ldrex r1, [r0]
+ subs r3, r1, 1
+ strex r2, r3, [r0]
+ cmp r2, 0
+ bne SHORT G_M63952_IG11
+ dmb 15
+ b SHORT G_M63952_IG16
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M63952_IG12: ; bbWeight=1, gcVars=00000010 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[r0]
- ; gcr arg pop 0
- b SHORT G_M63952_IG14
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M63952_IG10: ; bbWeight=1, gcVars=00000010 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V00 V04}
- bl G_M63952_IG16
+ bl G_M63952_IG18
;; size=4 bbWeight=1 PerfScore 1.00
-G_M63952_IG11: ; bbWeight=1, nogc, extend
+G_M63952_IG13: ; bbWeight=1, nogc, extend
nop
;; size=2 bbWeight=1 PerfScore 1.00
-G_M63952_IG12: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V00 V04}
- ldr r0, [sp+0x04]
- ;; size=2 bbWeight=1 PerfScore 1.00
-G_M63952_IG13: ; bbWeight=1, epilog, nogc, extend
- add sp, 12
- pop {r4,r5,r6,r7,r8,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
G_M63952_IG14: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- movs r0, 0
+ ; GC ptr vars -{V00 V04}
+ ldr r0, [sp+0x04] // [V08 loc3]
;; size=2 bbWeight=1 PerfScore 1.00
G_M63952_IG15: ; bbWeight=1, epilog, nogc, extend
add sp, 12
pop {r4,r5,r6,r7,r8,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M63952_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M63952_IG16: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movs r0, 0
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M63952_IG17: ; bbWeight=1, epilog, nogc, extend
+ add sp, 12
+ pop {r4,r5,r6,r7,r8,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M63952_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
push {r3,r4,r5,r6,r7,r8,r11,lr}
add r3, r11, 8
str r3, [sp]
;; size=10 bbWeight=1 PerfScore 3.00
-G_M63952_IG17: ; bbWeight=1, gcVars=00000010 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M63952_IG19: ; bbWeight=1, gcVars=00000010 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V00 V04}
- ldr r0, [r11-0x20]
- ; byrRegs +[r0]
- mov r1, -1
- movw r3, 0xd1ff
- movt r3, 0xd1ff
+ ldr r2, [r11-0x20] // [V00 this]
+ ; byrRegs +[r2]
+ dmb 15
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M63952_IG20: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0004 {r2}, gcvars, byref, isz
; GC ptr vars -{V00 V04}
- blx r3 // <unknown method>
- ; byrRegs -[r0]
- ; gcr arg pop 0
- ;; size=18 bbWeight=1 PerfScore 5.00
-G_M63952_IG18: ; bbWeight=1, funclet epilog, nogc, extend
+ ldrex r1, [r2]
+ subs r3, r1, 1
+ strex r0, r3, [r2]
+ cmp r0, 0
+ bne SHORT G_M63952_IG20
+ dmb 15
+ ;; size=18 bbWeight=1 PerfScore 6.00
+G_M63952_IG21: ; bbWeight=1, funclet epilog, nogc, extend
pop {r3,r4,r5,r6,r7,r8,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 196, prolog size 24, PerfScore 186.00, instruction count 74, allocated bytes for code 196 (MethodHash=4c3d062f) for method System.Threading.LowLevelSpinWaiter:SpinWaitForCondition(System.Func`2[System.Object,ubyte],System.Object,int,int):ubyte:this (FullOpts)
+; Total bytes of code 222, prolog size 24, PerfScore 195.00, instruction count 83, allocated bytes for code 222 (MethodHash=4c3d062f) for method System.Threading.LowLevelSpinWaiter:SpinWaitForCondition(System.Func`2[System.Object,ubyte],System.Object,int,int):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -172,7 +183,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 82 (0x00052) Actual length = 164 (0x0000a4)
+ Function Length : 91 (0x0005b) Actual length = 182 (0x0000b6)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -197,7 +208,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 16 (0x00010) Actual length = 32 (0x000020)
+ Function Length : 20 (0x00014) Actual length = 40 (0x000028)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
@@ -207,5 +218,5 @@ Unwind Info:
*************** EH table for System.Threading.LowLevelSpinWaiter:SpinWaitForCondition(System.Func`2[System.Object,ubyte],System.Object,int,int):ubyte:this
1 EH table entries, 0 duplicate clauses, 1 cloned finallys, 2 total EH entries reported to VM
-EH#0: try [G_M63952_IG05..G_M63952_IG09) handled by [G_M63952_IG16..END) (finally)
-EH#1: try [G_M63952_IG10..G_M63952_IG10) handled by [G_M63952_IG10..G_M63952_IG12) (finally) cloned finally
+EH#0: try [G_M63952_IG06..G_M63952_IG10) handled by [G_M63952_IG18..END) (finally)
+EH#1: try [G_M63952_IG12..G_M63952_IG12) handled by [G_M63952_IG12..G_M63952_IG14) (finally) cloned finally
+8 (+19.05%) : 20760.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
+ dmb 15
+ ;; size=4 bbWeight=8 PerfScore 8.00
+G_M34283_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ ldrex r1, [r0]
+ adds r3, r1, 1
+ strex r2, r3, [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 50, prolog size 6, PerfScore 86.00, instruction count 16, allocated bytes for code 50 (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 : 25 (0x00019) Actual length = 50 (0x000032)
--- 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 |
163 |
81 |
73 |
-1,636 |
+814 |
benchmarks.run_pgo.linux.arm.checked.mch |
1,952 |
1,475 |
419 |
58 |
-19,048 |
+3,742 |
benchmarks.run_tiered.linux.arm.checked.mch |
351 |
164 |
132 |
55 |
-1,632 |
+1,098 |
coreclr_tests.run.linux.arm.checked.mch |
2,560 |
1,714 |
831 |
15 |
-15,896 |
+9,240 |
libraries.crossgen2.linux.arm.checked.mch |
373 |
116 |
230 |
27 |
-1,236 |
+1,746 |
libraries.pmi.linux.arm.checked.mch |
1,544 |
1,001 |
483 |
60 |
-9,300 |
+6,292 |
libraries_tests.run.linux.arm.Release.mch |
8,351 |
5,636 |
2,526 |
189 |
-79,356 |
+37,486 |
librariestestsnotieredcompilation.run.linux.arm.Release.mch |
6,757 |
3,553 |
3,175 |
29 |
-29,538 |
+26,200 |
realworld.run.linux.arm.checked.mch |
268 |
164 |
92 |
12 |
-1,712 |
+1,024 |
|
22,473 |
13,986 |
7,969 |
518 |
-159,354 |
+87,642 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.linux.arm.checked.mch |
48,645 |
6,058 |
42,587 |
1,269 (2.54%) |
1,305 (2.61%) |
benchmarks.run_pgo.linux.arm.checked.mch |
170,358 |
62,197 |
108,161 |
3,371 (1.94%) |
3,583 (2.06%) |
benchmarks.run_tiered.linux.arm.checked.mch |
77,671 |
41,868 |
35,803 |
1,084 (1.38%) |
1,121 (1.42%) |
coreclr_tests.run.linux.arm.checked.mch |
472,343 |
259,413 |
212,930 |
7,240 (1.51%) |
7,414 (1.55%) |
libraries.crossgen2.linux.arm.checked.mch |
202,004 |
14 |
201,990 |
6 (0.00%) |
9 (0.00%) |
libraries.pmi.linux.arm.checked.mch |
277,138 |
6 |
277,132 |
8,150 (2.86%) |
8,280 (2.90%) |
libraries_tests.run.linux.arm.Release.mch |
710,677 |
445,649 |
265,028 |
18,367 (2.52%) |
18,682 (2.56%) |
librariestestsnotieredcompilation.run.linux.arm.Release.mch |
273,831 |
21,625 |
252,206 |
34,103 (11.06%) |
34,504 (11.19%) |
realworld.run.linux.arm.checked.mch |
36,274 |
147 |
36,127 |
1,526 (4.04%) |
1,545 (4.09%) |
|
2,268,941 |
836,977 |
1,431,964 |
75,116 (3.20%) |
76,443 (3.26%) |
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: 16212460 (overridden on cmd)
Total bytes of diff: 16211638 (overridden on cmd)
Total bytes of delta: -822 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
34 : 29019.dasm (1.33 % of base)
34 : 39606.dasm (2.66 % of base)
30 : 25078.dasm (15.96 % of base)
30 : 24126.dasm (15.79 % of base)
26 : 13418.dasm (13.00 % of base)
26 : 14063.dasm (3.75 % of base)
24 : 1861.dasm (1.82 % of base)
18 : 17080.dasm (3.00 % of base)
18 : 35935.dasm (1.83 % of base)
16 : 8000.dasm (3.92 % of base)
16 : 8375.dasm (1.88 % of base)
16 : 29307.dasm (2.94 % of base)
14 : 3617.dasm (9.33 % of base)
14 : 10698.dasm (1.68 % of base)
14 : 29234.dasm (3.43 % of base)
12 : 11905.dasm (12.00 % of base)
12 : 7152.dasm (13.04 % of base)
12 : 3627.dasm (0.59 % of base)
12 : 7672.dasm (2.88 % of base)
12 : 14076.dasm (1.94 % of base)
Top file improvements (bytes):
-32 : 29377.dasm (-5.61 % of base)
-30 : 29382.dasm (-5.23 % of base)
-28 : 29542.dasm (-0.44 % of base)
-28 : 3027.dasm (-2.29 % of base)
-26 : 7673.dasm (-1.86 % of base)
-26 : 29379.dasm (-7.93 % of base)
-24 : 33349.dasm (-1.18 % of base)
-22 : 29332.dasm (-0.93 % of base)
-20 : 13382.dasm (-20.41 % of base)
-20 : 25123.dasm (-1.40 % of base)
-20 : 4406.dasm (-3.98 % of base)
-18 : 35174.dasm (-4.55 % of base)
-18 : 3549.dasm (-3.83 % of base)
-18 : 1869.dasm (-12.16 % of base)
-18 : 2511.dasm (-0.79 % of base)
-16 : 25138.dasm (-20.51 % of base)
-16 : 684.dasm (-1.49 % of base)
-16 : 13396.dasm (-24.24 % of base)
-16 : 18883.dasm (-1.50 % of base)
-16 : 39848.dasm (-32.00 % of base)
69 total files with Code Size differences (35 improved, 34 regressed), 20 unchanged.
Top method regressions (bytes):
34 (2.66 % of base) : 39606.dasm - BenchmarksGame.FannkuchRedux_9:Run(int,int) (FullOpts)
34 (1.33 % of base) : 29019.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
30 (15.79 % of base) : 24126.dasm - System.Threading.Tests.Perf_SpinLock:EnterExit():ubyte:this (FullOpts)
30 (15.96 % of base) : 25078.dasm - System.Threading.Tests.Perf_SpinLock:TryEnterExit():ubyte:this (FullOpts)
26 (13.00 % of base) : 13418.dasm - System.Threading.LowLevelSpinWaiter:SpinWaitForCondition(System.Func`2[System.Object,ubyte],System.Object,int,int):ubyte:this (FullOpts)
26 (3.75 % of base) : 14063.dasm - System.Threading.Tasks.Task:InternalRunSynchronously(System.Threading.Tasks.TaskScheduler,ubyte):this (FullOpts)
24 (1.82 % of base) : 1861.dasm - System.Threading.Barrier:SignalAndWait(int,System.Threading.CancellationToken):ubyte:this (FullOpts)
18 (1.83 % of base) : 35935.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)
18 (3.00 % of base) : 17080.dasm - System.Threading.SpinLock:ContinueTryEnter(int,byref):this (FullOpts)
16 (2.94 % of base) : 29307.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbolBase:LazyAsyncMethodChecks(System.Threading.CancellationToken):this (FullOpts)
16 (1.88 % of base) : 8375.dasm - System.Threading.SemaphoreSlim:Release(int):int:this (FullOpts)
16 (3.92 % of base) : 8000.dasm - System.Threading.Tasks.Task:TrySetException(System.Object):ubyte:this (FullOpts)
14 (3.43 % of base) : 29234.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol:LazyMethodChecks():this (FullOpts)
14 (1.68 % of base) : 10698.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[int]:LocalPush(int,byref):this (FullOpts)
14 (9.33 % of base) : 3617.dasm - System.Threading.SpinLock:ExitSlowPath(ubyte):this (FullOpts)
12 (1.31 % of base) : 28544.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
12 (13.04 % of base) : 7152.dasm - System.ConsolePal:CheckTerminalSettingsInvalidated() (FullOpts)
12 (12.00 % of base) : 11905.dasm - System.Diagnostics.Tracing.NameInfo:ReserveEventIDsBelow(int) (FullOpts)
12 (2.88 % of base) : 7672.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ConnectAsync(System.Net.Sockets.Socket):System.Threading.Tasks.ValueTask:this (FullOpts)
12 (1.94 % of base) : 14076.dasm - System.Threading.Tasks.RangeWorker:FindNewWork(byref,byref):ubyte:this (FullOpts)
Top method improvements (bytes):
-32 (-5.61 % of base) : 29377.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)
-30 (-5.23 % of base) : 29382.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)
-28 (-0.44 % of base) : 29542.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (FullOpts)
-28 (-2.29 % of base) : 3027.dasm - System.Security.Cryptography.X509Certificates.OpenSslCachedSystemStoreProvider:<LoadMachineStores>g__ProcessFile|26_1(System.String,byref,byref):ubyte (FullOpts)
-26 (-7.93 % of base) : 29379.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)
-26 (-1.86 % of base) : 7673.dasm - System.Net.Sockets.Socket:ConnectAsync(System.Net.Sockets.SocketAsyncEventArgs,ubyte,ubyte):ubyte:this (FullOpts)
-24 (-1.18 % of base) : 33349.dasm - System.Threading.ReaderWriterLockSlim:TryEnterWriteLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (FullOpts)
-22 (-0.93 % of base) : 29332.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AfterMembersChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-20 (-1.40 % of base) : 25123.dasm - System.Net.WebSockets.ManagedWebSocket:SendFrameLockAcquiredNonCancelableAsync(ubyte,ubyte,ubyte,System.ReadOnlyMemory`1[ubyte]):System.Threading.Tasks.ValueTask:this (FullOpts)
-20 (-20.41 % of base) : 13382.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryOwnAndReset():ubyte:this (FullOpts)
-20 (-3.98 % of base) : 4406.dasm - System.Threading.ThreadPoolWorkQueue+WorkStealingQueue:LocalPopCore():System.Object:this (FullOpts)
-18 (-4.55 % of base) : 35174.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[int]:TrySteal(byref,ubyte):ubyte:this (FullOpts)
-18 (-3.83 % of base) : 3549.dasm - System.Threading.CancellationTokenSource+Registrations:Unregister(long,System.Threading.CancellationTokenSource+CallbackNode):ubyte:this (FullOpts)
-18 (-12.16 % of base) : 1869.dasm - System.Threading.ManualResetEventSlim:Reset():this (FullOpts)
-18 (-0.79 % of base) : 2511.dasm - System.Threading.PortableThreadPool+GateThread:GateThreadStart() (FullOpts)
-16 (-1.49 % of base) : 684.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (FullOpts)
-16 (-1.50 % of base) : 18883.dasm - System.Formats.Tar.TarWriter+<WriteFinalRecordsAsync>d__23:MoveNext():this (FullOpts)
-16 (-20.51 % of base) : 25138.dasm - System.Threading.AsyncMutex:Exit():this (FullOpts)
-16 (-24.24 % of base) : 13396.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryReserveCompletionIfCancelable():ubyte:this (FullOpts)
-16 (-32.00 % of base) : 39848.dasm - System.Threading.Tests.Perf_Interlocked:Decrement_int():int:this (FullOpts)
Top method regressions (percentages):
8 (19.05 % of base) : 9373.dasm - System.Collections.Immutable.SecureObjectPool:NewId():int (FullOpts)
30 (15.96 % of base) : 25078.dasm - System.Threading.Tests.Perf_SpinLock:TryEnterExit():ubyte:this (FullOpts)
30 (15.79 % of base) : 24126.dasm - System.Threading.Tests.Perf_SpinLock:EnterExit():ubyte:this (FullOpts)
10 (15.15 % of base) : 14309.dasm - Jil.Deserialize.NameAutomata`1+Helper[int]:GetNextName():System.String (FullOpts)
12 (13.04 % of base) : 7152.dasm - System.ConsolePal:CheckTerminalSettingsInvalidated() (FullOpts)
26 (13.00 % of base) : 13418.dasm - System.Threading.LowLevelSpinWaiter:SpinWaitForCondition(System.Func`2[System.Object,ubyte],System.Object,int,int):ubyte:this (FullOpts)
12 (12.00 % of base) : 11905.dasm - System.Diagnostics.Tracing.NameInfo:ReserveEventIDsBelow(int) (FullOpts)
10 (11.90 % of base) : 1356.dasm - System.Runtime.InteropServices.GCHandle:Free():this (FullOpts)
6 (11.54 % of base) : 28463.dasm - Roslyn.Utilities.ThreadSafeFlagOperations:Set(byref,int):ubyte (FullOpts)
14 (9.33 % of base) : 3617.dasm - System.Threading.SpinLock:ExitSlowPath(ubyte):this (FullOpts)
6 (6.67 % of base) : 11920.dasm - Microsoft.Extensions.Logging.EventSource.EventSourceLoggerProvider:.ctor(Microsoft.Extensions.Logging.EventSource.LoggingEventSource):this (FullOpts)
10 (6.49 % of base) : 28318.dasm - Roslyn.Utilities.StringTable:AddSharedSlow(int,System.String) (FullOpts)
10 (5.81 % of base) : 2450.dasm - System.Net.Sockets.SocketAsyncEngine:TryRegisterSocket(int,System.Net.Sockets.SocketAsyncContext,byref,byref):ubyte (FullOpts)
6 (4.55 % of base) : 1833.dasm - System.Threading.Tasks.TaskScheduler:get_Id():int:this (FullOpts)
16 (3.92 % of base) : 8000.dasm - System.Threading.Tasks.Task:TrySetException(System.Object):ubyte:this (FullOpts)
6 (3.85 % of base) : 28691.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MetadataOrSourceAssemblySymbol:RegisterDeclaredSpecialType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):this (FullOpts)
8 (3.81 % of base) : 3333.dasm - System.Threading.Tasks.Task`1[int]:TrySetResult(int):ubyte:this (FullOpts)
8 (3.77 % of base) : 13414.dasm - System.Threading.Tasks.Task`1[ubyte]:TrySetResult(ubyte):ubyte:this (FullOpts)
26 (3.75 % of base) : 14063.dasm - System.Threading.Tasks.Task:InternalRunSynchronously(System.Threading.Tasks.TaskScheduler,ubyte):this (FullOpts)
6 (3.70 % of base) : 3326.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ReleaseForAsyncCompletion():this (FullOpts)
Top method improvements (percentages):
-16 (-32.00 % of base) : 39848.dasm - System.Threading.Tests.Perf_Interlocked:Decrement_int():int:this (FullOpts)
-14 (-29.17 % of base) : 43339.dasm - System.Threading.Tests.Perf_Interlocked:Add_int():int:this (FullOpts)
-14 (-29.17 % of base) : 39628.dasm - System.Threading.Tests.Perf_Interlocked:Increment_int():int:this (FullOpts)
-12 (-26.09 % of base) : 13432.dasm - System.Threading.Tests.Perf_Interlocked:Exchange_int():int:this (FullOpts)
-12 (-25.00 % of base) : 44097.dasm - System.Threading.Tests.Perf_Interlocked:CompareExchange_int():int:this (FullOpts)
-16 (-24.24 % of base) : 13396.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryReserveCompletionIfCancelable():ubyte:this (FullOpts)
-14 (-22.58 % of base) : 19128.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[int]:EnsureFrozenForEnqueues():this (FullOpts)
-14 (-22.58 % of base) : 25298.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:EnsureFrozenForEnqueues():this (FullOpts)
-16 (-20.51 % of base) : 25138.dasm - System.Threading.AsyncMutex:Exit():this (FullOpts)
-20 (-20.41 % of base) : 13382.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryOwnAndReset():ubyte:this (FullOpts)
-12 (-19.35 % of base) : 3166.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:CloseDirectoryHandle():this (FullOpts)
-14 (-17.50 % of base) : 7705.dasm - System.Net.Sockets.SocketAsyncEventArgs:Dispose():this (FullOpts)
-10 (-12.50 % of base) : 2498.dasm - System.Threading.PortableThreadPool+WorkerThread:TakeActiveRequest(System.Threading.PortableThreadPool):ubyte (FullOpts)
-12 (-12.24 % of base) : 30689.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol:IsMetadataVirtual(ubyte):ubyte:this (FullOpts)
-18 (-12.16 % of base) : 1869.dasm - System.Threading.ManualResetEventSlim:Reset():this (FullOpts)
-12 (-11.76 % of base) : 33810.dasm - System.Threading.Tests.Perf_ThreadPool+<>c__DisplayClass1_0:<QueueUserWorkItem_WaitCallback_Throughput>b__0(System.Object):this (FullOpts)
-8 (-10.53 % of base) : 28682.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENestedNamespaceSymbol:EnsureAllMembersLoaded():this (FullOpts)
-12 (-9.68 % of base) : 25434.dasm - System.Threading.Tests.Perf_SpinLock:TryEnter_Fail():ubyte:this (FullOpts)
-12 (-9.38 % of base) : 25433.dasm - System.Threading.Tests.Perf_SpinLock:AcquireAcquiredSpinLock():this (FullOpts)
-10 (-9.26 % of base) : 13419.dasm - System.Threading.LowLevelLock:SpinWaitTryAcquireCallback(System.Object):ubyte (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: 70700700 (overridden on cmd)
Total bytes of diff: 70685394 (overridden on cmd)
Total bytes of delta: -15306 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
144 : 110186.dasm (1.87 % of base)
124 : 28090.dasm (2.89 % of base)
90 : 127331.dasm (7.51 % of base)
74 : 166057.dasm (6.07 % of base)
42 : 130957.dasm (3.49 % of base)
42 : 169934.dasm (3.49 % of base)
34 : 137665.dasm (2.66 % of base)
26 : 123391.dasm (4.21 % of base)
26 : 36937.dasm (12.50 % of base)
26 : 31611.dasm (0.25 % of base)
24 : 43012.dasm (2.99 % of base)
24 : 20178.dasm (1.82 % of base)
24 : 31604.dasm (4.69 % of base)
22 : 97830.dasm (1.40 % of base)
20 : 84919.dasm (8.20 % of base)
20 : 145312.dasm (8.20 % of base)
20 : 147108.dasm (2.53 % of base)
20 : 152839.dasm (8.20 % of base)
20 : 154268.dasm (8.20 % of base)
20 : 27740.dasm (0.99 % of base)
Top file improvements (bytes):
-102 : 67961.dasm (-9.12 % of base)
-102 : 91225.dasm (-9.55 % of base)
-102 : 93992.dasm (-9.55 % of base)
-102 : 117306.dasm (-9.55 % of base)
-102 : 134707.dasm (-9.55 % of base)
-102 : 143975.dasm (-9.55 % of base)
-102 : 144335.dasm (-9.12 % of base)
-102 : 149895.dasm (-9.12 % of base)
-102 : 53182.dasm (-9.12 % of base)
-102 : 74005.dasm (-9.12 % of base)
-102 : 74886.dasm (-9.55 % of base)
-102 : 78401.dasm (-9.12 % of base)
-102 : 124105.dasm (-9.55 % of base)
-102 : 130518.dasm (-9.55 % of base)
-102 : 137993.dasm (-9.12 % of base)
-102 : 29987.dasm (-9.12 % of base)
-102 : 43253.dasm (-9.12 % of base)
-102 : 63967.dasm (-9.55 % of base)
-102 : 85686.dasm (-9.55 % of base)
-102 : 87358.dasm (-9.12 % of base)
85 total files with Code Size differences (40 improved, 45 regressed), 20 unchanged.
Top method regressions (bytes):
144 (1.87 % of base) : 110186.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)
124 (2.89 % of base) : 28090.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.SyncReadWriteAdapter]:MoveNext():this (Tier0-FullOpts)
90 (7.51 % of base) : 127331.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
74 (6.07 % of base) : 166057.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
42 (3.49 % of base) : 130957.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
42 (3.49 % of base) : 169934.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
34 (2.66 % of base) : 137665.dasm - BenchmarksGame.FannkuchRedux_9:Run(int,int) (Tier0-FullOpts)
26 (0.25 % of base) : 31611.dasm - System.Net.Http.HttpConnection+<SendAsync>d__57:MoveNext():this (Tier0-FullOpts)
26 (12.50 % of base) : 36937.dasm - System.Threading.LowLevelSpinWaiter:SpinWaitForCondition(System.Func`2[System.Object,ubyte],System.Object,int,int):ubyte:this (Tier0-FullOpts)
26 (4.21 % of base) : 123391.dasm - System.Threading.ThreadPool:QueueUserWorkItem(System.Threading.WaitCallback,System.Object):ubyte (Tier1)
24 (2.99 % of base) : 43012.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[System.__Canon]:LocalPush(System.__Canon,byref):this (Tier1)
24 (1.82 % of base) : 20178.dasm - System.Threading.Barrier:SignalAndWait(int,System.Threading.CancellationToken):ubyte:this (Tier0-FullOpts)
24 (4.69 % of base) : 31604.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
22 (1.40 % of base) : 97830.dasm - System.Threading.PortableThreadPool:AdjustMaxWorkersActive():this (Tier1)
20 (2.53 % of base) : 147108.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[int]:LocalPush(int,byref):this (Tier1)
20 (8.20 % of base) : 84919.dasm - System.Threading.LowLevelLock:TryAcquire():ubyte:this (Tier1)
20 (8.20 % of base) : 145312.dasm - System.Threading.LowLevelLock:TryAcquire():ubyte:this (Tier1)
20 (8.20 % of base) : 152839.dasm - System.Threading.LowLevelLock:TryAcquire():ubyte:this (Tier1)
20 (8.20 % of base) : 154268.dasm - System.Threading.LowLevelLock:TryAcquire():ubyte:this (Tier1)
20 (0.99 % of base) : 27740.dasm - System.Threading.Tasks.Task:ExecuteWithThreadLocal(byref,System.Threading.Thread):this (Tier1)
Top method improvements (bytes):
-102 (-9.12 % of base) : 67961.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-102 (-9.55 % of base) : 91225.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-102 (-9.55 % of base) : 93992.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-102 (-9.55 % of base) : 117306.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-102 (-9.55 % of base) : 134707.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-102 (-9.55 % of base) : 143975.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-102 (-9.12 % of base) : 144335.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-102 (-9.12 % of base) : 149895.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-102 (-9.12 % of base) : 53182.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-102 (-9.12 % of base) : 74005.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-102 (-9.55 % of base) : 74886.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-102 (-9.12 % of base) : 78401.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-102 (-9.55 % of base) : 124105.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-102 (-9.55 % of base) : 130518.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-102 (-9.12 % of base) : 137993.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-102 (-9.12 % of base) : 29987.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-102 (-9.12 % of base) : 43253.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-102 (-9.55 % of base) : 63967.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-102 (-9.55 % of base) : 85686.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-102 (-9.12 % of base) : 87358.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
Top method regressions (percentages):
14 (35.00 % of base) : 1036.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Instrumented Tier0)
14 (35.00 % of base) : 241.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)
10 (27.78 % of base) : 12300.dasm - System.Threading.Interlocked:Add(byref,int):int (Instrumented Tier0)
10 (27.78 % of base) : 3982.dasm - System.Threading.Interlocked:Add(byref,int):int (Tier0)
8 (25.00 % of base) : 4780.dasm - System.Threading.Interlocked:Exchange(byref,int):int (Instrumented Tier0)
8 (25.00 % of base) : 4315.dasm - System.Threading.Interlocked:Exchange(byref,int):int (Tier0)
8 (19.05 % of base) : 23122.dasm - System.Collections.Immutable.SecureObjectPool:NewId():int (Tier0-FullOpts)
12 (18.75 % of base) : 36965.dasm - System.Threading.SpinLock:CompareExchange(byref,int,int,byref):int (Instrumented Tier0)
12 (18.75 % of base) : 18135.dasm - System.Threading.SpinLock:CompareExchange(byref,int,int,byref):int (Tier0)
8 (16.67 % of base) : 120335.dasm - System.Threading.ReaderWriterLockSlim+SpinLock:TryEnter():ubyte:this (Instrumented Tier0)
8 (16.67 % of base) : 119599.dasm - System.Threading.ReaderWriterLockSlim+SpinLock:TryEnter():ubyte:this (Tier0)
6 (15.00 % of base) : 44398.dasm - System.Threading.Tests.Perf_Interlocked:Exchange_int():int:this (Tier0)
6 (14.29 % of base) : 10997.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetContention():int:this (Instrumented Tier0)
6 (14.29 % of base) : 10822.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetContention():int:this (Tier0)
6 (14.29 % of base) : 154933.dasm - System.Threading.Tests.Perf_Interlocked:CompareExchange_int():int:this (Tier0)
10 (13.51 % of base) : 18159.dasm - System.Threading.LowLevelLock:TryAcquire_NoFastPath(int):ubyte:this (Tier0)
8 (13.33 % of base) : 109889.dasm - System.Reflection.Internal.NativeHeapMemoryBlock+DisposableData:Release():this (Tier0)
6 (13.04 % of base) : 4967.dasm - System.Threading.Interlocked:Or(byref,int):int (Tier0-FullOpts)
6 (13.04 % of base) : 15196.dasm - System.Threading.Interlocked:Or(byref,uint):uint (Tier1)
8 (12.90 % of base) : 106768.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol+PackedFlags:SetHasRequiredMemberAttribute(ubyte):this (Tier1)
Top method improvements (percentages):
-16 (-36.36 % of base) : 18317.dasm - System.Threading.Interlocked:Decrement(byref):int (Tier1)
-26 (-34.21 % of base) : 130958.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 166039.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 127332.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 139403.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 169923.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 36518.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 61767.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-14 (-33.33 % of base) : 17120.dasm - System.Threading.Interlocked:Increment(byref):int (Tier1)
-12 (-31.58 % of base) : 4852.dasm - System.Threading.Interlocked:Exchange(byref,int):int (Tier1)
-14 (-30.43 % of base) : 17121.dasm - System.Threading.Interlocked:Add(byref,int):int (Tier1)
-12 (-25.00 % of base) : 11462.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetContention():int:this (Tier1)
-16 (-24.24 % of base) : 138497.dasm - System.Threading.Channels.AsyncOperation`1[int]:TryReserveCompletionIfCancelable():ubyte:this (Tier1)
-16 (-24.24 % of base) : 160982.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryReserveCompletionIfCancelable():ubyte:this (Tier1)
-16 (-24.24 % of base) : 170938.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryReserveCompletionIfCancelable():ubyte:this (Tier1)
-16 (-24.24 % of base) : 49513.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryReserveCompletionIfCancelable():ubyte:this (Tier1)
-16 (-24.24 % of base) : 156305.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryReserveCompletionIfCancelable():ubyte:this (Tier1)
-16 (-24.24 % of base) : 162793.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryReserveCompletionIfCancelable():ubyte:this (Tier1)
-16 (-24.24 % of base) : 165638.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryReserveCompletionIfCancelable():ubyte:this (Tier1)
-16 (-24.24 % of base) : 168378.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryReserveCompletionIfCancelable():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: 20254108 (overridden on cmd)
Total bytes of diff: 20253574 (overridden on cmd)
Total bytes of delta: -534 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
34 : 63208.dasm (2.66 % of base)
34 : 46486.dasm (1.33 % of base)
26 : 26785.dasm (13.00 % of base)
26 : 50631.dasm (3.75 % of base)
24 : 9906.dasm (1.82 % of base)
18 : 5899.dasm (3.00 % of base)
18 : 20421.dasm (6.16 % of base)
16 : 11818.dasm (1.88 % of base)
14 : 14280.dasm (1.68 % of base)
14 : 230.dasm (35.00 % of base)
14 : 47219.dasm (3.43 % of base)
14 : 5911.dasm (9.33 % of base)
12 : 20339.dasm (0.57 % of base)
12 : 47271.dasm (6.19 % of base)
12 : 28351.dasm (1.94 % of base)
12 : 50624.dasm (0.83 % of base)
12 : 5823.dasm (18.75 % of base)
12 : 21623.dasm (12.00 % of base)
12 : 30406.dasm (1.41 % of base)
12 : 55620.dasm (2.88 % of base)
Top file improvements (bytes):
-50 : 1939.dasm (-19.69 % of base)
-46 : 19323.dasm (-21.90 % of base)
-32 : 47258.dasm (-5.61 % of base)
-30 : 47265.dasm (-5.23 % of base)
-28 : 47542.dasm (-0.44 % of base)
-28 : 19286.dasm (-2.29 % of base)
-26 : 25422.dasm (-34.21 % of base)
-26 : 47262.dasm (-7.93 % of base)
-26 : 55621.dasm (-1.86 % of base)
-24 : 56537.dasm (-1.18 % of base)
-22 : 47180.dasm (-0.93 % of base)
-20 : 26822.dasm (-20.41 % of base)
-20 : 5830.dasm (-3.98 % of base)
-18 : 25511.dasm (-3.46 % of base)
-18 : 5204.dasm (-0.79 % of base)
-18 : 60012.dasm (-4.55 % of base)
-18 : 60022.dasm (-12.16 % of base)
-18 : 5352.dasm (-23.68 % of base)
-16 : 26832.dasm (-24.24 % of base)
-16 : 1919.dasm (-1.49 % of base)
77 total files with Code Size differences (36 improved, 41 regressed), 20 unchanged.
Top method regressions (bytes):
34 (2.66 % of base) : 63208.dasm - BenchmarksGame.FannkuchRedux_9:Run(int,int) (Tier0-FullOpts)
34 (1.33 % of base) : 46486.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier0-FullOpts)
26 (13.00 % of base) : 26785.dasm - System.Threading.LowLevelSpinWaiter:SpinWaitForCondition(System.Func`2[System.Object,ubyte],System.Object,int,int):ubyte:this (Tier0-FullOpts)
26 (3.75 % of base) : 50631.dasm - System.Threading.Tasks.Task:InternalRunSynchronously(System.Threading.Tasks.TaskScheduler,ubyte):this (Tier1)
24 (1.82 % of base) : 9906.dasm - System.Threading.Barrier:SignalAndWait(int,System.Threading.CancellationToken):ubyte:this (Tier0-FullOpts)
18 (6.16 % of base) : 20421.dasm - System.Net.Security.SslStream:CloseInternal():this (Tier0)
18 (3.00 % of base) : 5899.dasm - System.Threading.SpinLock:ContinueTryEnter(int,byref):this (Tier0-FullOpts)
16 (1.88 % of base) : 11818.dasm - System.Threading.SemaphoreSlim:Release(int):int:this (Tier0-FullOpts)
14 (3.43 % of base) : 47219.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol:LazyMethodChecks():this (Tier1)
14 (1.68 % of base) : 14280.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[int]:LocalPush(int,byref):this (Tier1)
14 (35.00 % of base) : 230.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)
14 (9.33 % of base) : 5911.dasm - System.Threading.SpinLock:ExitSlowPath(ubyte):this (Tier1)
12 (6.19 % of base) : 47271.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:get_KnownCircularStruct():ubyte:this (Tier0)
12 (1.41 % of base) : 30406.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[System.__Canon]:LocalPush(System.__Canon,byref):this (Tier0)
12 (12.00 % of base) : 21623.dasm - System.Diagnostics.Tracing.NameInfo:ReserveEventIDsBelow(int) (Tier0-FullOpts)
12 (2.88 % of base) : 55620.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ConnectAsync(System.Net.Sockets.Socket):System.Threading.Tasks.ValueTask:this (Tier1)
12 (18.75 % of base) : 5823.dasm - System.Threading.SpinLock:CompareExchange(byref,int,int,byref):int (Tier0)
12 (0.83 % of base) : 50624.dasm - System.Threading.Tasks.Parallel:ForWorker[System.__Canon,int](int,int,System.Threading.Tasks.ParallelOptions,System.Action`1[int],System.Action`2[int,System.Threading.Tasks.ParallelLoopState],System.Func`4[int,System.__Canon,System.__Canon,System.__Canon],System.Func`1[System.__Canon],System.Action`1[System.__Canon]):System.Threading.Tasks.ParallelLoopResult (Tier1)
12 (1.94 % of base) : 28351.dasm - System.Threading.Tasks.RangeWorker:FindNewWork(byref,byref):ubyte:this (Tier0-FullOpts)
12 (0.57 % of base) : 20339.dasm - System.Threading.Tasks.Task+WhenAllPromise:Invoke(System.Threading.Tasks.Task):this (Tier0-FullOpts)
Top method improvements (bytes):
-50 (-19.69 % of base) : 1939.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Enumerator[System.__Canon,System.__Canon]:Dispose():this (Tier0)
-46 (-21.90 % of base) : 19323.dasm - System.IO.Enumeration.FileSystemEnumerable`1[System.__Canon]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier0)
-32 (-5.61 % of base) : 47258.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) (Tier0-FullOpts)
-30 (-5.23 % of base) : 47265.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)
-28 (-0.44 % of base) : 47542.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (Tier0-FullOpts)
-28 (-2.29 % of base) : 19286.dasm - System.Security.Cryptography.X509Certificates.OpenSslCachedSystemStoreProvider:<LoadMachineStores>g__ProcessFile|26_1(System.String,byref,byref):ubyte (Tier0-FullOpts)
-26 (-7.93 % of base) : 47262.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)
-26 (-1.86 % of base) : 55621.dasm - System.Net.Sockets.Socket:ConnectAsync(System.Net.Sockets.SocketAsyncEventArgs,ubyte,ubyte):ubyte:this (Tier1)
-26 (-34.21 % of base) : 25422.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-24 (-1.18 % of base) : 56537.dasm - System.Threading.ReaderWriterLockSlim:TryEnterWriteLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier0-FullOpts)
-22 (-0.93 % of base) : 47180.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AfterMembersChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0-FullOpts)
-20 (-20.41 % of base) : 26822.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryOwnAndReset():ubyte:this (Tier1)
-20 (-3.98 % of base) : 5830.dasm - System.Threading.ThreadPoolWorkQueue+WorkStealingQueue:LocalPopCore():System.Object:this (Tier0-FullOpts)
-18 (-4.55 % of base) : 60012.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[int]:TrySteal(byref,ubyte):ubyte:this (Tier0-FullOpts)
-18 (-3.46 % of base) : 25511.dasm - System.Threading.CancellationTokenSource+Registrations:Unregister(long,System.Threading.CancellationTokenSource+CallbackNode):ubyte:this (Tier1)
-18 (-23.68 % of base) : 5352.dasm - System.Threading.LowLevelLock:TryAcquire_NoFastPath(int):ubyte:this (Tier1)
-18 (-12.16 % of base) : 60022.dasm - System.Threading.ManualResetEventSlim:Reset():this (Tier1)
-18 (-0.79 % of base) : 5204.dasm - System.Threading.PortableThreadPool+GateThread:GateThreadStart() (Tier0-FullOpts)
-16 (-1.49 % of base) : 1919.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (Tier0-FullOpts)
-16 (-20.51 % of base) : 41955.dasm - System.Threading.AsyncMutex:Exit():this (Tier1)
Top method regressions (percentages):
14 (35.00 % of base) : 230.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)
10 (27.78 % of base) : 3520.dasm - System.Threading.Interlocked:Add(byref,int):int (Tier0)
8 (25.00 % of base) : 3810.dasm - System.Threading.Interlocked:Exchange(byref,int):int (Tier0)
8 (19.05 % of base) : 25089.dasm - System.Collections.Immutable.SecureObjectPool:NewId():int (Tier0-FullOpts)
12 (18.75 % of base) : 5823.dasm - System.Threading.SpinLock:CompareExchange(byref,int,int,byref):int (Tier0)
8 (16.67 % of base) : 56483.dasm - System.Threading.ReaderWriterLockSlim+SpinLock:TryEnter():ubyte:this (Tier0)
10 (15.15 % of base) : 31161.dasm - Jil.Deserialize.NameAutomata`1+Helper[int]:GetNextName():System.String (Tier1)
6 (15.00 % of base) : 30430.dasm - System.Threading.Tests.Perf_Interlocked:Exchange_int():int:this (Tier0)
6 (14.29 % of base) : 22565.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetContention():int:this (Tier0)
6 (14.29 % of base) : 69355.dasm - System.Threading.Tests.Perf_Interlocked:CompareExchange_int():int:this (Tier0)
10 (13.51 % of base) : 5275.dasm - System.Threading.LowLevelLock:TryAcquire_NoFastPath(int):ubyte:this (Tier0)
8 (13.33 % of base) : 51821.dasm - System.Reflection.Internal.NativeHeapMemoryBlock+DisposableData:Release():this (Tier0)
6 (13.04 % of base) : 48760.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsUnmanagedCallersOnlyAttributePopulated():this (Tier1)
6 (13.04 % of base) : 48794.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsUseSiteDiagnosticPopulated():this (Tier1)
6 (13.04 % of base) : 9648.dasm - System.Threading.Interlocked:Or(byref,int):int (Tier0-FullOpts)
6 (13.04 % of base) : 9659.dasm - System.Threading.Interlocked:Or(byref,uint):uint (Tier1)
26 (13.00 % of base) : 26785.dasm - System.Threading.LowLevelSpinWaiter:SpinWaitForCondition(System.Func`2[System.Object,ubyte],System.Object,int,int):ubyte:this (Tier0-FullOpts)
8 (12.50 % of base) : 20105.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier0)
12 (12.00 % of base) : 21623.dasm - System.Diagnostics.Tracing.NameInfo:ReserveEventIDsBelow(int) (Tier0-FullOpts)
6 (12.00 % of base) : 23995.dasm - System.Net.Sockets.SocketAsyncEventArgs+MultiConnectSocketAsyncEventArgs:ReachedCoordinationPointFirst():ubyte:this (Tier0)
Top method improvements (percentages):
-16 (-36.36 % of base) : 5339.dasm - System.Threading.Interlocked:Decrement(byref):int (Tier1)
-26 (-34.21 % of base) : 25422.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-14 (-33.33 % of base) : 5317.dasm - System.Threading.Interlocked:Increment(byref):int (Tier1)
-12 (-31.58 % of base) : 9627.dasm - System.Threading.Interlocked:Exchange(byref,int):int (Tier1)
-14 (-30.43 % of base) : 4565.dasm - System.Threading.Interlocked:Add(byref,int):int (Tier1)
-12 (-25.00 % of base) : 22646.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetContention():int:this (Tier1)
-16 (-24.24 % of base) : 26832.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryReserveCompletionIfCancelable():ubyte:this (Tier1)
-14 (-24.14 % of base) : 55647.dasm - System.Net.Sockets.SafeSocketHandle:TryOwnClose():ubyte:this (Tier1)
-14 (-24.14 % of base) : 5909.dasm - System.Threading.SpinLock:CompareExchange(byref,int,int,byref):int (Tier1)
-18 (-23.68 % of base) : 5352.dasm - System.Threading.LowLevelLock:TryAcquire_NoFastPath(int):ubyte:this (Tier1)
-14 (-22.58 % of base) : 49043.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:EnsureFrozenForEnqueues():this (Tier1)
-46 (-21.90 % of base) : 19323.dasm - System.IO.Enumeration.FileSystemEnumerable`1[System.__Canon]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier0)
-8 (-21.05 % of base) : 959.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier1)
-16 (-20.51 % of base) : 41955.dasm - System.Threading.AsyncMutex:Exit():this (Tier1)
-20 (-20.41 % of base) : 26822.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryOwnAndReset():ubyte:this (Tier1)
-50 (-19.69 % of base) : 1939.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Enumerator[System.__Canon,System.__Canon]:Dispose():this (Tier0)
-12 (-19.35 % of base) : 36099.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.ValueTuple`3[System.__Canon,System.__Canon,ubyte]]:CloseDirectoryHandle():this (Tier1)
-14 (-17.95 % of base) : 20574.dasm - System.Net.Sockets.SocketAsyncEventArgs:StartConfiguring():this (Tier1)
-14 (-17.50 % of base) : 24435.dasm - System.Net.Sockets.SocketAsyncEventArgs:Dispose():this (Tier1)
-10 (-12.50 % of base) : 5188.dasm - System.Threading.PortableThreadPool+WorkerThread:TakeActiveRequest(System.Threading.PortableThreadPool):ubyte (Tier0-FullOpts)
coreclr_tests.run.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 325222616 (overridden on cmd)
Total bytes of diff: 325215960 (overridden on cmd)
Total bytes of delta: -6656 (-0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
298 : 399818.dasm (5.45 % of base)
270 : 158857.dasm (3.36 % of base)
138 : 308674.dasm (27.82 % of base)
138 : 312429.dasm (27.82 % of base)
64 : 2279.dasm (2.50 % of base)
58 : 116524.dasm (3.15 % of base)
58 : 158457.dasm (3.15 % of base)
58 : 276377.dasm (3.15 % of base)
58 : 2771.dasm (3.15 % of base)
50 : 294914.dasm (4.22 % of base)
36 : 416776.dasm (1.08 % of base)
36 : 198628.dasm (1.08 % of base)
36 : 328980.dasm (1.44 % of base)
34 : 194323.dasm (2.87 % of base)
34 : 213364.dasm (2.87 % of base)
34 : 110851.dasm (2.87 % of base)
34 : 66144.dasm (2.87 % of base)
34 : 211205.dasm (2.87 % of base)
34 : 2518.dasm (2.64 % of base)
34 : 383044.dasm (2.66 % of base)
Top file improvements (bytes):
-64 : 199018.dasm (-5.41 % of base)
-64 : 416425.dasm (-5.41 % of base)
-48 : 143485.dasm (-3.81 % of base)
-38 : 208800.dasm (-7.28 % of base)
-36 : 476828.dasm (-30.00 % of base)
-36 : 307100.dasm (-17.65 % of base)
-34 : 167246.dasm (-2.68 % of base)
-34 : 308644.dasm (-3.31 % of base)
-34 : 314360.dasm (-6.64 % of base)
-32 : 379693.dasm (-5.61 % of base)
-32 : 150498.dasm (-5.61 % of base)
-32 : 308654.dasm (-5.02 % of base)
-32 : 313626.dasm (-6.25 % of base)
-30 : 379698.dasm (-5.23 % of base)
-30 : 150506.dasm (-5.23 % of base)
-28 : 150830.dasm (-0.43 % of base)
-28 : 379864.dasm (-0.43 % of base)
-26 : 171882.dasm (-34.21 % of base)
-26 : 1984.dasm (-34.21 % of base)
-26 : 274993.dasm (-34.21 % of base)
96 total files with Code Size differences (38 improved, 58 regressed), 15 unchanged.
Top method regressions (bytes):
298 (5.45 % of base) : 399818.dasm - InterlockedTest.Program:TestEntryPoint():int (FullOpts)
270 (3.36 % of base) : 158857.dasm - InterlockedTest.Program:TestEntryPoint():int (Tier0)
138 (27.82 % of base) : 308674.dasm - System.Threading.ThreadInt64PersistentCounter:get_Count():long:this (Tier1)
138 (27.82 % of base) : 312429.dasm - System.Threading.ThreadInt64PersistentCounter:get_Count():long:this (Tier1)
64 (2.50 % of base) : 2279.dasm - System.Threading.ReaderWriterLockSlim:TryEnterWriteLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Instrumented Tier1)
58 (3.15 % of base) : 116524.dasm - System.Threading.ReaderWriterLockSlim:TryEnterWriteLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier1)
58 (3.15 % of base) : 158457.dasm - System.Threading.ReaderWriterLockSlim:TryEnterWriteLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier1)
58 (3.15 % of base) : 276377.dasm - System.Threading.ReaderWriterLockSlim:TryEnterWriteLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier1)
58 (3.15 % of base) : 2771.dasm - System.Threading.ReaderWriterLockSlim:TryEnterWriteLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier1)
50 (4.22 % of base) : 294914.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
36 (1.44 % of base) : 328980.dasm - IntrinsicTest:MainTest():ubyte (FullOpts)
36 (1.08 % of base) : 416776.dasm - LOHPin.LOHPin:Main():int (FullOpts)
36 (1.08 % of base) : 198628.dasm - LOHPin.LOHPin:Main():int (Tier0-FullOpts)
34 (2.66 % of base) : 383044.dasm - BenchmarksGame.FannkuchRedux_9:Run(int,int) (FullOpts)
34 (2.87 % of base) : 194323.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
34 (2.87 % of base) : 213364.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
34 (2.87 % of base) : 110851.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
34 (2.87 % of base) : 66144.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
34 (2.87 % of base) : 211205.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
34 (2.64 % of base) : 2518.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
Top method improvements (bytes):
-64 (-5.41 % of base) : 416425.dasm - DefaultNamespace.RootMem:Main():int (FullOpts)
-64 (-5.41 % of base) : 199018.dasm - DefaultNamespace.RootMem:Main():int (Tier0-FullOpts)
-48 (-3.81 % of base) : 143485.dasm - System.Threading.Tasks.Task:ScheduleAndStart(ubyte):this (Tier1)
-38 (-7.28 % of base) : 208800.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
-36 (-30.00 % of base) : 476828.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:CreateEvaluationBuildEventContext(int,int):Microsoft.Build.Framework.BuildEventContext:this (FullOpts)
-36 (-17.65 % of base) : 307100.dasm - System.Threading.ManualResetEventSlim:Reset():this (Instrumented Tier1)
-34 (-2.68 % of base) : 167246.dasm - System.Buffers.SharedArrayPool`1[int]:Trim():ubyte:this (Tier1)
-34 (-3.31 % of base) : 308644.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
-34 (-6.64 % of base) : 314360.dasm - System.Threading.ThreadPoolWorkQueue:EnqueueAtHighPriority(System.Object):this (Tier1)
-32 (-5.61 % of base) : 379693.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)
-32 (-5.61 % of base) : 150498.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) (Tier0-FullOpts)
-32 (-5.02 % of base) : 308654.dasm - System.Threading.Tasks.ThreadPoolTaskScheduler:QueueTask(System.Threading.Tasks.Task):this (Tier1)
-32 (-6.25 % of base) : 313626.dasm - System.Threading.ThreadPoolWorkQueue:EnqueueAtHighPriority(System.Object):this (Tier1)
-30 (-5.23 % of base) : 379698.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)
-30 (-5.23 % of base) : 150506.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)
-28 (-0.43 % of base) : 379864.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (FullOpts)
-28 (-0.43 % of base) : 150830.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (Tier0-FullOpts)
-26 (-34.21 % of base) : 171882.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 1984.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 274993.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
Top method regressions (percentages):
16 (100.00 % of base) : 399839.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_14():this (FullOpts)
16 (100.00 % of base) : 399840.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_15():this (FullOpts)
14 (87.50 % of base) : 399835.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_10():this (FullOpts)
14 (87.50 % of base) : 399836.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_11():this (FullOpts)
14 (87.50 % of base) : 399838.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_13():this (FullOpts)
14 (87.50 % of base) : 399841.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_16():this (FullOpts)
14 (87.50 % of base) : 474745.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (FullOpts)
12 (75.00 % of base) : 399837.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_12():this (FullOpts)
12 (75.00 % of base) : 399834.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_9():this (FullOpts)
10 (62.50 % of base) : 474860.dasm - System.Threading.Interlocked:Exchange(byref,int):int (FullOpts)
10 (41.67 % of base) : 314070.dasm - Gen`1[int]:Target() (Tier1)
10 (41.67 % of base) : 478586.dasm - Gen`1[System.__Canon]:Target() (FullOpts)
10 (41.67 % of base) : 314073.dasm - Gen`1[System.__Canon]:Target() (Tier1)
10 (41.67 % of base) : 478375.dasm - Gen`1[System.__Canon]:Target():this (FullOpts)
10 (41.67 % of base) : 478422.dasm - Gen`1[System.__Canon]:Target():this (FullOpts)
10 (41.67 % of base) : 313861.dasm - Gen`1[System.__Canon]:Target():this (Tier1)
10 (41.67 % of base) : 313756.dasm - Gen`1[System.__Canon]:Target():this (Tier1)
10 (41.67 % of base) : 313812.dasm - Gen`1[System.Guid]:Target():this (Tier1)
14 (35.00 % of base) : 26373.dasm - NCS:CompareExchange(byref,int,int):int (Tier0)
14 (35.00 % of base) : 275832.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)
Top method improvements (percentages):
-26 (-34.21 % of base) : 171882.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 1984.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 274993.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 169768.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 213293.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 279256.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 294873.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 30768.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 66096.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 122030.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 156570.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 158271.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 159055.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 181764.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 189992.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 194294.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 205255.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 211125.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 276431.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 312432.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: 37766632 (overridden on cmd)
Total bytes of diff: 37767142 (overridden on cmd)
Total bytes of delta: 510 (0.00 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
26 : 113409.dasm (3.29 % of base)
26 : 186669.dasm (3.88 % of base)
24 : 113891.dasm (3.32 % of base)
24 : 200682.dasm (4.41 % of base)
24 : 114038.dasm (1.32 % of base)
24 : 200679.dasm (1.58 % of base)
24 : 200681.dasm (4.55 % of base)
24 : 113896.dasm (2.86 % of base)
22 : 144683.dasm (1.23 % of base)
22 : 139439.dasm (9.24 % of base)
18 : 178465.dasm (4.64 % of base)
18 : 195287.dasm (1.62 % of base)
16 : 185111.dasm (5.26 % of base)
16 : 195247.dasm (1.23 % of base)
16 : 130303.dasm (5.26 % of base)
16 : 139537.dasm (2.66 % of base)
16 : 185188.dasm (7.84 % of base)
16 : 195289.dasm (1.81 % of base)
16 : 122288.dasm (5.19 % of base)
16 : 130374.dasm (7.84 % of base)
Top file improvements (bytes):
-32 : 130119.dasm (-1.08 % of base)
-32 : 184930.dasm (-1.08 % of base)
-26 : 125362.dasm (-32.50 % of base)
-24 : 6243.dasm (-4.23 % of base)
-24 : 5888.dasm (-46.15 % of base)
-24 : 5870.dasm (-46.15 % of base)
-24 : 6462.dasm (-29.27 % of base)
-22 : 5868.dasm (-44.00 % of base)
-22 : 5890.dasm (-44.00 % of base)
-22 : 6242.dasm (-2.89 % of base)
-22 : 5886.dasm (-44.00 % of base)
-22 : 5894.dasm (-40.74 % of base)
-20 : 5891.dasm (-40.00 % of base)
-20 : 5896.dasm (-43.48 % of base)
-20 : 5897.dasm (-43.48 % of base)
-20 : 5906.dasm (-38.46 % of base)
-20 : 6241.dasm (-4.85 % of base)
-20 : 5882.dasm (-38.46 % of base)
-20 : 5892.dasm (-43.48 % of base)
-18 : 130121.dasm (-0.73 % of base)
75 total files with Code Size differences (29 improved, 46 regressed), 20 unchanged.
Top method regressions (bytes):
26 (3.29 % of base) : 113409.dasm - System.ComponentModel.Composition.MetadataViewGenerator:GetMetadataViewFactory(System.Type):System.ComponentModel.Composition.MetadataViewGenerator+MetadataViewFactory (FullOpts)
26 (3.88 % of base) : 186669.dasm - System.Data.ProviderBase.DbConnectionPool:WaitForPendingOpen():this (FullOpts)
24 (3.32 % of base) : 113891.dasm - System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection:Clear():this (FullOpts)
24 (2.86 % of base) : 113896.dasm - System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection:Remove(System.ComponentModel.Composition.Primitives.ComposablePartCatalog):ubyte:this (FullOpts)
24 (1.32 % of base) : 114038.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:Refresh():this (FullOpts)
24 (1.58 % of base) : 200679.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)
24 (4.55 % of base) : 200681.dasm - System.ComponentModel.Composition.Registration.RegistrationBuilder:ReadMemberCustomAttributes(System.Reflection.MemberInfo):System.Collections.Generic.List`1[System.Attribute]:this (FullOpts)
24 (4.41 % of base) : 200682.dasm - System.ComponentModel.Composition.Registration.RegistrationBuilder:ReadParameterCustomAttributes(System.Reflection.ParameterInfo):System.Collections.Generic.List`1[System.Attribute]:this (FullOpts)
22 (1.23 % of base) : 144683.dasm - System.Net.TimerThread:ThreadProc() (FullOpts)
22 (9.24 % of base) : 139439.dasm - System.Runtime.Caching.CacheUsage:FlushUnderUsedItems(int):int:this (FullOpts)
18 (4.64 % of base) : 178465.dasm - System.Net.Security.SslStream:CloseInternal():this (FullOpts)
18 (1.62 % of base) : 195287.dasm - System.Threading.ReaderWriterLock:AcquireReaderLock(int):this (FullOpts)
16 (5.19 % of base) : 122288.dasm - Microsoft.CodeAnalysis.Collections.SmallConcurrentSetOfInts:Add(Microsoft.CodeAnalysis.Collections.SmallConcurrentSetOfInts,int):ubyte (FullOpts)
16 (5.26 % of base) : 185111.dasm - System.Configuration.SectionInformation:set_OverrideMode(int):this (FullOpts)
16 (5.26 % of base) : 130303.dasm - System.Configuration.SectionInformation:set_OverrideMode(int):this (FullOpts)
16 (7.84 % of base) : 185188.dasm - System.Configuration.SectionRecord:ChangeLockSettings(int,int):this (FullOpts)
16 (7.84 % of base) : 130374.dasm - System.Configuration.SectionRecord:ChangeLockSettings(int,int):this (FullOpts)
16 (2.66 % of base) : 139537.dasm - System.Runtime.Caching.MemoryCacheStatistics:CacheManagerThread(int):long:this (FullOpts)
16 (1.23 % of base) : 195247.dasm - System.Threading.Barrier:SignalAndWait(int,System.Threading.CancellationToken):ubyte:this (FullOpts)
16 (1.81 % of base) : 195289.dasm - System.Threading.ReaderWriterLock:AcquireWriterLock(int):this (FullOpts)
Top method improvements (bytes):
-32 (-1.08 % of base) : 130119.dasm - System.Configuration.MgmtConfigurationRecord:GetConfigDefinitionUpdates(ubyte,int,ubyte,byref,byref):this (FullOpts)
-32 (-1.08 % of base) : 184930.dasm - System.Configuration.MgmtConfigurationRecord:GetConfigDefinitionUpdates(ubyte,int,ubyte,byref,byref):this (FullOpts)
-26 (-32.50 % of base) : 125362.dasm - Microsoft.CodeAnalysis.Shared.Collections.TemporaryArray`1[System.__Canon]:Dispose():this (FullOpts)
-24 (-46.15 % of base) : 5870.dasm - System.Threading.Interlocked:Decrement(byref):int (FullOpts)
-24 (-46.15 % of base) : 5888.dasm - System.Threading.Interlocked:Decrement(byref):uint (FullOpts)
-24 (-4.23 % of base) : 6243.dasm - System.Threading.ReaderWriterLockSlim:ExitUpgradeableReadLock():this (FullOpts)
-24 (-29.27 % of base) : 6462.dasm - System.Threading.Tasks.Task:get_Id():int:this (FullOpts)
-22 (-44.00 % of base) : 5890.dasm - System.Threading.Interlocked:Exchange(byref,byte):byte (FullOpts)
-22 (-40.74 % of base) : 5894.dasm - System.Threading.Interlocked:Exchange(byref,float):float (FullOpts)
-22 (-44.00 % of base) : 5868.dasm - System.Threading.Interlocked:Increment(byref):int (FullOpts)
-22 (-44.00 % of base) : 5886.dasm - System.Threading.Interlocked:Increment(byref):uint (FullOpts)
-22 (-2.89 % of base) : 6242.dasm - System.Threading.ReaderWriterLockSlim:ExitWriteLock():this (FullOpts)
-20 (-38.46 % of base) : 5882.dasm - System.Threading.Interlocked:Add(byref,int):int (FullOpts)
-20 (-38.46 % of base) : 5906.dasm - System.Threading.Interlocked:Add(byref,uint):uint (FullOpts)
-20 (-43.48 % of base) : 5896.dasm - System.Threading.Interlocked:Exchange(byref,int):int (FullOpts)
-20 (-43.48 % of base) : 5897.dasm - System.Threading.Interlocked:Exchange(byref,uint):uint (FullOpts)
-20 (-43.48 % of base) : 5892.dasm - System.Threading.Interlocked:Exchange(byref,uint):uint (FullOpts)
-20 (-40.00 % of base) : 5891.dasm - System.Threading.Interlocked:Exchange(byref,ushort):ushort (FullOpts)
-20 (-4.85 % of base) : 6241.dasm - System.Threading.ReaderWriterLockSlim:ExitReadLock():this (FullOpts)
-18 (-0.73 % of base) : 130121.dasm - System.Configuration.MgmtConfigurationRecord:UpdateRecords():this (FullOpts)
Top method regressions (percentages):
8 (28.57 % of base) : 74290.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.EmbeddedSymbolManager:SealCollection():this (FullOpts)
8 (18.18 % of base) : 150221.dasm - System.Net.LazyAsyncResult:get_CompletedSynchronously():ubyte:this (FullOpts)
8 (18.18 % of base) : 137609.dasm - System.Net.LazyAsyncResult:get_CompletedSynchronously():ubyte:this (FullOpts)
8 (18.18 % of base) : 144476.dasm - System.Net.LazyAsyncResult:get_CompletedSynchronously():ubyte:this (FullOpts)
6 (16.67 % of base) : 144424.dasm - System.Net.TimerThread+InfiniteTimer:Cancel():ubyte:this (FullOpts)
10 (16.13 % of base) : 114191.dasm - Microsoft.Internal.ReadLock:Dispose():this (FullOpts)
10 (16.13 % of base) : 114196.dasm - Microsoft.Internal.ReadWriteLock:Dispose():this (FullOpts)
10 (16.13 % of base) : 114199.dasm - Microsoft.Internal.WriteLock:Dispose():this (FullOpts)
10 (16.13 % of base) : 200626.dasm - System.Threading.ReadLock:Dispose():this (FullOpts)
10 (16.13 % of base) : 200631.dasm - System.Threading.ReadWriteLock:Dispose():this (FullOpts)
10 (16.13 % of base) : 200634.dasm - System.Threading.WriteLock:Dispose():this (FullOpts)
8 (16.00 % of base) : 144477.dasm - System.Net.LazyAsyncResult:get_IsCompleted():ubyte:this (FullOpts)
8 (16.00 % of base) : 150222.dasm - System.Net.LazyAsyncResult:get_IsCompleted():ubyte:this (FullOpts)
8 (16.00 % of base) : 137610.dasm - System.Net.LazyAsyncResult:get_IsCompleted():ubyte:this (FullOpts)
6 (15.79 % of base) : 131102.dasm - System.IO.Pipelines.SequencePipeReader:CancelPendingRead():this (FullOpts)
10 (15.62 % of base) : 113958.dasm - System.ComponentModel.Composition.Hosting.CompositionLock:Dispose():this (FullOpts)
6 (13.04 % of base) : 94891.dasm - Microsoft.CodeAnalysis.VisualBasic.WithBlockBinder+WithBlockInfo:RegisterAccessFromNestedLambda():this (FullOpts)
10 (11.90 % of base) : 114338.dasm - System.ComponentModel.Composition.Hosting.CompositionLock+CompositionLockHolder:Dispose():this (FullOpts)
10 (11.90 % of base) : 185137.dasm - System.Configuration.SectionInformation:set_ForceSave(ubyte):this (FullOpts)
10 (11.90 % of base) : 130325.dasm - System.Configuration.SectionInformation:set_ForceSave(ubyte):this (FullOpts)
Top method improvements (percentages):
-24 (-46.15 % of base) : 5870.dasm - System.Threading.Interlocked:Decrement(byref):int (FullOpts)
-24 (-46.15 % of base) : 5888.dasm - System.Threading.Interlocked:Decrement(byref):uint (FullOpts)
-22 (-44.00 % of base) : 5890.dasm - System.Threading.Interlocked:Exchange(byref,byte):byte (FullOpts)
-22 (-44.00 % of base) : 5868.dasm - System.Threading.Interlocked:Increment(byref):int (FullOpts)
-22 (-44.00 % of base) : 5886.dasm - System.Threading.Interlocked:Increment(byref):uint (FullOpts)
-20 (-43.48 % of base) : 5896.dasm - System.Threading.Interlocked:Exchange(byref,int):int (FullOpts)
-20 (-43.48 % of base) : 5897.dasm - System.Threading.Interlocked:Exchange(byref,uint):uint (FullOpts)
-20 (-43.48 % of base) : 5892.dasm - System.Threading.Interlocked:Exchange(byref,uint):uint (FullOpts)
-22 (-40.74 % of base) : 5894.dasm - System.Threading.Interlocked:Exchange(byref,float):float (FullOpts)
-20 (-40.00 % of base) : 5891.dasm - System.Threading.Interlocked:Exchange(byref,ushort):ushort (FullOpts)
-20 (-38.46 % of base) : 5882.dasm - System.Threading.Interlocked:Add(byref,int):int (FullOpts)
-20 (-38.46 % of base) : 5906.dasm - System.Threading.Interlocked:Add(byref,uint):uint (FullOpts)
-16 (-34.78 % of base) : 5904.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (FullOpts)
-16 (-34.78 % of base) : 5900.dasm - System.Threading.Interlocked:CompareExchange(byref,uint,uint):uint (FullOpts)
-16 (-34.78 % of base) : 5905.dasm - System.Threading.Interlocked:CompareExchange(byref,uint,uint):uint (FullOpts)
-26 (-32.50 % of base) : 125362.dasm - Microsoft.CodeAnalysis.Shared.Collections.TemporaryArray`1[System.__Canon]:Dispose():this (FullOpts)
-18 (-31.03 % of base) : 5902.dasm - System.Threading.Interlocked:CompareExchange(byref,float,float):float (FullOpts)
-16 (-30.77 % of base) : 5898.dasm - System.Threading.Interlocked:CompareExchange(byref,byte,byte):byte (FullOpts)
-24 (-29.27 % of base) : 6462.dasm - System.Threading.Tasks.Task:get_Id():int:this (FullOpts)
-12 (-23.08 % of base) : 5899.dasm - System.Threading.Interlocked:CompareExchange(byref,ushort,ushort):ushort (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: 50459272 (overridden on cmd)
Total bytes of diff: 50456264 (overridden on cmd)
Total bytes of delta: -3008 (-0.01 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
162 : 164771.dasm (13.41 % of base)
132 : 188099.dasm (5.34 % of base)
128 : 164775.dasm (10.68 % of base)
124 : 145267.dasm (32.80 % of base)
122 : 164773.dasm (9.21 % of base)
118 : 145149.dasm (35.98 % of base)
56 : 155671.dasm (4.52 % of base)
56 : 155940.dasm (4.09 % of base)
56 : 155715.dasm (4.52 % of base)
56 : 155937.dasm (5.43 % of base)
56 : 260157.dasm (6.95 % of base)
56 : 156137.dasm (3.00 % of base)
48 : 186805.dasm (20.00 % of base)
48 : 186806.dasm (20.00 % of base)
48 : 36433.dasm (2.75 % of base)
44 : 176115.dasm (3.36 % of base)
44 : 194947.dasm (3.36 % of base)
40 : 144623.dasm (4.42 % of base)
40 : 279627.dasm (3.28 % of base)
40 : 145272.dasm (2.00 % of base)
Top file improvements (bytes):
-66 : 194729.dasm (-2.38 % of base)
-66 : 175892.dasm (-2.38 % of base)
-58 : 250082.dasm (-1.40 % of base)
-36 : 203123.dasm (-30.00 % of base)
-34 : 175894.dasm (-1.37 % of base)
-34 : 194731.dasm (-1.37 % of base)
-32 : 63729.dasm (-5.61 % of base)
-32 : 71514.dasm (-3.53 % of base)
-30 : 20895.dasm (-2.85 % of base)
-30 : 189206.dasm (-3.11 % of base)
-28 : 187988.dasm (-2.29 % of base)
-28 : 63741.dasm (-4.56 % of base)
-28 : 276079.dasm (-1.71 % of base)
-28 : 39896.dasm (-0.42 % of base)
-26 : 230720.dasm (-5.88 % of base)
-26 : 63738.dasm (-7.93 % of base)
-26 : 164224.dasm (-1.66 % of base)
-26 : 189340.dasm (-1.76 % of base)
-26 : 270025.dasm (-2.08 % of base)
-26 : 118321.dasm (-14.13 % of base)
89 total files with Code Size differences (51 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
162 (13.41 % of base) : 164771.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)
132 (5.34 % of base) : 188099.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509CertificateReader:CopyWithPrivateKey(System.Security.Cryptography.RSA):System.Security.Cryptography.X509Certificates.ICertificatePal:this (FullOpts)
128 (10.68 % of base) : 164775.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)
124 (32.80 % of base) : 145267.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:Dispose(ubyte):this (FullOpts)
122 (9.21 % of base) : 164773.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)
118 (35.98 % of base) : 145149.dasm - System.ComponentModel.Composition.Hosting.ComposablePartExportProvider:Dispose(ubyte):this (FullOpts)
56 (6.95 % of base) : 260157.dasm - Roslyn.Utilities.SerializationThreadPool+ImmediateBackgroundThreadPool+<>c:<QueueAsync>b__5_3():this (FullOpts)
56 (5.43 % of base) : 155937.dasm - System.Data.ConstraintCollection:BaseRemove(System.Data.Constraint):this (FullOpts)
56 (4.09 % of base) : 155940.dasm - System.Data.ConstraintCollection:Clear():this (FullOpts)
56 (3.00 % of base) : 156137.dasm - System.Data.DataColumnCollection:CanRemove(System.Data.DataColumn,ubyte):ubyte:this (FullOpts)
56 (4.52 % of base) : 155715.dasm - System.Data.XmlDataTreeWriter:CreateToplevelTables():System.Data.DataTable[]:this (FullOpts)
56 (4.52 % of base) : 155671.dasm - System.Data.XmlTreeGen:CreateToplevelTables():System.Data.DataTable[]:this (FullOpts)
48 (2.75 % of base) : 36433.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:MoreSpecificOperator(Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,byref):int:this (FullOpts)
48 (20.00 % of base) : 186805.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) : 186806.dasm - System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged:DeriveBytes(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):this (FullOpts)
44 (3.36 % of base) : 176115.dasm - System.Configuration.SectionInformation:SetRuntimeConfigurationInformation(System.Configuration.BaseConfigurationRecord,System.Configuration.FactoryRecord,System.Configuration.SectionRecord):this (FullOpts)
44 (3.36 % of base) : 194947.dasm - System.Configuration.SectionInformation:SetRuntimeConfigurationInformation(System.Configuration.BaseConfigurationRecord,System.Configuration.FactoryRecord,System.Configuration.SectionRecord):this (FullOpts)
40 (2.00 % of base) : 145272.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:Refresh():this (FullOpts)
40 (4.42 % of base) : 144623.dasm - System.ComponentModel.Composition.MetadataViewGenerator:GetMetadataViewFactory(System.Type):System.ComponentModel.Composition.MetadataViewGenerator+MetadataViewFactory (FullOpts)
40 (3.28 % of base) : 279627.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)
Top method improvements (bytes):
-66 (-2.38 % of base) : 194729.dasm - System.Configuration.MgmtConfigurationRecord:GetConfigDefinitionUpdates(ubyte,int,ubyte,byref,byref):this (FullOpts)
-66 (-2.38 % of base) : 175892.dasm - System.Configuration.MgmtConfigurationRecord:GetConfigDefinitionUpdates(ubyte,int,ubyte,byref,byref):this (FullOpts)
-58 (-1.40 % of base) : 250082.dasm - Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder:<VisitForToLoop>g__initializeLoop|139_1(byref):this (FullOpts)
-36 (-30.00 % of base) : 203123.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:CreateEvaluationBuildEventContext(int,int):Microsoft.Build.Framework.BuildEventContext:this (FullOpts)
-34 (-1.37 % of base) : 175894.dasm - System.Configuration.MgmtConfigurationRecord:UpdateRecords():this (FullOpts)
-34 (-1.37 % of base) : 194731.dasm - System.Configuration.MgmtConfigurationRecord:UpdateRecords():this (FullOpts)
-32 (-5.61 % of base) : 63729.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)
-32 (-3.53 % of base) : 71514.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:Complete(Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.SyntaxReference,System.Threading.CancellationToken):this (FullOpts)
-30 (-2.85 % of base) : 20895.dasm - System.Buffers.SharedArrayPool`1[short]:Trim():ubyte:this (FullOpts)
-30 (-3.11 % of base) : 189206.dasm - System.Net.Quic.ResettableValueTaskSource:TryComplete(System.Exception,ubyte):ubyte:this (FullOpts)
-28 (-0.42 % of base) : 39896.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (FullOpts)
-28 (-4.56 % of base) : 63741.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)
-28 (-1.71 % of base) : 276079.dasm - System.Net.WebSockets.ManagedWebSocket+<WaitForWriteTaskAsync>d__58:MoveNext():this (FullOpts)
-28 (-2.29 % of base) : 187988.dasm - System.Security.Cryptography.X509Certificates.OpenSslCachedSystemStoreProvider:<LoadMachineStores>g__ProcessFile|26_1(System.String,byref,byref):ubyte (FullOpts)
-26 (-7.93 % of base) : 63738.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)
-26 (-14.13 % of base) : 118321.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:get_CoClassType():Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
-26 (-5.88 % of base) : 230720.dasm - System.ComponentModel.ReflectPropertyDescriptor:get_ChangedEventValue():System.ComponentModel.EventDescriptor:this (FullOpts)
-26 (-1.76 % of base) : 189340.dasm - System.Net.Quic.QuicListener+<AcceptConnectionAsync>d__15:MoveNext():this (FullOpts)
-26 (-1.66 % of base) : 164224.dasm - System.Net.Sockets.Socket:ConnectAsync(System.Net.Sockets.SocketAsyncEventArgs,ubyte,ubyte):ubyte:this (FullOpts)
-26 (-2.08 % of base) : 270025.dasm - System.Threading.Tasks.Parallel+<>c__49`1+<<ForAsync>b__49_2>d[ubyte]:MoveNext():this (FullOpts)
Top method regressions (percentages):
118 (35.98 % of base) : 145149.dasm - System.ComponentModel.Composition.Hosting.ComposablePartExportProvider:Dispose(ubyte):this (FullOpts)
12 (35.29 % of base) : 156600.dasm - System.Data.DataRelationCollection:.ctor():this (FullOpts)
12 (35.29 % of base) : 21377.dasm - System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:InterlockedCompareExchange(System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks,System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks):System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:this (FullOpts)
124 (32.80 % of base) : 145267.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:Dispose(ubyte):this (FullOpts)
18 (21.43 % of base) : 230622.dasm - System.ComponentModel.InterlockedBitVector32:set_Item(int,ubyte):this (FullOpts)
10 (20.00 % of base) : 236096.dasm - System.Runtime.Serialization.Formatters.Binary.ReadObjectInfo:GetObjectInfo(System.Runtime.Serialization.Formatters.Binary.SerObjectInfoInit):System.Runtime.Serialization.Formatters.Binary.ReadObjectInfo (FullOpts)
48 (20.00 % of base) : 186805.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) : 186806.dasm - System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged:DeriveBytes(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):this (FullOpts)
8 (19.05 % of base) : 217771.dasm - System.Collections.Immutable.SecureObjectPool:NewId():int (FullOpts)
8 (19.05 % of base) : 239202.dasm - System.Collections.Immutable.SecureObjectPool:NewId():int (FullOpts)
8 (15.38 % of base) : 243868.dasm - Roslyn.Utilities.ThreadSafeFlagOperations:Clear(byref,int):ubyte (FullOpts)
20 (14.29 % of base) : 200787.dasm - Microsoft.Build.Execution.BuildManager:GetNewConfigurationId():int:this (FullOpts)
8 (14.29 % of base) : 176047.dasm - System.Configuration.SafeBitVector32:set_Item(int,ubyte):this (FullOpts)
8 (14.29 % of base) : 194882.dasm - System.Configuration.SafeBitVector32:set_Item(int,ubyte):this (FullOpts)
8 (14.29 % of base) : 270969.dasm - System.Runtime.Caching.SafeBitVector32:set_Item(int,ubyte):this (FullOpts)
162 (13.41 % of base) : 164771.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)
12 (13.33 % of base) : 156717.dasm - System.Data.DataRow:.ctor(System.Data.DataRowBuilder):this (FullOpts)
6 (13.04 % of base) : 71900.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsCustomAttributesPopulated():this (FullOpts)
6 (13.04 % of base) : 71392.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+Flags:SetFieldDefinitionsNoted():this (FullOpts)
6 (13.04 % of base) : 140220.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsUseSiteDiagnosticPopulated():this (FullOpts)
Top method improvements (percentages):
-20 (-34.48 % of base) : 243230.dasm - Roslyn.Utilities.InterlockedOperations:GetOrStore(byref,int,int):int (FullOpts)
-36 (-30.00 % of base) : 203123.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:CreateEvaluationBuildEventContext(int,int):Microsoft.Build.Framework.BuildEventContext:this (FullOpts)
-16 (-29.63 % of base) : 203042.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:get_NextEvaluationId():int:this (FullOpts)
-16 (-29.63 % of base) : 203043.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:get_NextProjectId():int:this (FullOpts)
-14 (-29.17 % of base) : 203044.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:get_NextTargetId():int:this (FullOpts)
-14 (-29.17 % of base) : 203045.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:get_NextTaskId():int:this (FullOpts)
-14 (-29.17 % of base) : 245642.dasm - Microsoft.CodeAnalysis.Compilation:UnregisterPossibleUpcomingEventEnqueue():this (FullOpts)
-14 (-29.17 % of base) : 258208.dasm - Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+CaptureIdDispenser:GetNextId():int:this (FullOpts)
-14 (-29.17 % of base) : 282647.dasm - System.Net.WebClient:EndOperation():this (FullOpts)
-16 (-26.67 % of base) : 269981.dasm - System.Threading.Tasks.Parallel+ForEachAsyncState`1[System.__Canon]:SignalWorkerCompletedIterating():ubyte:this (FullOpts)
-16 (-26.67 % of base) : 269989.dasm - System.Threading.Tasks.Parallel+ForEachAsyncState`1[ubyte]:SignalWorkerCompletedIterating():ubyte:this (FullOpts)
-12 (-26.09 % of base) : 245641.dasm - Microsoft.CodeAnalysis.Compilation:RegisterPossibleUpcomingEventEnqueue():this (FullOpts)
-12 (-26.09 % of base) : 276980.dasm - System.IO.Pipelines.SequencePipeReader:CancelPendingRead():this (FullOpts)
-12 (-26.09 % of base) : 197585.dasm - System.Net.Mime.MultiAsyncResult:Enter():this (FullOpts)
-12 (-26.09 % of base) : 197589.dasm - System.Net.Mime.MultiAsyncResult:Increment():this (FullOpts)
-12 (-26.09 % of base) : 189952.dasm - System.Transactions.CheapUnfairReaderWriterLock:ExitReadLock():this (FullOpts)
-12 (-26.09 % of base) : 191037.dasm - Xunit.DelegatingExecutionSummarySink:<OnMessageWithTypes>b__13_0(Xunit.MessageHandlerArgs`1[Xunit.Abstractions.IErrorMessage]):this (FullOpts)
-18 (-25.00 % of base) : 71693.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+LazySubstitutedType:TryForceResolve(ubyte):this (FullOpts)
-12 (-25.00 % of base) : 116931.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.EmbeddedSymbolManager:SealCollection():this (FullOpts)
-14 (-25.00 % of base) : 164463.dasm - System.Net.Sockets.SocketAsyncEventArgs+MultiConnectSocketAsyncEventArgs:ReachedCoordinationPointFirst():ubyte:this (FullOpts)
libraries_tests.run.linux.arm.Release.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 238899034 (overridden on cmd)
Total bytes of diff: 238857164 (overridden on cmd)
Total bytes of delta: -41870 (-0.02 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
296 : 560137.dasm (9.72 % of base)
176 : 716796.dasm (21.89 % of base)
168 : 400721.dasm (18.03 % of base)
166 : 400716.dasm (18.04 % of base)
160 : 314793.dasm (32.92 % of base)
156 : 681783.dasm (25.08 % of base)
156 : 712863.dasm (25.08 % of base)
156 : 314331.dasm (25.08 % of base)
156 : 393967.dasm (25.08 % of base)
156 : 406596.dasm (25.08 % of base)
156 : 63895.dasm (25.08 % of base)
154 : 275376.dasm (10.52 % of base)
154 : 386027.dasm (26.01 % of base)
154 : 407763.dasm (18.97 % of base)
154 : 407766.dasm (26.01 % of base)
154 : 276272.dasm (26.01 % of base)
154 : 407637.dasm (10.61 % of base)
152 : 132406.dasm (16.74 % of base)
150 : 407764.dasm (30.24 % of base)
150 : 275436.dasm (30.24 % of base)
Top file improvements (bytes):
-126 : 664798.dasm (-2.06 % of base)
-100 : 321322.dasm (-3.39 % of base)
-98 : 630874.dasm (-2.96 % of base)
-96 : 626597.dasm (-3.23 % of base)
-96 : 246403.dasm (-3.26 % of base)
-96 : 630850.dasm (-3.03 % of base)
-94 : 182374.dasm (-1.65 % of base)
-94 : 483798.dasm (-3.20 % of base)
-94 : 574951.dasm (-2.88 % of base)
-94 : 372658.dasm (-2.88 % of base)
-94 : 309434.dasm (-2.87 % of base)
-94 : 352186.dasm (-2.89 % of base)
-94 : 428622.dasm (-2.88 % of base)
-94 : 569640.dasm (-2.88 % of base)
-94 : 549405.dasm (-2.88 % of base)
-92 : 127785.dasm (-3.17 % of base)
-92 : 510377.dasm (-3.14 % of base)
-92 : 265835.dasm (-3.17 % of base)
-92 : 267233.dasm (-2.83 % of base)
-92 : 488585.dasm (-2.82 % of base)
97 total files with Code Size differences (40 improved, 57 regressed), 20 unchanged.
Top method regressions (bytes):
296 (9.72 % of base) : 560137.dasm - System.Security.Cryptography.Tests.SP800108HmacCounterKdfTests:VerifyKbkdf(ubyte[],ubyte[],System.Security.Cryptography.HashAlgorithmName,ushort[],ushort[]) (Tier1)
176 (21.89 % of base) : 716796.dasm - System.Threading.PortableThreadPool+WaitThread:UnregisterWait(System.Threading.RegisteredWaitHandle,ubyte):this (Tier1)
168 (18.03 % of base) : 400721.dasm - System.Threading.PortableThreadPool:NotifyThreadUnblocked():this (Tier1)
166 (18.04 % of base) : 400716.dasm - System.Threading.PortableThreadPool:NotifyThreadBlocked():ubyte:this (Tier1)
160 (32.92 % of base) : 314793.dasm - System.Threading.PortableThreadPool:PerformBlockingAdjustment(ubyte):uint:this (Tier1)
156 (25.08 % of base) : 681783.dasm - System.Threading.PortableThreadPool:NotifyThreadUnblocked():this (Tier1)
156 (25.08 % of base) : 712863.dasm - System.Threading.PortableThreadPool:NotifyThreadUnblocked():this (Tier1)
156 (25.08 % of base) : 314331.dasm - System.Threading.PortableThreadPool:NotifyThreadUnblocked():this (Tier1)
156 (25.08 % of base) : 393967.dasm - System.Threading.PortableThreadPool:NotifyThreadUnblocked():this (Tier1)
156 (25.08 % of base) : 406596.dasm - System.Threading.PortableThreadPool:NotifyThreadUnblocked():this (Tier1)
156 (25.08 % of base) : 63895.dasm - System.Threading.PortableThreadPool:NotifyThreadUnblocked():this (Tier1)
154 (10.52 % of base) : 275376.dasm - System.Threading.PortableThreadPool+WaitThread:ProcessRemovals():int:this (Tier1)
154 (10.61 % of base) : 407637.dasm - System.Threading.PortableThreadPool+WaitThread:ProcessRemovals():int:this (Tier1)
154 (18.97 % of base) : 407763.dasm - System.Threading.PortableThreadPool+WaitThread:UnregisterWait(System.Threading.RegisteredWaitHandle,ubyte):this (Tier1)
154 (26.01 % of base) : 386027.dasm - System.Threading.RegisteredWaitHandle:PerformCallbackPortableCore(ubyte):this (Tier1)
154 (26.01 % of base) : 407766.dasm - System.Threading.RegisteredWaitHandle:PerformCallbackPortableCore(ubyte):this (Tier1)
154 (26.01 % of base) : 276272.dasm - System.Threading.RegisteredWaitHandle:PerformCallbackPortableCore(ubyte):this (Tier1)
152 (16.74 % of base) : 132406.dasm - System.Threading.PortableThreadPool:NotifyThreadBlocked():ubyte:this (Tier1)
150 (30.24 % of base) : 407764.dasm - System.Threading.RegisteredWaitHandle:OnRemoveWait():this (Tier1)
150 (30.24 % of base) : 275436.dasm - System.Threading.RegisteredWaitHandle:OnRemoveWait():this (Tier1)
Top method improvements (bytes):
-126 (-2.06 % of base) : 664798.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttribute(Microsoft.CodeAnalysis.CSharp.BoundAttribute,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:this (Tier1)
-100 (-3.39 % of base) : 321322.dasm - Xunit.Sdk.TestMethodRunner`1+<RunAsync>d__31[System.__Canon]:MoveNext():this (Tier1)
-98 (-2.96 % of base) : 630874.dasm - Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[System.__Canon]:MoveNext():this (Tier1)
-96 (-3.03 % of base) : 630850.dasm - Xunit.Sdk.TestCollectionRunner`1+<RunAsync>d__27[System.__Canon]:MoveNext():this (Tier1)
-96 (-3.23 % of base) : 626597.dasm - Xunit.Sdk.TestMethodRunner`1+<RunAsync>d__31[System.__Canon]:MoveNext():this (Tier1)
-96 (-3.26 % of base) : 246403.dasm - Xunit.Sdk.TestMethodRunner`1+<RunAsync>d__31[System.__Canon]:MoveNext():this (Tier1)
-94 (-1.65 % of base) : 182374.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceConstructorSymbolBase:MethodChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
-94 (-2.88 % of base) : 574951.dasm - Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[System.__Canon]:MoveNext():this (Tier1)
-94 (-2.88 % of base) : 372658.dasm - Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[System.__Canon]:MoveNext():this (Tier1)
-94 (-2.87 % of base) : 309434.dasm - Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[System.__Canon]:MoveNext():this (Tier1)
-94 (-2.89 % of base) : 352186.dasm - Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[System.__Canon]:MoveNext():this (Tier1)
-94 (-2.88 % of base) : 428622.dasm - Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[System.__Canon]:MoveNext():this (Tier1)
-94 (-2.88 % of base) : 569640.dasm - Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[System.__Canon]:MoveNext():this (Tier1)
-94 (-2.88 % of base) : 549405.dasm - Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[System.__Canon]:MoveNext():this (Tier1)
-94 (-3.20 % of base) : 483798.dasm - Xunit.Sdk.TestMethodRunner`1+<RunAsync>d__31[System.__Canon]:MoveNext():this (Tier1)
-92 (-2.83 % of base) : 267233.dasm - Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[System.__Canon]:MoveNext():this (Tier1)
-92 (-2.82 % of base) : 488585.dasm - Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[System.__Canon]:MoveNext():this (Tier1)
-92 (-3.17 % of base) : 127785.dasm - Xunit.Sdk.TestMethodRunner`1+<RunAsync>d__31[System.__Canon]:MoveNext():this (Tier1)
-92 (-3.14 % of base) : 510377.dasm - Xunit.Sdk.TestMethodRunner`1+<RunAsync>d__31[System.__Canon]:MoveNext():this (Tier1)
-92 (-3.17 % of base) : 265835.dasm - Xunit.Sdk.TestMethodRunner`1+<RunAsync>d__31[System.__Canon]:MoveNext():this (Tier1)
Top method regressions (percentages):
10 (38.46 % of base) : 61788.dasm - Microsoft.CodeAnalysis.Internal.Log.CorrelationIdFactory:GetNextId():int (Tier1)
10 (38.46 % of base) : 27948.dasm - Microsoft.CodeAnalysis.VersionStamp:GetNextGlobalVersion():int (Tier1)
10 (38.46 % of base) : 150423.dasm - Microsoft.CodeAnalysis.VersionStamp:GetNextGlobalVersion():int (Tier1)
10 (38.46 % of base) : 164980.dasm - Microsoft.CodeAnalysis.VersionStamp:GetNextGlobalVersion():int (Tier1)
10 (38.46 % of base) : 341280.dasm - System.Linq.Parallel.PlinqEtwProvider:NextQueryId():int (Tier1)
12 (35.29 % of base) : 267311.dasm - System.Data.DataRelationCollection:.ctor():this (Tier1)
160 (32.92 % of base) : 314793.dasm - System.Threading.PortableThreadPool:PerformBlockingAdjustment(ubyte):uint:this (Tier1)
146 (32.44 % of base) : 407762.dasm - System.Threading.RegisteredWaitHandle:RequestCallback():this (Tier1)
146 (32.44 % of base) : 386015.dasm - System.Threading.RegisteredWaitHandle:RequestCallback():this (Tier1)
146 (32.44 % of base) : 276269.dasm - System.Threading.RegisteredWaitHandle:RequestCallback():this (Tier1)
148 (31.09 % of base) : 386033.dasm - System.Threading.RegisteredWaitHandle:CompleteCallbackRequest():this (Tier1)
148 (31.09 % of base) : 276276.dasm - System.Threading.RegisteredWaitHandle:CompleteCallbackRequest():this (Tier1)
148 (31.09 % of base) : 407769.dasm - System.Threading.RegisteredWaitHandle:CompleteCallbackRequest():this (Tier1)
148 (30.71 % of base) : 325448.dasm - System.Threading.PortableThreadPool:NotifyThreadBlocked():ubyte:this (Tier1)
148 (30.71 % of base) : 405940.dasm - System.Threading.PortableThreadPool:NotifyThreadBlocked():ubyte:this (Tier1)
150 (30.24 % of base) : 407764.dasm - System.Threading.RegisteredWaitHandle:OnRemoveWait():this (Tier1)
150 (30.24 % of base) : 275436.dasm - System.Threading.RegisteredWaitHandle:OnRemoveWait():this (Tier1)
150 (30.24 % of base) : 386023.dasm - System.Threading.RegisteredWaitHandle:OnRemoveWait():this (Tier1)
12 (30.00 % of base) : 449471.dasm - System.Xml.Schema.XmlSchema:get_SchemaId():int:this (Tier1)
12 (30.00 % of base) : 504946.dasm - System.Xml.Schema.XmlSchema:get_SchemaId():int:this (Tier1)
Top method improvements (percentages):
-16 (-36.36 % of base) : 42724.dasm - System.Threading.Interlocked:Decrement(byref):int (Instrumented Tier1)
-16 (-36.36 % of base) : 55622.dasm - System.Threading.Interlocked:Decrement(byref):int (Tier1)
-26 (-34.21 % of base) : 112307.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 318486.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 325098.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 341144.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 379271.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 577131.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 701005.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 703373.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 133224.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 314319.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 709552.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 713027.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 714863.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 81386.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 95424.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 135775.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 450496.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
-26 (-34.21 % of base) : 46268.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
librariestestsnotieredcompilation.run.linux.arm.Release.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 93598228 (overridden on cmd)
Total bytes of diff: 93594890 (overridden on cmd)
Total bytes of delta: -3338 (-0.00 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
380 : 145613.dasm (18.77 % of base)
380 : 145620.dasm (23.34 % of base)
230 : 142815.dasm (15.05 % of base)
142 : 142803.dasm (13.84 % of base)
140 : 142820.dasm (14.08 % of base)
136 : 142819.dasm (14.32 % of base)
132 : 153625.dasm (5.34 % of base)
126 : 143411.dasm (18.00 % of base)
124 : 81946.dasm (32.80 % of base)
124 : 143702.dasm (22.79 % of base)
120 : 143463.dasm (22.47 % of base)
118 : 80362.dasm (35.98 % of base)
118 : 210017.dasm (24.38 % of base)
118 : 209805.dasm (24.18 % of base)
86 : 302376.dasm (2.46 % of base)
80 : 302344.dasm (2.59 % of base)
66 : 302347.dasm (2.48 % of base)
62 : 34880.dasm (10.40 % of base)
62 : 302328.dasm (2.14 % of base)
56 : 158704.dasm (5.16 % of base)
Top file improvements (bytes):
-32 : 5397.dasm (-3.53 % of base)
-32 : 7253.dasm (-5.61 % of base)
-32 : 88732.dasm (-1.32 % of base)
-30 : 153341.dasm (-3.11 % of base)
-30 : 7258.dasm (-5.23 % of base)
-28 : 158329.dasm (-1.65 % of base)
-28 : 158631.dasm (-1.73 % of base)
-28 : 158643.dasm (-1.72 % of base)
-28 : 297445.dasm (-3.09 % of base)
-28 : 6868.dasm (-0.41 % of base)
-28 : 158192.dasm (-6.28 % of base)
-28 : 158259.dasm (-1.57 % of base)
-28 : 158306.dasm (-1.44 % of base)
-28 : 158780.dasm (-1.11 % of base)
-28 : 20794.dasm (-2.29 % of base)
-28 : 158256.dasm (-1.68 % of base)
-28 : 158341.dasm (-1.51 % of base)
-28 : 158386.dasm (-1.65 % of base)
-28 : 158499.dasm (-1.42 % of base)
-26 : 20489.dasm (-1.70 % of base)
84 total files with Code Size differences (53 improved, 31 regressed), 20 unchanged.
Top method regressions (bytes):
380 (18.77 % of base) : 145613.dasm - System.MemoryTests.MemoryMarshalTests:AsMemory_Roundtrips_Core[int](System.ReadOnlyMemory`1[int],ubyte) (FullOpts)
380 (23.34 % of base) : 145620.dasm - System.MemoryTests.MemoryMarshalTests:AsMemory_Roundtrips_Core[System.__Canon](System.ReadOnlyMemory`1[System.__Canon],ubyte) (FullOpts)
230 (15.05 % of base) : 142815.dasm - System.MemoryTests.MemoryPoolTests:EachRentalIsUniqueUntilDisposed() (FullOpts)
142 (13.84 % of base) : 142803.dasm - System.MemoryTests.MemoryPoolTests:MemoryPoolPin(int) (FullOpts)
140 (14.08 % of base) : 142820.dasm - System.MemoryTests.MemoryPoolTests:MemoryPoolPinOffsetAtEnd() (FullOpts)
136 (14.32 % of base) : 142819.dasm - System.MemoryTests.MemoryPoolTests:MemoryPoolSpan() (FullOpts)
132 (5.34 % of base) : 153625.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509CertificateReader:CopyWithPrivateKey(System.Security.Cryptography.RSA):System.Security.Cryptography.X509Certificates.ICertificatePal:this (FullOpts)
126 (18.00 % of base) : 143411.dasm - System.MemoryTests.ReadOnlyMemoryTests:AsMemory_StartAndLength(System.String,int,int) (FullOpts)
124 (32.80 % of base) : 81946.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:Dispose(ubyte):this (FullOpts)
124 (22.79 % of base) : 143702.dasm - System.MemoryTests.MemoryTests:Memory_Pin_ExpectedPointerValue() (FullOpts)
120 (22.47 % of base) : 143463.dasm - System.MemoryTests.ReadOnlyMemoryTests:AsMemory_Pin_ExpectedPointerValue() (FullOpts)
118 (35.98 % of base) : 80362.dasm - System.ComponentModel.Composition.Hosting.ComposablePartExportProvider:Dispose(ubyte):this (FullOpts)
118 (24.18 % of base) : 209805.dasm - System.Tests.StringTests:Ctor_CharPtr_DoesNotAccessInvalidPage() (FullOpts)
118 (24.38 % of base) : 210017.dasm - System.Tests.StringTests:Ctor_SBytePtr_DoesNotAccessInvalidPage() (FullOpts)
86 (2.46 % of base) : 302376.dasm - TaskCoverage.Coverage:Task_WhenAll_TwoTasks_WakesOnBothCompletion() (FullOpts)
80 (2.59 % of base) : 302344.dasm - TaskCoverage.Coverage:Task_WhenAll_TwoTasks_WakesOnBothCompletionWithException() (FullOpts)
66 (2.48 % of base) : 302347.dasm - TaskCoverage.Coverage+<Task_WhenAny_TwoTasks_WakesOnFirstCompletion>d__8:MoveNext():this (FullOpts)
62 (10.40 % of base) : 34880.dasm - Stashbox.StashboxContainer:RegisterInstance(System.Object,System.Type,System.Object,ubyte):Stashbox.IStashboxContainer:this (FullOpts)
62 (2.14 % of base) : 302328.dasm - TaskCoverage.Coverage:Task_WhenAll_TwoTasks_WakesOnBothCompletionWithCancellation() (FullOpts)
56 (5.16 % of base) : 158704.dasm - System.Net.WebSockets.Client.Tests.ConnectTest_Http2+<<ConnectAsync_VersionSupported_NoSsl_Success>b__5_0>d:MoveNext():this (FullOpts)
Top method improvements (bytes):
-32 (-5.61 % of base) : 7253.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)
-32 (-3.53 % of base) : 5397.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:Complete(Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.SyntaxReference,System.Threading.CancellationToken):this (FullOpts)
-32 (-1.32 % of base) : 88732.dasm - System.Configuration.MgmtConfigurationRecord:UpdateRecords():this (FullOpts)
-30 (-5.23 % of base) : 7258.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)
-30 (-3.11 % of base) : 153341.dasm - System.Net.Quic.ResettableValueTaskSource:TryComplete(System.Exception,ubyte):ubyte:this (FullOpts)
-28 (-0.41 % of base) : 6868.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (FullOpts)
-28 (-1.44 % of base) : 158306.dasm - System.Net.WebSockets.Client.Tests.CloseTest+<>c__DisplayClass15_0+<<CloseAsync_CancelableEvenWhenPendingReceive_Throws>b__0>d:MoveNext():this (FullOpts)
-28 (-1.68 % of base) : 158256.dasm - System.Net.WebSockets.Client.Tests.ConnectTest_Http2+<<ConnectAsync_VersionNotSupported_NoSsl_Throws>b__1_0>d:MoveNext():this (FullOpts)
-28 (-1.73 % of base) : 158631.dasm - System.Net.WebSockets.Client.Tests.ConnectTest_Http2+<<ConnectAsync_VersionNotSupported_WithSsl_Throws>b__2_0>d:MoveNext():this (FullOpts)
-28 (-1.72 % of base) : 158643.dasm - System.Net.WebSockets.Client.Tests.ConnectTest+<<ConnectAsync_HttpResponseDetailsCollectedOnFailure_CustomHeader>b__15_0>d:MoveNext():this (FullOpts)
-28 (-1.42 % of base) : 158499.dasm - System.Net.WebSockets.Client.Tests.DeflateTests+<>c__DisplayClass1_0+<<PerMessageDeflateHeaders>b__0>d:MoveNext():this (FullOpts)
-28 (-1.57 % of base) : 158259.dasm - System.Net.WebSockets.Client.Tests.DeflateTests+<>c__DisplayClass2_0+<<ThrowsWhenContinuationHasDifferentCompressionFlags>b__0>d:MoveNext():this (FullOpts)
-28 (-1.51 % of base) : 158341.dasm - System.Net.WebSockets.Client.Tests.DeflateTests+<>c__DisplayClass3_0+<<SendHelloWithDisableCompression>b__0>d:MoveNext():this (FullOpts)
-28 (-1.11 % of base) : 158780.dasm - System.Net.WebSockets.Client.Tests.InvokerConnectTest+<ConnectAsync_CustomInvokerWithIncompatibleWebSocketOptions_ThrowsArgumentException>d__4:MoveNext():this (FullOpts)
-28 (-1.65 % of base) : 158386.dasm - System.Net.WebSockets.Client.Tests.SendReceiveTest_Http2+<>c__DisplayClass1_0+<<ReceiveNoThrowAfterSend_NoSsl>b__0>d:MoveNext():this (FullOpts)
-28 (-1.65 % of base) : 158329.dasm - System.Net.WebSockets.Client.Tests.SendReceiveTest_Http2+<>c__DisplayClass2_0+<<ReceiveNoThrowAfterSend_WithSsl>b__0>d:MoveNext():this (FullOpts)
-28 (-6.28 % of base) : 158192.dasm - System.Net.WebSockets.Client.Tests.WebSocketHelper:InitWebSocketSupported():ubyte (FullOpts)
-28 (-2.29 % of base) : 20794.dasm - System.Security.Cryptography.X509Certificates.OpenSslCachedSystemStoreProvider:<LoadMachineStores>g__ProcessFile|26_1(System.String,byref,byref):ubyte (FullOpts)
-28 (-3.09 % of base) : 297445.dasm - ThreadPoolBoundHandleTests:PreAllocatedOverlapped_BlittableTypeAsPinData_DoesNotThrow():this (FullOpts)
-26 (-1.70 % of base) : 20489.dasm - System.Net.Sockets.Socket:ConnectAsync(System.Net.Sockets.SocketAsyncEventArgs,ubyte,ubyte):ubyte:this (FullOpts)
Top method regressions (percentages):
16 (100.00 % of base) : 304272.dasm - System.Threading.Tests.InterlockedTests+<>c:<InterlockedCompareExchange_Object>b__38_0():System.Object:this (FullOpts)
14 (87.50 % of base) : 304257.dasm - System.Threading.Tests.InterlockedTests+<>c:<InterlockedExchange_Object>b__24_0():System.Object:this (FullOpts)
118 (35.98 % of base) : 80362.dasm - System.ComponentModel.Composition.Hosting.ComposablePartExportProvider:Dispose(ubyte):this (FullOpts)
124 (32.80 % of base) : 81946.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:Dispose(ubyte):this (FullOpts)
118 (24.38 % of base) : 210017.dasm - System.Tests.StringTests:Ctor_SBytePtr_DoesNotAccessInvalidPage() (FullOpts)
118 (24.18 % of base) : 209805.dasm - System.Tests.StringTests:Ctor_CharPtr_DoesNotAccessInvalidPage() (FullOpts)
380 (23.34 % of base) : 145620.dasm - System.MemoryTests.MemoryMarshalTests:AsMemory_Roundtrips_Core[System.__Canon](System.ReadOnlyMemory`1[System.__Canon],ubyte) (FullOpts)
124 (22.79 % of base) : 143702.dasm - System.MemoryTests.MemoryTests:Memory_Pin_ExpectedPointerValue() (FullOpts)
120 (22.47 % of base) : 143463.dasm - System.MemoryTests.ReadOnlyMemoryTests:AsMemory_Pin_ExpectedPointerValue() (FullOpts)
10 (20.00 % of base) : 40179.dasm - System.Runtime.Serialization.Formatters.Binary.ReadObjectInfo:GetObjectInfo(System.Runtime.Serialization.Formatters.Binary.SerObjectInfoInit):System.Runtime.Serialization.Formatters.Binary.ReadObjectInfo (FullOpts)
48 (20.00 % of base) : 24206.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) : 24225.dasm - System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged:DeriveBytes(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):this (FullOpts)
8 (19.05 % of base) : 2400.dasm - System.Collections.Immutable.SecureObjectPool:NewId():int (FullOpts)
380 (18.77 % of base) : 145613.dasm - System.MemoryTests.MemoryMarshalTests:AsMemory_Roundtrips_Core[int](System.ReadOnlyMemory`1[int],ubyte) (FullOpts)
126 (18.00 % of base) : 143411.dasm - System.MemoryTests.ReadOnlyMemoryTests:AsMemory_StartAndLength(System.String,int,int) (FullOpts)
10 (15.15 % of base) : 42624.dasm - Microsoft.CodeAnalysis.SolutionState:GetBranchId():Microsoft.CodeAnalysis.BranchId:this (FullOpts)
10 (15.15 % of base) : 48370.dasm - Microsoft.CodeAnalysis.SolutionState:GetBranchId():Microsoft.CodeAnalysis.BranchId:this (FullOpts)
230 (15.05 % of base) : 142815.dasm - System.MemoryTests.MemoryPoolTests:EachRentalIsUniqueUntilDisposed() (FullOpts)
136 (14.32 % of base) : 142819.dasm - System.MemoryTests.MemoryPoolTests:MemoryPoolSpan() (FullOpts)
140 (14.08 % of base) : 142820.dasm - System.MemoryTests.MemoryPoolTests:MemoryPoolPinOffsetAtEnd() (FullOpts)
Top method improvements (percentages):
-24 (-31.58 % of base) : 301119.dasm - System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext:Post(System.Threading.SendOrPostCallback,System.Object):this (FullOpts)
-24 (-31.58 % of base) : 24109.dasm - System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext:Post(System.Threading.SendOrPostCallback,System.Object):this (FullOpts)
-16 (-30.77 % of base) : 298325.dasm - System.Threading.RateLimiting.Tests.TestEquality:GetHashCode(int):int:this (FullOpts)
-14 (-29.17 % of base) : 122410.dasm - System.IO.Tests.StreamConformanceTests+NativeMemoryManager:Unpin():this (FullOpts)
-14 (-29.17 % of base) : 157764.dasm - System.Net.WebClient:EndOperation():this (FullOpts)
-14 (-29.17 % of base) : 297643.dasm - System.Threading.RateLimiting.Tests.TrackingRateLimiter:GetStatistics():System.Threading.RateLimiting.RateLimiterStatistics:this (FullOpts)
-14 (-29.17 % of base) : 302491.dasm - System.Threading.Tasks.Tests.AsyncTaskMethodBuilderTests+TrackOperationsSynchronizationContext:OperationCompleted():this (FullOpts)
-18 (-29.03 % of base) : 298327.dasm - System.Threading.RateLimiting.Tests.TestEquality:Equals(int,int):ubyte:this (FullOpts)
-12 (-26.09 % of base) : 128561.dasm - System.IO.Pipelines.SequencePipeReader:CancelPendingRead():this (FullOpts)
-12 (-26.09 % of base) : 297537.dasm - System.Threading.RateLimiting.Tests.TrackingRateLimiter:Dispose(ubyte):this (FullOpts)
-12 (-26.09 % of base) : 300428.dasm - System.Threading.Tasks.Dataflow.Tests.DataflowBlockExtensionsTests+<>c__DisplayClass55_0:<TestChoose_ManyConcurrent>b__1(int):this (FullOpts)
-12 (-26.09 % of base) : 298732.dasm - System.Threading.Tasks.Dataflow.Tests.SimpleNetworkTests+<>c__DisplayClass9_0:<BroadcastToActions>b__2(int):this (FullOpts)
-12 (-26.09 % of base) : 299556.dasm - System.Threading.Tasks.Dataflow.Tests.WriteOnceBlockTests+<>c__DisplayClass3_0:<TestLinkToOptions>b__4(int):this (FullOpts)
-12 (-26.09 % of base) : 302489.dasm - System.Threading.Tasks.Tests.AsyncTaskMethodBuilderTests+TrackOperationsSynchronizationContext:OperationStarted():this (FullOpts)
-12 (-26.09 % of base) : 303393.dasm - System.Threading.Tasks.Tests.CancellationTokenTests+<>c__DisplayClass35_1:<DerivedCancellationTokenSource>b__1():this (FullOpts)
-12 (-26.09 % of base) : 301663.dasm - System.Threading.Tasks.Tests.ParallelForTests+<>c__DisplayClass2_0:<RunSimpleParallelDoTest>b__1():this (FullOpts)
-12 (-26.09 % of base) : 301848.dasm - System.Threading.Tasks.Tests.ParallelForTests+<>c__DisplayClass3_0:<RunSimpleParallelForIncrementTest>b__2(int):this (FullOpts)
-12 (-26.09 % of base) : 305321.dasm - System.Threading.Tests.TimerFiringTests+<>c__DisplayClass19_0:<TimersCreatedConcurrentlyOnDifferentThreadsAllFire>b__0(System.Object):this (FullOpts)
-18 (-25.71 % of base) : 301199.dasm - System.Threading.Tasks.Tests.ParallelForTest:ThreadLocalFinally(System.Collections.Generic.List`1[int]):this (FullOpts)
-18 (-25.71 % of base) : 302878.dasm - System.Threading.Tasks.Tests.TaskAwaiterTests+QUWITaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte: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: 13497114 (overridden on cmd)
Total bytes of diff: 13496426 (overridden on cmd)
Total bytes of delta: -688 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
48 : 27007.dasm (1.15 % of base)
48 : 30079.dasm (2.75 % of base)
34 : 24820.dasm (1.33 % of base)
26 : 16758.dasm (3.75 % of base)
26 : 33085.dasm (13.27 % of base)
24 : 28555.dasm (0.73 % of base)
24 : 25138.dasm (8.05 % of base)
22 : 37296.dasm (7.75 % of base)
22 : 25461.dasm (2.68 % of base)
20 : 30310.dasm (1.69 % of base)
20 : 28752.dasm (1.63 % of base)
18 : 17454.dasm (7.83 % of base)
18 : 18885.dasm (10.11 % of base)
18 : 37720.dasm (4.66 % of base)
16 : 37051.dasm (3.92 % of base)
16 : 7047.dasm (1.96 % of base)
16 : 25150.dasm (2.94 % of base)
16 : 32105.dasm (1.61 % of base)
16 : 37254.dasm (2.79 % of base)
14 : 17319.dasm (9.33 % of base)
Top file improvements (bytes):
-44 : 17542.dasm (-2.80 % of base)
-32 : 25367.dasm (-5.61 % of base)
-30 : 24406.dasm (-3.36 % of base)
-30 : 25376.dasm (-5.23 % of base)
-28 : 27415.dasm (-0.44 % of base)
-28 : 19835.dasm (-2.36 % of base)
-26 : 25369.dasm (-7.93 % of base)
-24 : 32364.dasm (-1.67 % of base)
-24 : 27078.dasm (-3.17 % of base)
-22 : 18869.dasm (-6.83 % of base)
-22 : 25297.dasm (-0.93 % of base)
-20 : 16017.dasm (-12.35 % of base)
-20 : 19066.dasm (-3.98 % of base)
-18 : 27324.dasm (-23.08 % of base)
-18 : 15969.dasm (-7.50 % of base)
-18 : 16965.dasm (-37.50 % of base)
-18 : 19226.dasm (-3.60 % of base)
-18 : 25317.dasm (-2.69 % of base)
-18 : 25368.dasm (-4.79 % of base)
-18 : 15983.dasm (-3.86 % of base)
70 total files with Code Size differences (37 improved, 33 regressed), 12 unchanged.
Top method regressions (bytes):
48 (1.15 % of base) : 27007.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)
48 (2.75 % of base) : 30079.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:MoreSpecificOperator(Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,byref):int:this (FullOpts)
34 (1.33 % of base) : 24820.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
26 (13.27 % of base) : 33085.dasm - System.Threading.LowLevelSpinWaiter:SpinWaitForCondition(System.Func`2[System.Object,ubyte],System.Object,int,int):ubyte:this (FullOpts)
26 (3.75 % of base) : 16758.dasm - System.Threading.Tasks.Task:InternalRunSynchronously(System.Threading.Tasks.TaskScheduler,ubyte):this (FullOpts)
24 (8.05 % of base) : 25138.dasm - Microsoft.CodeAnalysis.Collections.SmallConcurrentSetOfInts:Add(Microsoft.CodeAnalysis.Collections.SmallConcurrentSetOfInts,int):ubyte (FullOpts)
24 (0.73 % of base) : 28555.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)
22 (7.75 % of base) : 37296.dasm - Microsoft.ApplicationInsights.Metrics.ConcurrentDatastructures.GrowingCollection`1[System.__Canon]:Add(System.__Canon):this (FullOpts)
22 (2.68 % of base) : 25461.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbolBase:get_DefaultSyntaxValue():Microsoft.CodeAnalysis.ConstantValue:this (FullOpts)
20 (1.69 % of base) : 30310.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)
20 (1.63 % of base) : 28752.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)
18 (7.83 % of base) : 17454.dasm - SixLabors.ImageSharp.Memory.Internals.UnmanagedMemoryHandle:Free():this (FullOpts)
18 (10.11 % of base) : 18885.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Microsoft.ML.Data.TextLoader+Cursor+RowBatch]:TryEnqueue(Microsoft.ML.Data.TextLoader+Cursor+RowBatch):ubyte:this (FullOpts)
18 (4.66 % of base) : 37720.dasm - System.Threading.Tasks.Task+DelayPromiseWithCancellation+<>c:<.ctor>b__1_0(System.Object,System.Threading.CancellationToken):this (FullOpts)
16 (2.79 % of base) : 37254.dasm - Microsoft.ApplicationInsights.Metrics.DefaultAggregationPeriodCycle:Run():this (FullOpts)
16 (2.94 % of base) : 25150.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbolBase:LazyAsyncMethodChecks(System.Threading.CancellationToken):this (FullOpts)
16 (1.61 % of base) : 32105.dasm - Microsoft.CodeAnalysis.CSharp.SynthesizedClosureMethod:EnsureAttributesExist(Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (FullOpts)
16 (1.96 % of base) : 7047.dasm - System.Threading.SemaphoreSlim:Release(int):int:this (FullOpts)
16 (3.92 % of base) : 37051.dasm - System.Threading.Tasks.Task:TrySetException(System.Object):ubyte:this (FullOpts)
14 (3.63 % of base) : 25000.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:EnsureSignature():this (FullOpts)
Top method improvements (bytes):
-44 (-2.80 % of base) : 17542.dasm - Microsoft.ML.Data.TextLoader+Cursor+LineReader:ThreadProc():this (FullOpts)
-32 (-5.61 % of base) : 25367.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)
-30 (-5.23 % of base) : 25376.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)
-30 (-3.36 % of base) : 24406.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:Complete(Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.SyntaxReference,System.Threading.CancellationToken):this (FullOpts)
-28 (-0.44 % of base) : 27415.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (FullOpts)
-28 (-2.36 % of base) : 19835.dasm - System.Security.Cryptography.X509Certificates.OpenSslCachedSystemStoreProvider:<LoadMachineStores>g__ProcessFile|26_1(System.String,byref,byref):ubyte (FullOpts)
-26 (-7.93 % of base) : 25369.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)
-24 (-1.67 % of base) : 32364.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitLocalFunctionStatement(Microsoft.CodeAnalysis.CSharp.BoundLocalFunctionStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
-24 (-3.17 % of base) : 27078.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceEventSymbol:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-22 (-0.93 % of base) : 25297.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AfterMembersChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-22 (-6.83 % of base) : 18869.dasm - Microsoft.ML.Data.TextLoader+Cursor+ParallelState:ThreadProc(System.Object):this (FullOpts)
-20 (-12.35 % of base) : 16017.dasm - <StartupCode$FSharp-Core>.$Async+Parallel@1621-3[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
-20 (-3.98 % of base) : 19066.dasm - System.Threading.ThreadPoolWorkQueue+WorkStealingQueue:LocalPopCore():System.Object:this (FullOpts)
-18 (-7.50 % of base) : 15969.dasm - <StartupCode$FSharp-Core>.$Async+taskCtxt@1645[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
-18 (-4.79 % of base) : 25368.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)
-18 (-2.69 % of base) : 25317.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbol:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-18 (-23.08 % of base) : 27324.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+LazySubstitutedType:GetResolvedAnnotation(ubyte):ubyte:this (FullOpts)
-18 (-37.50 % of base) : 16965.dasm - SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:AddRef():this (FullOpts)
-18 (-3.60 % of base) : 19226.dasm - System.Net.WebClient:OpenRead(System.Uri):System.IO.Stream:this (FullOpts)
-18 (-3.86 % of base) : 15983.dasm - System.Threading.CancellationTokenSource+Registrations:Unregister(long,System.Threading.CancellationTokenSource+CallbackNode):ubyte:this (FullOpts)
Top method regressions (percentages):
8 (19.05 % of base) : 20760.dasm - System.Collections.Immutable.SecureObjectPool:NewId():int (FullOpts)
26 (13.27 % of base) : 33085.dasm - System.Threading.LowLevelSpinWaiter:SpinWaitForCondition(System.Func`2[System.Object,ubyte],System.Object,int,int):ubyte:this (FullOpts)
10 (11.90 % of base) : 1396.dasm - System.Runtime.InteropServices.GCHandle:Free():this (FullOpts)
6 (11.54 % of base) : 23217.dasm - Roslyn.Utilities.ThreadSafeFlagOperations:Set(byref,int):ubyte (FullOpts)
6 (11.11 % of base) : 16392.dasm - SixLabors.ImageSharp.Diagnostics.MemoryDiagnostics:IncrementTotalUndisposedAllocationCount() (FullOpts)
18 (10.11 % of base) : 18885.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[Microsoft.ML.Data.TextLoader+Cursor+RowBatch]:TryEnqueue(Microsoft.ML.Data.TextLoader+Cursor+RowBatch):ubyte:this (FullOpts)
14 (9.33 % of base) : 17319.dasm - System.Threading.SpinLock:ExitSlowPath(ubyte):this (FullOpts)
10 (8.62 % of base) : 35143.dasm - System.Management.Automation.MshLog:get_NextSequenceNumber():System.String (FullOpts)
24 (8.05 % of base) : 25138.dasm - Microsoft.CodeAnalysis.Collections.SmallConcurrentSetOfInts:Add(Microsoft.CodeAnalysis.Collections.SmallConcurrentSetOfInts,int):ubyte (FullOpts)
18 (7.83 % of base) : 17454.dasm - SixLabors.ImageSharp.Memory.Internals.UnmanagedMemoryHandle:Free():this (FullOpts)
22 (7.75 % of base) : 37296.dasm - Microsoft.ApplicationInsights.Metrics.ConcurrentDatastructures.GrowingCollection`1[System.__Canon]:Add(System.__Canon):this (FullOpts)
4 (7.14 % of base) : 16463.dasm - SixLabors.ImageSharp.Diagnostics.MemoryDiagnostics:DecrementTotalUndisposedAllocationCount() (FullOpts)
10 (6.49 % of base) : 22914.dasm - Roslyn.Utilities.StringTable:AddSharedSlow(int,System.String) (FullOpts)
10 (5.81 % of base) : 20176.dasm - System.Net.Sockets.SocketAsyncEngine:TryRegisterSocket(int,System.Net.Sockets.SocketAsyncContext,byref,byref):ubyte (FullOpts)
10 (4.90 % of base) : 17436.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)
18 (4.66 % of base) : 37720.dasm - System.Threading.Tasks.Task+DelayPromiseWithCancellation+<>c:<.ctor>b__1_0(System.Object,System.Threading.CancellationToken):this (FullOpts)
8 (4.60 % of base) : 25553.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetMembers():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (FullOpts)
6 (4.55 % of base) : 5766.dasm - System.Threading.Tasks.TaskScheduler:get_Id():int:this (FullOpts)
16 (3.92 % of base) : 37051.dasm - System.Threading.Tasks.Task:TrySetException(System.Object):ubyte:this (FullOpts)
8 (3.88 % of base) : 25447.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference:SetLazyConstantValue(Microsoft.CodeAnalysis.ConstantValue,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):this (FullOpts)
Top method improvements (percentages):
-18 (-37.50 % of base) : 16965.dasm - SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:AddRef():this (FullOpts)
-18 (-23.08 % of base) : 27324.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+LazySubstitutedType:GetResolvedAnnotation(ubyte):ubyte:this (FullOpts)
-14 (-22.58 % of base) : 25158.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:EnsureFrozenForEnqueues():this (FullOpts)
-12 (-20.69 % of base) : 20557.dasm - System.Net.Http.HttpConnection:TryOwnReadAheadTaskCompletion():ubyte:this (FullOpts)
-16 (-20.51 % of base) : 30537.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEEventSymbol:get_DeclaredAccessibility():int:this (FullOpts)
-12 (-19.35 % of base) : 2692.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:CloseDirectoryHandle():this (FullOpts)
-12 (-17.65 % of base) : 25432.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberFieldSymbol:get_FixedSize():int:this (FullOpts)
-12 (-15.79 % of base) : 25455.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceSimpleParameterSymbol:GetAttributesBag():Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]:this (FullOpts)
-14 (-15.56 % of base) : 18146.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1+<>c__DisplayClass12_1[System.__Canon]:<TrainWithoutLock>b__1(long,byref):this (FullOpts)
-14 (-15.56 % of base) : 18782.dasm - Microsoft.ML.Trainers.SdcaTrainerBase`3+<>c__DisplayClass19_1[System.__Canon,System.__Canon,System.__Canon]:<TrainWithoutLock>b__1(long,byref):this (FullOpts)
-10 (-15.15 % of base) : 28593.dasm - Microsoft.CodeAnalysis.Shared.Collections.TemporaryArray`1[System.__Canon]:Dispose():this (FullOpts)
-12 (-14.29 % of base) : 16560.dasm - SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[short]:Pin(int):System.Buffers.MemoryHandle:this (FullOpts)
-10 (-12.50 % of base) : 3288.dasm - System.Threading.PortableThreadPool+WorkerThread:TakeActiveRequest(System.Threading.PortableThreadPool):ubyte (FullOpts)
-20 (-12.35 % of base) : 16017.dasm - <StartupCode$FSharp-Core>.$Async+Parallel@1621-3[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
-12 (-12.24 % of base) : 25226.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol:IsMetadataVirtual(ubyte):ubyte:this (FullOpts)
-8 (-10.53 % of base) : 23597.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENestedNamespaceSymbol:EnsureAllMembersLoaded():this (FullOpts)
-12 (-10.34 % of base) : 19363.dasm - System.Net.Http.HttpClient:CheckRequestMessage(System.Net.Http.HttpRequestMessage) (FullOpts)
-10 (-9.26 % of base) : 33086.dasm - System.Threading.LowLevelLock:SpinWaitTryAcquireCallback(System.Object):ubyte (FullOpts)
-10 (-8.93 % of base) : 17545.dasm - Microsoft.ML.Data.TextLoader+Cursor+LineReader:Release():this (FullOpts)
-12 (-8.82 % of base) : 16964.dasm - SixLabors.ImageSharp.Memory.MemoryGroup`1+Owned[SixLabors.ImageSharp.PixelFormats.Rgba32]:IncreaseRefCounts():this (FullOpts)
windows x86
Diffs are based on 2,350,557 contexts (850,572 MinOpts, 1,499,985 FullOpts).
MISSED contexts: 2,848 (0.12%)
No diffs found.
Details
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.windows.x86.checked.mch |
24,660 |
4 |
24,656 |
40 (0.16%) |
40 (0.16%) |
benchmarks.run_pgo.windows.x86.checked.mch |
123,449 |
42,602 |
80,847 |
49 (0.04%) |
49 (0.04%) |
benchmarks.run_tiered.windows.x86.checked.mch |
48,467 |
29,030 |
19,437 |
26 (0.05%) |
26 (0.05%) |
coreclr_tests.run.windows.x86.checked.mch |
584,557 |
326,360 |
258,197 |
304 (0.05%) |
304 (0.05%) |
libraries.crossgen2.windows.x86.checked.mch |
274,604 |
15 |
274,589 |
85 (0.03%) |
85 (0.03%) |
libraries.pmi.windows.x86.checked.mch |
310,399 |
6 |
310,393 |
427 (0.14%) |
427 (0.14%) |
libraries_tests.run.windows.x86.Release.mch |
632,272 |
430,621 |
201,651 |
1,192 (0.19%) |
1,192 (0.19%) |
librariestestsnotieredcompilation.run.windows.x86.Release.mch |
316,269 |
21,931 |
294,338 |
578 (0.18%) |
578 (0.18%) |
realworld.run.windows.x86.checked.mch |
35,880 |
3 |
35,877 |
147 (0.41%) |
147 (0.41%) |
|
2,350,557 |
850,572 |
1,499,985 |
2,848 (0.12%) |
2,848 (0.12%) |