Assembly Diffs
linux arm
Diffs are based on 104,802 contexts (10,727 MinOpts, 94,075 FullOpts).
MISSED contexts: base: 826 (0.42%), diff: 90,575 (45.53%)
Overall (-47,582 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.arm.checked.mch |
181,946 |
-5,784 |
| benchmarks.run_pgo.linux.arm.checked.mch |
756,482 |
-2,682 |
| benchmarks.run_tiered.linux.arm.checked.mch |
610,796 |
-6,806 |
| coreclr_tests.run.linux.arm.checked.mch |
295,714 |
-1,684 |
| libraries.crossgen2.linux.arm.checked.mch |
5,931,272 |
-10 |
| libraries.pmi.linux.arm.checked.mch |
578,368 |
-11,164 |
| libraries_tests.run.linux.arm.Release.mch |
298,006 |
-1,746 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
59,390 |
-4,270 |
| realworld.run.linux.arm.checked.mch |
1,727,516 |
-13,436 |
MinOpts (-7,502 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.linux.arm.checked.mch |
264,396 |
-2,394 |
| benchmarks.run_tiered.linux.arm.checked.mch |
428,430 |
-3,448 |
| coreclr_tests.run.linux.arm.checked.mch |
219,190 |
-596 |
| libraries_tests.run.linux.arm.Release.mch |
163,882 |
-1,064 |
FullOpts (-40,080 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.arm.checked.mch |
177,482 |
-5,784 |
| benchmarks.run_pgo.linux.arm.checked.mch |
492,086 |
-288 |
| benchmarks.run_tiered.linux.arm.checked.mch |
182,366 |
-3,358 |
| coreclr_tests.run.linux.arm.checked.mch |
76,524 |
-1,088 |
| libraries.crossgen2.linux.arm.checked.mch |
5,930,504 |
-10 |
| libraries.pmi.linux.arm.checked.mch |
578,368 |
-11,164 |
| libraries_tests.run.linux.arm.Release.mch |
134,124 |
-682 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
59,390 |
-4,270 |
| realworld.run.linux.arm.checked.mch |
1,723,000 |
-13,436 |
Example diffs
benchmarks.run.linux.arm.checked.mch
-40 (-90.91%) : 3275.dasm - Interop+Ssl:.cctor() (FullOpts)
@@ -15,46 +15,24 @@
G_M51578_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,lr}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M51578_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r0, [r0]
- and r0, r0, 1
- cmp r0, 1
- bne SHORT G_M51578_IG04
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M51578_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M51578_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M51578_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movs r1, 16
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- ; gcr arg pop 0
- b SHORT G_M51578_IG03
- ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 44, prolog size 2, PerfScore 8.00, instruction count 15, allocated bytes for code 44 (MethodHash=38453685) for method Interop+Ssl:.cctor() (FullOpts)
+; Total bytes of code 4, prolog size 2, PerfScore 2.00, instruction count 2, allocated bytes for code 4 (MethodHash=38453685) for method Interop+Ssl:.cctor() (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 1
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0
Vers : 0
- Function Length : 22 (0x00016) Actual length = 44 (0x00002c)
- ---- Epilog scopes ----
- ---- Scope 0
- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
- Condition : 14 (0xe) (always)
- Epilog Start Index : 0 (0x00)
+ Function Length : 2 (0x00002) Actual length = 4 (0x000004)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
ED 08 pop {r3,lr} ; opsize 16
-40 (-74.07%) : 1012.dasm - BenchmarkDotNet.Environments.InfrastructureResolver+<>c:<.ctor>b_10():Perfolizer.Horology.IClock:this (FullOpts)
@@ -15,53 +15,30 @@
G_M52807_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,lr}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M52807_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r0, [r0]
- and r0, r0, 1
- cmp r0, 1
- bne SHORT G_M52807_IG05
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M52807_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52807_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
ldr r0, [r0]
; gcrRegs +[r0]
;; size=10 bbWeight=1 PerfScore 3.00
-G_M52807_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M52807_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M52807_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movs r1, 70
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- ; gcr arg pop 0
- b SHORT G_M52807_IG03
- ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 54, prolog size 2, PerfScore 11.00, instruction count 18, allocated bytes for code 54 (MethodHash=c23b31b8) for method BenchmarkDotNet.Environments.InfrastructureResolver+<>c:<.ctor>b__1_0():Perfolizer.Horology.IClock:this (FullOpts)
+; Total bytes of code 14, prolog size 2, PerfScore 5.00, instruction count 5, allocated bytes for code 14 (MethodHash=c23b31b8) for method BenchmarkDotNet.Environments.InfrastructureResolver+<>c:<.ctor>b__1_0():Perfolizer.Horology.IClock: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 : 7 (0x00007) Actual length = 14 (0x00000e)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
ED 08 pop {r3,lr} ; opsize 16
-42 (-61.76%) : 1039.dasm - Perfolizer.Horology.StopwatchClock:get_Frequency():Perfolizer.Horology.Frequency:this (FullOpts)
@@ -20,15 +20,7 @@
G_M25463_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,lr}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M25463_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r0, [r0]
- and r0, r0, 1
- cmp r0, 1
- bne SHORT G_M25463_IG05
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M25463_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25463_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r1, 0xd1ff
movt r1, 0xd1ff
ldr r0, [r1]
@@ -38,38 +30,24 @@ G_M25463_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blx r3 // CORINFO_HELP_LNG2DBL
; gcr arg pop 0
;; size=22 bbWeight=1 PerfScore 7.00
-G_M25463_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M25463_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M25463_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- ; gcr arg pop 0
- b SHORT G_M25463_IG03
- ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 68, prolog size 2, PerfScore 15.00, instruction count 22, allocated bytes for code 68 (MethodHash=4b259c88) for method Perfolizer.Horology.StopwatchClock:get_Frequency():Perfolizer.Horology.Frequency:this (FullOpts)
+; Total bytes of code 26, prolog size 2, PerfScore 9.00, instruction count 9, allocated bytes for code 26 (MethodHash=4b259c88) for method Perfolizer.Horology.StopwatchClock:get_Frequency():Perfolizer.Horology.Frequency: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 : 34 (0x00022) Actual length = 68 (0x000044)
- ---- Epilog scopes ----
- ---- Scope 0
- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
- Condition : 14 (0xe) (always)
- Epilog Start Index : 0 (0x00)
+ Function Length : 13 (0x0000d) Actual length = 26 (0x00001a)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
ED 08 pop {r3,lr} ; opsize 16
+0 (0.00%) : 2031.dasm - System.Reflection.SignatureTypeExtensions:MatchesParameterTypeExactly(System.Type,System.Reflection.ParameterInfo):ubyte (FullOpts)
@@ -7,11 +7,11 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 4, 3.50) ref -> r5 class-hnd single-def <System.Type>
+; V00 arg0 [V00,T01] ( 4, 4 ) ref -> r5 class-hnd single-def <System.Type>
; V01 arg1 [V01,T00] ( 6, 4 ) ref -> r4 class-hnd single-def <System.Reflection.ParameterInfo>
-; V02 loc0 [V02,T02] ( 3, 2.50) ref -> r6 class-hnd single-def <<unknown class>>
+; V02 loc0 [V02,T03] ( 2, 1.50) ref -> r6 class-hnd single-def <<unknown class>>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 2, 2 ) ref -> r1 single-def "argument with side effect"
+; V04 tmp1 [V04,T02] ( 2, 2 ) ref -> r1 single-def "argument with side effect"
;
; Lcl frame size = 4
@@ -30,11 +30,11 @@ G_M22240_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
mov r6, r0
; gcrRegs +[r6]
- cmp r6, 0
+ cmp r5, 0
beq SHORT G_M22240_IG05
;; size=26 bbWeight=1 PerfScore 9.00
G_M22240_IG03: ; bbWeight=0.50, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref
@@ -58,8 +58,8 @@ G_M22240_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,r5,r6,r11,lr}
bx r3 // <unknown method>
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M22240_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0-r1 r6] +[r4-r5]
+G_M22240_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r0-r1 r6] +[r4]
mov r0, r4
; gcrRegs +[r0]
ldr r3, [r4]
@@ -67,14 +67,13 @@ G_M22240_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5
ldr r3, [r3+0x1C]
blx r3 // <unknown method>
; gcrRegs -[r4]
- cmp r0, r5
+ cmp r0, 0
beq SHORT G_M22240_IG06
movs r0, 0
; gcrRegs -[r0]
b SHORT G_M22240_IG07
;; size=18 bbWeight=0.50 PerfScore 4.50
G_M22240_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r5]
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M22240_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+4 (+0.36%) : 2628.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (FullOpts)
@@ -9,53 +9,51 @@
; Final local variable assignments
;
; V00 loc0 [V00,T03] ( 19, 27 ) ref -> r6 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueue>
-; V01 loc1 [V01,T15] ( 8, 6 ) ref -> r7 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueueThreadLocals>
+; V01 loc1 [V01,T14] ( 8, 6 ) ref -> r7 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueueThreadLocals>
; V02 loc2 [V02 ] ( 13, 22.50) ref -> [sp+0x0C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Object>
-; V03 loc3 [V03,T07] ( 6, 16.50) ref -> r8 class-hnd single-def <System.Object>
+; V03 loc3 [V03,T06] ( 6, 16.50) ref -> r8 class-hnd single-def <System.Object>
; V04 loc4 [V04,T01] ( 13, 33.50) ref -> r9 class-hnd exact single-def <System.Threading.Thread>
-; V05 loc5 [V05,T14] ( 3, 8.50) int -> r10
-; V06 loc6 [V06,T25] ( 2, 2 ) ubyte -> r1
-; V07 loc7 [V07,T26] ( 3, 1.50) ref -> r4 class-hnd single-def <<unknown class>>
+; V05 loc5 [V05,T12] ( 3, 8.50) int -> r10
+; V06 loc6 [V06,T24] ( 2, 2 ) ubyte -> r1
+; V07 loc7 [V07,T25] ( 3, 1.50) ref -> r4 class-hnd single-def <<unknown class>>
; V08 loc8 [V08 ] ( 3, 1.50) ubyte -> [sp+0x08] do-not-enreg[X] addr-exposed ld-addr-op
; V09 loc9 [V09,T05] ( 5, 20 ) int -> r4
; V10 loc10 [V10 ] ( 3, 4.50) ubyte -> [sp+0x04] do-not-enreg[X] addr-exposed ld-addr-op
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V12 tmp1 [V12 ] ( 0, 0 ) ref -> zero-ref
-; V13 tmp2 [V13,T18] ( 2, 4 ) ref -> r7 class-hnd exact single-def "dup spill" <System.Threading.ThreadPoolWorkQueueThreadLocals>
-; V14 tmp3 [V14,T19] ( 4, 3.50) ref -> r7
-; V15 tmp4 [V15,T20] ( 3, 3 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
+; V13 tmp2 [V13,T17] ( 2, 4 ) ref -> r7 class-hnd exact single-def "dup spill" <System.Threading.ThreadPoolWorkQueueThreadLocals>
+; V14 tmp3 [V14,T18] ( 4, 3.50) ref -> r7
+; V15 tmp4 [V15,T19] ( 3, 3 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
;* V16 tmp5 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V17 tmp6 [V17,T27] ( 3, 1.50) ref -> r8 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V18 tmp7 [V18,T21] ( 3, 3 ) byref -> r0 single-def "Inlining Arg"
-; V19 tmp8 [V19,T22] ( 3, 3 ) byref -> r0 single-def "Inlining Arg"
+; V17 tmp6 [V17,T26] ( 3, 1.50) ref -> r8 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V18 tmp7 [V18,T20] ( 3, 3 ) byref -> r0 single-def "Inlining Arg"
+; V19 tmp8 [V19,T21] ( 3, 3 ) byref -> r0 single-def "Inlining Arg"
;* V20 tmp9 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V21 tmp10 [V21,T24] ( 2, 2 ) byref -> r0 "Inlining Arg"
-; V22 tmp11 [V22,T16] ( 6, 6 ) ref -> r7 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool>
-; V23 tmp12 [V23,T23] ( 3, 3 ) byref -> r0 "Inlining Arg"
+; V21 tmp10 [V21,T23] ( 2, 2 ) byref -> r0 "Inlining Arg"
+; V22 tmp11 [V22,T15] ( 6, 6 ) ref -> r7 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool>
+; V23 tmp12 [V23,T22] ( 3, 3 ) byref -> r0 "Inlining Arg"
;* V24 tmp13 [V24 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V25 tmp14 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V26 tmp15 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V27 tmp16 [V27,T04] ( 4, 24 ) ref -> r4 class-hnd "Inlining Arg" <System.Object>
-; V28 tmp17 [V28,T11] ( 4, 12 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V27 tmp16 [V27,T04] ( 3, 24 ) ref -> r4 class-hnd "Inlining Arg" <System.Object>
+; V28 tmp17 [V28,T13] ( 3, 8 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
;* V29 tmp18 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
;* V30 tmp19 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V31 tmp20 [V31,T12] ( 4, 12 ) ref -> r0 class-hnd exact "Inline stloc first use temp" <System.Threading.ExecutionContext>
-; V32 tmp21 [V32,T08] ( 2, 16 ) ref -> r3 class-hnd exact "dup spill" <System.Threading.Thread>
-; V33 tmp22 [V33,T10] ( 4, 14 ) ref -> r3
+; V31 tmp20 [V31,T10] ( 4, 12 ) ref -> r0 class-hnd exact "Inline stloc first use temp" <System.Threading.ExecutionContext>
+; V32 tmp21 [V32,T07] ( 2, 16 ) ref -> r3 class-hnd exact "dup spill" <System.Threading.Thread>
+; V33 tmp22 [V33,T09] ( 4, 14 ) ref -> r3
;* V34 tmp23 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp24 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V36 tmp25 [V36,T00] ( 6, 44 ) ref -> [sp+0x00] class-hnd exact spill-single-def "Inlining Arg" <System.Threading.PortableThreadPool>
;* V37 tmp26 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V38 tmp27 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V39 tmp28 [V39,T06] ( 3, 18 ) ref -> r0 class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
-;* V40 tmp29 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
-;* V41 tmp30 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V42 tmp31 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V43 tmp32 [V43,T13] ( 3, 10 ) int -> r0 "Inline stloc first use temp"
-;* V44 tmp33 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V45 cse0 [V45,T17] ( 3, 6 ) ref -> r0 "CSE - moderate"
-; V46 cse1 [V46,T09] ( 9, 14 ) int -> r5 "CSE - aggressive"
-; V47 cse2 [V47,T02] ( 15, 30 ) ref -> r1 multi-def "CSE - aggressive"
+;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
+;* V40 tmp29 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V41 tmp30 [V41,T11] ( 3, 10 ) int -> r0 "Inline stloc first use temp"
+;* V42 tmp31 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
+; V43 cse0 [V43,T16] ( 3, 6 ) ref -> r0 "CSE - moderate"
+; V44 cse1 [V44,T08] ( 9, 14 ) int -> r5 "CSE - aggressive"
+; V45 cse2 [V45,T02] ( 15, 30 ) ref -> r1 multi-def "CSE - aggressive"
;
; Lcl frame size = 20
@@ -77,7 +75,7 @@ G_M63069_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movw r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR
+ blx r3 // CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_DYNAMICCLASS
; byrRegs +[r0]
ldr r7, [r0+0x20]
; gcrRegs +[r7]
@@ -187,7 +185,7 @@ G_M63069_IG09: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}
add r0, r6, 92
; byrRegs +[r0]
cmp r0, 0
- beq G_M63069_IG52
+ beq G_M63069_IG51
movs r1, 1
movs r2, 0
movw r3, 0xd1ff
@@ -218,7 +216,7 @@ G_M63069_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00C0 {r6 r7
add r0, r6, 92
; byrRegs +[r0]
cmp r0, 0
- beq G_M63069_IG52
+ beq G_M63069_IG51
movs r1, 1
movs r2, 0
movw r3, 0xd1ff
@@ -297,7 +295,7 @@ G_M63069_IG18: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000
str r0, [sp+0x0C] // [V02 loc2]
ldr r0, [sp+0x0C] // [V02 loc2]
cmp r0, 0
- beq G_M63069_IG49
+ beq G_M63069_IG48
;; size=32 bbWeight=2 PerfScore 26.00
G_M63069_IG19: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
@@ -328,9 +326,9 @@ G_M63069_IG21: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
- cmp r0, 0
+ cmp r4, 0
beq SHORT G_M63069_IG23
;; size=26 bbWeight=4 PerfScore 36.00
G_M63069_IG22: ; bbWeight=2, gcrefRegs=03C1 {r0 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
@@ -344,16 +342,14 @@ G_M63069_IG22: ; bbWeight=2, gcrefRegs=03C1 {r0 r6 r7 r8 r9}, byrefRegs=0
; gcrRegs -[r0-r1]
b SHORT G_M63069_IG25
;; size=12 bbWeight=2 PerfScore 12.00
-G_M63069_IG23: ; bbWeight=2, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r4]
- mov r1, r4
- ; gcrRegs +[r1]
+G_M63069_IG23: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+ movs r1, 0
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[r1] +[r0]
+ blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs +[r0]
cmp r0, 0
bne SHORT G_M63069_IG24
movw r1, 0xd1ff
@@ -365,15 +361,12 @@ G_M63069_IG23: ; bbWeight=2, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefRegs=0
blx r3 // <unknown method>
; gcrRegs -[r0]
;; size=46 bbWeight=2 PerfScore 30.00
-G_M63069_IG24: ; bbWeight=2, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefRegs=0000 {}, byref
- mov r0, r4
- ; gcrRegs +[r0]
+G_M63069_IG24: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref
+ movs r0, 0
movw r4, 0xd1ff
- ; gcrRegs -[r4]
movt r4, 0xd1ff
ldr r3, [r4]
blx r3 // <unknown method>
- ; gcrRegs -[r0]
;; size=14 bbWeight=2 PerfScore 10.00
G_M63069_IG25: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref
movs r0, 0
@@ -412,7 +405,7 @@ G_M63069_IG29: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000
movw r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR
+ blx r3 // CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_DYNAMICCLASS
; byrRegs +[r0]
ldr r3, [r0+0x10]
; gcrRegs +[r3]
@@ -508,41 +501,40 @@ G_M63069_IG38: ; bbWeight=2, gcVars=00000001 {V36}, gcrefRegs=03C0 {r6 r7
; gcrRegs -[r0]
;; size=22 bbWeight=2 PerfScore 14.00
G_M63069_IG39: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- mov r0, r8
- ; gcrRegs +[r0]
+ mov r1, r8
+ ; gcrRegs +[r1]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ blx r2 // CORINFO_HELP_CHKCASTINTERFACE
+ ; gcrRegs -[r1] +[r0]
cmp r0, 0
- beq SHORT G_M63069_IG41
- ;; size=6 bbWeight=4 PerfScore 12.00
-G_M63069_IG40: ; bbWeight=1, gcrefRegs=03C1 {r0 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r0]
+ bne SHORT G_M63069_IG41
+ ;; size=24 bbWeight=4 PerfScore 32.00
+G_M63069_IG40: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- cmp r0, r1
- beq SHORT G_M63069_IG42
- ;; size=14 bbWeight=1 PerfScore 5.00
-G_M63069_IG41: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref
movw r1, 0xd1ff
movt r1, 0xd1ff
mov r0, r1
; gcrRegs +[r0]
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- ldr r2, [r2]
- blx r2 // <unknown method>
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
; gcrRegs -[r0]
;; size=22 bbWeight=2 PerfScore 14.00
-G_M63069_IG42: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M63069_IG41: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r0, [r8+0x10]
adds r0, r0, 1
cmp r0, 0
- beq SHORT G_M63069_IG44
+ beq SHORT G_M63069_IG43
;; size=10 bbWeight=4 PerfScore 16.00
-G_M63069_IG43: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M63069_IG42: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
str r0, [r8+0x10]
- b SHORT G_M63069_IG45
+ b SHORT G_M63069_IG44
;; size=6 bbWeight=2 PerfScore 4.00
-G_M63069_IG44: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref
+G_M63069_IG43: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref
mov r0, r8
; gcrRegs +[r0]
movs r1, 1
@@ -552,7 +544,7 @@ G_M63069_IG44: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000
blx r3 // <unknown method>
; gcrRegs -[r0]
;; size=16 bbWeight=2 PerfScore 12.00
-G_M63069_IG45: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M63069_IG44: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r3, [sp]
; gcrRegs +[r3]
str r4, [r3+0xD0]
@@ -565,9 +557,9 @@ G_M63069_IG45: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000
blx r2 // System.Threading.PortableThreadPool:ShouldAdjustMaxWorkersActive(int):ubyte:this
; gcrRegs -[r0 r3]
...
+4 (+2.33%) : 1919.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverterSystem.__Canon:System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)
@@ -8,23 +8,23 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 4.50) ref -> r5 this class-hnd single-def <System.Text.Json.Serialization.JsonConverter>
+; V00 this [V00,T01] ( 5, 4.50) ref -> r5 this class-hnd single-def <System.Text.Json.Serialization.JsonConverter>
; V01 TypeCtx [V01,T00] ( 8, 5.38) int -> r4 single-def
-; V02 loc0 [V02,T08] ( 3, 2.50) ref -> r0 class-hnd single-def <System.Text.Json.Serialization.JsonConverter`1[System.__Canon]>
+;* V02 loc0 [V02,T12] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Text.Json.Serialization.JsonConverter`1[System.__Canon]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
; V05 tmp2 [V05,T05] ( 3, 3 ) ref -> r0 class-hnd single-def "dup spill" <System.Text.Json.Serialization.JsonConverter>
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref single-def
-; V07 tmp4 [V07,T12] ( 3, 1.50) ref -> r0
-; V08 tmp5 [V08,T10] ( 4, 2 ) ref -> r0
+; V07 tmp4 [V07,T11] ( 3, 1.50) ref -> r0
+; V08 tmp5 [V08,T09] ( 4, 2 ) ref -> r0
; V09 tmp6 [V09,T06] ( 3, 3 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.Text.Json.Serialization.Converters.CastingConverter`1[System.__Canon]>
;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
; V11 tmp8 [V11,T04] ( 2, 4 ) int -> r0 "argument with side effect"
; V12 rat0 [V12,T03] ( 3, 4 ) int -> r0 "runtime lookup"
; V13 rat1 [V13,T02] ( 3, 5.60) int -> r0 "fgMakeTemp is creating a new local variable"
-; V14 rat2 [V14,T11] ( 3, 2 ) int -> r0 "runtime lookup"
+; V14 rat2 [V14,T10] ( 3, 2 ) int -> r0 "runtime lookup"
; V15 rat3 [V15,T07] ( 3, 2.80) int -> r0 "spilling expr"
-; V16 rat4 [V16,T09] ( 3, 2.24) int -> r0 "fgMakeTemp is creating a new local variable"
+; V16 rat4 [V16,T08] ( 3, 2.24) int -> r0 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -51,37 +51,42 @@ G_M17047_IG04: ; bbWeight=0.20, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=20 bbWeight=0.20 PerfScore 1.20
G_M17047_IG05: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
mov r1, r5
; gcrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
- cmp r0, 0
- beq SHORT G_M17047_IG07
+ cmp r5, 0
+ beq SHORT G_M17047_IG08
;; size=16 bbWeight=1 PerfScore 6.00
-G_M17047_IG06: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[r5]
- pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M17047_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0] +[r5]
+G_M17047_IG06: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0]
mov r0, r5
; gcrRegs +[r0]
- ldr r3, [r5]
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M17047_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r2,r3,r4,r5,r11,pc}
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M17047_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r0 r5]
+ movs r0, 0
+ movs r3, 0
+ ldr r3, [r3]
ldr r3, [r3+0x30]
ldr r3, [r3+0x10]
blx r3 // <unknown method>
+ ; gcrRegs +[r0]
cmp r0, 0
- bne SHORT G_M17047_IG08
+ bne SHORT G_M17047_IG09
movs r0, 0
; gcrRegs -[r0]
- b SHORT G_M17047_IG09
- ;; size=18 bbWeight=0.50 PerfScore 4.50
-G_M17047_IG08: ; bbWeight=0.50, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref
+ b SHORT G_M17047_IG10
+ ;; size=20 bbWeight=0.50 PerfScore 5.00
+G_M17047_IG09: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
mov r1, r4
movw r3, 0xd1ff
@@ -89,55 +94,54 @@ G_M17047_IG08: ; bbWeight=0.50, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}
ldr r3, [r3]
blx r3 // System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M17047_IG09: ; bbWeight=0.50, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref, isz
+G_M17047_IG10: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
cmp r0, 0
- bne SHORT G_M17047_IG14
+ bne SHORT G_M17047_IG15
ldr r0, [r4+0x20]
; gcrRegs -[r0]
ldr r1, [r0+0x04]
cmp r1, 12
- ble SHORT G_M17047_IG12
+ ble SHORT G_M17047_IG13
;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M17047_IG10: ; bbWeight=0.40, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M17047_IG11: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr r0, [r0+0x0C]
cmp r0, 0
- beq SHORT G_M17047_IG12
+ beq SHORT G_M17047_IG13
;; size=6 bbWeight=0.40 PerfScore 1.20
-G_M17047_IG11: ; bbWeight=0.32, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M17047_IG13
+G_M17047_IG12: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M17047_IG14
;; size=2 bbWeight=0.32 PerfScore 0.32
-G_M17047_IG12: ; bbWeight=0.18, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M17047_IG13: ; bbWeight=0.18, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov r0, r4
movw r1, 0xd1ff
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=20 bbWeight=0.18 PerfScore 1.08
-G_M17047_IG13: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_NEWSFAST
+ blx r3 // CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[r0]
mov r4, r0
; gcrRegs +[r4]
mov r0, r4
- mov r1, r5
- ; gcrRegs +[r1]
+ movs r1, 0
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // System.Text.Json.Serialization.Converters.CastingConverter`1[System.__Canon]:.ctor(System.Text.Json.Serialization.JsonConverter):this
- ; gcrRegs -[r0-r1 r5]
+ ; gcrRegs -[r0]
mov r0, r4
; gcrRegs +[r0]
;; size=30 bbWeight=0.50 PerfScore 5.50
-G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M17047_IG15: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r4]
pop {r2,r3,r4,r5,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 172, prolog size 12, PerfScore 36.10, instruction count 65, allocated bytes for code 172 (MethodHash=3467bd68) for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 176, prolog size 12, PerfScore 37.10, instruction count 67, allocated bytes for code 176 (MethodHash=3467bd68) for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -149,7 +153,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 86 (0x00056) Actual length = 172 (0x0000ac)
+ Function Length : 88 (0x00058) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_pgo.linux.arm.checked.mch
-22 (-50.00%) : 21.dasm - System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
@@ -14,22 +14,16 @@ G_M26209_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add r11, sp, 8
;; size=8 bbWeight=1 PerfScore 2.00
G_M26209_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- mov r1, 384
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r0, [r3]
; gcrRegs +[r0]
- ;; size=32 bbWeight=1 PerfScore 9.00
+ ;; size=10 bbWeight=1 PerfScore 3.00
G_M26209_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r4,r10,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 44, prolog size 8, PerfScore 12.00, instruction count 12, allocated bytes for code 44 (MethodHash=f311999e) for method System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
+; Total bytes of code 22, prolog size 8, PerfScore 6.00, instruction count 6, allocated bytes for code 22 (MethodHash=f311999e) for method System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
; ============================================================
Unwind Info:
@@ -41,7 +35,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 22 (0x00016) Actual length = 44 (0x00002c)
+ Function Length : 11 (0x0000b) Actual length = 22 (0x000016)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
-22 (-50.00%) : 493.dasm - System.Threading.Tasks.Task:get_CompletedTask():System.Threading.Tasks.Task (Tier0)
@@ -14,22 +14,16 @@ G_M58834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add r11, sp, 8
;; size=8 bbWeight=1 PerfScore 2.00
G_M58834_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- mov r1, 940
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r0, [r3]
; gcrRegs +[r0]
- ;; size=32 bbWeight=1 PerfScore 9.00
+ ;; size=10 bbWeight=1 PerfScore 3.00
G_M58834_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r4,r10,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 44, prolog size 8, PerfScore 12.00, instruction count 12, allocated bytes for code 44 (MethodHash=daf41a2d) for method System.Threading.Tasks.Task:get_CompletedTask():System.Threading.Tasks.Task (Tier0)
+; Total bytes of code 22, prolog size 8, PerfScore 6.00, instruction count 6, allocated bytes for code 22 (MethodHash=daf41a2d) for method System.Threading.Tasks.Task:get_CompletedTask():System.Threading.Tasks.Task (Tier0)
; ============================================================
Unwind Info:
@@ -41,7 +35,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 22 (0x00016) Actual length = 44 (0x00002c)
+ Function Length : 11 (0x0000b) Actual length = 22 (0x000016)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
-22 (-50.00%) : 4413.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:get_Default():MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext (Tier0)
@@ -14,22 +14,16 @@ G_M39385_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add r11, sp, 8
;; size=8 bbWeight=1 PerfScore 2.00
G_M39385_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r0, [r3]
; gcrRegs +[r0]
- ;; size=32 bbWeight=1 PerfScore 9.00
+ ;; size=10 bbWeight=1 PerfScore 3.00
G_M39385_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r4,r10,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 44, prolog size 8, PerfScore 12.00, instruction count 12, allocated bytes for code 44 (MethodHash=12e56626) for method MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:get_Default():MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext (Tier0)
+; Total bytes of code 22, prolog size 8, PerfScore 6.00, instruction count 6, allocated bytes for code 22 (MethodHash=12e56626) for method MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:get_Default():MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext (Tier0)
; ============================================================
Unwind Info:
@@ -41,7 +35,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 22 (0x00016) Actual length = 44 (0x00002c)
+ Function Length : 11 (0x0000b) Actual length = 22 (0x000016)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+0 (0.00%) : 4476.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]:CreatePropertyInfoForTypeInfo():System.Text.Json.Serialization.Metadata.JsonPropertyInfo:this (Tier0)
@@ -66,14 +66,14 @@ G_M41961_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ blx r3 // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
str r0, [sp+0x0C] // [V04 tmp3]
;; size=22 bbWeight=0.20 PerfScore 1.40
G_M41961_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr r0, [sp+0x0C] // [V04 tmp3]
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_NEWSFAST
+ blx r3 // CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[r0]
str r0, [sp+0x10] // [V03 tmp2]
ldr r0, [sp+0x18] // [V00 this]
+0 (0.00%) : 5604.dasm - System.Span`1[System.Canon]:.ctor(System.Canon[],int,int):this (Tier0)
@@ -82,7 +82,7 @@ G_M12399_IG08: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ blx r3 // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
str r0, [sp+0x08] // [V06 tmp1]
;; size=22 bbWeight=0.20 PerfScore 1.40
G_M12399_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
@@ -158,7 +158,7 @@ G_M12399_IG14: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ blx r3 // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
str r0, [sp+0x04] // [V07 tmp2]
;; size=22 bbWeight=0.20 PerfScore 1.40
G_M12399_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+0 (0.00%) : 7216.dasm - System.Collections.Generic.ArraySortHelper2[System.__Canon,System.__Canon]:CreateArraySortHelper():System.Collections.Generic.IArraySortHelper2System.Canon,System.Canon
@@ -58,7 +58,7 @@ G_M9235_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ blx r3 // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
str r0, [sp+0x28] // [V03 tmp1]
;; size=22 bbWeight=0.20 PerfScore 1.40
G_M9235_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
@@ -112,7 +112,7 @@ G_M9235_IG07: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ blx r3 // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
str r0, [sp+0x20] // [V05 tmp3]
;; size=22 bbWeight=0.20 PerfScore 1.40
G_M9235_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
@@ -122,7 +122,7 @@ G_M9235_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_CHKCASTCLASS
+ blx r3 // CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs +[r0]
str r0, [sp+0x0C] // [V10 tmp8]
ldr r3, [sp+0x30] // [V00 TypeCtx]
@@ -142,7 +142,7 @@ G_M9235_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_CHKCASTCLASS
+ blx r3 // CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[r1] +[r0]
str r0, [sp+0x08] // [V11 tmp9]
ldr r3, [sp+0x30] // [V00 TypeCtx]
@@ -162,7 +162,7 @@ G_M9235_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_CHKCASTCLASS
+ blx r3 // CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[r1] +[r0]
str r0, [sp+0x04] // [V12 tmp10]
ldr r0, [sp+0x0C] // [V10 tmp8]
@@ -182,7 +182,7 @@ G_M9235_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_CHKCASTINTERFACE
+ blx r3 // CORINFO_HELP_CHKCASTCLASS
; gcrRegs -[r1] +[r0]
str r0, [sp+0x2C] // [V01 loc0]
b SHORT G_M9235_IG10
@@ -192,7 +192,7 @@ G_M9235_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr r0, [sp+0x30] // [V00 TypeCtx]
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_NEWSFAST
+ blx r3 // CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[r0]
str r0, [sp+0x24] // [V04 tmp2]
ldr r0, [sp+0x24] // [V04 tmp2]
benchmarks.run_tiered.linux.arm.checked.mch
-42 (-75.00%) : 311.dasm - System.Globalization.GlobalizationMode:get_Invariant():ubyte (Tier1)
@@ -15,51 +15,29 @@
G_M9787_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,lr}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M9787_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r0, [r0]
- and r0, r0, 1
- cmp r0, 1
- bne SHORT G_M9787_IG05
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M9787_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M9787_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
ldrb r0, [r0]
;; size=10 bbWeight=1 PerfScore 3.00
-G_M9787_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M9787_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M9787_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- ; gcr arg pop 0
- b SHORT G_M9787_IG03
- ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 2, PerfScore 11.00, instruction count 18, allocated bytes for code 56 (MethodHash=70bdd9c4) for method System.Globalization.GlobalizationMode:get_Invariant():ubyte (Tier1)
+; Total bytes of code 14, prolog size 2, PerfScore 5.00, instruction count 5, allocated bytes for code 14 (MethodHash=70bdd9c4) for method System.Globalization.GlobalizationMode:get_Invariant():ubyte (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 : 28 (0x0001c) Actual length = 56 (0x000038)
- ---- Epilog scopes ----
- ---- Scope 0
- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
- Condition : 14 (0xe) (always)
- Epilog Start Index : 0 (0x00)
+ Function Length : 7 (0x00007) Actual length = 14 (0x00000e)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
ED 08 pop {r3,lr} ; opsize 16
-42 (-75.00%) : 312.dasm - System.Globalization.GlobalizationMode+Settings:get_Invariant():ubyte (Tier1)
@@ -14,51 +14,29 @@
G_M4853_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,lr}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M4853_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r0, [r0]
- and r0, r0, 1
- cmp r0, 1
- bne SHORT G_M4853_IG05
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M4853_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M4853_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
ldrb r0, [r0]
;; size=10 bbWeight=1 PerfScore 3.00
-G_M4853_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M4853_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M4853_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- ; gcr arg pop 0
- b SHORT G_M4853_IG03
- ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 2, PerfScore 11.00, instruction count 18, allocated bytes for code 56 (MethodHash=52ebed0a) for method System.Globalization.GlobalizationMode+Settings:get_Invariant():ubyte (Tier1)
+; Total bytes of code 14, prolog size 2, PerfScore 5.00, instruction count 5, allocated bytes for code 14 (MethodHash=52ebed0a) for method System.Globalization.GlobalizationMode+Settings:get_Invariant():ubyte (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 : 28 (0x0001c) Actual length = 56 (0x000038)
- ---- Epilog scopes ----
- ---- Scope 0
- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
- Condition : 14 (0xe) (always)
- Epilog Start Index : 0 (0x00)
+ Function Length : 7 (0x00007) Actual length = 14 (0x00000e)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
ED 08 pop {r3,lr} ; opsize 16
-48 (-53.33%) : 8721.dasm - Newtonsoft.Json.Serialization.JsonTypeReflector:get_ReflectionDelegateFactory():Newtonsoft.Json.Utilities.ReflectionDelegateFactory (Tier1)
@@ -2,7 +2,7 @@
; 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; 2 single block inlinees; 0 inlinees without PGO data
@@ -10,17 +10,17 @@
;
;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
-G_M44136_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_M44136_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_M44136_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // Newtonsoft.Json.Serialization.JsonTypeReflector:get_DynamicCodeGeneration():ubyte
+ ; gcr arg pop 0
cmp r0, 0
beq SHORT G_M44136_IG05
;; size=16 bbWeight=1 PerfScore 6.00
@@ -31,38 +31,20 @@ G_M44136_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[r0]
;; size=10 bbWeight=0.50 PerfScore 1.50
G_M44136_IG04: ; bbWeight=0.50, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M44136_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ pop {r3,pc}
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M44136_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r0, [r0]
- and r0, r0, 1
- cmp r0, 1
- bne SHORT G_M44136_IG08
- ;; size=18 bbWeight=0.50 PerfScore 3.00
-G_M44136_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
ldr r0, [r0]
; gcrRegs +[r0]
;; size=10 bbWeight=0.50 PerfScore 1.50
-G_M44136_IG07: ; bbWeight=0.50, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M44136_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movs r1, 90
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- b SHORT G_M44136_IG06
- ;; size=22 bbWeight=0 PerfScore 0.00
+G_M44136_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r3,pc}
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 90, prolog size 6, PerfScore 15.00, instruction count 29, allocated bytes for code 90 (MethodHash=ef705397) for method Newtonsoft.Json.Serialization.JsonTypeReflector:get_ReflectionDelegateFactory():Newtonsoft.Json.Utilities.ReflectionDelegateFactory (Tier1)
+; Total bytes of code 42, prolog size 2, PerfScore 11.00, instruction count 15, allocated bytes for code 42 (MethodHash=ef705397) for method Newtonsoft.Json.Serialization.JsonTypeReflector:get_ReflectionDelegateFactory():Newtonsoft.Json.Utilities.ReflectionDelegateFactory (Tier1)
; ============================================================
Unwind Info:
@@ -74,7 +56,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 45 (0x0002d) Actual length = 90 (0x00005a)
+ 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)
@@ -86,7 +68,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end
FF end
+0 (0.00%) : 3815.dasm - System.Text.Json.JsonSerializerOptions:ExpandConverterFactory(System.Text.Json.Serialization.JsonConverter,System.Type):System.Text.Json.Serialization.JsonConverter:this (Tier1)
@@ -8,9 +8,9 @@
; Final local variable assignments
;
; V00 this [V00,T01] ( 3, 2.50) ref -> r5 this class-hnd single-def <System.Text.Json.JsonSerializerOptions>
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> r4 class-hnd <System.Text.Json.Serialization.JsonConverter>
+; V01 arg1 [V01,T00] ( 6, 5.50) ref -> r4 class-hnd <System.Text.Json.Serialization.JsonConverter>
; V02 arg2 [V02,T02] ( 3, 2.50) ref -> r6 class-hnd single-def <System.Type>
-; V03 loc0 [V03,T03] ( 3, 2.50) ref -> r0 class-hnd single-def <System.Text.Json.Serialization.JsonConverterFactory>
+; V03 loc0 [V03,T03] ( 2, 1.50) ref -> r0 class-hnd single-def <System.Text.Json.Serialization.JsonConverterFactory>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
@@ -31,10 +31,10 @@ G_M17128_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
- cmp r0, 0
+ cmp r4, 0
beq SHORT G_M17128_IG04
;; size=24 bbWeight=1 PerfScore 8.00
G_M17128_IG03: ; bbWeight=0.50, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref
+4 (+0.36%) : 6326.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier0-FullOpts)
@@ -9,53 +9,51 @@
; Final local variable assignments
;
; V00 loc0 [V00,T03] ( 19, 27 ) ref -> r6 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueue>
-; V01 loc1 [V01,T15] ( 8, 6 ) ref -> r7 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueueThreadLocals>
+; V01 loc1 [V01,T14] ( 8, 6 ) ref -> r7 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueueThreadLocals>
; V02 loc2 [V02 ] ( 13, 22.50) ref -> [sp+0x0C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Object>
-; V03 loc3 [V03,T07] ( 6, 16.50) ref -> r8 class-hnd single-def <System.Object>
+; V03 loc3 [V03,T06] ( 6, 16.50) ref -> r8 class-hnd single-def <System.Object>
; V04 loc4 [V04,T01] ( 13, 33.50) ref -> r9 class-hnd exact single-def <System.Threading.Thread>
-; V05 loc5 [V05,T14] ( 3, 8.50) int -> r10
-; V06 loc6 [V06,T25] ( 2, 2 ) ubyte -> r1
-; V07 loc7 [V07,T26] ( 3, 1.50) ref -> r4 class-hnd single-def <<unknown class>>
+; V05 loc5 [V05,T12] ( 3, 8.50) int -> r10
+; V06 loc6 [V06,T24] ( 2, 2 ) ubyte -> r1
+; V07 loc7 [V07,T25] ( 3, 1.50) ref -> r4 class-hnd single-def <<unknown class>>
; V08 loc8 [V08 ] ( 3, 1.50) ubyte -> [sp+0x08] do-not-enreg[X] addr-exposed ld-addr-op
; V09 loc9 [V09,T05] ( 5, 20 ) int -> r4
; V10 loc10 [V10 ] ( 3, 4.50) ubyte -> [sp+0x04] do-not-enreg[X] addr-exposed ld-addr-op
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V12 tmp1 [V12 ] ( 0, 0 ) ref -> zero-ref
-; V13 tmp2 [V13,T18] ( 2, 4 ) ref -> r7 class-hnd exact single-def "dup spill" <System.Threading.ThreadPoolWorkQueueThreadLocals>
-; V14 tmp3 [V14,T19] ( 4, 3.50) ref -> r7
-; V15 tmp4 [V15,T20] ( 3, 3 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
+; V13 tmp2 [V13,T17] ( 2, 4 ) ref -> r7 class-hnd exact single-def "dup spill" <System.Threading.ThreadPoolWorkQueueThreadLocals>
+; V14 tmp3 [V14,T18] ( 4, 3.50) ref -> r7
+; V15 tmp4 [V15,T19] ( 3, 3 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
;* V16 tmp5 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V17 tmp6 [V17,T27] ( 3, 1.50) ref -> r8 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V18 tmp7 [V18,T21] ( 3, 3 ) byref -> r0 single-def "Inlining Arg"
-; V19 tmp8 [V19,T22] ( 3, 3 ) byref -> r0 single-def "Inlining Arg"
+; V17 tmp6 [V17,T26] ( 3, 1.50) ref -> r8 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V18 tmp7 [V18,T20] ( 3, 3 ) byref -> r0 single-def "Inlining Arg"
+; V19 tmp8 [V19,T21] ( 3, 3 ) byref -> r0 single-def "Inlining Arg"
;* V20 tmp9 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V21 tmp10 [V21,T24] ( 2, 2 ) byref -> r0 "Inlining Arg"
-; V22 tmp11 [V22,T16] ( 6, 6 ) ref -> r7 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool>
-; V23 tmp12 [V23,T23] ( 3, 3 ) byref -> r0 "Inlining Arg"
+; V21 tmp10 [V21,T23] ( 2, 2 ) byref -> r0 "Inlining Arg"
+; V22 tmp11 [V22,T15] ( 6, 6 ) ref -> r7 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool>
+; V23 tmp12 [V23,T22] ( 3, 3 ) byref -> r0 "Inlining Arg"
;* V24 tmp13 [V24 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V25 tmp14 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V26 tmp15 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V27 tmp16 [V27,T04] ( 4, 24 ) ref -> r4 class-hnd "Inlining Arg" <System.Object>
-; V28 tmp17 [V28,T11] ( 4, 12 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V27 tmp16 [V27,T04] ( 3, 24 ) ref -> r4 class-hnd "Inlining Arg" <System.Object>
+; V28 tmp17 [V28,T13] ( 3, 8 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>>
;* V29 tmp18 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
;* V30 tmp19 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V31 tmp20 [V31,T12] ( 4, 12 ) ref -> r0 class-hnd exact "Inline stloc first use temp" <System.Threading.ExecutionContext>
-; V32 tmp21 [V32,T08] ( 2, 16 ) ref -> r3 class-hnd exact "dup spill" <System.Threading.Thread>
-; V33 tmp22 [V33,T10] ( 4, 14 ) ref -> r3
+; V31 tmp20 [V31,T10] ( 4, 12 ) ref -> r0 class-hnd exact "Inline stloc first use temp" <System.Threading.ExecutionContext>
+; V32 tmp21 [V32,T07] ( 2, 16 ) ref -> r3 class-hnd exact "dup spill" <System.Threading.Thread>
+; V33 tmp22 [V33,T09] ( 4, 14 ) ref -> r3
;* V34 tmp23 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp24 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V36 tmp25 [V36,T00] ( 6, 44 ) ref -> [sp+0x00] class-hnd exact spill-single-def "Inlining Arg" <System.Threading.PortableThreadPool>
;* V37 tmp26 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V38 tmp27 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V39 tmp28 [V39,T06] ( 3, 18 ) ref -> r0 class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
-;* V40 tmp29 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
-;* V41 tmp30 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V42 tmp31 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V43 tmp32 [V43,T13] ( 3, 10 ) int -> r0 "Inline stloc first use temp"
-;* V44 tmp33 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V45 cse0 [V45,T17] ( 3, 6 ) ref -> r0 "CSE - moderate"
-; V46 cse1 [V46,T09] ( 9, 14 ) int -> r5 "CSE - aggressive"
-; V47 cse2 [V47,T02] ( 15, 30 ) ref -> r1 multi-def "CSE - aggressive"
+;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
+;* V40 tmp29 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V41 tmp30 [V41,T11] ( 3, 10 ) int -> r0 "Inline stloc first use temp"
+;* V42 tmp31 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
+; V43 cse0 [V43,T16] ( 3, 6 ) ref -> r0 "CSE - moderate"
+; V44 cse1 [V44,T08] ( 9, 14 ) int -> r5 "CSE - aggressive"
+; V45 cse2 [V45,T02] ( 15, 30 ) ref -> r1 multi-def "CSE - aggressive"
;
; Lcl frame size = 20
@@ -77,7 +75,7 @@ G_M63069_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movw r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR
+ blx r3 // CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_DYNAMICCLASS
; byrRegs +[r0]
ldr r7, [r0+0x20]
; gcrRegs +[r7]
@@ -187,7 +185,7 @@ G_M63069_IG09: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}
add r0, r6, 92
; byrRegs +[r0]
cmp r0, 0
- beq G_M63069_IG52
+ beq G_M63069_IG51
movs r1, 1
movs r2, 0
movw r3, 0xd1ff
@@ -218,7 +216,7 @@ G_M63069_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00C0 {r6 r7
add r0, r6, 92
; byrRegs +[r0]
cmp r0, 0
- beq G_M63069_IG52
+ beq G_M63069_IG51
movs r1, 1
movs r2, 0
movw r3, 0xd1ff
@@ -297,7 +295,7 @@ G_M63069_IG18: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000
str r0, [sp+0x0C] // [V02 loc2]
ldr r0, [sp+0x0C] // [V02 loc2]
cmp r0, 0
- beq G_M63069_IG49
+ beq G_M63069_IG48
;; size=32 bbWeight=2 PerfScore 26.00
G_M63069_IG19: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
@@ -328,9 +326,9 @@ G_M63069_IG21: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
- cmp r0, 0
+ cmp r4, 0
beq SHORT G_M63069_IG23
;; size=26 bbWeight=4 PerfScore 36.00
G_M63069_IG22: ; bbWeight=2, gcrefRegs=03C1 {r0 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
@@ -344,16 +342,14 @@ G_M63069_IG22: ; bbWeight=2, gcrefRegs=03C1 {r0 r6 r7 r8 r9}, byrefRegs=0
; gcrRegs -[r0-r1]
b SHORT G_M63069_IG25
;; size=12 bbWeight=2 PerfScore 12.00
-G_M63069_IG23: ; bbWeight=2, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r4]
- mov r1, r4
- ; gcrRegs +[r1]
+G_M63069_IG23: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+ movs r1, 0
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[r1] +[r0]
+ blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs +[r0]
cmp r0, 0
bne SHORT G_M63069_IG24
movw r1, 0xd1ff
@@ -365,15 +361,12 @@ G_M63069_IG23: ; bbWeight=2, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefRegs=0
blx r3 // <unknown method>
; gcrRegs -[r0]
;; size=46 bbWeight=2 PerfScore 30.00
-G_M63069_IG24: ; bbWeight=2, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefRegs=0000 {}, byref
- mov r0, r4
- ; gcrRegs +[r0]
+G_M63069_IG24: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref
+ movs r0, 0
movw r4, 0xd1ff
- ; gcrRegs -[r4]
movt r4, 0xd1ff
ldr r3, [r4]
blx r3 // <unknown method>
- ; gcrRegs -[r0]
;; size=14 bbWeight=2 PerfScore 10.00
G_M63069_IG25: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref
movs r0, 0
@@ -412,7 +405,7 @@ G_M63069_IG29: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000
movw r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR
+ blx r3 // CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_DYNAMICCLASS
; byrRegs +[r0]
ldr r3, [r0+0x10]
; gcrRegs +[r3]
@@ -508,41 +501,40 @@ G_M63069_IG38: ; bbWeight=2, gcVars=00000001 {V36}, gcrefRegs=03C0 {r6 r7
; gcrRegs -[r0]
;; size=22 bbWeight=2 PerfScore 14.00
G_M63069_IG39: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- mov r0, r8
- ; gcrRegs +[r0]
+ mov r1, r8
+ ; gcrRegs +[r1]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ movw r2, 0xd1ff
+ movt r2, 0xd1ff
+ blx r2 // CORINFO_HELP_CHKCASTINTERFACE
+ ; gcrRegs -[r1] +[r0]
cmp r0, 0
- beq SHORT G_M63069_IG41
- ;; size=6 bbWeight=4 PerfScore 12.00
-G_M63069_IG40: ; bbWeight=1, gcrefRegs=03C1 {r0 r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r0]
+ bne SHORT G_M63069_IG41
+ ;; size=24 bbWeight=4 PerfScore 32.00
+G_M63069_IG40: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- cmp r0, r1
- beq SHORT G_M63069_IG42
- ;; size=14 bbWeight=1 PerfScore 5.00
-G_M63069_IG41: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref
movw r1, 0xd1ff
movt r1, 0xd1ff
mov r0, r1
; gcrRegs +[r0]
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- ldr r2, [r2]
- blx r2 // <unknown method>
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r3, [r3]
+ blx r3 // <unknown method>
; gcrRegs -[r0]
;; size=22 bbWeight=2 PerfScore 14.00
-G_M63069_IG42: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M63069_IG41: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r0, [r8+0x10]
adds r0, r0, 1
cmp r0, 0
- beq SHORT G_M63069_IG44
+ beq SHORT G_M63069_IG43
;; size=10 bbWeight=4 PerfScore 16.00
-G_M63069_IG43: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M63069_IG42: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
str r0, [r8+0x10]
- b SHORT G_M63069_IG45
+ b SHORT G_M63069_IG44
;; size=6 bbWeight=2 PerfScore 4.00
-G_M63069_IG44: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref
+G_M63069_IG43: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref
mov r0, r8
; gcrRegs +[r0]
movs r1, 1
@@ -552,7 +544,7 @@ G_M63069_IG44: ; bbWeight=2, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000
blx r3 // <unknown method>
; gcrRegs -[r0]
;; size=16 bbWeight=2 PerfScore 12.00
-G_M63069_IG45: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M63069_IG44: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r3, [sp]
; gcrRegs +[r3]
str r4, [r3+0xD0]
@@ -565,9 +557,9 @@ G_M63069_IG45: ; bbWeight=4, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0000
blx r2 // System.Threading.PortableThreadPool:ShouldAdjustMaxWorkersActive(int):ubyte:this
; gcrRegs -[r0 r3]
...
+4 (+2.33%) : 5229.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverterSystem.__Canon:System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (Tier1)
@@ -8,23 +8,23 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 4.50) ref -> r5 this class-hnd single-def <System.Text.Json.Serialization.JsonConverter>
+; V00 this [V00,T01] ( 5, 4.50) ref -> r5 this class-hnd single-def <System.Text.Json.Serialization.JsonConverter>
; V01 TypeCtx [V01,T00] ( 8, 5.38) int -> r4 single-def
-; V02 loc0 [V02,T08] ( 3, 2.50) ref -> r0 class-hnd single-def <System.Text.Json.Serialization.JsonConverter`1[System.__Canon]>
+;* V02 loc0 [V02,T12] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Text.Json.Serialization.JsonConverter`1[System.__Canon]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
; V05 tmp2 [V05,T05] ( 3, 3 ) ref -> r0 class-hnd single-def "dup spill" <System.Text.Json.Serialization.JsonConverter>
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref single-def
-; V07 tmp4 [V07,T12] ( 3, 1.50) ref -> r0
-; V08 tmp5 [V08,T10] ( 4, 2 ) ref -> r0
+; V07 tmp4 [V07,T11] ( 3, 1.50) ref -> r0
+; V08 tmp5 [V08,T09] ( 4, 2 ) ref -> r0
; V09 tmp6 [V09,T06] ( 3, 3 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <System.Text.Json.Serialization.Converters.CastingConverter`1[System.__Canon]>
;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
; V11 tmp8 [V11,T04] ( 2, 4 ) int -> r0 "argument with side effect"
; V12 rat0 [V12,T03] ( 3, 4 ) int -> r0 "runtime lookup"
; V13 rat1 [V13,T02] ( 3, 5.60) int -> r0 "fgMakeTemp is creating a new local variable"
-; V14 rat2 [V14,T11] ( 3, 2 ) int -> r0 "runtime lookup"
+; V14 rat2 [V14,T10] ( 3, 2 ) int -> r0 "runtime lookup"
; V15 rat3 [V15,T07] ( 3, 2.80) int -> r0 "spilling expr"
-; V16 rat4 [V16,T09] ( 3, 2.24) int -> r0 "fgMakeTemp is creating a new local variable"
+; V16 rat4 [V16,T08] ( 3, 2.24) int -> r0 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -51,37 +51,42 @@ G_M17047_IG04: ; bbWeight=0.20, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=20 bbWeight=0.20 PerfScore 1.20
G_M17047_IG05: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
mov r1, r5
; gcrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
- cmp r0, 0
- beq SHORT G_M17047_IG07
+ cmp r5, 0
+ beq SHORT G_M17047_IG08
;; size=16 bbWeight=1 PerfScore 6.00
-G_M17047_IG06: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[r5]
- pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M17047_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0] +[r5]
+G_M17047_IG06: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0]
mov r0, r5
; gcrRegs +[r0]
- ldr r3, [r5]
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M17047_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ pop {r2,r3,r4,r5,r11,pc}
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M17047_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r0 r5]
+ movs r0, 0
+ movs r3, 0
+ ldr r3, [r3]
ldr r3, [r3+0x30]
ldr r3, [r3+0x10]
blx r3 // <unknown method>
+ ; gcrRegs +[r0]
cmp r0, 0
- bne SHORT G_M17047_IG08
+ bne SHORT G_M17047_IG09
movs r0, 0
; gcrRegs -[r0]
- b SHORT G_M17047_IG09
- ;; size=18 bbWeight=0.50 PerfScore 4.50
-G_M17047_IG08: ; bbWeight=0.50, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref
+ b SHORT G_M17047_IG10
+ ;; size=20 bbWeight=0.50 PerfScore 5.00
+G_M17047_IG09: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
mov r1, r4
movw r3, 0xd1ff
@@ -89,55 +94,54 @@ G_M17047_IG08: ; bbWeight=0.50, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}
ldr r3, [r3]
blx r3 // System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this
;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M17047_IG09: ; bbWeight=0.50, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref, isz
+G_M17047_IG10: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
cmp r0, 0
- bne SHORT G_M17047_IG14
+ bne SHORT G_M17047_IG15
ldr r0, [r4+0x20]
; gcrRegs -[r0]
ldr r1, [r0+0x04]
cmp r1, 12
- ble SHORT G_M17047_IG12
+ ble SHORT G_M17047_IG13
;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M17047_IG10: ; bbWeight=0.40, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M17047_IG11: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr r0, [r0+0x0C]
cmp r0, 0
- beq SHORT G_M17047_IG12
+ beq SHORT G_M17047_IG13
;; size=6 bbWeight=0.40 PerfScore 1.20
-G_M17047_IG11: ; bbWeight=0.32, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M17047_IG13
+G_M17047_IG12: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ b SHORT G_M17047_IG14
;; size=2 bbWeight=0.32 PerfScore 0.32
-G_M17047_IG12: ; bbWeight=0.18, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M17047_IG13: ; bbWeight=0.18, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov r0, r4
movw r1, 0xd1ff
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=20 bbWeight=0.18 PerfScore 1.08
-G_M17047_IG13: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_NEWSFAST
+ blx r3 // CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[r0]
mov r4, r0
; gcrRegs +[r4]
mov r0, r4
- mov r1, r5
- ; gcrRegs +[r1]
+ movs r1, 0
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // System.Text.Json.Serialization.Converters.CastingConverter`1[System.__Canon]:.ctor(System.Text.Json.Serialization.JsonConverter):this
- ; gcrRegs -[r0-r1 r5]
+ ; gcrRegs -[r0]
mov r0, r4
; gcrRegs +[r0]
;; size=30 bbWeight=0.50 PerfScore 5.50
-G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M17047_IG15: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r4]
pop {r2,r3,r4,r5,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 172, prolog size 12, PerfScore 36.10, instruction count 65, allocated bytes for code 172 (MethodHash=3467bd68) for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (Tier1)
+; Total bytes of code 176, prolog size 12, PerfScore 37.10, instruction count 67, allocated bytes for code 176 (MethodHash=3467bd68) for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (Tier1)
; ============================================================
Unwind Info:
@@ -149,7 +153,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 86 (0x00056) Actual length = 172 (0x0000ac)
+ Function Length : 88 (0x00058) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
coreclr_tests.run.linux.arm.checked.mch
-34 (-37.78%) : 1431.dasm - System.Net.Sockets.SocketErrorPal:GetSocketErrorForNativeError(int):int (Tier0)
@@ -5,39 +5,25 @@
; partially interruptible
; Final local variable assignments
;
-; V00 arg0 [V00 ] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[]
-; V01 loc0 [V01 ] ( 1, 1 ) int -> [sp+0x08] do-not-enreg[X] addr-exposed ld-addr-op
+; V00 arg0 [V00 ] ( 1, 1 ) int -> [sp+0x04] do-not-enreg[]
+; V01 loc0 [V01 ] ( 1, 1 ) int -> [sp+0x00] do-not-enreg[X] addr-exposed ld-addr-op
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03 ] ( 1, 1 ) ref -> [sp+0x04] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M64400_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r4,r10,r11,lr}
- sub sp, 16
- add r11, sp, 24
- movs r1, 0
- str r1, [sp+0x04] // [V03 tmp1]
- str r0, [sp+0x0C] // [V00 arg0]
- ;; size=16 bbWeight=1 PerfScore 6.00
+ push {r2,r3,r4,r10,r11,lr}
+ add r11, sp, 16
+ str r0, [sp+0x04]
+ ;; size=10 bbWeight=1 PerfScore 3.00
G_M64400_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movs r1, 116
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- ldr r3, [r3]
- ; gcrRegs +[r3]
- str r3, [sp+0x04] // [V03 tmp1]
- ldr r0, [sp+0x04] // [V03 tmp1]
+ ldr r0, [r3]
; gcrRegs +[r0]
- add r2, sp, 8 // [V01 loc0]
- ldr r1, [sp+0x0C] // [V00 arg0]
+ add r2, sp, 0
+ ldr r1, [sp+0x04]
movw r3, 0xd1ff
- ; gcrRegs -[r3]
movt r3, 0xd1ff
ldr r3, [r3]
ldr r4, [r0]
@@ -46,20 +32,18 @@ G_M64400_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
cmp r0, 0
bne SHORT G_M64400_IG04
mov r0, -1
- ;; size=60 bbWeight=1 PerfScore 21.00
+ ;; size=36 bbWeight=1 PerfScore 13.00
G_M64400_IG03: ; bbWeight=1, epilog, nogc, extend
- add sp, 16
- pop {r4,r10,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
+ pop {r2,r3,r4,r10,r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M64400_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ldr r0, [sp+0x08] // [V01 loc0]
+ ldr r0, [sp]
;; size=2 bbWeight=1 PerfScore 1.00
G_M64400_IG05: ; bbWeight=1, epilog, nogc, extend
- add sp, 16
- pop {r4,r10,r11,pc}
- ;; size=6 bbWeight=1 PerfScore 2.00
+ pop {r2,r3,r4,r10,r11,pc}
+ ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 90, prolog size 14, PerfScore 32.00, instruction count 32, allocated bytes for code 90 (MethodHash=5ad4046f) for method System.Net.Sockets.SocketErrorPal:GetSocketErrorForNativeError(int):int (Tier0)
+; Total bytes of code 56, prolog size 8, PerfScore 19.00, instruction count 19, allocated bytes for code 56 (MethodHash=5ad4046f) for method System.Net.Sockets.SocketErrorPal:GetSocketErrorForNativeError(int):int (Tier0)
; ============================================================
Unwind Info:
@@ -71,7 +55,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 45 (0x0002d) Actual length = 90 (0x00005a)
+ Function Length : 28 (0x0001c) Actual length = 56 (0x000038)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -83,7 +67,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- 04 add sp, sp, #16 ; opsize 16
- AC 10 pop {r4,r10,r11,lr} ; opsize 32
+ AC 1C pop {r2,r3,r4,r10,r11,lr} ; opsize 32
+ FF end
FF end
-20 (-32.26%) : 62.dasm - System.ConsolePal:EnsureConsoleInitialized() (Tier0)
@@ -14,12 +14,6 @@ G_M36161_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add r11, sp, 8
;; size=8 bbWeight=1 PerfScore 2.00
G_M36161_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movs r1, 22
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
movw r3, 0xd1ff
movt r3, 0xd1ff
ldrb r3, [r3]
@@ -30,12 +24,12 @@ G_M36161_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ;; size=50 bbWeight=1 PerfScore 16.00
+ ;; size=30 bbWeight=1 PerfScore 10.00
G_M36161_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
pop {r4,r10,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 62, prolog size 8, PerfScore 19.00, instruction count 19, allocated bytes for code 62 (MethodHash=460772be) for method System.ConsolePal:EnsureConsoleInitialized() (Tier0)
+; Total bytes of code 42, prolog size 8, PerfScore 13.00, instruction count 13, allocated bytes for code 42 (MethodHash=460772be) for method System.ConsolePal:EnsureConsoleInitialized() (Tier0)
; ============================================================
Unwind Info:
@@ -47,7 +41,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
+ Function Length : 21 (0x00015) Actual length = 42 (0x00002a)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
-22 (-29.73%) : 417.dasm - DelegateDefinitions:TestVoidParameterVoidStaticCallback() (Tier0)
@@ -16,16 +16,9 @@ G_M63990_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M63990_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
- movs r1, 14
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movs r1, 14
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_NOCTOR
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -33,12 +26,12 @@ G_M63990_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r2, 0xd1ff
movt r2, 0xd1ff
str r3, [r2]
- ;; size=62 bbWeight=1 PerfScore 19.00
+ ;; size=40 bbWeight=1 PerfScore 12.00
G_M63990_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r4,r10,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 74, prolog size 8, PerfScore 22.00, instruction count 22, allocated bytes for code 74 (MethodHash=4db60609) for method DelegateDefinitions:TestVoidParameterVoidStaticCallback() (Tier0)
+; Total bytes of code 52, prolog size 8, PerfScore 15.00, instruction count 15, allocated bytes for code 52 (MethodHash=4db60609) for method DelegateDefinitions:TestVoidParameterVoidStaticCallback() (Tier0)
; ============================================================
Unwind Info:
@@ -50,7 +43,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
+ Function Length : 26 (0x0001a) Actual length = 52 (0x000034)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
-2 (-1.52%) : 558.dasm - TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (Tier0)
@@ -16,10 +16,9 @@ G_M17591_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
G_M17591_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
movt r0, 0xd1ff
- movs r1, 15
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+ blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_NOCTOR
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -54,7 +53,7 @@ G_M17591_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
beq SHORT G_M17591_IG03
movs r0, 0
b SHORT G_M17591_IG04
- ;; size=112 bbWeight=1 PerfScore 40.00
+ ;; size=110 bbWeight=1 PerfScore 39.00
G_M17591_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 1
;; size=2 bbWeight=1 PerfScore 1.00
@@ -68,7 +67,7 @@ G_M17591_IG06: ; bbWeight=1, epilog, nogc, extend
pop {r4,r10,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 132, prolog size 8, PerfScore 46.00, instruction count 46, allocated bytes for code 132 (MethodHash=ebb5bb48) for method TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (Tier0)
+; Total bytes of code 130, prolog size 8, PerfScore 45.00, instruction count 45, allocated bytes for code 130 (MethodHash=ebb5bb48) for method TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (Tier0)
; ============================================================
Unwind Info:
@@ -80,7 +79,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 66 (0x00042) Actual length = 132 (0x000084)
+ Function Length : 65 (0x00041) Actual length = 130 (0x000082)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+0.31%) : 1849.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
@@ -10,64 +10,62 @@
; Final local variable assignments
;
; V00 loc0 [V00,T10] ( 19, 8.49) ref -> r5 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueue>
-; V01 loc1 [V01,T14] ( 8, 4 ) ref -> r6 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueueThreadLocals>
+; V01 loc1 [V01,T13] ( 8, 4 ) ref -> r6 class-hnd exact single-def <System.Threading.ThreadPoolWorkQueueThreadLocals>
; V02 loc2 [V02 ] ( 11, 9.39) ref -> [sp+0x1C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Object>
-; V03 loc3 [V03,T13] ( 6, 4.41) ref -> r7 class-hnd single-def <System.Object>
+; V03 loc3 [V03,T12] ( 6, 4.41) ref -> r7 class-hnd single-def <System.Object>
; V04 loc4 [V04,T07] ( 14, 31.90) ref -> r8 class-hnd exact single-def <System.Threading.Thread>
-; V05 loc5 [V05,T27] ( 3, 1.49) int -> r9
-; V06 loc6 [V06,T25] ( 2, 2 ) ubyte -> r2
+; V05 loc5 [V05,T25] ( 3, 1.49) int -> r9
+; V06 loc6 [V06,T23] ( 2, 2 ) ubyte -> r2
;* V07 loc7 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
; V08 loc8 [V08 ] ( 3, 2.49) ubyte -> [sp+0x18] do-not-enreg[X] addr-exposed ld-addr-op
-; V09 loc9 [V09,T17] ( 5, 3.90) int -> r4
+; V09 loc9 [V09,T16] ( 5, 3.90) int -> r4
; V10 loc10 [V10 ] ( 3, 2.46) ubyte -> [sp+0x14] do-not-enreg[X] addr-exposed ld-addr-op
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V12 tmp1 [V12 ] ( 0, 0 ) ref -> zero-ref
-; V13 tmp2 [V13,T15] ( 2, 4 ) ref -> r6 class-hnd exact single-def "dup spill" <System.Threading.ThreadPoolWorkQueueThreadLocals>
-; V14 tmp3 [V14,T20] ( 4, 3.00) ref -> r6
-; V15 tmp4 [V15,T28] ( 3, 0 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
-; V16 tmp5 [V16,T29] ( 3, 0 ) byref -> r0 single-def "Inlining Arg"
-; V17 tmp6 [V17,T19] ( 3, 3.07) byref -> r0 single-def "Inlining Arg"
-; V18 tmp7 [V18,T16] ( 6, 3.96) ref -> r4 class-hnd exact single-def "Inlining Arg" <System.Threading.PortableThreadPool>
-; V19 tmp8 [V19,T23] ( 3, 2.37) byref -> r0 single-def "Inlining Arg"
+; V13 tmp2 [V13,T14] ( 2, 4 ) ref -> r6 class-hnd exact single-def "dup spill" <System.Threading.ThreadPoolWorkQueueThreadLocals>
+; V14 tmp3 [V14,T19] ( 4, 3.00) ref -> r6
+; V15 tmp4 [V15,T27] ( 3, 0 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.Threading.ThreadPoolWorkQueue+WorkStealingQueue>
+; V16 tmp5 [V16,T28] ( 3, 0 ) byref -> r0 single-def "Inlining Arg"
+; V17 tmp6 [V17,T18] ( 3, 3.07) byref -> r0 single-def "Inlining Arg"
+; V18 tmp7 [V18,T15] ( 6, 3.96) ref -> r4 class-hnd exact single-def "Inlining Arg" <System.Threading.PortableThreadPool>
+; V19 tmp8 [V19,T22] ( 3, 2.37) byref -> r0 single-def "Inlining Arg"
;* V20 tmp9 [V20 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V21 tmp10 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V22 tmp11 [V22,T30] ( 2, 0 ) byref -> r0 "Inlining Arg"
+; V22 tmp11 [V22,T29] ( 2, 0 ) byref -> r0 "Inlining Arg"
;* V23 tmp12 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
;* V24 tmp13 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V25 tmp14 [V25,T11] ( 4, 7.54) ref -> r4 class-hnd "Inlining Arg" <System.Object>
-; V26 tmp15 [V26,T24] ( 6, 2.18) ref -> r0 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task>
+; V25 tmp14 [V25,T11] ( 3, 5.85) ref -> r4 class-hnd "Inlining Arg" <System.Object>
+; V26 tmp15 [V26,T26] ( 5, 1.20) ref -> r0 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task>
;* V27 tmp16 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
;* V28 tmp17 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Threading.Tasks.Task>
;* V29 tmp18 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V30 tmp19 [V30,T26] ( 4, 1.99) ref -> r0 class-hnd exact "Inline stloc first use temp" <System.Threading.ExecutionContext>
-; V31 tmp20 [V31,T18] ( 2, 3.90) ref -> r3 class-hnd exact "dup spill" <System.Threading.Thread>
+; V30 tmp19 [V30,T24] ( 4, 1.99) ref -> r0 class-hnd exact "Inline stloc first use temp" <System.Threading.ExecutionContext>
+; V31 tmp20 [V31,T17] ( 2, 3.90) ref -> r3 class-hnd exact "dup spill" <System.Threading.Thread>
; V32 tmp21 [V32,T09] ( 4, 13.66) ref -> r3
;* V33 tmp22 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V34 tmp23 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V35 tmp24 [V35,T06] ( 9, 76.12) ref -> r10 class-hnd exact "Inlining Arg" <System.Threading.PortableThreadPool>
;* V36 tmp25 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V37 tmp26 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V38 tmp27 [V38,T12] ( 3, 4.88) ref -> r0 class-hnd "spilling QMark2" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
-;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
-;* V40 tmp29 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V41 tmp30 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.Threading.ThreadInt64PersistentCounter+ThreadLocalNode>
+;* V39 tmp28 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V40 tmp29 [V40,T20] ( 3, 2.93) int -> r0 "Inline stloc first use temp"
+;* V41 tmp30 [V41,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V42 tmp31 [V42,T21] ( 3, 2.93) int -> r0 "Inline stloc first use temp"
-;* V43 tmp32 [V43,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V44 tmp33 [V44,T22] ( 3, 2.93) int -> r0 "Inline stloc first use temp"
-;* V45 tmp34 [V45 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V46 tmp35 [V46 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V47 tmp36 [V47 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op double-align "Inline stloc first use temp" <System.Threading.PortableThreadPool+ThreadCounts>
-; V48 tmp37 [V48,T02] ( 2,124.88) int -> [sp+0x10] spill-single-def "impAppendStmt"
-; V49 tmp38 [V49,T03] ( 3, 93.66) short -> [sp+0x0C] spill-single-def "Inline stloc first use temp"
-;* V50 tmp39 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V43 tmp32 [V43 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V44 tmp33 [V44 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V45 tmp34 [V45 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op double-align "Inline stloc first use temp" <System.Threading.PortableThreadPool+ThreadCounts>
+; V46 tmp35 [V46,T02] ( 2,124.88) int -> [sp+0x10] spill-single-def "impAppendStmt"
+; V47 tmp36 [V47,T03] ( 3, 93.66) short -> [sp+0x0C] spill-single-def "Inline stloc first use temp"
+;* V48 tmp37 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V49 tmp38 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V50 tmp39 [V50,T04] ( 3, 93.66) short -> [sp+0x08] spill-single-def "Inline stloc first use temp"
;* V51 tmp40 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V52 tmp41 [V52,T04] ( 3, 93.66) short -> [sp+0x08] spill-single-def "Inline stloc first use temp"
-;* V53 tmp42 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V54 tmp43 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V55 tmp44 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V56 tmp45 [V56,T05] ( 3, 93.66) long -> [sp+0x00] do-not-enreg[F] "field V47._data (fldOffset=0x0)" P-INDEP
-; V57 cse0 [V57,T01] ( 21,151.39) ref -> r1 multi-def "CSE - aggressive"
-; V58 rat0 [V58,T00] ( 3,187.32) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+;* V52 tmp41 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V53 tmp42 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
+; V54 tmp43 [V54,T05] ( 3, 93.66) long -> [sp+0x00] do-not-enreg[F] "field V45._data (fldOffset=0x0)" P-INDEP
+; V55 cse0 [V55,T01] ( 21,151.39) ref -> r1 multi-def "CSE - aggressive"
+; V56 rat0 [V56,T00] ( 3,187.32) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 36
@@ -89,7 +87,7 @@ G_M63069_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movw r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_NOCTOR
+ blx r3 // CORINFO_HELP_GETSHARED_GCTHREADSTATIC_BASE_DYNAMICCLASS
; byrRegs +[r0]
ldr r6, [r0+0x20]
; gcrRegs +[r6]
@@ -106,7 +104,7 @@ G_M63069_IG04: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
str r2, [sp+0x1C] // [V02 loc2]
ldrb r2, [r5+0x1D]
cmp r2, 0
- bne G_M63069_IG63
+ bne G_M63069_IG62
;; size=10 bbWeight=1 PerfScore 4.00
G_M63069_IG05: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
ldr r2, [sp+0x1C] // [V02 loc2]
@@ -135,7 +133,7 @@ G_M63069_IG06: ; bbWeight=0.49, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
; gcrRegs -[r0 r6]
ldrb r0, [sp+0x18] // [V08 loc8]
cmp r0, 0
- bne G_M63069_IG64
+ bne G_M63069_IG63
;; size=10 bbWeight=0.49 PerfScore 1.46
G_M63069_IG07: ; bbWeight=0.49, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r5]
@@ -156,12 +154,12 @@ G_M63069_IG09: ; bbWeight=15.61, gcVars=00000000 {}, gcrefRegs=05E0 {r5 r
ldr r2, [r2]
blx r2 // <unknown method>
; gcrRegs -[r0]
- ldr r3, [sp+0x0C] // [V49 tmp38]
+ ldr r3, [sp+0x0C] // [V47 tmp36]
;; size=24 bbWeight=15.61 PerfScore 124.88
G_M63069_IG10: ; bbWeight=31.22, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
- str r3, [sp+0x10] // [V48 tmp37]
- ldrsh r2, [sp+0x04] // [V56 tmp45+0x04]
- str r2, [sp+0x08] // [V52 tmp41]
+ str r3, [sp+0x10] // [V46 tmp35]
+ ldrsh r2, [sp+0x04] // [V54 tmp43+0x04]
+ str r2, [sp+0x08] // [V50 tmp39]
cmp r2, 0
bgt SHORT G_M63069_IG12
;; size=12 bbWeight=31.22 PerfScore 156.10
@@ -177,8 +175,8 @@ G_M63069_IG11: ; bbWeight=15.61, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefR
; gcrRegs -[r0]
;; size=24 bbWeight=15.61 PerfScore 109.27
G_M63069_IG12: ; bbWeight=31.22, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x10] // [V48 tmp37]
- ldr r2, [sp+0x08] // [V52 tmp41]
+ ldr r3, [sp+0x10] // [V46 tmp35]
+ ldr r2, [sp+0x08] // [V50 tmp39]
cmp r3, r2
bgt SHORT G_M63069_IG14
;; size=8 bbWeight=31.22 PerfScore 124.88
@@ -196,10 +194,10 @@ G_M63069_IG14: ; bbWeight=0.98, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRe
blx r3 // System.Threading.PortableThreadPool+WorkerThread:ShouldStopProcessingWorkNow(System.Threading.PortableThreadPool):ubyte
; gcrRegs -[r0 r10]
cmp r0, 0
- bne G_M63069_IG61
+ bne G_M63069_IG60
sub r0, r4, r9
cmp r0, 30
- bhs G_M63069_IG66
+ bhs G_M63069_IG65
;; size=30 bbWeight=0.98 PerfScore 9.76
G_M63069_IG15: ; bbWeight=1.49, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
ldr r2, [sp+0x1C] // [V02 loc2]
@@ -225,13 +223,13 @@ G_M63069_IG16: ; bbWeight=0.98, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0
ldr r1, [sp+0x1C] // [V02 loc2]
; gcrRegs +[r1]
cmp r1, 0
- beq G_M63069_IG57
+ beq G_M63069_IG56
;; size=32 bbWeight=0.98 PerfScore 12.68
G_M63069_IG17: ; bbWeight=0.98, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0-r1]
ldrb r1, [r5+0x1C]
cmp r1, 0
- bne G_M63069_IG68
+ bne G_M63069_IG67
;; size=8 bbWeight=0.98 PerfScore 2.93
G_M63069_IG18: ; bbWeight=0.98, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
ldr r4, [sp+0x1C] // [V02 loc2]
@@ -242,25 +240,24 @@ G_M63069_IG18: ; bbWeight=0.98, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
- cmp r0, 0
+ cmp r4, 0
bne SHORT G_M63069_IG25
;; size=26 bbWeight=0.98 PerfScore 8.78
-G_M63069_IG19: ; bbWeight=0.91, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0]
- mov r1, r4
- ; gcrRegs +[r1]
+G_M63069_IG19: ; bbWeight=0.91, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r0 r4]
+ movs r1, 0
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[r1] +[r0]
+ blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ ; gcrRegs +[r0]
cmp r0, 0
bne SHORT G_M63069_IG21
;; size=24 bbWeight=0.91 PerfScore 7.27
-G_M63069_IG20: ; bbWeight=3.63, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref
+G_M63069_IG20: ; bbWeight=3.63, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
movw r1, 0xd1ff
movt r1, 0xd1ff
@@ -272,15 +269,12 @@ G_M63069_IG20: ; bbWeight=3.63, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefReg
blx r3 // <unknown method>
; gcrRegs -[r0]
;; size=22 bbWeight=3.63 PerfScore 25.43
-G_M63069_IG21: ; bbWeight=0.91, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, byref
- mov r0, r4
- ; gcrRegs +[r0]
+G_M63069_IG21: ; bbWeight=0.91, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref
+ movs r0, 0
movw r4, 0xd1ff
- ; gcrRegs -[r4]
movt r4, 0xd1ff
ldr r3, [r4]
blx r3 // <unknown method>
- ; gcrRegs -[r0]
;; size=14 bbWeight=0.91 PerfScore 4.54
G_M63069_IG22: ; bbWeight=0.98, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref
movs r0, 0
@@ -330,10 +324,10 @@ G_M63069_IG27: ; bbWeight=31.22, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefR
ldr r1, [r0]
ldr r0, [r0+0x04]
; byrRegs -[r0]
- str r1, [sp] // [V56 tmp45]
- str r0, [sp+0x04] // [V56 tmp45+0x04]
- ldrsh r3, [sp] // [V56 tmp45]
- str r3, [sp+0x0C] // [V49 tmp38]
+ str r1, [sp] // [V54 tmp43]
+ str r0, [sp+0x04] // [V54 tmp43+0x04]
+ ldrsh r3, [sp] // [V54 tmp43]
+ str r3, [sp+0x0C] // [V47 tmp36]
cmp r3, 0
bge G_M63069_IG10
;; size=24 bbWeight=31.22 PerfScore 280.98
...
+2 (+1.11%) : 2334.dasm - System.Globalization.NumberFormatInfo:g_GetProviderNonNull|590(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
@@ -8,16 +8,16 @@
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 8
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 6, 3 ) ref -> r4 class-hnd single-def <System.IFormatProvider>
-; V01 loc0 [V01,T03] ( 6, 4 ) ref -> r0 class-hnd single-def <System.Globalization.CultureInfo>
+; V00 arg0 [V00,T00] ( 9, 5 ) ref -> r4 class-hnd single-def <System.IFormatProvider>
+; V01 loc0 [V01,T03] ( 4, 2 ) ref -> r0 class-hnd single-def <System.Globalization.CultureInfo>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T05] ( 2, 0 ) ref -> r0 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo>
-; V04 tmp2 [V04,T04] ( 5, 0 ) ref -> r0
-; V05 tmp3 [V05,T06] ( 2, 0 ) ref -> r0 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo>
-; V06 tmp4 [V06,T01] ( 3, 6 ) ref -> r1 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo>
+;* V03 tmp1 [V03,T07] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo>
+; V04 tmp2 [V04,T04] ( 4, 0 ) ref -> r0
+; V05 tmp3 [V05,T05] ( 2, 0 ) ref -> r0 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo>
+; V06 tmp4 [V06,T02] ( 3, 6 ) ref -> r1 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo>
;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
-; V08 tmp6 [V08,T07] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
-; V09 rat0 [V09,T00] ( 5, 7 ) ref -> r0 "replacement local"
+; V08 tmp6 [V08,T06] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
+; V09 rat0 [V09,T01] ( 5, 7 ) ref -> r0 "replacement local"
;
; Lcl frame size = 4
@@ -48,14 +48,14 @@ G_M57757_IG04: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
;; size=20 bbWeight=0 PerfScore 0.00
G_M57757_IG05: ; bbWeight=1, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz
- cmp r0, 0
+ cmp r4, 0
beq SHORT G_M57757_IG07
- ldrb r1, [r0+0x31]
+ ldrb r1, [r4+0x31]
cmp r1, 0
bne SHORT G_M57757_IG07
ldr r1, [r0+0x0C]
@@ -75,12 +75,14 @@ G_M57757_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
- cmp r0, 0
- bne SHORT G_M57757_IG09
mov r0, r4
+ cmp r4, 0
+ bne SHORT G_M57757_IG09
+ movs r0, 0
+ ; gcrRegs -[r0]
movw r4, 0xd1ff
; gcrRegs -[r4]
movt r4, 0xd1ff
@@ -88,6 +90,7 @@ G_M57757_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr
movt r1, 0xd1ff
ldr r3, [r4]
blx r3 // <unknown method>
+ ; gcrRegs +[r0]
; gcr arg pop 0
mov r1, r0
; gcrRegs +[r1]
@@ -96,7 +99,7 @@ G_M57757_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
cmp r0, 0
@@ -104,7 +107,7 @@ G_M57757_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
- ;; size=80 bbWeight=0 PerfScore 0.00
+ ;; size=82 bbWeight=0 PerfScore 0.00
G_M57757_IG08: ; bbWeight=0, epilog, nogc, extend
add sp, 4
pop {r4,r11,lr}
@@ -126,7 +129,7 @@ G_M57757_IG11: ; bbWeight=0, epilog, nogc, extend
; gcr arg pop 0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 180, prolog size 10, PerfScore 18.50, instruction count 63, allocated bytes for code 180 (MethodHash=ac5e1e62) for method System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|59_0(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
+; Total bytes of code 182, prolog size 10, PerfScore 18.50, instruction count 64, allocated bytes for code 182 (MethodHash=ac5e1e62) for method System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|59_0(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
; ============================================================
Unwind Info:
@@ -138,7 +141,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 90 (0x0005a) Actual length = 180 (0x0000b4)
+ 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)
libraries.crossgen2.linux.arm.checked.mch
-8 (-1.76%) : 14110.dasm - System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)
@@ -9,28 +9,28 @@
; 0 inlinees with PGO data; 1 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T13] ( 3, 2.50) int -> r5
-; V01 loc1 [V01,T14] ( 3, 2.50) int -> r7
+; V00 loc0 [V00,T07] ( 3, 2.50) int -> r5
+; V01 loc1 [V01,T08] ( 3, 2.50) int -> r7
; V02 loc2 [V02,T04] ( 5, 4 ) int -> r4
-; V03 loc3 [V03,T15] ( 3, 2.50) short -> r5
+; V03 loc3 [V03,T09] ( 3, 2.50) short -> r5
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T05] ( 3, 4 ) int -> r5 "value for stsfld with typeinit"
-; V06 tmp2 [V06,T06] ( 3, 4 ) int -> r0 "value for stsfld with typeinit"
-; V07 tmp3 [V07,T09] ( 2, 4 ) int -> r0 "value for stsfld with typeinit"
-; V08 tmp4 [V08,T10] ( 2, 4 ) int -> r0 "value for stsfld with typeinit"
-; V09 tmp5 [V09,T07] ( 3, 4 ) int -> r2 "value for stsfld with typeinit"
-; V10 tmp6 [V10,T08] ( 3, 4 ) int -> r2 "value for stsfld with typeinit"
-; V11 tmp7 [V11 ] ( 2, 1.50) ubyte -> [sp+0x04] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V12 tmp8 [V12 ] ( 2, 1.50) ubyte -> [sp+0x00] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V13 tmp9 [V13,T11] ( 4, 2.50) int -> r7 "Inline return value spill temp"
-; V14 tmp10 [V14,T16] ( 4, 2 ) int -> r2 "Inline return value spill temp"
-; V15 tmp11 [V15,T01] ( 3, 5 ) int -> r3 "Inlining Arg"
-; V16 tmp12 [V16,T12] ( 4, 2.50) int -> r2 "Inline return value spill temp"
-; V17 tmp13 [V17,T02] ( 3, 5 ) int -> r3 "Inlining Arg"
-; V18 tmp14 [V18,T03] ( 3, 5 ) int -> r2 "Inlining Arg"
-; V19 tmp15 [V19,T17] ( 2, 2 ) int -> r0 "argument with side effect"
-; V20 tmp16 [V20,T18] ( 2, 2 ) int -> r0 "argument with side effect"
-; V21 cse0 [V21,T00] ( 19, 17 ) byref -> r6 "CSE - aggressive"
+; V05 tmp1 [V05,T13] ( 3, 2 ) ubyte -> r5 "Inline return value spill temp"
+; V06 tmp2 [V06 ] ( 2, 1.50) ubyte -> [sp+0x04] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V07 tmp3 [V07,T14] ( 3, 2 ) ubyte -> r0 "Inline return value spill temp"
+; V08 tmp4 [V08 ] ( 2, 1.50) ubyte -> [sp+0x00] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V09 tmp5 [V09,T05] ( 4, 2.50) int -> r7 "Inline return value spill temp"
+; V10 tmp6 [V10,T12] ( 4, 2 ) int -> r2 "Inline return value spill temp"
+; V11 tmp7 [V11,T01] ( 3, 5 ) int -> r3 "Inlining Arg"
+; V12 tmp8 [V12,T15] ( 3, 2 ) int -> r2 "Inline return value spill temp"
+; V13 tmp9 [V13,T06] ( 4, 2.50) int -> r2 "Inline return value spill temp"
+; V14 tmp10 [V14,T02] ( 3, 5 ) int -> r3 "Inlining Arg"
+; V15 tmp11 [V15,T03] ( 3, 5 ) int -> r2 "Inlining Arg"
+; V16 tmp12 [V16,T16] ( 3, 2 ) int -> r2 "Inline return value spill temp"
+; V17 tmp13 [V17,T17] ( 2, 2 ) int -> r0 "argument with side effect"
+; V18 tmp14 [V18,T18] ( 2, 2 ) int -> r0 "argument with side effect"
+; V19 cse0 [V19,T10] ( 3, 2.50) int -> r0 "CSE - moderate"
+; V20 cse1 [V20,T11] ( 3, 2.50) int -> r0 "CSE - moderate"
+; V21 cse2 [V21,T00] ( 17, 16 ) byref -> r6 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -67,7 +67,7 @@ G_M39812_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr r3, [r4]
- blx r3 // CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE
+ blx r3 // CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR
; byrRegs +[r0]
mov r6, r0
; byrRegs +[r6]
@@ -162,7 +162,7 @@ G_M39812_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byre
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr r3, [r4]
- blx r3 // CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE
+ blx r3 // CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR
; byrRegs +[r0]
ldr r4, [r0+0xA10]
mul r0, r4, r5
@@ -174,7 +174,6 @@ G_M39812_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byre
bgt SHORT G_M39812_IG10
;; size=182 bbWeight=1 PerfScore 65.00
G_M39812_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref, isz
- ldrsh r0, [r6+0xB00]
mov r1, r4
movw r3, LOW RELOC 0xD1FFAB1E
movt r3, HIGH RELOC 0xD1FFAB1E
@@ -183,7 +182,7 @@ G_M39812_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, b
blx r3 // CORINFO_HELP_DIV
cmp r0, r5
beq SHORT G_M39812_IG11
- ;; size=24 bbWeight=0.50 PerfScore 4.50
+ ;; size=20 bbWeight=0.50 PerfScore 4.00
G_M39812_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref
movw r0, 0xd1ff
strh r0, [r6+0xB00]
@@ -211,7 +210,6 @@ G_M39812_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byre
bgt SHORT G_M39812_IG16
;; size=30 bbWeight=1 PerfScore 10.00
G_M39812_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref, isz
- ldrsh r0, [r6+0xB02]
mov r1, r4
movw r3, LOW RELOC 0xD1FFAB1E
movt r3, HIGH RELOC 0xD1FFAB1E
@@ -220,7 +218,7 @@ G_M39812_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, b
blx r3 // CORINFO_HELP_DIV
cmp r0, r7
beq SHORT G_M39812_IG17
- ;; size=24 bbWeight=0.50 PerfScore 4.50
+ ;; size=20 bbWeight=0.50 PerfScore 4.00
G_M39812_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {r6}, byref
strh r5, [r6+0xB02]
;; size=4 bbWeight=0.50 PerfScore 0.50
@@ -274,7 +272,7 @@ G_M39812_IG29: ; bbWeight=1, epilog, nogc, extend
pop {r2,r3,r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 454, prolog size 8, PerfScore 144.00, instruction count 164, allocated bytes for code 454 (MethodHash=8fd9647b) for method System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)
+; Total bytes of code 446, prolog size 8, PerfScore 143.00, instruction count 162, allocated bytes for code 446 (MethodHash=8fd9647b) for method System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)
; ============================================================
Unwind Info:
@@ -286,7 +284,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 227 (0x000e3) Actual length = 454 (0x0001c6)
+ Function Length : 223 (0x000df) Actual length = 446 (0x0001be)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
-2 (-1.52%) : 141989.dasm - System.IO.FileSystemWatcher+RunningInstance+WatchedDirectory:AppendSeparatorIfNeeded(System.Text.StringBuilder) (FullOpts)
@@ -9,11 +9,11 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 6, 4.50) ref -> r5 class-hnd single-def <System.Text.StringBuilder>
-; V01 loc0 [V01,T04] ( 3, 1.50) ushort -> r6
+; V01 loc0 [V01,T03] ( 3, 1.50) ushort -> r6
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T01] ( 2, 2 ) int -> r1 "argument with side effect"
; V04 tmp2 [V04,T02] ( 2, 2 ) int -> r1 "argument with side effect"
-; V05 cse0 [V05,T03] ( 3, 1.50) byref -> r7 "CSE - moderate"
+; V05 cse0 [V05,T04] ( 3, 1.50) int -> r7 "CSE - moderate"
;
; Lcl frame size = 0
@@ -59,22 +59,20 @@ G_M4843_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, by
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr r3, [r4]
- blx r3 // CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE
+ blx r3 // CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR
; byrRegs +[r0]
- mov r7, r0
- ; byrRegs +[r7]
- ldrh r3, [r7]
- cmp r3, r6
+ ldrh r7, [r0]
+ cmp r7, r6
beq SHORT G_M4843_IG04
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr r3, [r4]
- blx r3 // CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE
+ blx r3 // CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR
ldrh r1, [r0]
cmp r1, r6
beq SHORT G_M4843_IG04
- ldrh r1, [r7]
+ mov r1, r7
mov r0, r5
; gcrRegs +[r0]
; byrRegs -[r0]
@@ -84,14 +82,13 @@ G_M4843_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, by
ldr r3, [r4]
blx r3 // <unknown method>
; gcrRegs -[r5]
- ; byrRegs -[r7]
- ;; size=96 bbWeight=0.50 PerfScore 19.00
+ ;; size=94 bbWeight=0.50 PerfScore 18.50
G_M4843_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[r0]
pop {r4,r5,r6,r7,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 132, prolog size 8, PerfScore 32.00, instruction count 51, allocated bytes for code 132 (MethodHash=0b61ed14) for method System.IO.FileSystemWatcher+RunningInstance+WatchedDirectory:AppendSeparatorIfNeeded(System.Text.StringBuilder) (FullOpts)
+; Total bytes of code 130, prolog size 8, PerfScore 31.50, instruction count 50, allocated bytes for code 130 (MethodHash=0b61ed14) for method System.IO.FileSystemWatcher+RunningInstance+WatchedDirectory:AppendSeparatorIfNeeded(System.Text.StringBuilder) (FullOpts)
; ============================================================
Unwind Info:
@@ -103,7 +100,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 66 (0x00042) Actual length = 132 (0x000084)
+ Function Length : 65 (0x00041) Actual length = 130 (0x000082)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
+0 (0.00%) : 3077.dasm - .$Array:.cctor() (FullOpts)
@@ -9,7 +9,6 @@
; Final local variable assignments
;
;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 tmp1 [V01,T00] ( 2, 4 ) int -> r5 "value for stsfld with typeinit"
;
; Lcl frame size = 4
@@ -21,17 +20,19 @@ G_M35347_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr r3, [r4]
- blx r3 // <unknown method>
+ blx r3 // CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR
+ ; byrRegs +[r0]
; gcr arg pop 0
mov r5, r0
+ ; byrRegs +[r5]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr r3, [r4]
- blx r3 // CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE
- ; byrRegs +[r0]
+ blx r3 // <unknown method>
+ ; byrRegs -[r0]
; gcr arg pop 0
- str r5, [r0+0xDF8]
+ str r0, [r5+0xDF8]
;; size=34 bbWeight=1 PerfScore 12.00
G_M35347_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,r4,r5,pc}
+0 (0.00%) : 130293.dasm - Microsoft.Build.Framework.FileClassifier:IsNonModifiable(System.String):ubyte:this (FullOpts)
@@ -14,7 +14,8 @@
; V03 loc1 [V03,T00] ( 5, 17 ) int -> r7
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T02] ( 2, 16 ) int -> r2 "argument with side effect"
-; V06 tmp2 [V06,T01] ( 2, 16 ) ref -> r8 "argument with side effect"
+; V06 tmp2 [V06,T01] ( 2, 16 ) ref -> r1 "argument with side effect"
+; V07 cse0 [V07,T06] ( 2, 4.50) byref -> r8 hoist "CSE - aggressive"
;
; Lcl frame size = 4
@@ -38,9 +39,20 @@ G_M38544_IG02: ; bbWeight=1, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
; gcrRegs -[r0]
cmp r0, 0
- ble SHORT G_M38544_IG04
+ ble SHORT G_M38544_IG05
;; size=28 bbWeight=1 PerfScore 11.00
-G_M38544_IG03: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M38544_IG03: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
+ movw r4, LOW RELOC 0xD1FFAB1E
+ movt r4, HIGH RELOC 0xD1FFAB1E
+ add r4, pc
+ ldr r3, [r4]
+ blx r3 // CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR
+ ; byrRegs +[r0]
+ mov r8, r0
+ ; byrRegs +[r8]
+ ;; size=16 bbWeight=0.50 PerfScore 3.00
+G_M38544_IG04: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
+ ; byrRegs -[r0]
mov r0, r6
; gcrRegs +[r0]
mov r1, r7
@@ -49,30 +61,19 @@ G_M38544_IG03: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
add r4, pc
ldr r3, [r4]
blx r3 // <unknown method>
- mov r8, r0
- ; gcrRegs +[r8]
- movw r4, LOW RELOC 0xD1FFAB1E
- movt r4, HIGH RELOC 0xD1FFAB1E
- add r4, pc
- ldr r3, [r4]
- blx r3 // CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE
- ; gcrRegs -[r0]
- ; byrRegs +[r0]
- ldr r2, [r0+0x110]
- mov r1, r8
+ mov r1, r0
; gcrRegs +[r1]
+ ldr r2, [r8+0x110]
mov r0, r5
- ; gcrRegs +[r0]
- ; byrRegs -[r0]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr r3, [r0]
ldr lr, [r4]
blx lr // <unknown method>
- ; gcrRegs -[r0-r1 r8]
+ ; gcrRegs -[r0-r1]
cmp r0, 0
- bne SHORT G_M38544_IG06
+ bne SHORT G_M38544_IG07
adds r7, r7, 1
mov r0, r6
; gcrRegs +[r0]
@@ -83,23 +84,24 @@ G_M38544_IG03: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
blx r3 // <unknown method>
; gcrRegs -[r0]
cmp r0, r7
- bgt SHORT G_M38544_IG03
- ;; size=86 bbWeight=4 PerfScore 132.00
-G_M38544_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bgt SHORT G_M38544_IG04
+ ;; size=70 bbWeight=4 PerfScore 108.00
+G_M38544_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r5-r6]
+ ; byrRegs -[r8]
movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M38544_IG05: ; bbWeight=0.50, epilog, nogc, extend
+G_M38544_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,r7,r8,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M38544_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M38544_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M38544_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M38544_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,r7,r8,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 136, prolog size 8, PerfScore 148.00, instruction count 51, allocated bytes for code 136 (MethodHash=e1b2696f) for method Microsoft.Build.Framework.FileClassifier:IsNonModifiable(System.String):ubyte:this (FullOpts)
+; Total bytes of code 136, prolog size 8, PerfScore 127.00, instruction count 51, allocated bytes for code 136 (MethodHash=e1b2696f) for method Microsoft.Build.Framework.FileClassifier:IsNonModifiable(System.String):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
+0 (0.00%) : 124604.dasm - Newtonsoft.Json.DefaultJsonNameTable:.cctor() (FullOpts)
@@ -9,7 +9,6 @@
; Final local variable assignments
;
;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 tmp1 [V01,T00] ( 2, 4 ) int -> r5 "value for stsfld with typeinit"
;
; Lcl frame size = 4
@@ -21,17 +20,19 @@ G_M7219_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr r3, [r4]
- blx r3 // <unknown method>
+ blx r3 // CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR
+ ; byrRegs +[r0]
; gcr arg pop 0
mov r5, r0
+ ; byrRegs +[r5]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr r3, [r4]
- blx r3 // CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE
- ; byrRegs +[r0]
+ blx r3 // <unknown method>
+ ; byrRegs -[r0]
; gcr arg pop 0
- str r5, [r0+0x208]
+ str r0, [r5+0x208]
;; size=34 bbWeight=1 PerfScore 12.00
G_M7219_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,r4,r5,pc}
libraries.pmi.linux.arm.checked.mch
-46 (-88.46%) : 8557.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:set_VarType(int):this (FullOpts)
@@ -7,64 +7,40 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 3 ) byref -> r4 this single-def
-; V01 arg1 [V01,T01] ( 3, 3 ) int -> r5 single-def
+; V00 this [V00,T00] ( 3, 3 ) byref -> r0 this single-def
+; V01 arg1 [V01,T01] ( 3, 3 ) int -> r1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 4
G_M624_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,lr}
- mov r4, r0
- ; byrRegs +[r4]
- mov r5, r1
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M624_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r0, [r0]
- and r0, r0, 1
- cmp r0, 1
- bne SHORT G_M624_IG05
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M624_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
- strh r5, [r4]
+ push {r3,lr}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M624_IG04: ; bbWeight=1, epilog, nogc, extend
- pop {r3,r4,r5,pc}
+G_M624_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
+ ; byrRegs +[r0]
+ strh r1, [r0]
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M624_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M624_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, gcvars, byref, isz
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- ; gcr arg pop 0
- b SHORT G_M624_IG03
- ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 2, PerfScore 11.00, instruction count 18, allocated bytes for code 52 (MethodHash=d9cffd8f) for method System.Runtime.InteropServices.Marshalling.ComVariant:set_VarType(int):this (FullOpts)
+; Total bytes of code 6, prolog size 2, PerfScore 3.00, instruction count 3, allocated bytes for code 6 (MethodHash=d9cffd8f) for method System.Runtime.InteropServices.Marshalling.ComVariant:set_VarType(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 : 3 (0x00003) Actual length = 6 (0x000006)
+ --- 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
-46 (-82.14%) : 8558.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:GetRawDataRefubyte:byref:this (FullOpts)
@@ -8,69 +8,43 @@
; 2 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) byref -> r4 this single-def
+; V00 this [V00,T00] ( 4, 4 ) byref -> r0 this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02,T01] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V03 tmp2 [V03,T02] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M281_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,lr}
- mov r4, r0
- ; byrRegs +[r4]
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M281_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r0, [r0]
- and r0, r0, 1
- cmp r0, 1
- bne SHORT G_M281_IG05
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M281_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
- ldrsb r0, [r4]
- add r0, r4, 8
- ; byrRegs +[r0]
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M281_IG04: ; bbWeight=1, epilog, nogc, extend
- pop {r4,pc}
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M281_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
+ ; byrRegs +[r0]
+ ldrsb r3, [r0]
+ adds r0, 8
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M281_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M281_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, gcvars, byref, isz
- ; byrRegs -[r0]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- ; gcr arg pop 0
- b SHORT G_M281_IG03
- ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 2, PerfScore 11.00, instruction count 18, allocated bytes for code 56 (MethodHash=8a4ffee6) for method System.Runtime.InteropServices.Marshalling.ComVariant:GetRawDataRef[ubyte]():byref:this (FullOpts)
+; Total bytes of code 10, prolog size 2, PerfScore 4.00, instruction count 4, allocated bytes for code 10 (MethodHash=8a4ffee6) for method System.Runtime.InteropServices.Marshalling.ComVariant:GetRawDataRef[ubyte]():byref: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 : 28 (0x0001c) Actual length = 56 (0x000038)
- ---- Epilog scopes ----
- ---- Scope 0
- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
- Condition : 14 (0xe) (always)
- Epilog Start Index : 0 (0x00)
+ Function Length : 5 (0x00005) Actual length = 10 (0x00000a)
+ --- 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
-42 (-75.00%) : 6305.dasm - System.Threading.Tasks.AwaitTaskContinuation:GetInvokeActionCallback():System.Threading.ContextCallback (FullOpts)
@@ -14,53 +14,30 @@
G_M32434_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,lr}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M32434_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r0, [r0]
- and r0, r0, 1
- cmp r0, 1
- bne SHORT G_M32434_IG05
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M32434_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M32434_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
ldr r0, [r0]
; gcrRegs +[r0]
;; size=10 bbWeight=1 PerfScore 3.00
-G_M32434_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M32434_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M32434_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- ; gcr arg pop 0
- b SHORT G_M32434_IG03
- ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 2, PerfScore 11.00, instruction count 18, allocated bytes for code 56 (MethodHash=945f814d) for method System.Threading.Tasks.AwaitTaskContinuation:GetInvokeActionCallback():System.Threading.ContextCallback (FullOpts)
+; Total bytes of code 14, prolog size 2, PerfScore 5.00, instruction count 5, allocated bytes for code 14 (MethodHash=945f814d) for method System.Threading.Tasks.AwaitTaskContinuation:GetInvokeActionCallback():System.Threading.ContextCallback (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 1
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 56 (0x000038)
- ---- Epilog scopes ----
- ---- Scope 0
- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
- Condition : 14 (0xe) (always)
- Epilog Start Index : 0 (0x00)
+ Function Length : 7 (0x00007) Actual length = 14 (0x00000e)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
ED 08 pop {r3,lr} ; opsize 16
+0 (0.00%) : 5377.dasm - System.Threading.ProcessorIdCache:GetCurrentProcessorId():int (FullOpts)
@@ -10,7 +10,7 @@
;* V00 loc0 [V00 ] ( 0, 0 ) int -> zero-ref
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T00] ( 4, 7 ) int -> r4 "dup spill"
-; V03 cse0 [V03,T01] ( 3, 3 ) int -> r0 "CSE - aggressive"
+; V03 cse0 [V03,T01] ( 3, 3 ) byref -> r0 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -23,7 +23,8 @@ G_M12048_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r1, 820
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCTHREADSTATIC_BASE_NOCTOR
+ blx r3 // CORINFO_HELP_GETSHARED_NONGCTHREADSTATIC_BASE_DYNAMICCLASS
+ ; byrRegs +[r0]
; gcr arg pop 0
ldr r4, [r0+0xA04]
subs r3, r4, 1
@@ -33,6 +34,7 @@ G_M12048_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
bne SHORT G_M12048_IG05
;; size=38 bbWeight=1 PerfScore 12.00
G_M12048_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
+0 (0.00%) : 8953.dasm - System.Reflection.CustomAttributeTypedArgument:CanonicalizeValue(System.Object):System.Object (FullOpts)
@@ -7,8 +7,8 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 3.50) ref -> r4 class-hnd single-def <System.Object>
-; V01 loc0 [V01,T01] ( 3, 2.50) ref -> r0 class-hnd single-def <<unknown class>>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> r4 class-hnd single-def <System.Object>
+; V01 loc0 [V01,T01] ( 2, 1.50) ref -> r0 class-hnd single-def <<unknown class>>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
@@ -25,22 +25,21 @@ G_M50446_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
- cmp r0, 0
+ cmp r4, 0
bne SHORT G_M50446_IG05
;; size=24 bbWeight=1 PerfScore 8.00
-G_M50446_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r0, r4
- ; gcrRegs +[r0]
+G_M50446_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0 r4]
+ movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M50446_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop {r4,pc}
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M50446_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r4]
+ ; gcrRegs +[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
+2 (+0.70%) : 6495.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[ubyte]:<.cctor>b_40(System.Object):this (FullOpts)
@@ -8,82 +8,78 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[ubyte]>
-; V01 arg1 [V01,T00] ( 6, 5.50) ref -> r1 class-hnd single-def <System.Object>
-; V02 loc0 [V02,T01] ( 9, 6 ) ref -> [sp+0x04] do-not-enreg[M] class-hnd exact EH-live <<unknown class>>
-; V03 loc1 [V03,T02] ( 4, 4 ) ref -> r5 class-hnd single-def <<unknown class>>
+; V01 arg1 [V01,T00] ( 6, 6 ) ref -> r4 class-hnd single-def <System.Object>
+; V02 loc0 [V02,T01] ( 8, 4 ) ref -> [sp+0x04] class-hnd exact EH-live single-def <<unknown class>>
+; V03 loc1 [V03,T02] ( 4, 4 ) ref -> r6 class-hnd single-def <<unknown class>>
; V04 loc2 [V04,T04] ( 2, 1 ) int -> [sp+0x0C] do-not-enreg[Z] EH-live
;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
; V06 loc4 [V06,T06] ( 4, 0 ) ref -> r4 class-hnd single-def <<unknown class>>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V08 tmp1 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V09 tmp2 [V09,T07] ( 3, 0 ) ref -> r1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V10 tmp3 [V10 ] ( 2, 0 ) struct ( 4) [sp+0x08] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Threading.CancellationToken>
-;* V11 tmp4 [V11 ] ( 0, 0 ) struct ( 4) zero-ref single-def "spilled call-like call argument" <System.Threading.CancellationToken>
-; V12 tmp5 [V12 ] ( 2, 0 ) ref -> [sp+0x08] do-not-enreg[X] addr-exposed "field V10._source (fldOffset=0x0)" P-DEP
-; V13 tmp6 [V13,T08] ( 2, 0 ) ref -> r1 "field V11._source (fldOffset=0x0)" P-INDEP
-; V14 tmp7 [V14,T03] ( 2, 4 ) int -> r1 "argument with side effect"
-; V15 PSPSym [V15,T05] ( 1, 1 ) int -> [sp+0x14] do-not-enreg[V] "PSPSym"
+; V08 tmp1 [V08,T07] ( 3, 0 ) ref -> r1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V09 tmp2 [V09 ] ( 2, 0 ) struct ( 4) [sp+0x08] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Threading.CancellationToken>
+;* V10 tmp3 [V10 ] ( 0, 0 ) struct ( 4) zero-ref single-def "spilled call-like call argument" <System.Threading.CancellationToken>
+; V11 tmp4 [V11 ] ( 2, 0 ) ref -> [sp+0x08] do-not-enreg[X] addr-exposed "field V09._source (fldOffset=0x0)" P-DEP
+; V12 tmp5 [V12,T08] ( 2, 0 ) ref -> r1 "field V10._source (fldOffset=0x0)" P-INDEP
+; V13 tmp6 [V13,T03] ( 2, 4 ) int -> r1 "argument with side effect"
+; V14 PSPSym [V14,T05] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 24
+; Lcl frame size = 20
G_M26575_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r11,lr}
- sub sp, 24
+ push {r4,r5,r6,r11,lr}
+ sub sp, 20
add r11, sp, 32
movs r2, 0
- str r2, [sp+0x08] // [V10 tmp3]
+ str r2, [sp+0x08] // [V09 tmp2]
add r2, sp, 40
- str r2, [sp+0x14] // [V15 PSPSym]
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M26575_IG02: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+ str r2, [sp+0x10] // [V14 PSPSym]
+ mov r4, r1
+ ; gcrRegs +[r4]
+ ;; size=20 bbWeight=1 PerfScore 8.00
+G_M26575_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ mov r1, r4
; gcrRegs +[r1]
- str r1, [sp+0x04] // [V02 loc0]
- ; GC ptr vars +{V02}
- cmp r1, 0
- beq SHORT G_M26575_IG05
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M26575_IG03: ; bbWeight=0.50, gcVars=00000002 {V02}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr r0, [r1]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- cmp r0, r3
- bne SHORT G_M26575_IG05
- ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M26575_IG04: ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
- ldr r0, [sp+0x04] // [V02 loc0]
- ; gcrRegs +[r0]
- ldr r5, [r0+0x24]
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
+ ; gcrRegs -[r1] +[r0]
+ ; gcr arg pop 0
+ mov r5, r0
; gcrRegs +[r5]
- cmp r5, 0
- bne SHORT G_M26575_IG07
- ;; size=8 bbWeight=1 PerfScore 4.00
-G_M26575_IG05: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0 r5]
+ str r5, [sp+0x04]
+ ; GC ptr vars +{V02}
+ cmp r4, 0
+ beq SHORT G_M26575_IG03
+ ldr r6, [r4+0x24]
+ ; gcrRegs +[r6]
+ cmp r6, 0
+ bne SHORT G_M26575_IG05
+ ;; size=34 bbWeight=1 PerfScore 13.00
+G_M26575_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0 r5-r6]
; GC ptr vars -{V02}
- mov r0, r1
+ mov r0, r4
; gcrRegs +[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ; gcrRegs -[r0-r1]
+ ; gcrRegs -[r0 r4]
; gcr arg pop 0
;; size=14 bbWeight=1 PerfScore 5.00
-G_M26575_IG06: ; bbWeight=1, epilog, nogc, extend
- add sp, 24
- pop {r4,r5,r11,pc}
+G_M26575_IG04: ; bbWeight=1, epilog, nogc, extend
+ add sp, 20
+ pop {r4,r5,r6,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M26575_IG07: ; bbWeight=1, gcVars=00000002 {V02}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[r5]
+G_M26575_IG05: ; bbWeight=1, gcVars=00000002 {V02}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[r5-r6]
; GC ptr vars +{V01 V02}
- ldr r1, [sp+0x04] // [V02 loc0]
- ; gcrRegs +[r1]
- movs r0, 0
- str r0, [r1+0x24]
- ldr r1, [sp+0x04] // [V02 loc0]
- ldrsh r1, [r1+0x28]
- ; gcrRegs -[r1]
- mov r0, r5
+ movs r1, 0
+ str r1, [r5+0x24]
+ ldrsh r1, [r5+0x28]
+ mov r0, r6
; gcrRegs +[r0]
movw r4, 0xd1ff
movt r4, 0xd1ff
@@ -92,22 +88,19 @@ G_M26575_IG07: ; bbWeight=1, gcVars=00000002 {V02}, gcrefRegs=0020 {r5},
; gcrRegs -[r0]
; gcr arg pop 0
str r0, [sp+0x0C] // [V04 loc2]
- ;; size=28 bbWeight=1 PerfScore 11.00
-G_M26575_IG08: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
- ldr r1, [sp+0x04] // [V02 loc0]
- ; gcrRegs +[r1]
- ldrsh r1, [r1+0x28]
- ; gcrRegs -[r1]
- mov r0, r5
+ ;; size=24 bbWeight=1 PerfScore 9.00
+G_M26575_IG06: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
+ ldrsh r1, [r5+0x28]
+ mov r0, r6
; gcrRegs +[r0]
movw r4, 0xd1ff
movt r4, 0xd1ff
ldr r3, [r4]
blx r3 // <unknown method>
- ; gcrRegs -[r0 r5]
+ ; gcrRegs -[r0 r6]
; gcr arg pop 0
mov r1, r0
- ldr r0, [sp+0x04] // [V02 loc0]
+ mov r0, r5
; gcrRegs +[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -115,37 +108,38 @@ G_M26575_IG08: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
blx r3 // System.Threading.Tasks.Task`1[ubyte]:TrySetResult(ubyte):ubyte:this
; gcrRegs -[r0]
; gcr arg pop 0
- ;; size=36 bbWeight=1 PerfScore 13.00
-G_M26575_IG09: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+ ;; size=34 bbWeight=1 PerfScore 12.00
+G_M26575_IG07: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+ ; gcrRegs -[r5]
; GC ptr vars -{V01 V02}
- add sp, 24
- pop {r4,r5,r11,pc}
+ add sp, 20
+ pop {r4,r5,r6,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M26575_IG10: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M26575_IG08: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[r0]
- push {r2,r3,r4,r5,r11,lr}
+ push {r3,r4,r5,r6,r11,lr}
add r3, r11, 8
- str r3, [sp+0x04]
+ str r3, [sp]
;; size=10 bbWeight=0 PerfScore 0.00
-G_M26575_IG11: ; bbWeight=0, gcVars=00000002 {V02}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M26575_IG09: ; bbWeight=0, gcVars=00000002 {V02}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01 V02}
mov r1, r0
; gcrRegs +[r1]
ldr r0, [r11-0x14] // [V04 loc2]
; gcrRegs -[r0]
cmp r0, 3
- bne SHORT G_M26575_IG13
+ bne SHORT G_M26575_IG11
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
mov r4, r0
; gcrRegs +[r4]
cmp r4, 0
- beq SHORT G_M26575_IG12
+ beq SHORT G_M26575_IG10
mov r0, r4
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -164,11 +158,11 @@ G_M26575_IG11: ; bbWeight=0, gcVars=00000002 {V02}, gcrefRegs=0001 {r0},
blx r3 // <unknown method>
; gcrRegs -[r0-r2 r4]
; gcr arg pop 0
- b SHORT G_M26575_IG14
+ b SHORT G_M26575_IG12
;; size=70 bbWeight=0 PerfScore 0.00
-G_M26575_IG12: ; bbWeight=0, gcVars=00000002 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M26575_IG10: ; bbWeight=0, gcVars=00000002 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V01 V02}
- subw r0, r11, 24 // [V10 tmp3]
+ subw r0, r11, 24 // [V09 tmp2]
movs r1, 1
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -177,7 +171,7 @@ G_M26575_IG12: ; bbWeight=0, gcVars=00000002 {V02}, gcrefRegs=0000 {}, by
; gcr arg pop 0
ldr r0, [r11-0x1C] // [V02 loc0]
; gcrRegs +[r0]
- ldr r1, [r11-0x18] // [V12 tmp5]
+ ldr r1, [r11-0x18] // [V11 tmp4]
; gcrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -186,9 +180,9 @@ G_M26575_IG12: ; bbWeight=0, gcVars=00000002 {V02}, gcrefRegs=0000 {}, by
blx r3 // <unknown method>
; gcrRegs -[r0-r1]
; gcr arg pop 0
- b SHORT G_M26575_IG14
+ b SHORT G_M26575_IG12
;; size=40 bbWeight=0 PerfScore 0.00
-G_M26575_IG13: ; bbWeight=0, gcVars=00000002 {V02}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref
+G_M26575_IG11: ; bbWeight=0, gcVars=00000002 {V02}, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r1]
; GC ptr vars +{V01 V02}
ldr r0, [r11-0x1C] // [V02 loc0]
@@ -201,15 +195,15 @@ G_M26575_IG13: ; bbWeight=0, gcVars=00000002 {V02}, gcrefRegs=0002 {r1},
; gcrRegs -[r0-r1]
; gcr arg pop 0
;; size=16 bbWeight=0 PerfScore 0.00
...
libraries_tests.run.linux.arm.Release.mch
-32 (-50.00%) : 1162.dasm - System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
@@ -3,39 +3,27 @@
; Tier1 code
; optimized code
; optimized using Dynamic PGO
-; r11 based frame
+; sp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 8
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 8
; 1 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 6, 5 ) ref -> r0 class-hnd single-def <System.Reflection.Assembly>
-; V01 loc0 [V01,T01] ( 2, 2 ) ref -> r0 class-hnd exact <System.Reflection.RuntimeAssembly>
-; V02 loc1 [V02,T02] ( 3, 0 ) ref -> r0 class-hnd exact single-def <System.Reflection.Emit.RuntimeAssemblyBuilder>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> r0 class-hnd single-def <System.Reflection.Assembly>
+; V01 loc0 [V01,T01] ( 2, 2 ) ref -> r0 class-hnd exact single-def <System.Reflection.RuntimeAssembly>
+;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Reflection.Emit.RuntimeAssemblyBuilder>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.RuntimeAssembly>
-;* V05 tmp2 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V04 tmp1 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M8626_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r11,lr}
- mov r11, sp
- ;; size=6 bbWeight=1 PerfScore 2.00
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
G_M8626_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
cmp r0, 0
- beq SHORT G_M8626_IG05
- ldr r1, [r0]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r1, r3
- bne SHORT G_M8626_IG04
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M8626_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M8626_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
+ beq SHORT G_M8626_IG04
mov r1, r0
; gcrRegs +[r1]
movw r0, 0xd1ff
@@ -43,39 +31,34 @@ G_M8626_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byre
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
- cmp r0, 0
- bne SHORT G_M8626_IG07
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M8626_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
+ ;; size=24 bbWeight=1 PerfScore 8.00
+G_M8626_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M8626_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0]
movs r0, 0
;; size=2 bbWeight=0 PerfScore 0.00
-G_M8626_IG06: ; bbWeight=0, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M8626_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[r0]
- ldr r0, [r0+0x04]
+G_M8626_IG05: ; bbWeight=0, epilog, nogc, extend
+ pop {r3,pc}
;; size=2 bbWeight=0 PerfScore 0.00
-G_M8626_IG08: ; bbWeight=0, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 64, prolog size 6, PerfScore 10.00, instruction count 22, allocated bytes for code 64 (MethodHash=8387de4d) for method System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
+; Total bytes of code 32, prolog size 2, PerfScore 10.00, instruction count 12, allocated bytes for code 32 (MethodHash=8387de4d) for method System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 3
+ Epilog Count : 2
F bit : 0
E bit : 0
X bit : 0
Vers : 0
- Function Length : 32 (0x00020) Actual length = 64 (0x000040)
+ Function Length : 16 (0x00010) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -85,13 +68,9 @@ Unwind Info:
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Condition : 14 (0xe) (always)
Epilog Start Index : 0 (0x00)
- ---- Scope 2
- 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)
---- 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
-32 (-50.00%) : 4838.dasm - System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
@@ -3,39 +3,27 @@
; Tier1 code
; optimized code
; optimized using Dynamic PGO
-; r11 based frame
+; sp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 6
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 6
; 1 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 6, 5 ) ref -> r0 class-hnd single-def <System.Reflection.Assembly>
-; V01 loc0 [V01,T01] ( 2, 2 ) ref -> r0 class-hnd exact <System.Reflection.RuntimeAssembly>
-; V02 loc1 [V02,T02] ( 3, 0 ) ref -> r0 class-hnd exact single-def <System.Reflection.Emit.RuntimeAssemblyBuilder>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> r0 class-hnd single-def <System.Reflection.Assembly>
+; V01 loc0 [V01,T01] ( 2, 2 ) ref -> r0 class-hnd exact single-def <System.Reflection.RuntimeAssembly>
+;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Reflection.Emit.RuntimeAssemblyBuilder>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.RuntimeAssembly>
-;* V05 tmp2 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V04 tmp1 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M8626_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r11,lr}
- mov r11, sp
- ;; size=6 bbWeight=1 PerfScore 2.00
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
G_M8626_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
cmp r0, 0
- beq SHORT G_M8626_IG05
- ldr r1, [r0]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r1, r3
- bne SHORT G_M8626_IG04
- ;; size=18 bbWeight=1 PerfScore 7.00
-G_M8626_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M8626_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
+ beq SHORT G_M8626_IG04
mov r1, r0
; gcrRegs +[r1]
movw r0, 0xd1ff
@@ -43,39 +31,34 @@ G_M8626_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byre
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
- cmp r0, 0
- bne SHORT G_M8626_IG07
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M8626_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
+ ;; size=24 bbWeight=1 PerfScore 8.00
+G_M8626_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop {r3,pc}
+ ;; size=2 bbWeight=1 PerfScore 1.00
+G_M8626_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0]
movs r0, 0
;; size=2 bbWeight=0 PerfScore 0.00
-G_M8626_IG06: ; bbWeight=0, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M8626_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[r0]
- ldr r0, [r0+0x04]
+G_M8626_IG05: ; bbWeight=0, epilog, nogc, extend
+ pop {r3,pc}
;; size=2 bbWeight=0 PerfScore 0.00
-G_M8626_IG08: ; bbWeight=0, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 64, prolog size 6, PerfScore 10.00, instruction count 22, allocated bytes for code 64 (MethodHash=8387de4d) for method System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
+; Total bytes of code 32, prolog size 2, PerfScore 10.00, instruction count 12, allocated bytes for code 32 (MethodHash=8387de4d) for method System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 3
+ Epilog Count : 2
F bit : 0
E bit : 0
X bit : 0
Vers : 0
- Function Length : 32 (0x00020) Actual length = 64 (0x000040)
+ Function Length : 16 (0x00010) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -85,13 +68,9 @@ Unwind Info:
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Condition : 14 (0xe) (always)
Epilog Start Index : 0 (0x00)
- ---- Scope 2
- 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)
---- 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
-32 (-50.00%) : 6400.dasm - System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
@@ -3,41 +3,29 @@
; Tier1 code
; optimized code
; optimized using Dynamic PGO
-; r11 based frame
+; sp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 12
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 12
; 1 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 6, 5 ) ref -> r0 class-hnd single-def <System.Reflection.Assembly>
-; V01 loc0 [V01,T01] ( 2, 2.00) ref -> r0 class-hnd exact <System.Reflection.RuntimeAssembly>
-; V02 loc1 [V02,T02] ( 3, 0 ) ref -> r0 class-hnd exact single-def <System.Reflection.Emit.RuntimeAssemblyBuilder>
+; V00 arg0 [V00,T00] ( 4, 4 ) ref -> r0 class-hnd single-def <System.Reflection.Assembly>
+; V01 loc0 [V01,T01] ( 2, 2.00) ref -> r0 class-hnd exact single-def <System.Reflection.RuntimeAssembly>
+;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Reflection.Emit.RuntimeAssemblyBuilder>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.RuntimeAssembly>
-;* V05 tmp2 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V04 tmp1 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M8626_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r11,lr}
- mov r11, sp
- ;; size=6 bbWeight=1 PerfScore 2.00
+ push {r3,lr}
+ ;; size=2 bbWeight=1 PerfScore 1.00
G_M8626_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
cmp r0, 0
- beq SHORT G_M8626_IG06
+ beq SHORT G_M8626_IG05
;; size=4 bbWeight=1 PerfScore 2.00
-G_M8626_IG03: ; bbWeight=1.00, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r0]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r1, r3
- bne SHORT G_M8626_IG05
- ;; size=14 bbWeight=1.00 PerfScore 5.00
-G_M8626_IG04: ; bbWeight=1.00, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=1.00 PerfScore 1.00
-G_M8626_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M8626_IG03: ; bbWeight=1.00, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
mov r1, r0
; gcrRegs +[r1]
movw r0, 0xd1ff
@@ -45,39 +33,34 @@ G_M8626_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byre
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
- cmp r0, 0
- bne SHORT G_M8626_IG08
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M8626_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcr arg pop 0
+ ;; size=20 bbWeight=1.00 PerfScore 6.00
+G_M8626_IG04: ; bbWeight=1.00, epilog, nogc, extend
+ pop {r3,pc}
+ ;; size=2 bbWeight=1.00 PerfScore 1.00
+G_M8626_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0]
movs r0, 0
;; size=2 bbWeight=0 PerfScore 0.00
-G_M8626_IG07: ; bbWeight=0, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M8626_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[r0]
- ldr r0, [r0+0x04]
+G_M8626_IG06: ; bbWeight=0, epilog, nogc, extend
+ pop {r3,pc}
;; size=2 bbWeight=0 PerfScore 0.00
-G_M8626_IG09: ; bbWeight=0, epilog, nogc, extend
- pop {r11,pc}
- ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 64, prolog size 6, PerfScore 10.00, instruction count 22, allocated bytes for code 64 (MethodHash=8387de4d) for method System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
+; Total bytes of code 32, prolog size 2, PerfScore 10.00, instruction count 12, allocated bytes for code 32 (MethodHash=8387de4d) for method System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 3
+ Epilog Count : 2
F bit : 0
E bit : 0
X bit : 0
Vers : 0
- Function Length : 32 (0x00020) Actual length = 64 (0x000040)
+ Function Length : 16 (0x00010) Actual length = 32 (0x000020)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -87,13 +70,9 @@ Unwind Info:
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Condition : 14 (0xe) (always)
Epilog Start Index : 0 (0x00)
- ---- Scope 2
- 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)
---- 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
-6 (-1.74%) : 3763.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal:GetDefaultValue(int):Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal (Tier0)
@@ -5,41 +5,45 @@
; partially interruptible
; Final local variable assignments
;
-; V00 arg0 [V00 ] ( 1, 1 ) int -> [sp+0x34] do-not-enreg[]
-; V01 loc0 [V01 ] ( 1, 1 ) struct ( 4) [sp+0x30] do-not-enreg[S] must-init <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
-; V02 loc1 [V02 ] ( 1, 1 ) struct ( 4) [sp+0x2C] do-not-enreg[S] must-init ld-addr-op <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
+; V00 arg0 [V00 ] ( 1, 1 ) int -> [sp+0x4C] do-not-enreg[]
+; V01 loc0 [V01 ] ( 1, 1 ) struct ( 4) [sp+0x48] do-not-enreg[S] must-init <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
+; V02 loc1 [V02 ] ( 1, 1 ) struct ( 4) [sp+0x44] do-not-enreg[S] must-init ld-addr-op <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04 ] ( 1, 1 ) struct ( 4) [sp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
-; V05 tmp2 [V05 ] ( 1, 1 ) ref -> [sp+0x24] do-not-enreg[] must-init "Reusable Box Helper"
-; V06 tmp3 [V06 ] ( 1, 1 ) struct ( 4) [sp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
-; V07 tmp4 [V07 ] ( 1, 1 ) struct ( 4) [sp+0x1C] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
-; V08 tmp5 [V08 ] ( 1, 1 ) ref -> [sp+0x18] do-not-enreg[] must-init class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V09 tmp6 [V09 ] ( 1, 1 ) struct ( 4) [sp+0x14] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
-; V10 tmp7 [V10 ] ( 1, 1 ) struct ( 4) [sp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
-; V11 tmp8 [V11 ] ( 1, 1 ) struct ( 4) [sp+0x0C] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
-; V12 tmp9 [V12 ] ( 1, 1 ) ref -> [sp+0x08] do-not-enreg[] must-init "argument with side effect"
-; V13 tmp10 [V13 ] ( 1, 1 ) byref -> [sp+0x04] must-init "ReplaceWithLclVar is creating a new local variable"
+; V04 tmp1 [V04 ] ( 1, 1 ) struct ( 4) [sp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
+; V05 tmp2 [V05 ] ( 1, 1 ) float -> [sp+0x3C] do-not-enreg[X] addr-exposed "location for address-of(RValue)"
+; V06 tmp3 [V06 ] ( 1, 1 ) struct ( 4) [sp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
+; V07 tmp4 [V07 ] ( 1, 1 ) struct ( 4) [sp+0x34] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
+; V08 tmp5 [V08 ] ( 1, 1 ) long -> [sp+0x28] do-not-enreg[X] addr-exposed "location for address-of(RValue)"
+; V09 tmp6 [V09 ] ( 1, 1 ) struct ( 4) [sp+0x24] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
+; V10 tmp7 [V10 ] ( 1, 1 ) double -> [sp+0x18] do-not-enreg[X] addr-exposed "location for address-of(RValue)"
+; V11 tmp8 [V11 ] ( 1, 1 ) struct ( 4) [sp+0x14] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
+; V12 tmp9 [V12 ] ( 1, 1 ) struct ( 4) [sp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.ConstVal>
+; V13 tmp10 [V13 ] ( 1, 1 ) ref -> [sp+0x0C] do-not-enreg[] must-init "argument with side effect"
+; V14 tmp11 [V14 ] ( 1, 1 ) ref -> [sp+0x08] do-not-enreg[] must-init "argument with side effect"
+; V15 tmp12 [V15 ] ( 1, 1 ) ref -> [sp+0x04] do-not-enreg[] must-init "argument with side effect"
+; V16 tmp13 [V16 ] ( 1, 1 ) ref -> [sp+0x00] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 56
+; Lcl frame size = 80
G_M5822_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r10,r11,lr}
- sub sp, 56
- add r11, sp, 64
- sub r3, r11, 60
- movs r4, 6
+ sub sp, 80
+ add r11, sp, 88
+ sub r3, r11, 88
+ movs r4, 9
movs r1, 0
movs r2, 0
stm r3!, {r1,r2}
subs r4, 1
bhi SHORT pc-6 (-3 instructions)
- str r0, [sp+0x34] // [V00 arg0]
- ;; size=28 bbWeight=1 PerfScore 11.00
+ str r1, [r3]
+ str r0, [sp+0x4C] // [V00 arg0]
+ ;; size=30 bbWeight=1 PerfScore 12.00
G_M5822_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr r3, [sp+0x34]
+ ldr r3, [sp+0x4C]
cmp r3, 7
bhi SHORT G_M5822_IG03
- ldr r3, [sp+0x34]
+ ldr r3, [sp+0x4C]
movw r2, LOW ADDRESS J_M5822_DS00
movt r2, HIGH ADDRESS J_M5822_DS00
@@ -62,85 +66,73 @@ G_M5822_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movt r3, 0xd1ff
ldr r1, [r3]
; gcrRegs +[r1]
- add r0, sp, 12
+ add r0, sp, 16
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
; gcrRegs -[r1]
- ldr r3, [sp+0x0C]
+ ldr r3, [sp+0x10]
; gcrRegs +[r3]
- str r3, [sp+0x30] // [V01 loc0]
+ str r3, [sp+0x48] // [V01 loc0]
b SHORT G_M5822_IG11
;; size=30 bbWeight=1 PerfScore 11.00
G_M5822_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r3]
+ movs r2, 0
+ movs r3, 0
+ vmov.i2d d4, r2, r3
+ vstr d4, [sp+0x18] // [V10 tmp7]
+ add r1, sp, 24 // [V10 tmp7]
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_NEWFAST
+ blx r3 // CORINFO_HELP_UNBOX
; gcrRegs +[r0]
- str r0, [sp+0x18] // [V08 tmp5]
- ldr r3, [sp+0x18] // [V08 tmp5]
- ; gcrRegs +[r3]
- movs r1, 0
- movs r2, 0
- vmov.i2d d4, r1, r2
- vstr d4, [r3+0x04]
- ldr r1, [sp+0x18] // [V08 tmp5]
+ str r0, [sp+0x0C] // [V13 tmp10]
+ ldr r1, [sp+0x0C] // [V13 tmp10]
; gcrRegs +[r1]
- add r0, sp, 16 // [V10 tmp7]
+ add r0, sp, 20 // [V11 tmp8]
; gcrRegs -[r0]
movw r3, 0xd1ff
- ; gcrRegs -[r3]
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
; gcrRegs -[r1]
- ldr r3, [sp+0x10] // [V10 tmp7]
+ ldr r3, [sp+0x14] // [V11 tmp8]
; gcrRegs +[r3]
- str r3, [sp+0x30] // [V01 loc0]
+ str r3, [sp+0x48] // [V01 loc0]
b SHORT G_M5822_IG11
;; size=56 bbWeight=1 PerfScore 20.00
G_M5822_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r3]
+ movs r3, 0
+ movs r2, 0
+ str r3, [sp+0x28] // [V08 tmp5]
+ str r2, [sp+0x2C] // [V08 tmp5+0x04]
+ add r1, sp, 40 // [V08 tmp5]
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_NEWFAST
+ blx r3 // CORINFO_HELP_UNBOX
; gcrRegs +[r0]
- str r0, [sp+0x18] // [V08 tmp5]
- ldr r3, [sp+0x18] // [V08 tmp5]
- ; gcrRegs +[r3]
- adds r3, r3, 4
- ; gcrRegs -[r3]
- ; byrRegs +[r3]
- str r3, [sp+0x04] // [V13 tmp10]
- ldr r3, [sp+0x04] // [V13 tmp10]
- movs r2, 0
- str r2, [r3]
- movs r3, 0
- ; byrRegs -[r3]
- ldr r2, [sp+0x04] // [V13 tmp10]
- ; byrRegs +[r2]
- str r3, [r2+0x04]
- ldr r1, [sp+0x18] // [V08 tmp5]
+ str r0, [sp+0x08] // [V14 tmp11]
+ ldr r1, [sp+0x08] // [V14 tmp11]
; gcrRegs +[r1]
- add r0, sp, 20 // [V09 tmp6]
+ add r0, sp, 36 // [V09 tmp6]
; gcrRegs -[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
; gcrRegs -[r1]
- ; byrRegs -[r2]
- ldr r3, [sp+0x14] // [V09 tmp6]
+ ldr r3, [sp+0x24] // [V09 tmp6]
; gcrRegs +[r3]
- str r3, [sp+0x30] // [V01 loc0]
+ str r3, [sp+0x48] // [V01 loc0]
b SHORT G_M5822_IG11
- ;; size=60 bbWeight=1 PerfScore 24.00
+ ;; size=52 bbWeight=1 PerfScore 20.00
G_M5822_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r3]
movw r3, 0xd1ff
@@ -154,50 +146,48 @@ G_M5822_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movw r3, 0xd1ff
; gcrRegs -[r3]
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_BOX
+ blx r3 // CORINFO_HELP_UNBOX
; gcrRegs +[r0]
; byrRegs -[r1]
- str r0, [sp+0x08] // [V12 tmp9]
- ldr r1, [sp+0x08] // [V12 tmp9]
+ str r0, [sp+0x04] // [V15 tmp12]
+ ldr r1, [sp+0x04] // [V15 tmp12]
; gcrRegs +[r1]
- add r0, sp, 28 // [V07 tmp4]
+ add r0, sp, 52 // [V07 tmp4]
; gcrRegs -[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
; gcrRegs -[r1]
- ldr r3, [sp+0x1C] // [V07 tmp4]
+ ldr r3, [sp+0x34] // [V07 tmp4]
; gcrRegs +[r3]
- str r3, [sp+0x30] // [V01 loc0]
+ str r3, [sp+0x48] // [V01 loc0]
b SHORT G_M5822_IG11
;; size=54 bbWeight=1 PerfScore 19.00
G_M5822_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r3]
+ movs r3, 0
+ str r3, [sp+0x3C] // [V05 tmp2]
+ add r1, sp, 60 // [V05 tmp2]
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_NEWSFAST
+ blx r3 // CORINFO_HELP_UNBOX
; gcrRegs +[r0]
- str r0, [sp+0x24] // [V05 tmp2]
- ldr r3, [sp+0x24] // [V05 tmp2]
- ; gcrRegs +[r3]
- movs r2, 0
- str r2, [r3+0x04]
- ldr r1, [sp+0x24] // [V05 tmp2]
+ str r0, [sp] // [V16 tmp13]
+ ldr r1, [sp] // [V16 tmp13]
; gcrRegs +[r1]
- add r0, sp, 32 // [V06 tmp3]
+ add r0, sp, 56 // [V06 tmp3]
; gcrRegs -[r0]
movw r3, 0xd1ff
- ; gcrRegs -[r3]
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
; gcrRegs -[r1]
- ldr r3, [sp+0x20] // [V06 tmp3]
+ ldr r3, [sp+0x38] // [V06 tmp3]
; gcrRegs +[r3]
- str r3, [sp+0x30] // [V01 loc0]
+ str r3, [sp+0x48] // [V01 loc0]
b SHORT G_M5822_IG11
;; size=48 bbWeight=1 PerfScore 18.00
G_M5822_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
@@ -206,32 +196,32 @@ G_M5822_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movt r3, 0xd1ff
ldr r1, [r3]
; gcrRegs +[r1]
...
+0 (0.00%) : 3418.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:Significant(System.Linq.Expressions.Expression):ubyte (Tier0-FullOpts)
@@ -7,8 +7,8 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 5, 4 ) ref -> r4 class-hnd single-def <System.Linq.Expressions.Expression>
-; V01 loc0 [V01,T01] ( 6, 11 ) ref -> r5 class-hnd single-def <<unknown class>>
+; V00 arg0 [V00,T03] ( 4, 4 ) ref -> r4 class-hnd single-def <System.Linq.Expressions.Expression>
+; V01 loc0 [V01,T01] ( 5, 10 ) ref -> r5 class-hnd single-def <<unknown class>>
; V02 loc1 [V02,T00] ( 5, 16.50) int -> r4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 cse0 [V04,T02] ( 4, 9 ) int -> r6 "CSE - aggressive"
@@ -28,11 +28,11 @@ G_M45010_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
mov r5, r0
; gcrRegs +[r5]
- cmp r5, 0
+ cmp r4, 0
beq SHORT G_M45010_IG09
;; size=26 bbWeight=1 PerfScore 9.00
G_M45010_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
@@ -83,25 +83,21 @@ G_M45010_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, by
G_M45010_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M45010_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r4]
- mov r0, r4
- ; gcrRegs +[r0]
+G_M45010_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ movs r0, 0
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // System.Linq.Expressions.Compiler.LambdaCompiler:NotEmpty(System.Linq.Expressions.Expression):ubyte
- ; gcrRegs -[r0]
cmp r0, 0
beq SHORT G_M45010_IG05
- mov r1, r4
- ; gcrRegs +[r1]
+ movs r1, 0
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[r1 r4] +[r0]
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
+ ; gcrRegs +[r0]
cmp r0, 0
beq SHORT G_M45010_IG10
movs r0, 0
+0 (0.00%) : 1767.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]:CreatePropertyInfoForTypeInfo():System.Text.Json.Serialization.Metadata.JsonPropertyInfo:this (Tier0)
@@ -66,14 +66,14 @@ G_M41961_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ blx r3 // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
str r0, [sp+0x0C] // [V04 tmp3]
;; size=22 bbWeight=0.20 PerfScore 1.40
G_M41961_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr r0, [sp+0x0C] // [V04 tmp3]
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_NEWSFAST
+ blx r3 // CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[r0]
str r0, [sp+0x10] // [V03 tmp2]
ldr r0, [sp+0x18] // [V00 this]
librariestestsnotieredcompilation.run.linux.arm.Release.mch
-42 (-75.00%) : 2052.dasm - Microsoft.CodeAnalysis.AssemblyIdentityComparer:get_Default():Microsoft.CodeAnalysis.AssemblyIdentityComparer (FullOpts)
@@ -14,53 +14,30 @@
G_M7353_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,lr}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M7353_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r0, [r0]
- and r0, r0, 1
- cmp r0, 1
- bne SHORT G_M7353_IG05
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M7353_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M7353_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
ldr r0, [r0]
; gcrRegs +[r0]
;; size=10 bbWeight=1 PerfScore 3.00
-G_M7353_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M7353_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M7353_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- mov r1, 432
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- ; gcr arg pop 0
- b SHORT G_M7353_IG03
- ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 2, PerfScore 11.00, instruction count 18, allocated bytes for code 56 (MethodHash=2648e346) for method Microsoft.CodeAnalysis.AssemblyIdentityComparer:get_Default():Microsoft.CodeAnalysis.AssemblyIdentityComparer (FullOpts)
+; Total bytes of code 14, prolog size 2, PerfScore 5.00, instruction count 5, allocated bytes for code 14 (MethodHash=2648e346) for method Microsoft.CodeAnalysis.AssemblyIdentityComparer:get_Default():Microsoft.CodeAnalysis.AssemblyIdentityComparer (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 1
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 56 (0x000038)
- ---- Epilog scopes ----
- ---- Scope 0
- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
- Condition : 14 (0xe) (always)
- Epilog Start Index : 0 (0x00)
+ Function Length : 7 (0x00007) Actual length = 14 (0x00000e)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
ED 08 pop {r3,lr} ; opsize 16
-40 (-74.07%) : 773.dasm - Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
@@ -15,53 +15,30 @@
G_M31334_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,lr}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M31334_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r0, [r0]
- and r0, r0, 1
- cmp r0, 1
- bne SHORT G_M31334_IG05
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M31334_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M31334_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
ldr r0, [r0]
; gcrRegs +[r0]
;; size=10 bbWeight=1 PerfScore 3.00
-G_M31334_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M31334_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M31334_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movs r1, 55
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- ; gcr arg pop 0
- b SHORT G_M31334_IG03
- ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 54, prolog size 2, PerfScore 11.00, instruction count 18, allocated bytes for code 54 (MethodHash=58be8599) for method Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
+; Total bytes of code 14, prolog size 2, PerfScore 5.00, instruction count 5, allocated bytes for code 14 (MethodHash=58be8599) for method Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]: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 : 7 (0x00007) Actual length = 14 (0x00000e)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
ED 08 pop {r3,lr} ; opsize 16
-40 (-74.07%) : 781.dasm - Xunit.TestAssemblyExecutionStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
@@ -15,53 +15,30 @@
G_M24108_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,lr}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M24108_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r0, [r0]
- and r0, r0, 1
- cmp r0, 1
- bne SHORT G_M24108_IG05
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M24108_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M24108_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
ldr r0, [r0]
; gcrRegs +[r0]
;; size=10 bbWeight=1 PerfScore 3.00
-G_M24108_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M24108_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M24108_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movs r1, 58
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- ; gcr arg pop 0
- b SHORT G_M24108_IG03
- ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 54, prolog size 2, PerfScore 11.00, instruction count 18, allocated bytes for code 54 (MethodHash=c38ba1d3) for method Xunit.TestAssemblyExecutionStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
+; Total bytes of code 14, prolog size 2, PerfScore 5.00, instruction count 5, allocated bytes for code 14 (MethodHash=c38ba1d3) for method Xunit.TestAssemblyExecutionStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]: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 : 7 (0x00007) Actual length = 14 (0x00000e)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
ED 08 pop {r3,lr} ; opsize 16
-2 (-0.20%) : 1008.dasm - System.Linq.Enumerable:ToDictionarySystem.Canon,System.Canon,System.__Canon:System.Collections.Generic.Dictionary`2System.Canon,System.Canon
@@ -16,7 +16,7 @@
; V05 loc0 [V05 ] ( 3, 2 ) int -> [sp+0x30] do-not-enreg[X] addr-exposed ld-addr-op
; V06 loc1 [V06,T11] ( 3, 5 ) ref -> r9 class-hnd exact single-def <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]>
; V07 loc2 [V07,T51] ( 3, 1.50) ref -> r9 class-hnd single-def <System.__Canon[]>
-; V08 loc3 [V08,T52] ( 3, 1.50) ref -> r9 class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]>
+; V08 loc3 [V08,T59] ( 2, 1 ) ref -> r4 class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]>
; V09 loc4 [V09 ] ( 3, 1.50) struct ( 8) [sp+0x28] do-not-enreg[XSA] multireg-arg must-init addr-exposed <System.ReadOnlySpan`1[System.__Canon]>
; V10 loc5 [V10,T07] ( 7, 9 ) ref -> [sp+0x10] class-hnd EH-live single-def <<unknown class>>
; V11 loc6 [V11,T06] ( 3, 12 ) ref -> r4 class-hnd <System.__Canon>
@@ -31,7 +31,7 @@
; V20 tmp8 [V20,T01] ( 2, 16 ) ref -> [sp+0x0C] class-hnd spill-single-def "non-inline candidate call" <System.__Canon>
;* V21 tmp9 [V21 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
;* V22 tmp10 [V22 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
-; V23 tmp11 [V23,T39] ( 3, 2 ) int -> r4 "spilling helperCall"
+; V23 tmp11 [V23,T39] ( 3, 2 ) int -> r9 "spilling helperCall"
; V24 tmp12 [V24,T40] ( 3, 2 ) int -> [sp+0x24] "spilling helperCall"
; V25 tmp13 [V25 ] ( 3, 3 ) struct ( 8) [sp+0x1C] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "spilled call-like call argument" <System.Span`1[System.__Canon]>
;* V26 tmp14 [V26 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
@@ -44,10 +44,10 @@
;* V33 tmp21 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
; V34 tmp22 [V34 ] ( 2, 1 ) byref -> [sp+0x28] do-not-enreg[X] addr-exposed "field V09._reference (fldOffset=0x0)" P-DEP
; V35 tmp23 [V35 ] ( 2, 1 ) int -> [sp+0x2C] do-not-enreg[X] addr-exposed "field V09._length (fldOffset=0x4)" P-DEP
-; V36 tmp24 [V36,T53] ( 2, 1.50) byref -> [sp+0x1C] do-not-enreg[H] hidden-struct-arg "field V25._reference (fldOffset=0x0)" P-DEP
-; V37 tmp25 [V37,T55] ( 2, 1.50) int -> [sp+0x20] do-not-enreg[H] hidden-struct-arg "field V25._length (fldOffset=0x4)" P-DEP
-; V38 tmp26 [V38,T54] ( 2, 1.50) byref -> [sp+0x14] do-not-enreg[H] hidden-struct-arg "field V29._reference (fldOffset=0x0)" P-DEP
-; V39 tmp27 [V39,T56] ( 2, 1.50) int -> [sp+0x18] do-not-enreg[H] hidden-struct-arg "field V29._length (fldOffset=0x4)" P-DEP
+; V36 tmp24 [V36,T52] ( 2, 1.50) byref -> [sp+0x1C] do-not-enreg[H] hidden-struct-arg "field V25._reference (fldOffset=0x0)" P-DEP
+; V37 tmp25 [V37,T54] ( 2, 1.50) int -> [sp+0x20] do-not-enreg[H] hidden-struct-arg "field V25._length (fldOffset=0x4)" P-DEP
+; V38 tmp26 [V38,T53] ( 2, 1.50) byref -> [sp+0x14] do-not-enreg[H] hidden-struct-arg "field V29._reference (fldOffset=0x0)" P-DEP
+; V39 tmp27 [V39,T55] ( 2, 1.50) int -> [sp+0x18] do-not-enreg[H] hidden-struct-arg "field V29._length (fldOffset=0x4)" P-DEP
; V40 tmp28 [V40,T14] ( 2, 4 ) int -> r0 "argument with side effect"
; V41 tmp29 [V41,T48] ( 2, 2 ) int -> r0 "argument with side effect"
; V42 tmp30 [V42,T49] ( 2, 2 ) int -> r0 "argument with side effect"
@@ -71,7 +71,7 @@
; V60 rat13 [V60,T22] ( 3, 2.80) int -> r0 "spilling expr"
; V61 rat14 [V61,T32] ( 3, 2.24) int -> r0 "fgMakeTemp is creating a new local variable"
; V62 rat15 [V62,T23] ( 3, 2.80) int -> r0 "spilling expr"
-; V63 rat16 [V63,T33] ( 3, 2.24) int -> r4 "fgMakeTemp is creating a new local variable"
+; V63 rat16 [V63,T33] ( 3, 2.24) int -> r9 "fgMakeTemp is creating a new local variable"
; V64 rat17 [V64,T24] ( 3, 2.80) int -> r0 "spilling expr"
; V65 rat18 [V65,T34] ( 3, 2.24) int -> r3 "fgMakeTemp is creating a new local variable"
; V66 rat19 [V66,T46] ( 3, 2 ) int -> r0 "runtime lookup"
@@ -82,9 +82,9 @@
; V71 rat24 [V71,T36] ( 3, 2.24) int -> r0 "fgMakeTemp is creating a new local variable"
; V72 rat25 [V72,T27] ( 3, 2.80) int -> r0 "spilling expr"
; V73 rat26 [V73,T37] ( 3, 2.24) int -> r0 "fgMakeTemp is creating a new local variable"
-; V74 rat27 [V74,T59] ( 3, 1 ) int -> r7 "runtime lookup"
-; V75 rat28 [V75,T57] ( 3, 1.40) int -> r0 "spilling expr"
-; V76 rat29 [V76,T58] ( 3, 1.12) int -> r4 "fgMakeTemp is creating a new local variable"
+; V74 rat27 [V74,T58] ( 3, 1 ) int -> r7 "runtime lookup"
+; V75 rat28 [V75,T56] ( 3, 1.40) int -> r0 "spilling expr"
+; V76 rat29 [V76,T57] ( 3, 1.12) int -> r4 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 60
@@ -133,7 +133,7 @@ G_M36297_IG04: ; bbWeight=0.20, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
;; size=20 bbWeight=0.20 PerfScore 1.20
G_M36297_IG05: ; bbWeight=1, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
@@ -173,13 +173,13 @@ G_M36297_IG09: ; bbWeight=0.18, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, b
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
;; size=20 bbWeight=0.18 PerfScore 1.08
G_M36297_IG10: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_NEWSFAST
+ blx r3 // CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[r0]
; gcr arg pop 0
mov r7, r0
@@ -222,7 +222,7 @@ G_M36297_IG15: ; bbWeight=0.18, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
;; size=20 bbWeight=0.18 PerfScore 1.08
G_M36297_IG16: ; bbWeight=0.50, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
@@ -230,7 +230,7 @@ G_M36297_IG16: ; bbWeight=0.50, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0
; gcrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFARRAY
+ blx r3 // CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
mov r9, r0
@@ -258,7 +258,7 @@ G_M36297_IG19: ; bbWeight=0.18, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov r4, r0
;; size=22 bbWeight=0.18 PerfScore 1.26
@@ -283,7 +283,7 @@ G_M36297_IG23: ; bbWeight=0.18, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov r7, r0
;; size=22 bbWeight=0.18 PerfScore 1.26
@@ -341,7 +341,7 @@ G_M36297_IG29: ; bbWeight=0.18, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
;; size=20 bbWeight=0.18 PerfScore 1.08
G_M36297_IG30: ; bbWeight=0.50, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
@@ -349,73 +349,70 @@ G_M36297_IG30: ; bbWeight=0.50, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0
; gcrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[r1] +[r0]
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
+ ; gcrRegs -[r1 r4] +[r0]
; gcr arg pop 0
- mov r9, r0
- ; gcrRegs +[r9]
- cmp r9, 0
- beq SHORT G_M36297_IG44
+ mov r4, r0
+ ; gcrRegs +[r4]
ldr r0, [r7+0x20]
; gcrRegs -[r0]
ldr r1, [r0+0x0C]
cmp r1, 40
ble SHORT G_M36297_IG33
- ;; size=28 bbWeight=0.50 PerfScore 5.50
-G_M36297_IG31: ; bbWeight=0.40, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4]
- ldr r4, [r0+0x28]
- cmp r4, 0
+ ;; size=22 bbWeight=0.50 PerfScore 4.50
+G_M36297_IG31: ; bbWeight=0.40, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
+ ldr r9, [r0+0x28]
+ cmp r9, 0
beq SHORT G_M36297_IG33
- ;; size=6 bbWeight=0.40 PerfScore 1.20
-G_M36297_IG32: ; bbWeight=0.32, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
+ ;; size=10 bbWeight=0.40 PerfScore 1.20
+G_M36297_IG32: ; bbWeight=0.32, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
b SHORT G_M36297_IG34
;; size=2 bbWeight=0.32 PerfScore 0.32
-G_M36297_IG33: ; bbWeight=0.18, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref
+G_M36297_IG33: ; bbWeight=0.18, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref
mov r0, r7
movw r1, 0xd1ff
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
- mov r4, r0
+ mov r9, r0
;; size=22 bbWeight=0.18 PerfScore 1.26
-G_M36297_IG34: ; bbWeight=0.50, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M36297_IG34: ; bbWeight=0.50, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
ldr r0, [r7+0x20]
ldr r1, [r0+0x0C]
cmp r1, 44
ble SHORT G_M36297_IG37
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M36297_IG35: ; bbWeight=0.40, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M36297_IG35: ; bbWeight=0.40, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
ldr r3, [r0+0x2C]
cmp r3, 0
beq SHORT G_M36297_IG37
;; size=6 bbWeight=0.40 PerfScore 1.20
-G_M36297_IG36: ; bbWeight=0.32, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M36297_IG36: ; bbWeight=0.32, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
str r3, [sp+0x24]
b SHORT G_M36297_IG38
;; size=4 bbWeight=0.32 PerfScore 0.64
-G_M36297_IG37: ; bbWeight=0.18, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref
+G_M36297_IG37: ; bbWeight=0.18, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref
mov r0, r7
movw r1, 0xd1ff
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
str r0, [sp+0x24] // [V24 tmp12]
;; size=22 bbWeight=0.18 PerfScore 1.26
-G_M36297_IG38: ; bbWeight=0.50, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M36297_IG38: ; bbWeight=0.50, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
add r0, sp, 28 // [V25 tmp13]
- mov r1, r4
- mov r2, r9
+ mov r1, r9
+ mov r2, r4
; gcrRegs +[r2]
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon]
- ; gcrRegs -[r2 r9]
+ ; gcrRegs -[r2 r4]
; gcr arg pop 0
ldr r2, [sp+0x1C] // [V36 tmp24]
; byrRegs +[r2]
@@ -447,7 +444,7 @@ G_M36297_IG41: ; bbWeight=0.18, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
;; size=20 bbWeight=0.18 PerfScore 1.08
G_M36297_IG42: ; bbWeight=0.50, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref
@@ -493,13 +490,13 @@ G_M36297_IG47: ; bbWeight=0.18, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
;; size=20 bbWeight=0.18 PerfScore 1.08
G_M36297_IG48: ; bbWeight=0.50, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_NEWSFAST
+ blx r3 // CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[r0]
; gcr arg pop 0
mov r9, r0
@@ -534,7 +531,7 @@ G_M36297_IG51: ; bbWeight=0.18, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
...
+0 (0.00%) : 515.dasm - Xunit.Sdk.ReflectionTypeInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
@@ -8,11 +8,11 @@
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 3 ) ref -> r0 this class-hnd single-def <Xunit.Sdk.ReflectionTypeInfo>
-; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r1 class-hnd single-def <System.String>
+; V00 this [V00,T01] ( 3, 3 ) ref -> r0 this class-hnd single-def <Xunit.Sdk.ReflectionTypeInfo>
+; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r1 class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 5 ) ref -> r4 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]>
-; V04 tmp2 [V04,T03] ( 3, 5 ) ref -> r0 class-hnd single-def "dup spill" <<unknown class>>
+; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> r4 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]>
+; V04 tmp2 [V04,T03] ( 2, 3 ) ref -> r0 class-hnd single-def "dup spill" <<unknown class>>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
;
; Lcl frame size = 4
@@ -38,15 +38,14 @@ G_M47281_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, b
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
- cmp r0, 0
+ cmp r4, 0
bne SHORT G_M47281_IG05
;; size=40 bbWeight=1 PerfScore 14.00
-G_M47281_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r1, r4
- ; gcrRegs +[r1]
+G_M47281_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0 r4]
+ movs r1, 0
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
@@ -59,7 +58,7 @@ G_M47281_IG04: ; bbWeight=0.50, epilog, nogc, extend
bx r3 // System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon]
;; size=8 bbWeight=0.50 PerfScore 1.50
G_M47281_IG05: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[r1 r4] +[r0]
+ ; gcrRegs +[r0]
pop {r3,r4,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
+0 (0.00%) : 607.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
@@ -8,11 +8,11 @@
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 3 ) ref -> r0 this class-hnd single-def <Xunit.Sdk.ReflectionMethodInfo>
-; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r1 class-hnd single-def <System.String>
+; V00 this [V00,T01] ( 3, 3 ) ref -> r0 this class-hnd single-def <Xunit.Sdk.ReflectionMethodInfo>
+; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r1 class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 5 ) ref -> r4 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]>
-; V04 tmp2 [V04,T03] ( 3, 5 ) ref -> r0 class-hnd single-def "dup spill" <<unknown class>>
+; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> r4 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]>
+; V04 tmp2 [V04,T03] ( 2, 3 ) ref -> r0 class-hnd single-def "dup spill" <<unknown class>>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
;
; Lcl frame size = 4
@@ -38,15 +38,14 @@ G_M51894_IG02: ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, b
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
- cmp r0, 0
+ cmp r4, 0
bne SHORT G_M51894_IG05
;; size=40 bbWeight=1 PerfScore 14.00
-G_M51894_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r0]
- mov r1, r4
- ; gcrRegs +[r1]
+G_M51894_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0 r4]
+ movs r1, 0
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
@@ -59,7 +58,7 @@ G_M51894_IG04: ; bbWeight=0.50, epilog, nogc, extend
bx r3 // System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon]
;; size=8 bbWeight=0.50 PerfScore 1.50
G_M51894_IG05: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[r1 r4] +[r0]
+ ; gcrRegs +[r0]
pop {r3,r4,r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
realworld.run.linux.arm.checked.mch
-42 (-75.00%) : 3198.dasm - System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (FullOpts)
@@ -14,53 +14,30 @@
G_M41081_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,lr}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M41081_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r0, [r0]
- and r0, r0, 1
- cmp r0, 1
- bne SHORT G_M41081_IG05
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M41081_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M41081_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
ldr r0, [r0]
; gcrRegs +[r0]
;; size=10 bbWeight=1 PerfScore 3.00
-G_M41081_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M41081_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M41081_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- ; gcr arg pop 0
- b SHORT G_M41081_IG03
- ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 2, PerfScore 11.00, instruction count 18, allocated bytes for code 56 (MethodHash=80065f86) for method System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (FullOpts)
+; Total bytes of code 14, prolog size 2, PerfScore 5.00, instruction count 5, allocated bytes for code 14 (MethodHash=80065f86) for method System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 1
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 56 (0x000038)
- ---- Epilog scopes ----
- ---- Scope 0
- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
- Condition : 14 (0xe) (always)
- Epilog Start Index : 0 (0x00)
+ Function Length : 7 (0x00007) Actual length = 14 (0x00000e)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
ED 08 pop {r3,lr} ; opsize 16
-42 (-75.00%) : 3446.dasm - FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)
@@ -14,53 +14,30 @@
G_M34240_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,lr}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M34240_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r0, [r0]
- and r0, r0, 1
- cmp r0, 1
- bne SHORT G_M34240_IG05
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M34240_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34240_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
ldr r0, [r0]
; gcrRegs +[r0]
;; size=10 bbWeight=1 PerfScore 3.00
-G_M34240_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M34240_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M34240_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movw r1, 0xd1ff
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- ; gcr arg pop 0
- b SHORT G_M34240_IG03
- ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 56, prolog size 2, PerfScore 11.00, instruction count 18, allocated bytes for code 56 (MethodHash=e8cf7a3f) for method FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)
+; Total bytes of code 14, prolog size 2, PerfScore 5.00, instruction count 5, allocated bytes for code 14 (MethodHash=e8cf7a3f) for method FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 1
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 56 (0x000038)
- ---- Epilog scopes ----
- ---- Scope 0
- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
- Condition : 14 (0xe) (always)
- Epilog Start Index : 0 (0x00)
+ Function Length : 7 (0x00007) Actual length = 14 (0x00000e)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
ED 08 pop {r3,lr} ; opsize 16
-40 (-74.07%) : 1090.dasm - BenchmarkDotNet.Environments.InfrastructureResolver+<>c:<.ctor>b_10():Perfolizer.Horology.IClock:this (FullOpts)
@@ -15,53 +15,30 @@
G_M52807_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,lr}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M52807_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r0, [r0]
- and r0, r0, 1
- cmp r0, 1
- bne SHORT G_M52807_IG05
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M52807_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52807_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
ldr r0, [r0]
; gcrRegs +[r0]
;; size=10 bbWeight=1 PerfScore 3.00
-G_M52807_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M52807_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-G_M52807_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0]
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- movs r1, 70
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- ; gcr arg pop 0
- b SHORT G_M52807_IG03
- ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 54, prolog size 2, PerfScore 11.00, instruction count 18, allocated bytes for code 54 (MethodHash=c23b31b8) for method BenchmarkDotNet.Environments.InfrastructureResolver+<>c:<.ctor>b__1_0():Perfolizer.Horology.IClock:this (FullOpts)
+; Total bytes of code 14, prolog size 2, PerfScore 5.00, instruction count 5, allocated bytes for code 14 (MethodHash=c23b31b8) for method BenchmarkDotNet.Environments.InfrastructureResolver+<>c:<.ctor>b__1_0():Perfolizer.Horology.IClock: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 : 7 (0x00007) Actual length = 14 (0x00000e)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
ED 08 pop {r3,lr} ; opsize 16
+2 (+1.79%) : 4028.dasm - Microsoft.FSharp.Core.FSharpFunc2[int,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc2[int,System.Canon],int,System.Canon):System.__Canon (FullOpts)
@@ -8,15 +8,15 @@
; Final local variable assignments
;
; V00 TypeCtx [V00,T00] ( 5, 4.20) int -> r0 single-def
-; V01 arg0 [V01,T01] ( 5, 4 ) ref -> r4 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]>
+; V01 arg0 [V01,T01] ( 4, 4 ) ref -> r4 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]>
; V02 arg1 [V02,T04] ( 4, 3 ) int -> r6 single-def
; V03 arg2 [V03,T03] ( 4, 3 ) ref -> r5 class-hnd single-def <System.__Canon>
-; V04 loc0 [V04,T07] ( 4, 3 ) ref -> r0 class-hnd single-def <<unknown class>>
+; V04 loc0 [V04,T08] ( 3, 2 ) ref -> r0 class-hnd single-def <<unknown class>>
;* V05 loc1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
; V08 tmp2 [V08,T06] ( 2, 4 ) int -> r0 "argument with side effect"
-; V09 tmp3 [V09,T08] ( 3, 3 ) ref -> r0 single-def "argument with side effect"
+; V09 tmp3 [V09,T07] ( 3, 3 ) ref -> r0 single-def "argument with side effect"
; V10 rat0 [V10,T05] ( 3, 4 ) int -> r0 "runtime lookup"
; V11 rat1 [V11,T02] ( 3, 5.60) int -> r3 "fgMakeTemp is creating a new local variable"
;
@@ -48,7 +48,7 @@ G_M46648_IG04: ; bbWeight=0.20, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ blx r3 // CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
;; size=18 bbWeight=0.20 PerfScore 1.00
G_M46648_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
@@ -56,10 +56,10 @@ G_M46648_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
; gcrRegs +[r1]
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
- cmp r0, 0
+ cmp r4, 0
beq SHORT G_M46648_IG08
;; size=16 bbWeight=1 PerfScore 6.00
G_M46648_IG06: ; bbWeight=0.50, gcrefRegs=0021 {r0 r5}, byrefRegs=0000 {}, byref
@@ -77,23 +77,23 @@ G_M46648_IG07: ; bbWeight=0.50, epilog, nogc, extend
bx r3 // <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M46648_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0 r2] +[r4]
- mov r0, r4
- ; gcrRegs +[r0]
+G_M46648_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[r0 r2]
+ movs r0, 0
mov r1, r6
- ldr r3, [r4]
+ movs r3, 0
+ ldr r3, [r3]
ldr r3, [r3+0x2C]
ldr r3, [r3+0x10]
blx r3 // <unknown method>
- ; gcrRegs -[r4]
+ ; gcrRegs +[r0]
; gcr arg pop 0
mov r1, r5
; gcrRegs +[r1]
ldr r3, [r0]
ldr r3, [r3+0x2C]
ldr r3, [r3+0x10]
- ;; size=20 bbWeight=0.50 PerfScore 5.00
+ ;; size=22 bbWeight=0.50 PerfScore 5.50
G_M46648_IG09: ; bbWeight=0.50, epilog, nogc, extend
add sp, 12
pop {r4,r5,r6,r11,lr}
@@ -101,7 +101,7 @@ G_M46648_IG09: ; bbWeight=0.50, epilog, nogc, extend
; gcr arg pop 0
;; size=8 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 112, prolog size 20, PerfScore 30.10, instruction count 45, allocated bytes for code 112 (MethodHash=085649c7) for method Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],int,System.__Canon):System.__Canon (FullOpts)
+; Total bytes of code 114, prolog size 20, PerfScore 30.60, instruction count 46, allocated bytes for code 114 (MethodHash=085649c7) for method Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],int,System.__Canon):System.__Canon (FullOpts)
; ============================================================
Unwind Info:
@@ -113,7 +113,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 56 (0x00038) Actual length = 112 (0x000070)
+ Function Length : 57 (0x00039) Actual length = 114 (0x000072)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+2 (+2.27%) : 3989.dasm - Microsoft.FSharp.Core.FSharpFunc2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)
@@ -7,14 +7,14 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 4 ) ref -> r4 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]]>
+; V00 arg0 [V00,T01] ( 4, 4 ) ref -> r4 class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]]>
; V01 arg1 [V01 ] ( 5, 4 ) struct ( 4) [sp+0x14] single-def <FSharp.Compiler.AbstractIL.BinaryConstants+TableName>
; V02 arg2 [V02,T02] ( 4, 3 ) int -> r5 single-def
-; V03 loc0 [V03,T03] ( 4, 3 ) ref -> r0 class-hnd single-def <<unknown class>>
+; V03 loc0 [V03,T04] ( 3, 2 ) ref -> r0 class-hnd single-def <<unknown class>>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T01] ( 5, 4 ) int -> [sp+0x14] do-not-enreg[] single-def "field V01.idx (fldOffset=0x0)" P-DEP
-; V07 tmp2 [V07,T04] ( 3, 3 ) ref -> r0 single-def "argument with side effect"
+; V06 tmp1 [V06,T00] ( 5, 4 ) int -> [sp+0x14] do-not-enreg[] single-def "field V01.idx (fldOffset=0x0)" P-DEP
+; V07 tmp2 [V07,T03] ( 3, 3 ) ref -> r0 single-def "argument with side effect"
;
; Lcl frame size = 4
@@ -33,10 +33,10 @@ G_M49388_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
- cmp r0, 0
+ cmp r4, 0
beq SHORT G_M49388_IG05
;; size=24 bbWeight=1 PerfScore 8.00
G_M49388_IG03: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
@@ -54,22 +54,22 @@ G_M49388_IG04: ; bbWeight=0.50, epilog, nogc, extend
bx r3 // <unknown method>
; gcr arg pop 0
;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M49388_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0] +[r4]
- mov r0, r4
- ; gcrRegs +[r0]
+G_M49388_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[r0]
+ movs r0, 0
ldr r1, [sp+0x14]
- ldr r3, [r4]
+ movs r3, 0
+ ldr r3, [r3]
ldr r3, [r3+0x2C]
ldr r3, [r3+0x10]
blx r3 // <unknown method>
- ; gcrRegs -[r4]
+ ; gcrRegs +[r0]
; gcr arg pop 0
mov r1, r5
ldr r3, [r0]
ldr r3, [r3+0x2C]
ldr r3, [r3+0x10]
- ;; size=20 bbWeight=0.50 PerfScore 5.00
+ ;; size=22 bbWeight=0.50 PerfScore 5.50
G_M49388_IG06: ; bbWeight=0.50, epilog, nogc, extend
add sp, 4
pop {r4,r5,r11,lr}
@@ -78,7 +78,7 @@ G_M49388_IG06: ; bbWeight=0.50, epilog, nogc, extend
; gcr arg pop 0
;; size=10 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 88, prolog size 14, PerfScore 24.50, instruction count 36, allocated bytes for code 88 (MethodHash=75db3f13) for method Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)
+; Total bytes of code 90, prolog size 14, PerfScore 25.00, instruction count 37, allocated bytes for code 90 (MethodHash=75db3f13) for method Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -90,7 +90,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 44 (0x0002c) Actual length = 88 (0x000058)
+ Function Length : 45 (0x0002d) Actual length = 90 (0x00005a)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+5.26%) : 2976.dasm - System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
@@ -7,11 +7,11 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 7, 5 ) ref -> r4 this class-hnd single-def <System.Xml.XmlNode>
-; V01 loc0 [V01,T01] ( 4, 3 ) ref -> r0 class-hnd single-def <<unknown class>>
+; V00 this [V00,T00] ( 6, 5 ) ref -> r4 this class-hnd single-def <System.Xml.XmlNode>
+; V01 loc0 [V01,T02] ( 2, 1.50) ref -> r1 class-hnd single-def <<unknown class>>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T02] ( 3, 3 ) ref -> r0 single-def "argument with side effect"
+; V04 tmp1 [V04,T01] ( 3, 3 ) ref -> r0 single-def "argument with side effect"
;
; Lcl frame size = 4
@@ -28,16 +28,19 @@ G_M19732_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_ISINSTANCEOFCLASS
+ blx r3 // CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[r1] +[r0]
; gcr arg pop 0
- cmp r0, 0
- beq SHORT G_M19732_IG05
- ;; size=24 bbWeight=1 PerfScore 8.00
-G_M19732_IG03: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref
- mov r1, r4
+ mov r1, r0
; gcrRegs +[r1]
- ldr r3, [r0]
+ cmp r4, 0
+ beq SHORT G_M19732_IG05
+ ;; size=26 bbWeight=1 PerfScore 9.00
+G_M19732_IG03: ; bbWeight=0.50, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r0]
+ mov r0, r4
+ ; gcrRegs +[r0]
+ ldr r3, [r4]
ldr r3, [r3+0x54]
ldr r3, [r3+0x08]
;; size=8 bbWeight=0.50 PerfScore 2.00
@@ -47,21 +50,21 @@ G_M19732_IG04: ; bbWeight=0.50, epilog, nogc, extend
bx r3 // <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M19732_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0-r1]
- mov r0, r4
- ; gcrRegs +[r0]
- ldr r3, [r4]
+G_M19732_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[r0-r1 r4]
+ movs r0, 0
+ movs r3, 0
+ ldr r3, [r3]
ldr r3, [r3+0x30]
ldr r3, [r3+0x18]
blx r3 // <unknown method>
+ ; gcrRegs +[r0]
; gcr arg pop 0
- mov r1, r4
- ; gcrRegs +[r1]
+ movs r1, 0
ldr r3, [r0]
ldr r3, [r3+0x54]
ldr r3, [r3+0x08]
- ;; size=18 bbWeight=0.50 PerfScore 4.50
+ ;; size=20 bbWeight=0.50 PerfScore 5.00
G_M19732_IG06: ; bbWeight=0.50, epilog, nogc, extend
add sp, 4
pop {r4,r11,lr}
@@ -69,7 +72,7 @@ G_M19732_IG06: ; bbWeight=0.50, epilog, nogc, extend
; gcr arg pop 0
;; size=8 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 76, prolog size 10, PerfScore 20.50, instruction count 30, allocated bytes for code 76 (MethodHash=3159b2eb) for method System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
+; Total bytes of code 80, prolog size 10, PerfScore 22.00, instruction count 32, allocated bytes for code 80 (MethodHash=3159b2eb) for method System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
; ============================================================
Unwind Info:
@@ -81,7 +84,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 40 (0x00028) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.linux.arm.checked.mch |
92 |
87 |
2 |
3 |
-5,792 |
+8 |
| benchmarks.run_pgo.linux.arm.checked.mch |
92 |
87 |
0 |
5 |
-2,682 |
+0 |
| benchmarks.run_tiered.linux.arm.checked.mch |
145 |
138 |
2 |
5 |
-6,814 |
+8 |
| coreclr_tests.run.linux.arm.checked.mch |
32 |
30 |
2 |
0 |
-1,690 |
+6 |
| libraries.crossgen2.linux.arm.checked.mch |
5 |
2 |
0 |
3 |
-10 |
+0 |
| libraries.pmi.linux.arm.checked.mch |
231 |
228 |
1 |
2 |
-11,166 |
+2 |
| libraries_tests.run.linux.arm.Release.mch |
56 |
54 |
0 |
2 |
-1,746 |
+0 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
76 |
74 |
0 |
2 |
-4,270 |
+0 |
| realworld.run.linux.arm.checked.mch |
107 |
100 |
5 |
2 |
-13,448 |
+12 |
|
836 |
800 |
12 |
24 |
-47,618 |
+36 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.arm.checked.mch |
1,465 |
61 |
1,404 |
107 (2.70%) |
2,100 (53.02%) |
| benchmarks.run_pgo.linux.arm.checked.mch |
4,984 |
3,224 |
1,760 |
186 (2.01%) |
3,859 (41.77%) |
| benchmarks.run_tiered.linux.arm.checked.mch |
6,978 |
4,459 |
2,519 |
103 (0.90%) |
4,023 (35.30%) |
| coreclr_tests.run.linux.arm.checked.mch |
1,767 |
1,078 |
689 |
45 (1.10%) |
1,936 (47.22%) |
| libraries.crossgen2.linux.arm.checked.mch |
77,019 |
10 |
77,009 |
1 (0.00%) |
67,802 (46.69%) |
| libraries.pmi.linux.arm.checked.mch |
6,918 |
0 |
6,918 |
26 (0.26%) |
2,667 (26.72%) |
| libraries_tests.run.linux.arm.Release.mch |
2,602 |
1,838 |
764 |
125 (1.96%) |
3,385 (53.03%) |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
814 |
0 |
814 |
87 (3.28%) |
1,444 (54.41%) |
| realworld.run.linux.arm.checked.mch |
2,255 |
57 |
2,198 |
146 (2.43%) |
3,359 (55.89%) |
|
104,802 |
10,727 |
94,075 |
826 (0.42%) |
90,575 (45.53%) |
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: 181946 (overridden on cmd)
Total bytes of diff: 176162 (overridden on cmd)
Total bytes of delta: -5784 (-3.18 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
4 : 1919.dasm (2.33 % of base)
4 : 2628.dasm (0.36 % of base)
Top file improvements (bytes):
-476 : 746.dasm (-80.68 % of base)
-442 : 969.dasm (-33.74 % of base)
-402 : 3117.dasm (-69.07 % of base)
-214 : 9.dasm (-76.98 % of base)
-198 : 3908.dasm (-70.21 % of base)
-134 : 762.dasm (-23.10 % of base)
-116 : 3401.dasm (-32.04 % of base)
-116 : 3082.dasm (-32.04 % of base)
-106 : 811.dasm (-33.97 % of base)
-96 : 2477.dasm (-24.87 % of base)
-94 : 3656.dasm (-58.02 % of base)
-88 : 1909.dasm (-34.11 % of base)
-84 : 433.dasm (-35.90 % of base)
-82 : 2716.dasm (-29.93 % of base)
-82 : 1015.dasm (-29.08 % of base)
-80 : 2117.dasm (-21.51 % of base)
-80 : 3088.dasm (-21.51 % of base)
-80 : 3131.dasm (-22.47 % of base)
-78 : 2545.dasm (-38.24 % of base)
-74 : 2740.dasm (-21.39 % of base)
64 total files with Code Size differences (62 improved, 2 regressed), 3 unchanged.
Top method regressions (bytes):
4 (2.33 % of base) : 1919.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)
4 (0.36 % of base) : 2628.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (FullOpts)
Top method improvements (bytes):
-476 (-80.68 % of base) : 746.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-442 (-33.74 % of base) : 969.dasm - BenchmarkDotNet.Environments.CoreRuntime:FromVersion(System.Version):BenchmarkDotNet.Environments.CoreRuntime (FullOpts)
-402 (-69.07 % of base) : 3117.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[ubyte]:SignalCompletion():this (FullOpts)
-214 (-76.98 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
-198 (-70.21 % of base) : 3908.dasm - System.Net.Http.HttpContent:Dispose(ubyte):this (FullOpts)
-134 (-23.10 % of base) : 762.dasm - BenchmarkDotNet.Jobs.Job:.ctor(System.String):this (FullOpts)
-116 (-32.04 % of base) : 3401.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
-116 (-32.04 % of base) : 3082.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
-106 (-33.97 % of base) : 811.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-96 (-24.87 % of base) : 2477.dasm - System.Lazy`1[ubyte]:CreateValue():ubyte:this (FullOpts)
-94 (-58.02 % of base) : 3656.dasm - System.Security.Cryptography.X509Certificates.X509CertificateCollection:OnValidate(System.Object):this (FullOpts)
-88 (-34.11 % of base) : 1909.dasm - System.Text.Json.JsonSerializerOptions:CheckConverterNullabilityIsSameAsPropertyType(System.Text.Json.Serialization.JsonConverter,System.Type) (FullOpts)
-84 (-35.90 % of base) : 433.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (FullOpts)
-82 (-29.08 % of base) : 1015.dasm - Perfolizer.Horology.WindowsClock:Initialize(byref):ubyte (FullOpts)
-82 (-29.93 % of base) : 2716.dasm - System.Net.Http.HttpHandlerDefaults:.cctor() (FullOpts)
-80 (-21.51 % of base) : 3088.dasm - System.Net.Sockets.SocketAsyncEventArgs:AcceptCompletionCallback(int,System.Memory`1[ubyte],int):this (FullOpts)
-80 (-22.47 % of base) : 3131.dasm - System.Net.Sockets.SocketAsyncEventArgs:ConnectCompletionCallback(int):this (FullOpts)
-80 (-21.51 % of base) : 2117.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[int]():System.Text.Json.Serialization.JsonConverter`1[int]:this (FullOpts)
-78 (-38.24 % of base) : 2545.dasm - System.Net.Sockets.SocketAsyncEngine:GetEngineCount():int (FullOpts)
-74 (-21.39 % of base) : 2740.dasm - System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.VoidTaskResult]:ProcessCompletedOuterTask(System.Threading.Tasks.Task):this (FullOpts)
Top method regressions (percentages):
4 (2.33 % of base) : 1919.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)
4 (0.36 % of base) : 2628.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (FullOpts)
Top method improvements (percentages):
-40 (-90.91 % of base) : 3275.dasm - Interop+Ssl:.cctor() (FullOpts)
-476 (-80.68 % of base) : 746.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-214 (-76.98 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
-40 (-74.07 % of base) : 1012.dasm - BenchmarkDotNet.Environments.InfrastructureResolver+<>c:<.ctor>b__1_0():Perfolizer.Horology.IClock:this (FullOpts)
-198 (-70.21 % of base) : 3908.dasm - System.Net.Http.HttpContent:Dispose(ubyte):this (FullOpts)
-402 (-69.07 % of base) : 3117.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[ubyte]:SignalCompletion():this (FullOpts)
-42 (-61.76 % of base) : 1039.dasm - Perfolizer.Horology.StopwatchClock:get_Frequency():Perfolizer.Horology.Frequency:this (FullOpts)
-94 (-58.02 % of base) : 3656.dasm - System.Security.Cryptography.X509Certificates.X509CertificateCollection:OnValidate(System.Object):this (FullOpts)
-52 (-54.17 % of base) : 3951.dasm - System.Net.Sockets.SocketErrorPal:GetSocketErrorForNativeError(int):int (FullOpts)
-52 (-53.06 % of base) : 980.dasm - BenchmarkDotNet.Engines.EngineParameters:get_NeedsJitting():ubyte:this (FullOpts)
-40 (-52.63 % of base) : 1030.dasm - BenchmarkDotNet.Engines.EngineResolver+<>c:<.ctor>b__7_7():Perfolizer.Horology.TimeInterval:this (FullOpts)
-40 (-52.63 % of base) : 2566.dasm - System.Net.SocketAddress:.cctor() (FullOpts)
-42 (-52.50 % of base) : 1216.dasm - System.Threading.ThreadPool:get_CompletedWorkItemCount():long (FullOpts)
-44 (-51.16 % of base) : 3304.dasm - System.IO.Directory:EnumerateFiles(System.String):System.Collections.Generic.IEnumerable`1[System.String] (FullOpts)
-46 (-51.11 % of base) : 2800.dasm - System.Net.Http.HttpClient+<>c:<get_DefaultProxy>b__15_0():System.Net.IWebProxy:this (FullOpts)
-22 (-47.83 % of base) : 2140.dasm - System.Text.Json.JsonSerializer:UnboxOnWrite[System.__Canon](System.Object):System.__Canon (FullOpts)
-44 (-46.81 % of base) : 1347.dasm - System.AppDomain:OnProcessExit() (FullOpts)
-40 (-46.51 % of base) : 926.dasm - Perfolizer.Horology.TimeInterval:ToString():System.String:this (FullOpts)
-48 (-45.28 % of base) : 877.dasm - BenchmarkDotNet.Toolchains.InProcess.Emit.InProcessEmitExecutor:.ctor(System.TimeSpan,ubyte):this (FullOpts)
-50 (-44.64 % of base) : 2861.dasm - System.Diagnostics.Metrics.MeterListener:GetAllListeners():System.Collections.Generic.List`1[System.Diagnostics.Metrics.MeterListener] (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: 756482 (overridden on cmd)
Total bytes of diff: 753800 (overridden on cmd)
Total bytes of delta: -2682 (-0.35 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-238 : 1204.dasm (-68.79 % of base)
-220 : 3067.dasm (-18.09 % of base)
-110 : 2319.dasm (-22.18 % of base)
-88 : 3630.dasm (-42.31 % of base)
-66 : 17.dasm (-35.48 % of base)
-44 : 313.dasm (-25.29 % of base)
-42 : 3022.dasm (-14.00 % of base)
-42 : 5694.dasm (-26.58 % of base)
-38 : 3094.dasm (-31.67 % of base)
-34 : 2379.dasm (-43.59 % of base)
-34 : 2640.dasm (-43.59 % of base)
-34 : 2656.dasm (-43.59 % of base)
-34 : 2322.dasm (-30.91 % of base)
-34 : 2654.dasm (-43.59 % of base)
-34 : 2376.dasm (-43.59 % of base)
-34 : 2655.dasm (-43.59 % of base)
-34 : 2653.dasm (-43.59 % of base)
-34 : 2657.dasm (-43.59 % of base)
-34 : 3538.dasm (-21.79 % of base)
-32 : 3189.dasm (-42.11 % of base)
63 total files with Code Size differences (63 improved, 0 regressed), 5 unchanged.
Top method improvements (bytes):
-238 (-68.79 % of base) : 1204.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
-220 (-18.09 % of base) : 3067.dasm - BenchmarkDotNet.Environments.CoreRuntime:FromVersion(System.Version):BenchmarkDotNet.Environments.CoreRuntime (Tier0)
-110 (-22.18 % of base) : 2319.dasm - BenchmarkDotNet.Jobs.Job:.ctor(System.String):this (Tier0)
-88 (-42.31 % of base) : 3630.dasm - System.HashCode:Initialize(byref,byref,byref,byref) (Tier0)
-66 (-35.48 % of base) : 17.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (Tier0)
-44 (-25.29 % of base) : 313.dasm - System.Globalization.CultureInfo:get_CurrentCulture():System.Globalization.CultureInfo (Tier0)
-42 (-14.00 % of base) : 3022.dasm - BenchmarkDotNet.Jobs.JobIdGenerator:GenerateRandomId(BenchmarkDotNet.Jobs.Job):System.String (Tier0-FullOpts)
-42 (-26.58 % of base) : 5694.dasm - System.TimeZoneInfo:UtcOffsetOutOfRange(System.TimeSpan):ubyte (Tier0)
-38 (-31.67 % of base) : 3094.dasm - BenchmarkDotNet.Engines.EngineParameters:get_NeedsJitting():ubyte:this (Tier0)
-34 (-30.91 % of base) : 2322.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject:.ctor(System.String):this (Tier0)
-34 (-43.59 % of base) : 2376.dasm - BenchmarkDotNet.Jobs.EnvironmentMode:set_Jit(int):this (Tier0)
-34 (-43.59 % of base) : 2379.dasm - BenchmarkDotNet.Jobs.EnvironmentMode:set_Platform(int):this (Tier0)
-34 (-43.59 % of base) : 2640.dasm - BenchmarkDotNet.Jobs.InfrastructureMode:set_Toolchain(BenchmarkDotNet.Toolchains.IToolchain):this (Tier0)
-34 (-43.59 % of base) : 2655.dasm - BenchmarkDotNet.Jobs.RunMode:set_IterationCount(int):this (Tier0)
-34 (-43.59 % of base) : 2653.dasm - BenchmarkDotNet.Jobs.RunMode:set_LaunchCount(int):this (Tier0)
-34 (-43.59 % of base) : 2656.dasm - BenchmarkDotNet.Jobs.RunMode:set_RunStrategy(int):this (Tier0)
-34 (-43.59 % of base) : 2657.dasm - BenchmarkDotNet.Jobs.RunMode:set_UnrollFactor(int):this (Tier0)
-34 (-43.59 % of base) : 2654.dasm - BenchmarkDotNet.Jobs.RunMode:set_WarmupCount(int):this (Tier0)
-34 (-21.79 % of base) : 3538.dasm - System.Text.Json.JsonSerializer:GetTypeInfo(System.Text.Json.JsonSerializerOptions,System.Type):System.Text.Json.Serialization.Metadata.JsonTypeInfo (Tier0)
-32 (-42.11 % of base) : 3189.dasm - BenchmarkDotNet.Engines.EngineResolver+<>c:<.ctor>b__7_7():Perfolizer.Horology.TimeInterval:this (Tier0)
Top method improvements (percentages):
-238 (-68.79 % of base) : 1204.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
-22 (-50.00 % of base) : 4413.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:get_Default():MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext (Tier0)
-22 (-50.00 % of base) : 9590.dasm - System.Collections.Generic.ReferenceEqualityComparer:get_Instance():System.Collections.Generic.ReferenceEqualityComparer (Tier0)
-22 (-50.00 % of base) : 58.dasm - System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)
-22 (-50.00 % of base) : 2094.dasm - System.Runtime.CompilerServices.RuntimeFeature:get_IsDynamicCodeSupported():ubyte (Tier0)
-22 (-50.00 % of base) : 6669.dasm - System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (Tier0)
-22 (-50.00 % of base) : 6175.dasm - System.Runtime.Serialization.SerializationInfo:get_AsyncDeserializationInProgress():System.Threading.AsyncLocal`1[ubyte] (Tier0)
-22 (-50.00 % of base) : 4350.dasm - System.SR:UsingResourceKeys():ubyte (Tier0)
-22 (-50.00 % of base) : 21.dasm - System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
-22 (-50.00 % of base) : 26.dasm - System.StringComparer:get_OrdinalIgnoreCase():System.StringComparer (Tier0)
-22 (-50.00 % of base) : 487.dasm - System.Text.DecoderFallback:get_ExceptionFallback():System.Text.DecoderFallback (Tier0)
-22 (-50.00 % of base) : 484.dasm - System.Text.EncoderFallback:get_ExceptionFallback():System.Text.EncoderFallback (Tier0)
-22 (-50.00 % of base) : 3927.dasm - System.Text.Encoding:get_BigEndianUnicode():System.Text.Encoding (Tier0)
-22 (-50.00 % of base) : 127.dasm - System.Text.Encoding:get_UTF8():System.Text.Encoding (Tier0)
-22 (-50.00 % of base) : 7036.dasm - System.Threading.AsyncLocalValueMap:get_Empty():System.Threading.IAsyncLocalValueMap (Tier0)
-22 (-50.00 % of base) : 493.dasm - System.Threading.Tasks.Task:get_CompletedTask():System.Threading.Tasks.Task (Tier0)
-22 (-50.00 % of base) : 5681.dasm - System.TimeZoneInfo:get_Utc():System.TimeZoneInfo (Tier0)
-22 (-47.83 % of base) : 3168.dasm - System.Runtime.InteropServices.OSPlatform:get_Windows():System.Runtime.InteropServices.OSPlatform (Tier0)
-20 (-47.62 % of base) : 1060.dasm - BenchmarkDotNet.Portability.RuntimeInformation:get_IsMono():ubyte (Tier0)
-20 (-47.62 % of base) : 1025.dasm - BenchmarkDotNet.Portability.RuntimeInformation:get_IsOldMono():ubyte (Tier0)
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: 610796 (overridden on cmd)
Total bytes of diff: 603990 (overridden on cmd)
Total bytes of delta: -6806 (-1.11 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
4 : 5229.dasm (2.33 % of base)
4 : 6326.dasm (0.36 % of base)
Top file improvements (bytes):
-494 : 8223.dasm (-77.67 % of base)
-476 : 2388.dasm (-80.68 % of base)
-406 : 6772.dasm (-67.00 % of base)
-286 : 3155.dasm (-76.88 % of base)
-176 : 3686.dasm (-24.79 % of base)
-160 : 3720.dasm (-20.00 % of base)
-146 : 5518.dasm (-14.75 % of base)
-144 : 11308.dasm (-25.35 % of base)
-124 : 6763.dasm (-26.05 % of base)
-124 : 10672.dasm (-31.00 % of base)
-116 : 9556.dasm (-32.04 % of base)
-108 : 12025.dasm (-55.10 % of base)
-106 : 2516.dasm (-33.97 % of base)
-106 : 12024.dasm (-55.21 % of base)
-98 : 12052.dasm (-45.37 % of base)
-98 : 8861.dasm (-52.13 % of base)
-96 : 6912.dasm (-11.03 % of base)
-94 : 3046.dasm (-51.09 % of base)
-94 : 3047.dasm (-51.09 % of base)
-88 : 4647.dasm (-34.11 % of base)
61 total files with Code Size differences (59 improved, 2 regressed), 5 unchanged.
Top method regressions (bytes):
4 (2.33 % of base) : 5229.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (Tier1)
4 (0.36 % of base) : 6326.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier0-FullOpts)
Top method improvements (bytes):
-494 (-77.67 % of base) : 8223.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier0-FullOpts)
-476 (-80.68 % of base) : 2388.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
-406 (-67.00 % of base) : 6772.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[long]:SignalCompletion():this (Tier1)
-286 (-76.88 % of base) : 3155.dasm - System.Linq.Enumerable:Where[double](System.Collections.Generic.IEnumerable`1[double],System.Func`2[double,ubyte]):System.Collections.Generic.IEnumerable`1[double] (Tier1)
-176 (-24.79 % of base) : 3686.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreateParameterlessConstructor(System.Type,System.Reflection.ConstructorInfo):System.Func`1[System.Object]:this (Tier0)
-160 (-20.00 % of base) : 3720.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(int):System.Reflection.MethodInfo:this (Tier0)
-146 (-14.75 % of base) : 5518.dasm - System.DateTimeFormat:TryFormat[ushort](System.DateTime,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider,System.TimeSpan):ubyte (Tier1)
-144 (-25.35 % of base) : 11308.dasm - System.Net.Security.SslConnectionInfo:UpdateSslConnectionInfo(Microsoft.Win32.SafeHandles.SafeSslHandle):this (Tier0)
-124 (-26.05 % of base) : 6763.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-124 (-31.00 % of base) : 10672.dasm - System.Security.Cryptography.X509Certificates.OpenSslCachedSystemStoreProvider:GetCollections():System.Tuple`2[Microsoft.Win32.SafeHandles.SafeX509StackHandle,Microsoft.Win32.SafeHandles.SafeX509StackHandle] (Tier0)
-116 (-32.04 % of base) : 9556.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-108 (-55.10 % of base) : 12025.dasm - System.Threading.Tasks.ValueTask`1[int]:get_IsCompleted():ubyte:this (Tier1)
-106 (-33.97 % of base) : 2516.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
-106 (-55.21 % of base) : 12024.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:get_IsCompleted():ubyte:this (Tier1)
-98 (-52.13 % of base) : 8861.dasm - System.Linq.Expressions.Expression:MakeMemberAccess(System.Linq.Expressions.Expression,System.Reflection.MemberInfo):System.Linq.Expressions.MemberExpression (Tier1)
-98 (-45.37 % of base) : 12052.dasm - System.Threading.Tasks.ValueTask`1[int]:get_Result():int:this (Tier1)
-96 (-11.03 % of base) : 6912.dasm - System.Text.RegularExpressions.RegexCompiler:EmitTryFindNextPossibleStartingPosition():this (Tier0)
-94 (-51.09 % of base) : 3047.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
-94 (-51.09 % of base) : 3046.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
-88 (-34.11 % of base) : 4647.dasm - System.Text.Json.JsonSerializerOptions:CheckConverterNullabilityIsSameAsPropertyType(System.Text.Json.Serialization.JsonConverter,System.Type) (Tier1)
Top method regressions (percentages):
4 (2.33 % of base) : 5229.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (Tier1)
4 (0.36 % of base) : 6326.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier0-FullOpts)
Top method improvements (percentages):
-476 (-80.68 % of base) : 2388.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
-494 (-77.67 % of base) : 8223.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier0-FullOpts)
-286 (-76.88 % of base) : 3155.dasm - System.Linq.Enumerable:Where[double](System.Collections.Generic.IEnumerable`1[double],System.Func`2[double,ubyte]):System.Collections.Generic.IEnumerable`1[double] (Tier1)
-42 (-75.00 % of base) : 311.dasm - System.Globalization.GlobalizationMode:get_Invariant():ubyte (Tier1)
-42 (-75.00 % of base) : 312.dasm - System.Globalization.GlobalizationMode+Settings:get_Invariant():ubyte (Tier1)
-406 (-67.00 % of base) : 6772.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[long]:SignalCompletion():this (Tier1)
-106 (-55.21 % of base) : 12024.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:get_IsCompleted():ubyte:this (Tier1)
-108 (-55.10 % of base) : 12025.dasm - System.Threading.Tasks.ValueTask`1[int]:get_IsCompleted():ubyte:this (Tier1)
-48 (-53.33 % of base) : 8721.dasm - Newtonsoft.Json.Serialization.JsonTypeReflector:get_ReflectionDelegateFactory():Newtonsoft.Json.Utilities.ReflectionDelegateFactory (Tier1)
-98 (-52.13 % of base) : 8861.dasm - System.Linq.Expressions.Expression:MakeMemberAccess(System.Linq.Expressions.Expression,System.Reflection.MemberInfo):System.Linq.Expressions.MemberExpression (Tier1)
-94 (-51.09 % of base) : 3047.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
-94 (-51.09 % of base) : 3046.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
-22 (-50.00 % of base) : 53.dasm - System.Diagnostics.Tracing.EventSource:get_IsSupported():ubyte (Tier0)
-22 (-50.00 % of base) : 10698.dasm - System.IO.EnumerationOptions:get_Compatible():System.IO.EnumerationOptions (Tier0)
-22 (-50.00 % of base) : 8130.dasm - System.Reflection.Metadata.MetadataUpdater:get_IsSupported():ubyte (Tier0)
-22 (-50.00 % of base) : 7462.dasm - System.SR:UsingResourceKeys():ubyte (Tier0)
-22 (-50.00 % of base) : 21.dasm - System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
-22 (-50.00 % of base) : 26.dasm - System.StringComparer:get_OrdinalIgnoreCase():System.StringComparer (Tier0)
-22 (-50.00 % of base) : 437.dasm - System.Text.EncoderFallback:get_ExceptionFallback():System.Text.EncoderFallback (Tier0)
-22 (-50.00 % of base) : 2673.dasm - System.Text.Encoding:get_BigEndianUnicode():System.Text.Encoding (Tier0)
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: 295714 (overridden on cmd)
Total bytes of diff: 294030 (overridden on cmd)
Total bytes of delta: -1684 (-0.57 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
4 : 1849.dasm (0.31 % of base)
2 : 2334.dasm (1.11 % of base)
Top file improvements (bytes):
-298 : 2361.dasm (-51.74 % of base)
-258 : 2344.dasm (-52.23 % of base)
-184 : 635.dasm (-23.77 % of base)
-108 : 1291.dasm (-55.67 % of base)
-106 : 1915.dasm (-55.21 % of base)
-96 : 1352.dasm (-44.04 % of base)
-94 : 1867.dasm (-43.52 % of base)
-54 : 2283.dasm (-17.88 % of base)
-50 : 46.dasm (-24.27 % of base)
-44 : 97.dasm (-28.21 % of base)
-42 : 414.dasm (-3.35 % of base)
-40 : 386.dasm (-27.78 % of base)
-34 : 1431.dasm (-37.78 % of base)
-26 : 895.dasm (-18.06 % of base)
-26 : 866.dasm (-20.31 % of base)
-22 : 2385.dasm (-4.45 % of base)
-22 : 417.dasm (-29.73 % of base)
-22 : 909.dasm (-25.58 % of base)
-20 : 2357.dasm (-12.82 % of base)
-20 : 36.dasm (-25.00 % of base)
32 total files with Code Size differences (30 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
4 (0.31 % of base) : 1849.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
2 (1.11 % of base) : 2334.dasm - System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|59_0(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
Top method improvements (bytes):
-298 (-51.74 % of base) : 2361.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[ubyte]:SignalCompletion():this (Tier1)
-258 (-52.23 % of base) : 2344.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-184 (-23.77 % of base) : 635.dasm - System.Diagnostics.ProcessWaitState:AddRef(int,ubyte,ubyte):System.Diagnostics.ProcessWaitState (Tier0)
-108 (-55.67 % of base) : 1291.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:get_IsCompleted():ubyte:this (Instrumented Tier1)
-106 (-55.21 % of base) : 1915.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:get_IsCompleted():ubyte:this (Tier1)
-96 (-44.04 % of base) : 1352.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:GetResult():int:this (Instrumented Tier1)
-94 (-43.52 % of base) : 1867.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:GetResult():int:this (Tier1)
-54 (-17.88 % of base) : 2283.dasm - System.Globalization.DateTimeFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.DateTimeFormatInfo (Tier1)
-50 (-24.27 % of base) : 46.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (Tier0)
-44 (-28.21 % of base) : 97.dasm - TestLibrary.Utilities:get_Verbose():ubyte (Tier0)
-42 (-3.35 % of base) : 414.dasm - MulticastDelegateCombineImpl:PosTest8():ubyte:this (Tier0)
-40 (-27.78 % of base) : 386.dasm - Test_negativegenerics:TestEntryPoint():int (Tier0)
-34 (-37.78 % of base) : 1431.dasm - System.Net.Sockets.SocketErrorPal:GetSocketErrorForNativeError(int):int (Tier0)
-26 (-18.06 % of base) : 895.dasm - CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (Tier0)
-26 (-20.31 % of base) : 866.dasm - System.Net.Sockets.SocketAsyncEventArgs:FinishOperationAsyncSuccess(int,int):this (Tier0)
-22 (-29.73 % of base) : 417.dasm - DelegateDefinitions:TestVoidParameterVoidStaticCallback() (Tier0)
-22 (-25.58 % of base) : 909.dasm - System.Text.RegularExpressions.Regex:.cctor() (Tier0)
-22 (-4.45 % of base) : 2385.dasm - System.Threading.Tasks.Task:UnsafeSetContinuationForAwait(System.Runtime.CompilerServices.IAsyncStateMachineBox,ubyte):this (Tier1)
-20 (-25.00 % of base) : 36.dasm - System.Console:get_Out():System.IO.TextWriter (Tier0)
-20 (-32.26 % of base) : 62.dasm - System.ConsolePal:EnsureConsoleInitialized() (Tier0)
Top method regressions (percentages):
2 (1.11 % of base) : 2334.dasm - System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|59_0(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
4 (0.31 % of base) : 1849.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
Top method improvements (percentages):
-108 (-55.67 % of base) : 1291.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:get_IsCompleted():ubyte:this (Instrumented Tier1)
-106 (-55.21 % of base) : 1915.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:get_IsCompleted():ubyte:this (Tier1)
-258 (-52.23 % of base) : 2344.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-298 (-51.74 % of base) : 2361.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[ubyte]:SignalCompletion():this (Tier1)
-96 (-44.04 % of base) : 1352.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:GetResult():int:this (Instrumented Tier1)
-94 (-43.52 % of base) : 1867.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:GetResult():int:this (Tier1)
-34 (-37.78 % of base) : 1431.dasm - System.Net.Sockets.SocketErrorPal:GetSocketErrorForNativeError(int):int (Tier0)
-20 (-32.26 % of base) : 62.dasm - System.ConsolePal:EnsureConsoleInitialized() (Tier0)
-22 (-29.73 % of base) : 417.dasm - DelegateDefinitions:TestVoidParameterVoidStaticCallback() (Tier0)
-44 (-28.21 % of base) : 97.dasm - TestLibrary.Utilities:get_Verbose():ubyte (Tier0)
-40 (-27.78 % of base) : 386.dasm - Test_negativegenerics:TestEntryPoint():int (Tier0)
-22 (-25.58 % of base) : 909.dasm - System.Text.RegularExpressions.Regex:.cctor() (Tier0)
-20 (-25.00 % of base) : 36.dasm - System.Console:get_Out():System.IO.TextWriter (Tier0)
-50 (-24.27 % of base) : 46.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (Tier0)
-184 (-23.77 % of base) : 635.dasm - System.Diagnostics.ProcessWaitState:AddRef(int,ubyte,ubyte):System.Diagnostics.ProcessWaitState (Tier0)
-26 (-20.31 % of base) : 866.dasm - System.Net.Sockets.SocketAsyncEventArgs:FinishOperationAsyncSuccess(int,int):this (Tier0)
-26 (-18.06 % of base) : 895.dasm - CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (Tier0)
-54 (-17.88 % of base) : 2283.dasm - System.Globalization.DateTimeFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.DateTimeFormatInfo (Tier1)
-20 (-16.39 % of base) : 673.dasm - System.Net.Sockets.SafeSocketHandle:.ctor(int,ubyte):this (Tier0)
-20 (-14.49 % of base) : 39.dasm - System.ConsolePal:OpenStandardOutput():System.IO.Stream (Tier0)
32 total methods with Code Size differences (30 improved, 2 regressed).
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: 5931272 (overridden on cmd)
Total bytes of diff: 5931262 (overridden on cmd)
Total bytes of delta: -10 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-8 : 14110.dasm (-1.76 % of base)
-2 : 141989.dasm (-1.52 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 3 unchanged.
Top method improvements (bytes):
-8 (-1.76 % of base) : 14110.dasm - System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)
-2 (-1.52 % of base) : 141989.dasm - System.IO.FileSystemWatcher+RunningInstance+WatchedDirectory:AppendSeparatorIfNeeded(System.Text.StringBuilder) (FullOpts)
Top method improvements (percentages):
-8 (-1.76 % of base) : 14110.dasm - System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)
-2 (-1.52 % of base) : 141989.dasm - System.IO.FileSystemWatcher+RunningInstance+WatchedDirectory:AppendSeparatorIfNeeded(System.Text.StringBuilder) (FullOpts)
2 total methods with Code Size differences (2 improved, 0 regressed).
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: 578368 (overridden on cmd)
Total bytes of diff: 567204 (overridden on cmd)
Total bytes of delta: -11164 (-1.93 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
2 : 6495.dasm (0.70 % of base)
Top file improvements (bytes):
-424 : 6515.dasm (-67.73 % of base)
-248 : 8700.dasm (-34.83 % of base)
-244 : 8701.dasm (-34.46 % of base)
-224 : 8849.dasm (-38.49 % of base)
-224 : 8852.dasm (-40.73 % of base)
-224 : 8853.dasm (-40.73 % of base)
-224 : 8854.dasm (-38.49 % of base)
-202 : 6254.dasm (-32.17 % of base)
-178 : 8695.dasm (-41.01 % of base)
-178 : 8702.dasm (-41.01 % of base)
-118 : 483.dasm (-21.93 % of base)
-96 : 1910.dasm (-24.74 % of base)
-96 : 1893.dasm (-24.87 % of base)
-94 : 1926.dasm (-20.09 % of base)
-92 : 1920.dasm (-22.66 % of base)
-84 : 23.dasm (-31.34 % of base)
-76 : 6241.dasm (-23.46 % of base)
-74 : 6471.dasm (-42.05 % of base)
-74 : 6473.dasm (-42.05 % of base)
-74 : 6474.dasm (-41.57 % of base)
77 total files with Code Size differences (76 improved, 1 regressed), 2 unchanged.
Top method regressions (bytes):
2 (0.70 % of base) : 6495.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[ubyte]:<.cctor>b__4_0(System.Object):this (FullOpts)
Top method improvements (bytes):
-424 (-67.73 % of base) : 6515.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[ubyte]:SignalCompletion():this (FullOpts)
-248 (-34.83 % of base) : 8700.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[ubyte]:OnCompleted(System.Action):this (FullOpts)
-244 (-34.46 % of base) : 8701.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[ubyte]:UnsafeOnCompleted(System.Action):this (FullOpts)
-224 (-38.49 % of base) : 8849.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
-224 (-40.73 % of base) : 8852.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[ubyte]:OnCompleted(System.Action):this (FullOpts)
-224 (-38.49 % of base) : 8854.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[ubyte]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
-224 (-40.73 % of base) : 8853.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[ubyte]:UnsafeOnCompleted(System.Action):this (FullOpts)
-202 (-32.17 % of base) : 6254.dasm - System.Threading.Tasks.TaskAsyncEnumerableExtensions+<ToBlockingEnumerable>d__3`1[ubyte]:<>m__Finally1():this (FullOpts)
-178 (-41.01 % of base) : 8702.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[ubyte]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
-178 (-41.01 % of base) : 8695.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
-118 (-21.93 % of base) : 483.dasm - System.Text.EncodingTable:GetCodePageFromName(System.String):int (FullOpts)
-96 (-24.74 % of base) : 1910.dasm - System.Lazy`1[short]:CreateValue():short:this (FullOpts)
-96 (-24.87 % of base) : 1893.dasm - System.Lazy`1[ubyte]:CreateValue():ubyte:this (FullOpts)
-94 (-20.09 % of base) : 1926.dasm - System.Lazy`1[System.Numerics.Vector`1[float]]:CreateValue():System.Numerics.Vector`1[float]:this (FullOpts)
-92 (-22.66 % of base) : 1920.dasm - System.Lazy`1[double]:CreateValue():double:this (FullOpts)
-84 (-31.34 % of base) : 23.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
-76 (-23.46 % of base) : 6241.dasm - System.Threading.Tasks.UnwrapPromise`1[ubyte]:ProcessCompletedOuterTask(System.Threading.Tasks.Task):this (FullOpts)
-74 (-41.57 % of base) : 6474.dasm - System.Threading.Tasks.ValueTask`1[ubyte]:get_IsCanceled():ubyte:this (FullOpts)
-74 (-42.05 % of base) : 6471.dasm - System.Threading.Tasks.ValueTask`1[ubyte]:get_IsCompleted():ubyte:this (FullOpts)
-74 (-42.05 % of base) : 6473.dasm - System.Threading.Tasks.ValueTask`1[ubyte]:get_IsFaulted():ubyte:this (FullOpts)
Top method regressions (percentages):
2 (0.70 % of base) : 6495.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask+<>c[ubyte]:<.cctor>b__4_0(System.Object):this (FullOpts)
Top method improvements (percentages):
-46 (-88.46 % of base) : 8557.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:set_VarType(int):this (FullOpts)
-46 (-82.14 % of base) : 8558.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:GetRawDataRef[ubyte]():byref:this (FullOpts)
-42 (-75.00 % of base) : 9169.dasm - System.IO.EnumerationOptions:get_Default():System.IO.EnumerationOptions (FullOpts)
-42 (-75.00 % of base) : 6305.dasm - System.Threading.Tasks.AwaitTaskContinuation:GetInvokeActionCallback():System.Threading.ContextCallback (FullOpts)
-40 (-74.07 % of base) : 154.dasm - System.SR:UsingResourceKeys():ubyte (FullOpts)
-40 (-74.07 % of base) : 335.dasm - System.Text.CodePagesEncodingProvider:get_Instance():System.Text.EncodingProvider (FullOpts)
-42 (-72.41 % of base) : 5317.dasm - System.Threading.Lock:get_ContentionCount():long (FullOpts)
-424 (-67.73 % of base) : 6515.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[ubyte]:SignalCompletion():this (FullOpts)
-52 (-56.52 % of base) : 8540.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:Create[double](double):System.Runtime.InteropServices.Marshalling.ComVariant (FullOpts)
-46 (-54.76 % of base) : 8539.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:Create[int](int):System.Runtime.InteropServices.Marshalling.ComVariant (FullOpts)
-46 (-54.76 % of base) : 8538.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:Create[short](short):System.Runtime.InteropServices.Marshalling.ComVariant (FullOpts)
-46 (-54.76 % of base) : 8537.dasm - System.Runtime.InteropServices.Marshalling.ComVariant:Create[ubyte](ubyte):System.Runtime.InteropServices.Marshalling.ComVariant (FullOpts)
-42 (-53.85 % of base) : 5226.dasm - System.Threading.ThreadPool:NotifyWorkItemProgress() (FullOpts)
-42 (-52.50 % of base) : 6810.dasm - System.Runtime.MemoryFailPoint:AddToLastKnownFreeAddressSpace(long) (FullOpts)
-42 (-52.50 % of base) : 6682.dasm - System.Text.Unicode.TextSegmentationUtility:GetLengthOfFirstUtf16ExtendedGraphemeCluster(System.ReadOnlySpan`1[ushort]):int (FullOpts)
-44 (-52.38 % of base) : 17.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
-42 (-50.00 % of base) : 6809.dasm - System.Runtime.MemoryFailPoint:get_LastKnownFreeAddressSpace():long (FullOpts)
-42 (-50.00 % of base) : 5761.dasm - System.Threading.Tasks.TaskFactory`1[System.__Canon]:get_DefaultScheduler():System.Threading.Tasks.TaskScheduler:this (FullOpts)
-42 (-50.00 % of base) : 5918.dasm - System.Threading.Tasks.TaskFactory`1[ubyte]:get_DefaultScheduler():System.Threading.Tasks.TaskScheduler:this (FullOpts)
-40 (-50.00 % of base) : 5227.dasm - System.Threading.ThreadPool:ReportThreadStatus(ubyte) (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: 298006 (overridden on cmd)
Total bytes of diff: 296260 (overridden on cmd)
Total bytes of delta: -1746 (-0.59 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-184 : 1388.dasm (-23.77 % of base)
-70 : 3450.dasm (-57.38 % of base)
-68 : 2142.dasm (-28.81 % of base)
-50 : 1231.dasm (-24.27 % of base)
-44 : 329.dasm (-11.52 % of base)
-40 : 2209.dasm (-46.51 % of base)
-40 : 35.dasm (-22.47 % of base)
-40 : 4982.dasm (-44.44 % of base)
-40 : 5045.dasm (-12.20 % of base)
-40 : 6056.dasm (-44.44 % of base)
-40 : 2346.dasm (-11.56 % of base)
-40 : 4095.dasm (-44.44 % of base)
-40 : 5202.dasm (-44.44 % of base)
-40 : 5391.dasm (-44.44 % of base)
-40 : 1185.dasm (-12.20 % of base)
-40 : 4738.dasm (-44.44 % of base)
-40 : 5843.dasm (-44.44 % of base)
-40 : 6577.dasm (-44.44 % of base)
-34 : 2101.dasm (-37.78 % of base)
-34 : 1553.dasm (-37.78 % of base)
53 total files with Code Size differences (53 improved, 0 regressed), 2 unchanged.
Top method improvements (bytes):
-184 (-23.77 % of base) : 1388.dasm - System.Diagnostics.ProcessWaitState:AddRef(int,ubyte,ubyte):System.Diagnostics.ProcessWaitState (Tier0)
-70 (-57.38 % of base) : 3450.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:DefineBlockLabels(System.Linq.Expressions.Expression):this (Tier0-FullOpts)
-68 (-28.81 % of base) : 2142.dasm - Microsoft.CSharp.RuntimeBinder.BinderEquivalence:TryGetExisting[System.__Canon](System.__Canon):System.__Canon (Tier0)
-50 (-24.27 % of base) : 1231.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (Tier0)
-44 (-11.52 % of base) : 329.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier0)
-40 (-22.47 % of base) : 35.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:GetCurrent():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
-40 (-11.56 % of base) : 2346.dasm - Microsoft.CSharp.RuntimeBinder.SymbolTable:PopulateSymbolTableWithName(System.String,System.Collections.Generic.IEnumerable`1[System.Type],System.Type) (Tier0-FullOpts)
-40 (-46.51 % of base) : 2209.dasm - System.Linq.Expressions.Utils:Constant(ubyte):System.Linq.Expressions.ConstantExpression (Tier0)
-40 (-44.44 % of base) : 4982.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
-40 (-44.44 % of base) : 6056.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
-40 (-44.44 % of base) : 4095.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
-40 (-44.44 % of base) : 5202.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
-40 (-44.44 % of base) : 5391.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
-40 (-44.44 % of base) : 4738.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
-40 (-44.44 % of base) : 5843.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
-40 (-44.44 % of base) : 6577.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
-40 (-12.20 % of base) : 5045.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
-40 (-12.20 % of base) : 1185.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
-34 (-37.78 % of base) : 2101.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.PredefinedTypeFacts:TryGetPredefTypeIndex(System.String):uint (Tier0)
-34 (-37.78 % of base) : 1553.dasm - System.Net.Sockets.SocketErrorPal:GetSocketErrorForNativeError(int):int (Tier0)
Top method improvements (percentages):
-70 (-57.38 % of base) : 3450.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:DefineBlockLabels(System.Linq.Expressions.Expression):this (Tier0-FullOpts)
-32 (-50.00 % of base) : 6400.dasm - System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
-32 (-50.00 % of base) : 1162.dasm - System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
-32 (-50.00 % of base) : 4838.dasm - System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
-32 (-50.00 % of base) : 6944.dasm - System.Runtime.Loader.AssemblyLoadContext:GetRuntimeAssembly(System.Reflection.Assembly):System.Reflection.RuntimeAssembly (Tier1)
-20 (-47.62 % of base) : 289.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
-20 (-47.62 % of base) : 30.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader:get_Default():Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader (Tier0)
-20 (-47.62 % of base) : 33.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:get_Current():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
-20 (-47.62 % of base) : 54.dasm - Internal.Microsoft.Extensions.DependencyModel.FileSystemWrapper:get_Default():Internal.Microsoft.Extensions.DependencyModel.IFileSystem (Tier0)
-20 (-47.62 % of base) : 3159.dasm - System.Runtime.CompilerServices.CallSiteBinder:get_UpdateLabel():System.Linq.Expressions.LabelTarget (Tier0)
-20 (-47.62 % of base) : 1562.dasm - System.Text.Encodings.Web.JavaScriptEncoder:get_Default():System.Text.Encodings.Web.JavaScriptEncoder (Tier0)
-20 (-47.62 % of base) : 1523.dasm - System.Text.Json.JsonSerializer:get_IsReflectionEnabledByDefault():ubyte (Tier0)
-20 (-47.62 % of base) : 1521.dasm - System.Text.Json.JsonSerializerOptions+TrackedOptionsInstances:get_All():System.Runtime.CompilerServices.ConditionalWeakTable`2[System.Text.Json.JsonSerializerOptions,System.Object] (Tier0)
-40 (-46.51 % of base) : 2209.dasm - System.Linq.Expressions.Utils:Constant(ubyte):System.Linq.Expressions.ConstantExpression (Tier0)
-40 (-44.44 % of base) : 4982.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
-40 (-44.44 % of base) : 6056.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
-40 (-44.44 % of base) : 4095.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
-40 (-44.44 % of base) : 5202.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
-40 (-44.44 % of base) : 5391.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
-40 (-44.44 % of base) : 4738.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (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: 59390 (overridden on cmd)
Total bytes of diff: 55120 (overridden on cmd)
Total bytes of delta: -4270 (-7.19 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-476 : 65.dasm (-80.68 % of base)
-330 : 991.dasm (-64.45 % of base)
-206 : 2311.dasm (-65.19 % of base)
-186 : 1199.dasm (-82.30 % of base)
-132 : 1842.dasm (-16.97 % of base)
-106 : 502.dasm (-33.97 % of base)
-96 : 119.dasm (-24.87 % of base)
-84 : 1508.dasm (-39.25 % of base)
-84 : 343.dasm (-31.34 % of base)
-80 : 137.dasm (-17.94 % of base)
-60 : 9.dasm (-12.40 % of base)
-58 : 724.dasm (-40.85 % of base)
-50 : 1930.dasm (-11.31 % of base)
-48 : 1610.dasm (-53.33 % of base)
-48 : 979.dasm (-32.43 % of base)
-48 : 1303.dasm (-53.33 % of base)
-48 : 1300.dasm (-53.33 % of base)
-48 : 1355.dasm (-53.33 % of base)
-48 : 1387.dasm (-53.33 % of base)
-48 : 131.dasm (-52.17 % of base)
64 total files with Code Size differences (64 improved, 0 regressed), 2 unchanged.
Top method improvements (bytes):
-476 (-80.68 % of base) : 65.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-330 (-64.45 % of base) : 991.dasm - System.Linq.Expressions.Compiler.ILGen:TryEmitConstant(System.Reflection.Emit.ILGenerator,System.Object,System.Type,System.Linq.Expressions.Compiler.ILocalCache):ubyte (FullOpts)
-206 (-65.19 % of base) : 2311.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
-186 (-82.30 % of base) : 1199.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
-132 (-16.97 % of base) : 1842.dasm - Xunit.Sdk.CollectionTracker:CheckIfDictionariesAreEqual(Xunit.Sdk.CollectionTracker,Xunit.Sdk.CollectionTracker,System.Collections.IEqualityComparer):System.Nullable`1[ubyte] (FullOpts)
-106 (-33.97 % of base) : 502.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-96 (-24.87 % of base) : 119.dasm - System.Lazy`1[int]:CreateValue():int:this (FullOpts)
-84 (-39.25 % of base) : 1508.dasm - NativeExports.ComInterfaces+MyComWrapper:get_MyObjectComInterfaceEntries():uint (FullOpts)
-84 (-31.34 % of base) : 343.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
-80 (-17.94 % of base) : 137.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (FullOpts)
-60 (-12.40 % of base) : 9.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-58 (-40.85 % of base) : 724.dasm - System.Linq.Enumerable:Cast[System.__Canon](System.Collections.IEnumerable):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-50 (-11.31 % of base) : 1930.dasm - System.Linq.Enumerable:Sum[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Decimal,System.Decimal](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Decimal]):System.Decimal (FullOpts)
-48 (-53.33 % of base) : 1303.dasm - <SharedTypes_ComInterfaces_IDerived>FD2E2000916F7322C38FFC890B0CD47AC749A1C6B3C465B21BB923E8FEB7CDED7__InterfaceInformation:get_ManagedVirtualMethodTable():uint (FullOpts)
-48 (-53.33 % of base) : 1300.dasm - <SharedTypes_ComInterfaces_IGetAndSetInt>F7D680BDD9F632803E4C91B4471F4B075906326C3E62CD0B30BD3929C056710FF__InterfaceInformation:get_ManagedVirtualMethodTable():uint (FullOpts)
-48 (-53.33 % of base) : 1610.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+ImplicitThis+INativeObject:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():uint (FullOpts)
-48 (-53.33 % of base) : 1355.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObject:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():uint (FullOpts)
-48 (-53.33 % of base) : 1387.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObjectStateful:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():uint (FullOpts)
-48 (-52.17 % of base) : 131.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:GetRIDOS():System.String (FullOpts)
-48 (-32.43 % of base) : 979.dasm - System.Linq.Expressions.Compiler.ILGen:CanEmitConstant(System.Object,System.Type):ubyte (FullOpts)
Top method improvements (percentages):
-186 (-82.30 % of base) : 1199.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
-476 (-80.68 % of base) : 65.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-42 (-75.00 % of base) : 2052.dasm - Microsoft.CodeAnalysis.AssemblyIdentityComparer:get_Default():Microsoft.CodeAnalysis.AssemblyIdentityComparer (FullOpts)
-40 (-74.07 % of base) : 1159.dasm - System.Runtime.InteropServices.Marshalling.StrategyBasedComWrappers:GetOrCreateInterfaceDetailsStrategy():System.Runtime.InteropServices.Marshalling.IIUnknownInterfaceDetailsStrategy:this (FullOpts)
-40 (-74.07 % of base) : 773.dasm - Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
-40 (-74.07 % of base) : 535.dasm - Xunit.TestAssemblyDiscoveryStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
-40 (-74.07 % of base) : 1877.dasm - Xunit.TestAssemblyExecutionFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
-40 (-74.07 % of base) : 781.dasm - Xunit.TestAssemblyExecutionStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
-40 (-74.07 % of base) : 1917.dasm - Xunit.TestExecutionSummary:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
-206 (-65.19 % of base) : 2311.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
-330 (-64.45 % of base) : 991.dasm - System.Linq.Expressions.Compiler.ILGen:TryEmitConstant(System.Reflection.Emit.ILGenerator,System.Object,System.Type,System.Linq.Expressions.Compiler.ILocalCache):ubyte (FullOpts)
-40 (-60.61 % of base) : 833.dasm - Xunit.Sdk.XunitTestAssemblyRunner:AfterTestAssemblyStartingAsync():System.Threading.Tasks.Task:this (FullOpts)
-42 (-60.00 % of base) : 1592.dasm - <SharedTypes_ComInterfaces_IArrayOfStatelessElements>F997BA340F1C602826A33304D11289B2F916116FCF25AA5066692B8DC9808E77C__InterfaceInformation:get_Iid():System.Guid (FullOpts)
-42 (-60.00 % of base) : 1246.dasm - <SharedTypes_ComInterfaces_IBool>F1FE57BB180AB34F547DA2AF42A54F6BB7C54809B082630C4DB88EA10A9B77BAA__InterfaceInformation:get_Iid():System.Guid (FullOpts)
-42 (-60.00 % of base) : 1653.dasm - <SharedTypes_ComInterfaces_ICustomStringMarshallingUtf16>F293B0560034FBCA8F397E7EBD4143A52C3BD770BA41A9EC6A142B9A9EAD169A8__InterfaceInformation:get_Iid():System.Guid (FullOpts)
-42 (-60.00 % of base) : 1259.dasm - <SharedTypes_ComInterfaces_IFloat>F78CC465A10946FB6FDAE1935E39E2936108140B34974C4C5D2879B22D4C0BCC2__InterfaceInformation:get_Iid():System.Guid (FullOpts)
-42 (-60.00 % of base) : 1490.dasm - <SharedTypes_ComInterfaces_IGetIntArray>FA214D816C95247C6B11496DF3E741F51CFFDF42655C9ADCC408020ADDEBD389B__InterfaceInformation:get_Iid():System.Guid (FullOpts)
-42 (-60.00 % of base) : 1738.dasm - <SharedTypes_ComInterfaces_IInt>F5760B97C133242F5A106190440B4906CD2EB48D5707A49A7150FCE3CC122F69A__InterfaceInformation:get_Iid():System.Guid (FullOpts)
-42 (-60.00 % of base) : 1494.dasm - <SharedTypes_ComInterfaces_IIntArray>FC8C36D862B5D89EFA40DC2F69A3F2BB75A6AFAFDD2DD51BB784960FEC6297044__InterfaceInformation:get_Iid():System.Guid (FullOpts)
-42 (-60.00 % of base) : 1748.dasm - <SharedTypes_ComInterfaces_IInterface>F0F8D3EC26B752C48BE9B9C143F24949B29CF1C6BE9A1BE3C3F507CEEFFF883D7__InterfaceInformation:get_Iid():System.Guid (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: 1727516 (overridden on cmd)
Total bytes of diff: 1714080 (overridden on cmd)
Total bytes of delta: -13436 (-0.78 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
4 : 2976.dasm (5.26 % of base)
2 : 3143.dasm (1.79 % of base)
2 : 3989.dasm (2.27 % of base)
2 : 4028.dasm (1.79 % of base)
2 : 5509.dasm (1.79 % of base)
Top file improvements (bytes):
-7514 : 5637.dasm (-76.64 % of base)
-476 : 744.dasm (-80.68 % of base)
-442 : 967.dasm (-33.74 % of base)
-220 : 4385.dasm (-55.28 % of base)
-214 : 9.dasm (-76.98 % of base)
-136 : 760.dasm (-23.69 % of base)
-124 : 5482.dasm (-46.62 % of base)
-106 : 809.dasm (-33.97 % of base)
-94 : 3497.dasm (-6.70 % of base)
-92 : 3408.dasm (-21.20 % of base)
-90 : 5496.dasm (-86.54 % of base)
-90 : 5497.dasm (-86.54 % of base)
-88 : 4251.dasm (-67.69 % of base)
-86 : 3500.dasm (-14.29 % of base)
-84 : 4214.dasm (-62.69 % of base)
-84 : 432.dasm (-35.90 % of base)
-82 : 1093.dasm (-29.08 % of base)
-82 : 3505.dasm (-47.13 % of base)
-78 : 3398.dasm (-44.83 % of base)
-70 : 3738.dasm (-46.67 % of base)
66 total files with Code Size differences (61 improved, 5 regressed), 2 unchanged.
Top method regressions (bytes):
4 (5.26 % of base) : 2976.dasm - System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
2 (2.27 % of base) : 3989.dasm - Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)
2 (1.79 % of base) : 4028.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],int,System.__Canon):System.__Canon (FullOpts)
2 (1.79 % of base) : 5509.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,int):int (FullOpts)
2 (1.79 % of base) : 3143.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon):System.__Canon (FullOpts)
Top method improvements (bytes):
-7514 (-76.64 % of base) : 5637.dasm - FSharp.Compiler.CompilerDiagnostics:RangeFromException@79(System.Exception):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] (FullOpts)
-476 (-80.68 % of base) : 744.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-442 (-33.74 % of base) : 967.dasm - BenchmarkDotNet.Environments.CoreRuntime:FromVersion(System.Version):BenchmarkDotNet.Environments.CoreRuntime (FullOpts)
-220 (-55.28 % of base) : 4385.dasm - FSharp.Compiler.Parser:tables():Internal.Utilities.Text.Parsing.Tables`1[FSharp.Compiler.Parser+token] (FullOpts)
-214 (-76.98 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
-136 (-23.69 % of base) : 760.dasm - BenchmarkDotNet.Jobs.Job:.ctor(System.String):this (FullOpts)
-124 (-46.62 % of base) : 5482.dasm - FSharp.Compiler.LexFilter+LexFilter:GetToken():FSharp.Compiler.Parser+token:this (FullOpts)
-106 (-33.97 % of base) : 809.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-94 (-6.70 % of base) : 3497.dasm - FSharp.Compiler.Features+LanguageVersion:getVersionFromString(System.String):System.Decimal (FullOpts)
-92 (-21.20 % of base) : 3408.dasm - FSharp.Compiler.Text.RangeModule:rangeN(System.String,int):FSharp.Compiler.Text.Range (FullOpts)
-90 (-86.54 % of base) : 5497.dasm - FSharp.Compiler.Lexer:get_actions():ushort[] (FullOpts)
-90 (-86.54 % of base) : 5496.dasm - FSharp.Compiler.Lexer:get_trans():ushort[][] (FullOpts)
-88 (-67.69 % of base) : 4251.dasm - Microsoft.Build.Shared.FileSystem.FileSystems:GetFileSystem():Microsoft.Build.Shared.FileSystem.IFileSystem (FullOpts)
-86 (-14.29 % of base) : 3500.dasm - System.Number:DecimalToNumber(byref,byref) (FullOpts)
-84 (-62.69 % of base) : 4214.dasm - FSharp.Compiler.CompilerImports:logMessage@377(FSharp.Compiler.CompilerConfig+TcConfig,ubyte):Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.Unit] (FullOpts)
-84 (-35.90 % of base) : 432.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (FullOpts)
-82 (-47.13 % of base) : 3505.dasm - FSComp.SR:optsHelpBannerOutputFiles():System.String (FullOpts)
-82 (-29.08 % of base) : 1093.dasm - Perfolizer.Horology.WindowsClock:Initialize(byref):ubyte (FullOpts)
-78 (-44.83 % of base) : 3398.dasm - FSharp.Compiler.Text.Position:.ctor(int,int):this (FullOpts)
-70 (-46.67 % of base) : 3738.dasm - FSharp.Compiler.AbstractIL.IL+PublicKey:GetHashCode(System.Collections.IEqualityComparer):int:this (FullOpts)
Top method regressions (percentages):
4 (5.26 % of base) : 2976.dasm - System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
2 (2.27 % of base) : 3989.dasm - Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.AbstractIL.BinaryConstants+TableName,Microsoft.FSharp.Core.FSharpFunc`2[int,int]],FSharp.Compiler.AbstractIL.BinaryConstants+TableName,int):int (FullOpts)
2 (1.79 % of base) : 4028.dasm - Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[int,System.__Canon],int,System.__Canon):System.__Canon (FullOpts)
2 (1.79 % of base) : 5509.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,int]:InvokeFast[int](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,int):int (FullOpts)
2 (1.79 % of base) : 3143.dasm - Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]:InvokeFast[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon):System.__Canon (FullOpts)
Top method improvements (percentages):
-90 (-86.54 % of base) : 5497.dasm - FSharp.Compiler.Lexer:get_actions():ushort[] (FullOpts)
-90 (-86.54 % of base) : 5496.dasm - FSharp.Compiler.Lexer:get_trans():ushort[][] (FullOpts)
-476 (-80.68 % of base) : 744.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-214 (-76.98 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
-7514 (-76.64 % of base) : 5637.dasm - FSharp.Compiler.CompilerDiagnostics:RangeFromException@79(System.Exception):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] (FullOpts)
-42 (-75.00 % of base) : 3446.dasm - FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)
-42 (-75.00 % of base) : 3198.dasm - System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (FullOpts)
-40 (-74.07 % of base) : 1090.dasm - BenchmarkDotNet.Environments.InfrastructureResolver+<>c:<.ctor>b__1_0():Perfolizer.Horology.IClock:this (FullOpts)
-42 (-72.41 % of base) : 3506.dasm - FSComp.SR:.cctor() (FullOpts)
-42 (-72.41 % of base) : 3699.dasm - FSharp.Compiler.AbstractIL.IL:.cctor() (FullOpts)
-42 (-72.41 % of base) : 3860.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:.cctor() (FullOpts)
-42 (-72.41 % of base) : 5694.dasm - FSharp.Compiler.BuildGraph+NodeCodeBuilder:.cctor() (FullOpts)
-42 (-72.41 % of base) : 3080.dasm - FSharp.Compiler.CodeAnalysis.FSharpChecker:.cctor() (FullOpts)
-42 (-72.41 % of base) : 3088.dasm - FSharp.Compiler.CodeAnalysis.SimulatedMSBuildReferenceResolver:.cctor() (FullOpts)
-42 (-72.41 % of base) : 3346.dasm - FSharp.Compiler.ErrorLogger+StackGuard:.cctor() (FullOpts)
-42 (-72.41 % of base) : 3435.dasm - FSharp.Compiler.Features+LanguageVersion:.cctor() (FullOpts)
-42 (-72.41 % of base) : 3794.dasm - FSharp.Compiler.FxResolver:.cctor() (FullOpts)
-42 (-72.41 % of base) : 5491.dasm - FSharp.Compiler.Lexer:.cctor() (FullOpts)
-42 (-72.41 % of base) : 5852.dasm - FSharp.Compiler.NameResolution+TcResolutions:.cctor() (FullOpts)
-42 (-72.41 % of base) : 4386.dasm - FSharp.Compiler.Parser:.cctor() (FullOpts)
windows x86
Diffs are based on 113,735 contexts (7,938 MinOpts, 105,797 FullOpts).
MISSED contexts: base: 47 (0.02%), diff: 100,776 (46.21%)
Overall (-28,228 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.windows.x86.checked.mch |
121,260 |
-2,786 |
| benchmarks.run_pgo.windows.x86.checked.mch |
446,652 |
-2,055 |
| benchmarks.run_tiered.windows.x86.checked.mch |
340,626 |
-2,933 |
| coreclr_tests.run.windows.x86.checked.mch |
23,513 |
-666 |
| libraries.crossgen2.windows.x86.checked.mch |
5,347,103 |
-27 |
| libraries.pmi.windows.x86.checked.mch |
792,946 |
-5,465 |
| libraries_tests.run.windows.x86.Release.mch |
194,262 |
-913 |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
51,784 |
-2,737 |
| realworld.run.windows.x86.checked.mch |
374,068 |
-10,646 |
MinOpts (-4,257 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run_pgo.windows.x86.checked.mch |
262,554 |
-1,827 |
| benchmarks.run_tiered.windows.x86.checked.mch |
248,044 |
-1,645 |
| libraries_tests.run.windows.x86.Release.mch |
116,463 |
-785 |
FullOpts (-23,971 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.windows.x86.checked.mch |
121,203 |
-2,786 |
| benchmarks.run_pgo.windows.x86.checked.mch |
184,098 |
-228 |
| benchmarks.run_tiered.windows.x86.checked.mch |
92,582 |
-1,288 |
| coreclr_tests.run.windows.x86.checked.mch |
23,513 |
-666 |
| libraries.crossgen2.windows.x86.checked.mch |
5,346,412 |
-27 |
| libraries.pmi.windows.x86.checked.mch |
792,946 |
-5,465 |
| libraries_tests.run.windows.x86.Release.mch |
77,799 |
-128 |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
51,784 |
-2,737 |
| realworld.run.windows.x86.checked.mch |
374,068 |
-10,646 |
Example diffs
benchmarks.run.windows.x86.checked.mch
-26 (-72.22%) : 2379.dasm - ProtoBuf.Meta.TypeModel+NullModel:get_Singleton():ProtoBuf.Meta.TypeModel (FullOpts)
@@ -14,26 +14,15 @@ G_M30370_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push ebp
mov ebp, esp
;; size=3 bbWeight=1 PerfScore 1.25
-G_M30370_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [D1FFAB1EH], 1 ; global ptr
- je SHORT G_M30370_IG05
- ;; size=9 bbWeight=1 PerfScore 4.00
-G_M30370_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M30370_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
;; size=5 bbWeight=1 PerfScore 2.00
-G_M30370_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M30370_IG03: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=2 bbWeight=1 PerfScore 1.50
-G_M30370_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- mov ecx, 0xD1FFAB1E
- mov edx, 163
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- jmp SHORT G_M30370_IG03
- ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 36, prolog size 3, PerfScore 8.75, instruction count 11, allocated bytes for code 36 (MethodHash=16de895d) for method ProtoBuf.Meta.TypeModel+NullModel:get_Singleton():ProtoBuf.Meta.TypeModel (FullOpts)
+; Total bytes of code 10, prolog size 3, PerfScore 4.75, instruction count 5, allocated bytes for code 10 (MethodHash=16de895d) for method ProtoBuf.Meta.TypeModel+NullModel:get_Singleton():ProtoBuf.Meta.TypeModel (FullOpts)
; ============================================================
-30 (-66.67%) : 1063.dasm - System.Numerics.Tests.PerfVectorConvert:Convertuint_float():System.Numerics.Vector`1[float]:this (FullOpts)
@@ -8,42 +8,25 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Numerics.Tests.Perf_VectorConvert>
-; V01 RetBuf [V01,T00] ( 3, 3 ) byref -> esi single-def
-; V02 loc0 [V02,T01] ( 2, 4 ) ref -> edx single-def "argument with side effect"
+; V01 RetBuf [V01,T00] ( 3, 3 ) byref -> ecx single-def
;
; Lcl frame size = 0
G_M2371_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push esi
- mov esi, edx
- ; byrRegs +[esi]
- ;; size=3 bbWeight=1 PerfScore 1.25
-G_M2371_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
- test byte ptr [D1FFAB1EH], 1 ; global ptr
- je SHORT G_M2371_IG05
- ;; size=9 bbWeight=1 PerfScore 4.00
-G_M2371_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
+ mov ecx, edx
+ ; byrRegs +[ecx]
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M2371_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref
mov edx, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[edx]
- mov ecx, esi
- ; byrRegs +[ecx]
call [System.Numerics.Tests.Perf_VectorConvert:Convert[uint,float](uint[]):System.Numerics.Vector`1[float]]
; gcrRegs -[edx]
- ; byrRegs -[ecx esi]
- ;; size=14 bbWeight=1 PerfScore 5.25
-G_M2371_IG04: ; bbWeight=1, epilog, nogc, extend
- pop esi
+ ; byrRegs -[ecx]
+ ;; size=12 bbWeight=1 PerfScore 5.00
+G_M2371_IG03: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
-G_M2371_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; byrRegs +[esi]
- mov ecx, 0xD1FFAB1E
- mov edx, 461
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- ; gcr arg pop 0
- jmp SHORT G_M2371_IG03
- ;; size=17 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 45, prolog size 1, PerfScore 12.00, instruction count 13, allocated bytes for code 45 (MethodHash=2c48f6bc) for method System.Numerics.Tests.Perf_VectorConvert:Convert_uint_float():System.Numerics.Vector`1[float]:this (FullOpts)
+; Total bytes of code 15, prolog size 0, PerfScore 6.25, instruction count 4, allocated bytes for code 15 (MethodHash=2c48f6bc) for method System.Numerics.Tests.Perf_VectorConvert:Convert_uint_float():System.Numerics.Vector`1[float]:this (FullOpts)
; ============================================================
-30 (-65.22%) : 1595.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
@@ -2,7 +2,7 @@
; Emitting BLENDED_CODE for X86 with AVX512 - Windows
; FullOpts code
; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
@@ -13,36 +13,22 @@
; Lcl frame size = 0
G_M16369_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp
- mov ebp, esp
- ;; size=3 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M16369_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [D1FFAB1EH], 1 ; global ptr
- je SHORT G_M16369_IG06
- ;; size=9 bbWeight=1 PerfScore 4.00
-G_M16369_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
test eax, eax
- jne SHORT G_M16369_IG05
+ jne SHORT G_M16369_IG04
;; size=9 bbWeight=1 PerfScore 3.25
-G_M16369_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M16369_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
call [<unknown method>]
; gcrRegs +[eax]
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M16369_IG05: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
- pop ebp
+G_M16369_IG04: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
-G_M16369_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- mov ecx, 0xD1FFAB1E
- mov edx, 18
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- jmp SHORT G_M16369_IG03
- ;; size=17 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 46, prolog size 3, PerfScore 11.50, instruction count 14, allocated bytes for code 46 (MethodHash=9e38c00e) for method System.Console:get_Out():System.IO.TextWriter (FullOpts)
+; Total bytes of code 16, prolog size 0, PerfScore 5.75, instruction count 5, allocated bytes for code 16 (MethodHash=9e38c00e) for method System.Console:get_Out():System.IO.TextWriter (FullOpts)
; ============================================================
+4 (+0.92%) : 2088.dasm - System.RuntimeType:FilterApplyBase(System.Reflection.MemberInfo,int,ubyte,ubyte,ubyte,System.String,ubyte):ubyte (FullOpts)
@@ -8,21 +8,21 @@
; 0 inlinees with PGO data; 12 single block inlinees; 8 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 11, 7 ) ref -> edi class-hnd single-def <System.Reflection.MemberInfo>
+; V00 arg0 [V00,T01] ( 10, 6.50) ref -> edi class-hnd single-def <System.Reflection.MemberInfo>
; V01 arg1 [V01,T00] ( 13, 7.50) int -> esi single-def
; V02 arg2 [V02,T13] ( 1, 1 ) ubyte -> [ebp+0x18] single-def
; V03 arg3 [V03,T14] ( 1, 0.50) ubyte -> [ebp+0x14] single-def
; V04 arg4 [V04,T12] ( 2, 1 ) ubyte -> [ebp+0x10] single-def
; V05 arg5 [V05,T03] ( 6, 3.50) ref -> ebx class-hnd single-def <System.String>
; V06 arg6 [V06,T15] ( 1, 0.50) ubyte -> [ebp+0x08] single-def
-; V07 loc0 [V07,T05] ( 4, 2 ) ubyte -> [ebp-0x10] spill-single-def
-; V08 loc1 [V08,T04] ( 5, 2.50) ref -> esi class-hnd single-def <System.Reflection.MethodInfo>
-; V09 tmp0 [V09,T09] ( 2, 1 ) int -> ecx
+; V07 loc0 [V07,T04] ( 4, 2 ) ubyte -> [ebp-0x10] spill-single-def
+; V08 loc1 [V08,T09] ( 3, 1.50) ref -> esi class-hnd single-def <System.Reflection.MethodInfo>
+; V09 tmp0 [V09,T10] ( 2, 1 ) int -> ecx
;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>>
;* V11 tmp2 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V12 tmp3 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V13 tmp4 [V13,T06] ( 4, 2 ) ubyte -> ecx "Inline return value spill temp"
-; V14 tmp5 [V14,T02] ( 5, 5 ) ref -> eax class-hnd exact single-def "Inlining Arg" <System.String>
+; V13 tmp4 [V13,T05] ( 4, 2 ) ubyte -> ecx "Inline return value spill temp"
+; V14 tmp5 [V14,T02] ( 6, 6 ) ref -> eax class-hnd exact single-def "Inlining Arg" <System.String>
; V15 tmp6 [V15,T08] ( 2, 2 ) byref -> ecx single-def "impAppendStmt"
;* V16 tmp7 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V17 tmp8 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -32,12 +32,12 @@
;* V21 tmp12 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp14 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V24 cse0 [V24,T07] ( 4, 2 ) int -> [ebp-0x14] spill-single-def "CSE - moderate"
-; V25 cse1 [V25,T10] ( 3, 1.50) int -> edi "CSE - moderate"
-; V26 cse2 [V26,T11] ( 3, 1.50) int -> edx "CSE - moderate"
-; TEMP_01 ref -> [ebp-0x18]
+; V24 cse0 [V24,T06] ( 4, 2 ) int -> [ebp-0x14] spill-single-def "CSE - moderate"
+; V25 cse1 [V25,T11] ( 3, 1.50) int -> edi "CSE - moderate"
+; V26 cse2 [V26,T07] ( 4, 2 ) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; TEMP_01 ref -> [ebp-0x1C]
;
-; Lcl frame size = 12
+; Lcl frame size = 16
G_M7707_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
@@ -45,9 +45,9 @@ G_M7707_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, by
push edi
push esi
push ebx
- sub esp, 12
+ sub esp, 16
xor eax, eax
- mov dword ptr [ebp-0x18], eax
+ mov dword ptr [ebp-0x1C], eax
mov edi, ecx
; gcrRegs +[edi]
mov esi, edx
@@ -87,8 +87,8 @@ G_M7707_IG05: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00
jmp SHORT G_M7707_IG08
;; size=37 bbWeight=0.50 PerfScore 8.00
G_M7707_IG06: ; bbWeight=0.50, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, byref, isz
- mov edx, dword ptr [eax+0x04]
- cmp edx, dword ptr [ebx+0x04]
+ mov ecx, dword ptr [eax+0x04]
+ cmp ecx, dword ptr [ebx+0x04]
je SHORT G_M7707_IG07
xor ecx, ecx
jmp SHORT G_M7707_IG08
@@ -96,6 +96,7 @@ G_M7707_IG06: ; bbWeight=0.50, gcrefRegs=00000089 {eax ebx edi}, byrefReg
G_M7707_IG07: ; bbWeight=0.50, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, byref
lea ecx, bword ptr [eax+0x08]
; byrRegs +[ecx]
+ mov edx, dword ptr [eax+0x04]
add edx, edx
push edx
lea edx, bword ptr [ebx+0x08]
@@ -104,7 +105,7 @@ G_M7707_IG07: ; bbWeight=0.50, gcrefRegs=00000089 {eax ebx edi}, byrefReg
; gcrRegs -[eax]
; byrRegs -[ecx edx]
mov ecx, eax
- ;; size=17 bbWeight=0.50 PerfScore 2.75
+ ;; size=20 bbWeight=0.50 PerfScore 3.75
G_M7707_IG08: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz
test cl, cl
jne SHORT G_M7707_IG09
@@ -132,18 +133,19 @@ G_M7707_IG12: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00
mov ecx, edi
; gcrRegs +[ecx]
mov eax, dword ptr [edi]
- mov eax, dword ptr [eax+0x2C]
- mov dword ptr [ebp-0x14], eax
- call [eax+0x1C]<unknown method>
+ mov dword ptr [ebp-0x18], eax
+ mov edx, dword ptr [eax+0x2C]
+ mov dword ptr [ebp-0x14], edx
+ call [edx+0x1C]<unknown method>
; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x18], eax
+ mov gword ptr [ebp-0x1C], eax
mov ecx, edi
; gcrRegs +[ecx]
- mov edx, dword ptr [edi]
+ mov edx, dword ptr [ebp-0x18]
mov edx, dword ptr [edx+0x30]
call [edx]<unknown method>
; gcrRegs -[ecx]
- cmp gword ptr [ebp-0x18], eax
+ cmp gword ptr [ebp-0x1C], eax
setne al
; gcrRegs -[eax]
movzx eax, al
@@ -177,7 +179,7 @@ G_M7707_IG12: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00
test esi, 8
jne SHORT G_M7707_IG14
jmp SHORT G_M7707_IG16
- ;; size=120 bbWeight=0.50 PerfScore 22.62
+ ;; size=124 bbWeight=0.50 PerfScore 22.62
G_M7707_IG13: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz
test esi, 4
je SHORT G_M7707_IG16
@@ -215,19 +217,16 @@ G_M7707_IG15: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=000000
mov edx, edi
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; System.Reflection.MethodInfo
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx edi] +[eax]
mov esi, eax
; gcrRegs +[esi]
- test esi, esi
- je SHORT G_M7707_IG16
mov ecx, esi
; gcrRegs +[ecx]
- mov eax, dword ptr [esi]
- ; gcrRegs -[eax]
- mov edi, dword ptr [eax+0x34]
+ mov edi, dword ptr [ebp-0x18]
+ mov edi, dword ptr [edi+0x34]
call [edi+0x10]<unknown method>
- ; gcrRegs -[ecx]
+ ; gcrRegs -[eax ecx]
test al, 64
jne SHORT G_M7707_IG18
mov ecx, esi
@@ -236,7 +235,7 @@ G_M7707_IG15: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=000000
; gcrRegs -[ecx esi]
test eax, 0x400
jne SHORT G_M7707_IG18
- ;; size=90 bbWeight=0.50 PerfScore 13.75
+ ;; size=87 bbWeight=0.50 PerfScore 12.62
G_M7707_IG16: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
@@ -260,6 +259,6 @@ G_M7707_IG19: ; bbWeight=0.50, epilog, nogc, extend
ret 20
;; size=10 bbWeight=0.50 PerfScore 2.25
-; Total bytes of code 433, prolog size 14, PerfScore 80.38, instruction count 147, allocated bytes for code 433 (MethodHash=2a67e1e4) for method System.RuntimeType:FilterApplyBase(System.Reflection.MemberInfo,int,ubyte,ubyte,ubyte,System.String,ubyte):ubyte (FullOpts)
+; Total bytes of code 437, prolog size 14, PerfScore 80.25, instruction count 147, allocated bytes for code 437 (MethodHash=2a67e1e4) for method System.RuntimeType:FilterApplyBase(System.Reflection.MemberInfo,int,ubyte,ubyte,ubyte,System.String,ubyte):ubyte (FullOpts)
; ============================================================
+5 (+3.50%) : 2934.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverterSystem.__Canon:System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)
@@ -8,22 +8,22 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 4.50) ref -> edi this class-hnd single-def <System.Text.Json.Serialization.JsonConverter>
+; V00 this [V00,T01] ( 5, 4.50) ref -> edi this class-hnd single-def <System.Text.Json.Serialization.JsonConverter>
; V01 TypeCtx [V01,T00] ( 8, 5.38) int -> esi single-def
-; V02 loc0 [V02,T08] ( 3, 2.50) ref -> eax class-hnd single-def <System.Text.Json.Serialization.JsonConverter`1[System.__Canon]>
+;* V02 loc0 [V02,T12] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Text.Json.Serialization.JsonConverter`1[System.__Canon]>
;* V03 loc1 [V03 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
; V04 tmp1 [V04,T05] ( 3, 3 ) ref -> eax class-hnd single-def "dup spill" <System.Text.Json.Serialization.JsonConverter>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
-; V06 tmp3 [V06,T12] ( 3, 1.50) ref -> eax
-; V07 tmp4 [V07,T10] ( 4, 2 ) ref -> eax
+; V06 tmp3 [V06,T11] ( 3, 1.50) ref -> eax
+; V07 tmp4 [V07,T09] ( 4, 2 ) ref -> eax
; V08 tmp5 [V08,T06] ( 3, 3 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <System.Text.Json.Serialization.Converters.CastingConverter`1[System.__Canon]>
;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
; V10 tmp7 [V10,T04] ( 2, 4 ) int -> ecx "argument with side effect"
; V11 rat0 [V11,T03] ( 3, 4 ) int -> ecx "runtime lookup"
; V12 rat1 [V12,T02] ( 3, 5.60) int -> ecx "fgMakeTemp is creating a new local variable"
-; V13 rat2 [V13,T11] ( 3, 2 ) int -> ecx "runtime lookup"
+; V13 rat2 [V13,T10] ( 3, 2 ) int -> ecx "runtime lookup"
; V14 rat3 [V14,T07] ( 3, 2.80) int -> ecx "spilling expr"
-; V15 rat4 [V15,T09] ( 3, 2.24) int -> ecx "fgMakeTemp is creating a new local variable"
+; V15 rat4 [V15,T08] ( 3, 2.24) int -> ecx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 4
@@ -50,82 +50,86 @@ G_M17047_IG03: ; bbWeight=0.80, gcrefRegs=00000080 {edi}, byrefRegs=00000
G_M17047_IG04: ; bbWeight=0.20, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
mov ecx, esi
mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov ecx, eax
;; size=14 bbWeight=0.20 PerfScore 0.35
G_M17047_IG05: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
mov edx, edi
; gcrRegs +[edx]
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx] +[eax]
- test eax, eax
- je SHORT G_M17047_IG07
+ test edi, edi
+ je SHORT G_M17047_IG08
;; size=11 bbWeight=1 PerfScore 2.50
-G_M17047_IG06: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
- ; gcrRegs -[edi]
+G_M17047_IG06: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
+ mov eax, edi
+ ; gcrRegs +[eax]
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M17047_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ecx
pop esi
pop edi
pop ebp
ret
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M17047_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax] +[edi]
- mov ecx, edi
+G_M17047_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax edi]
+ xor ecx, ecx
; gcrRegs +[ecx]
- mov eax, dword ptr [edi]
+ mov eax, dword ptr [0x0000]
mov eax, dword ptr [eax+0x30]
call [eax+0x10]<unknown method>
; gcrRegs -[ecx] +[eax]
test eax, eax
- jne SHORT G_M17047_IG08
+ jne SHORT G_M17047_IG09
xor eax, eax
- jmp SHORT G_M17047_IG09
- ;; size=18 bbWeight=0.50 PerfScore 5.38
-G_M17047_IG08: ; bbWeight=0.50, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M17047_IG10
+ ;; size=21 bbWeight=0.50 PerfScore 5.38
+G_M17047_IG09: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
mov ecx, eax
; gcrRegs +[ecx]
mov edx, esi
call [System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this]
; gcrRegs -[ecx]
;; size=10 bbWeight=0.50 PerfScore 1.75
-G_M17047_IG09: ; bbWeight=0.50, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref, isz
+G_M17047_IG10: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
test eax, eax
- jne SHORT G_M17047_IG14
+ jne SHORT G_M17047_IG15
mov ecx, dword ptr [esi+0x20]
cmp dword ptr [ecx+0x04], 12
- jle SHORT G_M17047_IG12
+ jle SHORT G_M17047_IG13
;; size=13 bbWeight=0.50 PerfScore 3.62
-G_M17047_IG10: ; bbWeight=0.40, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M17047_IG11: ; bbWeight=0.40, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
mov ecx, dword ptr [ecx+0x0C]
test ecx, ecx
- je SHORT G_M17047_IG12
+ je SHORT G_M17047_IG13
;; size=7 bbWeight=0.40 PerfScore 1.30
-G_M17047_IG11: ; bbWeight=0.32, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M17047_IG13
+G_M17047_IG12: ; bbWeight=0.32, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M17047_IG14
;; size=2 bbWeight=0.32 PerfScore 0.64
-G_M17047_IG12: ; bbWeight=0.18, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M17047_IG13: ; bbWeight=0.18, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, esi
mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov ecx, eax
;; size=14 bbWeight=0.18 PerfScore 0.32
-G_M17047_IG13: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
- call CORINFO_HELP_NEWSFAST
+G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[eax]
mov esi, eax
; gcrRegs +[esi]
mov ecx, esi
; gcrRegs +[ecx]
- mov edx, edi
+ xor edx, edx
; gcrRegs +[edx]
call [System.Text.Json.Serialization.Converters.CastingConverter`1[System.__Canon]:.ctor(System.Text.Json.Serialization.JsonConverter):this]
- ; gcrRegs -[eax ecx edx edi]
+ ; gcrRegs -[eax ecx edx]
mov eax, esi
; gcrRegs +[eax]
;; size=19 bbWeight=0.50 PerfScore 2.50
-G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M17047_IG15: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi]
pop ecx
pop esi
@@ -134,6 +138,6 @@ G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000
ret
;; size=5 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 143, prolog size 9, PerfScore 33.96, instruction count 61, allocated bytes for code 143 (MethodHash=3467bd68) for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 148, prolog size 9, PerfScore 34.08, instruction count 62, allocated bytes for code 148 (MethodHash=3467bd68) for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)
; ============================================================
+10 (+14.29%) : 974.dasm - System.Linq.OrderedEnumerable`1[double]:ToArray():double[]:this (FullOpts)
@@ -10,18 +10,18 @@
;
; V00 this [V00,T00] ( 4, 3.50) ref -> esi this class-hnd single-def <System.Linq.OrderedEnumerable`1[double]>
; V01 loc0 [V01,T01] ( 4, 3 ) ref -> edi class-hnd single-def <double[]>
-; V02 loc1 [V02,T03] ( 4, 2 ) ref -> ebx class-hnd exact single-def <double[]>
+; V02 loc1 [V02,T02] ( 5, 2.50) ref -> ebx class-hnd single-def <double[]>
;* V03 tmp0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[double]>
;* V04 tmp1 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[double]>
;* V05 tmp2 [V05 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP
;* V06 tmp3 [V06 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x4)" P-INDEP
-; V07 tmp4 [V07,T04] ( 2, 1 ) byref -> ecx "field V04._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T05] ( 2, 1 ) int -> edx "field V04._length (fldOffset=0x4)" P-INDEP
-; V09 cse0 [V09,T02] ( 3, 2.50) int -> edx "CSE - aggressive"
+; V07 tmp4 [V07,T04] ( 3, 1.50) byref -> ecx "field V04._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T05] ( 3, 1.50) int -> edx "field V04._length (fldOffset=0x4)" P-INDEP
+; V09 cse0 [V09,T03] ( 3, 2.50) int -> edx "CSE - aggressive"
;
; Lcl frame size = 0
-G_M51402_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M51402_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
push edi
@@ -53,16 +53,28 @@ G_M51402_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M51402_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M51402_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[esi]
mov ecx, 0xD1FFAB1E ; double[]
- call CORINFO_HELP_NEWARR_1_ALIGN8
+ call CORINFO_HELP_INITCLASS
; gcrRegs +[eax]
mov ebx, eax
; gcrRegs +[ebx]
+ test ebx, ebx
+ jne SHORT G_M51402_IG06
+ xor ecx, ecx
+ ; byrRegs +[ecx]
+ xor edx, edx
+ jmp SHORT G_M51402_IG07
+ ;; size=22 bbWeight=0.50 PerfScore 2.62
+G_M51402_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
+ ; byrRegs -[ecx]
lea ecx, bword ptr [ebx+0x08]
; byrRegs +[ecx]
mov edx, dword ptr [ebx+0x04]
+ ;; size=6 bbWeight=0.50 PerfScore 1.25
+G_M51402_IG07: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000002 {ecx}, byref
push edx
push ecx
mov ecx, esi
@@ -71,11 +83,11 @@ G_M51402_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e
mov edx, edi
; gcrRegs +[edx]
call [System.Linq.OrderedEnumerable`1[double]:Fill(double[],System.Span`1[double]):this]
- ; gcrRegs -[eax ecx edx esi edi]
+ ; gcrRegs -[ecx edx esi edi]
mov eax, ebx
; gcrRegs +[eax]
- ;; size=32 bbWeight=0.50 PerfScore 4.88
-G_M51402_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=14 bbWeight=0.50 PerfScore 2.88
+G_M51402_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop ebx
pop esi
pop edi
@@ -83,6 +95,6 @@ G_M51402_IG06: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=5 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 70, prolog size 6, PerfScore 21.00, instruction count 34, allocated bytes for code 70 (MethodHash=0c773735) for method System.Linq.OrderedEnumerable`1[double]:ToArray():double[]:this (FullOpts)
+; Total bytes of code 80, prolog size 6, PerfScore 22.88, instruction count 39, allocated bytes for code 80 (MethodHash=0c773735) for method System.Linq.OrderedEnumerable`1[double]:ToArray():double[]:this (FullOpts)
; ============================================================
benchmarks.run_pgo.windows.x86.checked.mch
-15 (-60.00%) : 21.dasm - System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
@@ -13,17 +13,14 @@ G_M26209_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov ebp, esp
;; size=3 bbWeight=1 PerfScore 1.25
G_M26209_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, 0xD1FFAB1E
- mov edx, 445
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M26209_IG03: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 25, prolog size 3, PerfScore 6.25, instruction count 8, allocated bytes for code 25 (MethodHash=f311999e) for method System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
+; Total bytes of code 10, prolog size 3, PerfScore 4.75, instruction count 5, allocated bytes for code 10 (MethodHash=f311999e) for method System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
; ============================================================
-15 (-60.00%) : 449.dasm - System.Text.DecoderFallback:get_ExceptionFallback():System.Text.DecoderFallback (Tier0)
@@ -13,17 +13,14 @@ G_M31785_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov ebp, esp
;; size=3 bbWeight=1 PerfScore 1.25
G_M31785_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, 0xD1FFAB1E
- mov edx, 0x46D
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M31785_IG03: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 25, prolog size 3, PerfScore 6.25, instruction count 8, allocated bytes for code 25 (MethodHash=b73d83d6) for method System.Text.DecoderFallback:get_ExceptionFallback():System.Text.DecoderFallback (Tier0)
+; Total bytes of code 10, prolog size 3, PerfScore 4.75, instruction count 5, allocated bytes for code 10 (MethodHash=b73d83d6) for method System.Text.DecoderFallback:get_ExceptionFallback():System.Text.DecoderFallback (Tier0)
; ============================================================
-15 (-60.00%) : 2725.dasm - System.Text.Encoding:get_BigEndianUnicode():System.Text.Encoding (Tier0)
@@ -13,17 +13,14 @@ G_M39592_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov ebp, esp
;; size=3 bbWeight=1 PerfScore 1.25
G_M39592_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, 0xD1FFAB1E
- mov edx, 0x496
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M39592_IG03: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 25, prolog size 3, PerfScore 6.25, instruction count 8, allocated bytes for code 25 (MethodHash=d9cd6557) for method System.Text.Encoding:get_BigEndianUnicode():System.Text.Encoding (Tier0)
+; Total bytes of code 10, prolog size 3, PerfScore 4.75, instruction count 5, allocated bytes for code 10 (MethodHash=d9cd6557) for method System.Text.Encoding:get_BigEndianUnicode():System.Text.Encoding (Tier0)
; ============================================================
+0 (0.00%) : 1674.dasm - System.Span`1[System.Canon]:.ctor(System.Canon[]):this (Tier0)
@@ -58,7 +58,7 @@ G_M63343_IG05: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000
G_M63343_IG06: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [ebp+0x08]
mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov dword ptr [ebp-0x10], eax
;; size=16 bbWeight=0.20 PerfScore 0.65
G_M63343_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
@@ -93,7 +93,7 @@ G_M63343_IG09: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000
G_M63343_IG10: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [ebp+0x08]
mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov dword ptr [ebp-0x14], eax
;; size=16 bbWeight=0.20 PerfScore 0.65
G_M63343_IG11: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+0 (0.00%) : 3630.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:Significant(System.Linq.Expressions.Expression):ubyte (Tier0-FullOpts)
@@ -7,8 +7,8 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 5, 4 ) ref -> esi class-hnd single-def <System.Linq.Expressions.Expression>
-; V01 loc0 [V01,T01] ( 6, 11 ) ref -> edi class-hnd single-def <<unknown class>>
+; V00 arg0 [V00,T03] ( 4, 4 ) ref -> esi class-hnd single-def <System.Linq.Expressions.Expression>
+; V01 loc0 [V01,T01] ( 5, 10 ) ref -> edi class-hnd single-def <<unknown class>>
; V02 loc1 [V02,T00] ( 5, 16.50) int -> esi
; V03 cse0 [V03,T02] ( 4, 9 ) int -> ebx "CSE - aggressive"
;
@@ -27,11 +27,11 @@ G_M45010_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov edx, esi
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx] +[eax]
mov edi, eax
; gcrRegs +[edi]
- test edi, edi
+ test esi, esi
je SHORT G_M45010_IG09
;; size=18 bbWeight=1 PerfScore 3.00
G_M45010_IG03: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
@@ -87,19 +87,18 @@ G_M45010_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M45010_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs +[esi]
- mov ecx, esi
+G_M45010_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ xor ecx, ecx
; gcrRegs +[ecx]
call [System.Linq.Expressions.Compiler.LambdaCompiler:NotEmpty(System.Linq.Expressions.Expression):ubyte]
; gcrRegs -[ecx]
test eax, eax
je SHORT G_M45010_IG05
- mov edx, esi
+ xor edx, edx
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
- ; gcrRegs -[edx esi] +[eax]
+ call CORINFO_HELP_CHKCASTINTERFACE
+ ; gcrRegs -[edx] +[eax]
test eax, eax
sete al
; gcrRegs -[eax]
+0 (0.00%) : 6475.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon]:CreatePropertyInfoForTypeInfo():System.Text.Json.Serialization.Metadata.JsonPropertyInfo:this (Tier0)
@@ -54,12 +54,12 @@ G_M41961_IG03: ; bbWeight=0.80, gcrefRegs=00000000 {}, byrefRegs=00000000
G_M41961_IG04: ; bbWeight=0.20, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [ebp-0x14]
mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ call CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
mov dword ptr [ebp-0x10], eax
;; size=16 bbWeight=0.20 PerfScore 0.65
G_M41961_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, dword ptr [ebp-0x10]
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[eax]
mov gword ptr [ebp-0x0C], eax
push gword ptr [ebp-0x04]
benchmarks.run_tiered.windows.x86.checked.mch
-15 (-60.00%) : 21.dasm - System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
@@ -13,17 +13,14 @@ G_M26209_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov ebp, esp
;; size=3 bbWeight=1 PerfScore 1.25
G_M26209_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, 0xD1FFAB1E
- mov edx, 445
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M26209_IG03: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 25, prolog size 3, PerfScore 6.25, instruction count 8, allocated bytes for code 25 (MethodHash=f311999e) for method System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
+; Total bytes of code 10, prolog size 3, PerfScore 4.75, instruction count 5, allocated bytes for code 10 (MethodHash=f311999e) for method System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
; ============================================================
-15 (-60.00%) : 2849.dasm - System.Threading.Tasks.TaskScheduler:get_Default():System.Threading.Tasks.TaskScheduler (Tier0)
@@ -13,17 +13,14 @@ G_M2361_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
mov ebp, esp
;; size=3 bbWeight=1 PerfScore 1.25
G_M2361_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, 0xD1FFAB1E
- mov edx, 0x442
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M2361_IG03: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 25, prolog size 3, PerfScore 6.25, instruction count 8, allocated bytes for code 25 (MethodHash=ef95f6c6) for method System.Threading.Tasks.TaskScheduler:get_Default():System.Threading.Tasks.TaskScheduler (Tier0)
+; Total bytes of code 10, prolog size 3, PerfScore 4.75, instruction count 5, allocated bytes for code 10 (MethodHash=ef95f6c6) for method System.Threading.Tasks.TaskScheduler:get_Default():System.Threading.Tasks.TaskScheduler (Tier0)
; ============================================================
-15 (-60.00%) : 3221.dasm - System.TimeZoneInfo:get_Utc():System.TimeZoneInfo (Tier0)
@@ -13,17 +13,14 @@ G_M29680_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov ebp, esp
;; size=3 bbWeight=1 PerfScore 1.25
G_M29680_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, 0xD1FFAB1E
- mov edx, 462
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M29680_IG03: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 25, prolog size 3, PerfScore 6.25, instruction count 8, allocated bytes for code 25 (MethodHash=0aa78c0f) for method System.TimeZoneInfo:get_Utc():System.TimeZoneInfo (Tier0)
+; Total bytes of code 10, prolog size 3, PerfScore 4.75, instruction count 5, allocated bytes for code 10 (MethodHash=0aa78c0f) for method System.TimeZoneInfo:get_Utc():System.TimeZoneInfo (Tier0)
; ============================================================
+0 (0.00%) : 3987.dasm - System.Text.Json.JsonSerializerOptions:ExpandConverterFactory(System.Text.Json.Serialization.JsonConverter,System.Type):System.Text.Json.Serialization.JsonConverter:this (Tier1)
@@ -8,9 +8,9 @@
; Final local variable assignments
;
; V00 this [V00,T01] ( 3, 2.50) ref -> edi this class-hnd single-def <System.Text.Json.JsonSerializerOptions>
-; V01 arg1 [V01,T00] ( 5, 4.50) ref -> esi class-hnd <System.Text.Json.Serialization.JsonConverter>
+; V01 arg1 [V01,T00] ( 6, 5.50) ref -> esi class-hnd <System.Text.Json.Serialization.JsonConverter>
; V02 arg2 [V02,T03] ( 1, 0.50) ref -> [esp+0x0C] class-hnd single-def <System.Type>
-; V03 loc0 [V03,T02] ( 3, 2.50) ref -> eax class-hnd single-def <System.Text.Json.Serialization.JsonConverterFactory>
+; V03 loc0 [V03,T02] ( 2, 1.50) ref -> ecx class-hnd single-def <System.Text.Json.Serialization.JsonConverterFactory>
;
; Lcl frame size = 0
@@ -26,26 +26,26 @@ G_M17128_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
mov edx, esi
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; System.Text.Json.Serialization.JsonConverterFactory
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx] +[eax]
; gcr arg pop 0
- test eax, eax
- je SHORT G_M17128_IG04
- ;; size=16 bbWeight=1 PerfScore 2.75
-G_M17128_IG03: ; bbWeight=0.50, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi]
- push edi
- ; gcr arg push 0
mov ecx, eax
; gcrRegs +[ecx]
+ test esi, esi
+ je SHORT G_M17128_IG04
+ ;; size=18 bbWeight=1 PerfScore 3.00
+G_M17128_IG03: ; bbWeight=0.50, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax esi]
+ push edi
+ ; gcr arg push 0
mov edx, gword ptr [esp+0x0C+0x04]
; gcrRegs +[edx]
call [System.Text.Json.Serialization.JsonConverterFactory:GetConverterInternal(System.Type,System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.JsonConverter:this]
- ; gcrRegs -[ecx edx edi]
+ ; gcrRegs -[ecx edx edi] +[eax]
; gcr arg pop 1
mov esi, eax
; gcrRegs +[esi]
- ;; size=15 bbWeight=0.50 PerfScore 2.75
+ ;; size=13 bbWeight=0.50 PerfScore 2.62
G_M17128_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
mov eax, esi
@@ -57,6 +57,6 @@ G_M17128_IG05: ; bbWeight=1, epilog, nogc, extend
ret 4
;; size=5 bbWeight=1 PerfScore 3.00
-; Total bytes of code 44, prolog size 2, PerfScore 11.25, instruction count 18, allocated bytes for code 44 (MethodHash=9152bd17) for method System.Text.Json.JsonSerializerOptions:ExpandConverterFactory(System.Text.Json.Serialization.JsonConverter,System.Type):System.Text.Json.Serialization.JsonConverter:this (Tier1)
+; Total bytes of code 44, prolog size 2, PerfScore 11.38, instruction count 18, allocated bytes for code 44 (MethodHash=9152bd17) for method System.Text.Json.JsonSerializerOptions:ExpandConverterFactory(System.Text.Json.Serialization.JsonConverter,System.Type):System.Text.Json.Serialization.JsonConverter:this (Tier1)
; ============================================================
+0 (0.00%) : 4356.dasm - System.Reflection.SignatureTypeExtensions:MatchesParameterTypeExactly(System.Type,System.Reflection.ParameterInfo):ubyte (Tier1)
@@ -7,10 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 4, 3.50) ref -> edi class-hnd single-def <System.Type>
+; V00 arg0 [V00,T01] ( 4, 4 ) ref -> edi class-hnd single-def <System.Type>
; V01 arg1 [V01,T00] ( 6, 4 ) ref -> esi class-hnd single-def <System.Reflection.ParameterInfo>
-; V02 loc0 [V02,T02] ( 3, 2.50) ref -> ebx class-hnd single-def <<unknown class>>
-; V03 tmp0 [V03,T03] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V02 loc0 [V02,T03] ( 2, 1.50) ref -> ebx class-hnd single-def <<unknown class>>
+; V03 tmp0 [V03,T02] ( 2, 2 ) ref -> edx single-def "argument with side effect"
;
; Lcl frame size = 0
@@ -29,11 +29,11 @@ G_M22240_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
mov edx, edi
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx] +[eax]
mov ebx, eax
; gcrRegs +[ebx]
- test ebx, ebx
+ test edi, edi
je SHORT G_M22240_IG05
;; size=18 bbWeight=1 PerfScore 3.00
G_M22240_IG03: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
@@ -58,15 +58,15 @@ G_M22240_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M22240_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs +[esi edi]
+G_M22240_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs +[esi]
mov ecx, esi
; gcrRegs +[ecx]
mov eax, dword ptr [esi]
mov eax, dword ptr [eax+0x2C]
call [eax+0x1C]<unknown method>
; gcrRegs -[ecx esi] +[eax]
- cmp eax, edi
+ test eax, eax
sete al
; gcrRegs -[eax]
movzx eax, al
+5 (+3.50%) : 3963.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverterSystem.__Canon:System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (Tier1)
@@ -8,22 +8,22 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 4.50) ref -> edi this class-hnd single-def <System.Text.Json.Serialization.JsonConverter>
+; V00 this [V00,T01] ( 5, 4.50) ref -> edi this class-hnd single-def <System.Text.Json.Serialization.JsonConverter>
; V01 TypeCtx [V01,T00] ( 8, 5.38) int -> esi single-def
-; V02 loc0 [V02,T08] ( 3, 2.50) ref -> eax class-hnd single-def <System.Text.Json.Serialization.JsonConverter`1[System.__Canon]>
+;* V02 loc0 [V02,T12] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Text.Json.Serialization.JsonConverter`1[System.__Canon]>
;* V03 loc1 [V03 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
; V04 tmp1 [V04,T05] ( 3, 3 ) ref -> eax class-hnd single-def "dup spill" <System.Text.Json.Serialization.JsonConverter>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
-; V06 tmp3 [V06,T12] ( 3, 1.50) ref -> eax
-; V07 tmp4 [V07,T10] ( 4, 2 ) ref -> eax
+; V06 tmp3 [V06,T11] ( 3, 1.50) ref -> eax
+; V07 tmp4 [V07,T09] ( 4, 2 ) ref -> eax
; V08 tmp5 [V08,T06] ( 3, 3 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <System.Text.Json.Serialization.Converters.CastingConverter`1[System.__Canon]>
;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "spilling helperCall"
; V10 tmp7 [V10,T04] ( 2, 4 ) int -> ecx "argument with side effect"
; V11 rat0 [V11,T03] ( 3, 4 ) int -> ecx "runtime lookup"
; V12 rat1 [V12,T02] ( 3, 5.60) int -> ecx "fgMakeTemp is creating a new local variable"
-; V13 rat2 [V13,T11] ( 3, 2 ) int -> ecx "runtime lookup"
+; V13 rat2 [V13,T10] ( 3, 2 ) int -> ecx "runtime lookup"
; V14 rat3 [V14,T07] ( 3, 2.80) int -> ecx "spilling expr"
-; V15 rat4 [V15,T09] ( 3, 2.24) int -> ecx "fgMakeTemp is creating a new local variable"
+; V15 rat4 [V15,T08] ( 3, 2.24) int -> ecx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 4
@@ -50,82 +50,86 @@ G_M17047_IG03: ; bbWeight=0.80, gcrefRegs=00000080 {edi}, byrefRegs=00000
G_M17047_IG04: ; bbWeight=0.20, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
mov ecx, esi
mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov ecx, eax
;; size=14 bbWeight=0.20 PerfScore 0.35
G_M17047_IG05: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
mov edx, edi
; gcrRegs +[edx]
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx] +[eax]
- test eax, eax
- je SHORT G_M17047_IG07
+ test edi, edi
+ je SHORT G_M17047_IG08
;; size=11 bbWeight=1 PerfScore 2.50
-G_M17047_IG06: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
- ; gcrRegs -[edi]
+G_M17047_IG06: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
+ mov eax, edi
+ ; gcrRegs +[eax]
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M17047_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop ecx
pop esi
pop edi
pop ebp
ret
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M17047_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax] +[edi]
- mov ecx, edi
+G_M17047_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax edi]
+ xor ecx, ecx
; gcrRegs +[ecx]
- mov eax, dword ptr [edi]
+ mov eax, dword ptr [0x0000]
mov eax, dword ptr [eax+0x30]
call [eax+0x10]<unknown method>
; gcrRegs -[ecx] +[eax]
test eax, eax
- jne SHORT G_M17047_IG08
+ jne SHORT G_M17047_IG09
xor eax, eax
- jmp SHORT G_M17047_IG09
- ;; size=18 bbWeight=0.50 PerfScore 5.38
-G_M17047_IG08: ; bbWeight=0.50, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M17047_IG10
+ ;; size=21 bbWeight=0.50 PerfScore 5.38
+G_M17047_IG09: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
mov ecx, eax
; gcrRegs +[ecx]
mov edx, esi
call [System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this]
; gcrRegs -[ecx]
;; size=10 bbWeight=0.50 PerfScore 1.75
-G_M17047_IG09: ; bbWeight=0.50, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref, isz
+G_M17047_IG10: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
test eax, eax
- jne SHORT G_M17047_IG14
+ jne SHORT G_M17047_IG15
mov ecx, dword ptr [esi+0x20]
cmp dword ptr [ecx+0x04], 12
- jle SHORT G_M17047_IG12
+ jle SHORT G_M17047_IG13
;; size=13 bbWeight=0.50 PerfScore 3.62
-G_M17047_IG10: ; bbWeight=0.40, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M17047_IG11: ; bbWeight=0.40, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
mov ecx, dword ptr [ecx+0x0C]
test ecx, ecx
- je SHORT G_M17047_IG12
+ je SHORT G_M17047_IG13
;; size=7 bbWeight=0.40 PerfScore 1.30
-G_M17047_IG11: ; bbWeight=0.32, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M17047_IG13
+G_M17047_IG12: ; bbWeight=0.32, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M17047_IG14
;; size=2 bbWeight=0.32 PerfScore 0.64
-G_M17047_IG12: ; bbWeight=0.18, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M17047_IG13: ; bbWeight=0.18, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, esi
mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov ecx, eax
;; size=14 bbWeight=0.18 PerfScore 0.32
-G_M17047_IG13: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
- call CORINFO_HELP_NEWSFAST
+G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[eax]
mov esi, eax
; gcrRegs +[esi]
mov ecx, esi
; gcrRegs +[ecx]
- mov edx, edi
+ xor edx, edx
; gcrRegs +[edx]
call [System.Text.Json.Serialization.Converters.CastingConverter`1[System.__Canon]:.ctor(System.Text.Json.Serialization.JsonConverter):this]
- ; gcrRegs -[eax ecx edx edi]
+ ; gcrRegs -[eax ecx edx]
mov eax, esi
; gcrRegs +[eax]
;; size=19 bbWeight=0.50 PerfScore 2.50
-G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M17047_IG15: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
; gcrRegs -[esi]
pop ecx
pop esi
@@ -134,6 +138,6 @@ G_M17047_IG14: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000
ret
;; size=5 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 143, prolog size 9, PerfScore 33.96, instruction count 61, allocated bytes for code 143 (MethodHash=3467bd68) for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (Tier1)
+; Total bytes of code 148, prolog size 9, PerfScore 34.08, instruction count 62, allocated bytes for code 148 (MethodHash=3467bd68) for method System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (Tier1)
; ============================================================
coreclr_tests.run.windows.x86.checked.mch
-26 (-78.79%) : 418.dasm - DelegateDefinitions:TestVoidParameterVoidStaticCallback() (FullOpts)
@@ -7,29 +7,18 @@
; No matching PGO data
; Final local variable assignments
;
-;* V00 cse0 [V00,T00] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
;
; Lcl frame size = 0
G_M63990_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
-G_M63990_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [D1FFAB1EH], 1 ; global ptr
- je SHORT G_M63990_IG05
- ;; size=9 bbWeight=1 PerfScore 4.00
-G_M63990_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M63990_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
inc dword ptr [D1FFAB1EH]
;; size=6 bbWeight=1 PerfScore 3.00
-G_M63990_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M63990_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00
-G_M63990_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- mov ecx, 0xD1FFAB1E
- mov edx, 14
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- jmp SHORT G_M63990_IG03
- ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 33, prolog size 0, PerfScore 8.00, instruction count 8, allocated bytes for code 33 (MethodHash=4db60609) for method DelegateDefinitions:TestVoidParameterVoidStaticCallback() (FullOpts)
+; Total bytes of code 7, prolog size 0, PerfScore 4.00, instruction count 2, allocated bytes for code 7 (MethodHash=4db60609) for method DelegateDefinitions:TestVoidParameterVoidStaticCallback() (FullOpts)
; ============================================================
-30 (-65.22%) : 678.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
@@ -2,7 +2,7 @@
; Emitting BLENDED_CODE for X86 with AVX512 - Windows
; FullOpts code
; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
@@ -13,36 +13,22 @@
; Lcl frame size = 0
G_M16369_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp
- mov ebp, esp
- ;; size=3 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M16369_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [D1FFAB1EH], 1 ; global ptr
- je SHORT G_M16369_IG06
- ;; size=9 bbWeight=1 PerfScore 4.00
-G_M16369_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
test eax, eax
- jne SHORT G_M16369_IG05
+ jne SHORT G_M16369_IG04
;; size=9 bbWeight=1 PerfScore 3.25
-G_M16369_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M16369_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
call [<unknown method>]
; gcrRegs +[eax]
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M16369_IG05: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
- pop ebp
+G_M16369_IG04: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
-G_M16369_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- mov ecx, 0xD1FFAB1E
- mov edx, 18
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- jmp SHORT G_M16369_IG03
- ;; size=17 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 46, prolog size 3, PerfScore 11.50, instruction count 14, allocated bytes for code 46 (MethodHash=9e38c00e) for method System.Console:get_Out():System.IO.TextWriter (FullOpts)
+; Total bytes of code 16, prolog size 0, PerfScore 5.75, instruction count 5, allocated bytes for code 16 (MethodHash=9e38c00e) for method System.Console:get_Out():System.IO.TextWriter (FullOpts)
; ============================================================
-30 (-65.22%) : 7.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
@@ -2,7 +2,7 @@
; Emitting BLENDED_CODE for X86 with AVX512 - Windows
; FullOpts code
; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible
; No matching PGO data
; Final local variable assignments
@@ -13,36 +13,22 @@
; Lcl frame size = 0
G_M16369_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp
- mov ebp, esp
- ;; size=3 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M16369_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [D1FFAB1EH], 1 ; global ptr
- je SHORT G_M16369_IG06
- ;; size=9 bbWeight=1 PerfScore 4.00
-G_M16369_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
test eax, eax
- jne SHORT G_M16369_IG05
+ jne SHORT G_M16369_IG04
;; size=9 bbWeight=1 PerfScore 3.25
-G_M16369_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M16369_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
call [<unknown method>]
; gcrRegs +[eax]
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M16369_IG05: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
- pop ebp
+G_M16369_IG04: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
-G_M16369_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- mov ecx, 0xD1FFAB1E
- mov edx, 18
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- jmp SHORT G_M16369_IG03
- ;; size=17 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 46, prolog size 3, PerfScore 11.50, instruction count 14, allocated bytes for code 46 (MethodHash=9e38c00e) for method System.Console:get_Out():System.IO.TextWriter (FullOpts)
+; Total bytes of code 16, prolog size 0, PerfScore 5.75, instruction count 5, allocated bytes for code 16 (MethodHash=9e38c00e) for method System.Console:get_Out():System.IO.TextWriter (FullOpts)
; ============================================================
-16 (-40.00%) : 573.dasm - System.Text.RegularExpressions.RegexNode:ChildCount():int:this (FullOpts)
@@ -2,22 +2,20 @@
; Emitting BLENDED_CODE for X86 with AVX512 - Windows
; FullOpts code
; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible
; No matching PGO data
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 3, 3 ) ref -> ecx this class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V01 loc0 [V01,T02] ( 3, 1.50) ref -> eax class-hnd single-def <<unknown class>>
+; V01 loc0 [V01,T02] ( 2, 1 ) ref -> eax class-hnd single-def <<unknown class>>
; V02 cse0 [V02,T01] ( 3, 2.50) ref -> edx "CSE - aggressive"
;
; Lcl frame size = 0
G_M2237_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
- push ebp
- mov ebp, esp
- ;; size=3 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M2237_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
mov edx, gword ptr [ecx+0x04]
@@ -30,31 +28,20 @@ G_M2237_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M2237_IG04: ; bbWeight=0.50, epilog, nogc, extend
- pop ebp
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M2237_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=1 bbWeight=0.50 PerfScore 0.50
+G_M2237_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx] +[eax]
- test eax, eax
- je SHORT G_M2237_IG07
mov eax, dword ptr [eax+0x08]
; gcrRegs -[eax]
- ;; size=17 bbWeight=0.50 PerfScore 2.25
+ ;; size=13 bbWeight=0.50 PerfScore 1.62
G_M2237_IG06: ; bbWeight=0.50, epilog, nogc, extend
- pop ebp
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M2237_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- mov eax, 1
- ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M2237_IG08: ; bbWeight=0.50, epilog, nogc, extend
- pop ebp
- ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=1 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 40, prolog size 3, PerfScore 9.25, instruction count 18, allocated bytes for code 40 (MethodHash=10e0f742) for method System.Text.RegularExpressions.RegexNode:ChildCount():int:this (FullOpts)
+; Total bytes of code 24, prolog size 0, PerfScore 6.00, instruction count 9, allocated bytes for code 24 (MethodHash=10e0f742) for method System.Text.RegularExpressions.RegexNode:ChildCount():int:this (FullOpts)
; ============================================================
-33 (-10.78%) : 550.dasm - CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (FullOpts)
@@ -51,17 +51,13 @@ G_M2789_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
mov edi, edx
; gcrRegs +[edi]
;; size=13 bbWeight=1 PerfScore 5.00
-G_M2789_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
- test byte ptr [D1FFAB1EH], 1 ; global ptr
- je G_M2789_IG17
- ;; size=13 bbWeight=1 PerfScore 4.00
-G_M2789_IG03: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M2789_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[ecx]
test ecx, ecx
- jne SHORT G_M2789_IG05
+ jne SHORT G_M2789_IG04
;; size=10 bbWeight=1 PerfScore 3.25
-G_M2789_IG04: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M2789_IG03: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
push 0
mov edx, esi
@@ -69,33 +65,33 @@ G_M2789_IG04: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=000000
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx]
- jmp SHORT G_M2789_IG06
+ jmp SHORT G_M2789_IG05
;; size=14 bbWeight=0.50 PerfScore 3.25
-G_M2789_IG05: ; bbWeight=0.50, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, byref
+G_M2789_IG04: ; bbWeight=0.50, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[ecx]
mov edx, esi
call [<unknown method>]
; gcrRegs -[ecx]
;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M2789_IG06: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M2789_IG05: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
test eax, eax
- je G_M2789_IG14
+ je G_M2789_IG13
;; size=8 bbWeight=1 PerfScore 1.25
-G_M2789_IG07: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M2789_IG06: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
test edi, edi
- je G_M2789_IG15
+ je G_M2789_IG14
;; size=8 bbWeight=0.50 PerfScore 0.62
-G_M2789_IG08: ; bbWeight=0.46, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M2789_IG07: ; bbWeight=0.46, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
mov ebx, dword ptr [edi+0x04]
test ebx, ebx
- je G_M2789_IG15
+ je G_M2789_IG14
;; size=11 bbWeight=0.46 PerfScore 1.49
-G_M2789_IG09: ; bbWeight=0.47, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M2789_IG08: ; bbWeight=0.47, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
mov eax, ebx
mov dword ptr [ebp-0x10], eax
lea ecx, [eax+0x07]
test ecx, ecx
- jl G_M2789_IG16
+ jl G_M2789_IG15
call <unknown method>
; gcrRegs +[eax]
mov ecx, eax
@@ -103,25 +99,25 @@ G_M2789_IG09: ; bbWeight=0.47, gcrefRegs=00000080 {edi}, byrefRegs=000000
mov gword ptr [ebp-0x18], ecx
; GC ptr vars +{V10}
test ecx, ecx
- jne SHORT G_M2789_IG10
+ jne SHORT G_M2789_IG09
mov ecx, 0xD1FFAB1E
mov edx, 0xD1FFAB1E
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[eax ecx edx]
;; size=46 bbWeight=0.47 PerfScore 4.74
-G_M2789_IG10: ; bbWeight=0.47, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M2789_IG09: ; bbWeight=0.47, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx]
cmp dword ptr [ecx+0x04], ebx
- jge SHORT G_M2789_IG11
+ jge SHORT G_M2789_IG10
mov ecx, 0xD1FFAB1E
mov edx, 0xD1FFAB1E
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=24 bbWeight=0.47 PerfScore 4.03
-G_M2789_IG11: ; bbWeight=0.47, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M2789_IG10: ; bbWeight=0.47, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx]
lea edx, bword ptr [ecx+0x08]
@@ -144,7 +140,7 @@ G_M2789_IG11: ; bbWeight=0.47, gcrefRegs=00000080 {edi}, byrefRegs=000000
mov ecx, dword ptr [edi+0x04]
sub ecx, ebx
cmp ecx, 7
- jge SHORT G_M2789_IG12
+ jge SHORT G_M2789_IG11
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -152,7 +148,7 @@ G_M2789_IG11: ; bbWeight=0.47, gcrefRegs=00000080 {edi}, byrefRegs=000000
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=58 bbWeight=0.47 PerfScore 7.94
-G_M2789_IG12: ; bbWeight=0.47, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M2789_IG11: ; bbWeight=0.47, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
mov ebx, dword ptr [ebp-0x14]
lea ecx, bword ptr [edi+ebx+0x08]
; byrRegs +[ecx]
@@ -164,7 +160,7 @@ G_M2789_IG12: ; bbWeight=0.47, gcrefRegs=00000080 {edi}, byrefRegs=000000
mov ecx, edi
; gcrRegs +[ecx]
;; size=22 bbWeight=0.47 PerfScore 3.08
-G_M2789_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
+G_M2789_IG12: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[edi]
; GC ptr vars -{V10}
push gword ptr [ebp+0x0C]
@@ -180,7 +176,7 @@ G_M2789_IG13: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ec
call [eax+0x18]<unknown method>
; gcrRegs -[ecx edx]
;; size=27 bbWeight=0.50 PerfScore 6.25
-G_M2789_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M2789_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -188,24 +184,17 @@ G_M2789_IG14: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
pop ebp
ret 8
;; size=10 bbWeight=1 PerfScore 4.50
-G_M2789_IG15: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M2789_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
- jmp SHORT G_M2789_IG13
+ jmp SHORT G_M2789_IG12
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M2789_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M2789_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
call [System.ThrowHelper:ThrowOutOfMemoryException_StringTooLong()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M2789_IG17: ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
- ; gcrRegs +[edi]
- mov ecx, 0xD1FFAB1E
- mov edx, 7
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- jmp G_M2789_IG03
- ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 306, prolog size 9, PerfScore 52.16, instruction count 92, allocated bytes for code 306 (MethodHash=bd4cf51a) for method CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (FullOpts)
+; Total bytes of code 273, prolog size 9, PerfScore 48.16, instruction count 86, allocated bytes for code 273 (MethodHash=bd4cf51a) for method CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (FullOpts)
; ============================================================
-23 (-8.04%) : 326.dasm - Program:TestEntryPoint():int (FullOpts)
@@ -12,40 +12,38 @@
;* V01 loc1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
;* V02 loc2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Program>
;* V03 loc3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Reflection.MethodInfo>
-;* V04 loc4 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
+; V04 loc4 [V04,T02] ( 5, 5 ) ref -> esi class-hnd single-def <<unknown class>>
; V05 loc5 [V05 ] ( 2, 2 ) struct (16) [ebp-0x14] do-not-enreg[XS] must-init addr-exposed <System.Decimal>
; V06 loc6 [V06 ] ( 2, 2 ) struct (16) [ebp-0x24] do-not-enreg[XS] must-init addr-exposed <System.Decimal>
;* V07 loc7 [V07 ] ( 0, 0 ) int -> zero-ref ld-addr-op
-; V08 tmp0 [V08,T01] ( 3, 6 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <Program>
-; V09 tmp1 [V09,T03] ( 3, 4.25) ref -> eax single-def "CASTCLASS eval op1"
-; V10 tmp2 [V10,T06] ( 3, 1.25) int -> ecx "fgMakeTemp is creating a new local variable"
-; V11 tmp3 [V11,T00] ( 8, 12.75) ref -> esi class-hnd "spilling QMark2" <<unknown class>>
-; V12 tmp4 [V12 ] ( 10, 7.00) struct (16) [ebp-0x34] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal>
-; V13 tmp5 [V13 ] ( 7, 10.00) struct (16) [ebp-0x44] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal>
-; V14 tmp6 [V14,T07] ( 5, 1.00) int -> eax "Inline return value spill temp"
+; V08 tmp0 [V08,T00] ( 3, 6 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <Program>
+; V09 tmp1 [V09 ] ( 10, 7.00) struct (16) [ebp-0x34] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal>
+; V10 tmp2 [V10 ] ( 7, 10.00) struct (16) [ebp-0x44] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Decimal>
+; V11 tmp3 [V11,T06] ( 5, 1.00) int -> eax "Inline return value spill temp"
+;* V12 tmp4 [V12 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
+;* V13 tmp5 [V13 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
+; V14 tmp6 [V14,T07] ( 3, 1.00) int -> eax single-def "Inline stloc first use temp"
;* V15 tmp7 [V15 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
-;* V16 tmp8 [V16 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
-; V17 tmp9 [V17,T08] ( 3, 1.00) int -> eax single-def "Inline stloc first use temp"
-;* V18 tmp10 [V18 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
-; V19 tmp11 [V19 ] ( 2, 2 ) int -> [ebp-0x14] do-not-enreg[X] addr-exposed "field V05._flags (fldOffset=0x0)" P-DEP
-; V20 tmp12 [V20 ] ( 2, 2 ) int -> [ebp-0x10] do-not-enreg[X] addr-exposed "field V05._hi32 (fldOffset=0x4)" P-DEP
-; V21 tmp13 [V21 ] ( 2, 2 ) long -> [ebp-0x0C] do-not-enreg[X] addr-exposed "field V05._lo64 (fldOffset=0x8)" P-DEP
-; V22 tmp14 [V22 ] ( 2, 2 ) int -> [ebp-0x24] do-not-enreg[X] addr-exposed "field V06._flags (fldOffset=0x0)" P-DEP
-; V23 tmp15 [V23 ] ( 2, 2 ) int -> [ebp-0x20] do-not-enreg[X] addr-exposed "field V06._hi32 (fldOffset=0x4)" P-DEP
-; V24 tmp16 [V24 ] ( 2, 2 ) long -> [ebp-0x1C] do-not-enreg[X] addr-exposed "field V06._lo64 (fldOffset=0x8)" P-DEP
-; V25 tmp17 [V25 ] ( 4, 3.50) int -> [ebp-0x34] do-not-enreg[X] addr-exposed "field V12._flags (fldOffset=0x0)" P-DEP
-; V26 tmp18 [V26 ] ( 4, 3.50) int -> [ebp-0x30] do-not-enreg[X] addr-exposed "field V12._hi32 (fldOffset=0x4)" P-DEP
-; V27 tmp19 [V27 ] ( 6, 4.00) long -> [ebp-0x2C] do-not-enreg[X] addr-exposed "field V12._lo64 (fldOffset=0x8)" P-DEP
-; V28 tmp20 [V28 ] ( 4, 3.50) int -> [ebp-0x44] do-not-enreg[X] addr-exposed "field V13._flags (fldOffset=0x0)" P-DEP
-; V29 tmp21 [V29 ] ( 3, 4.00) int -> [ebp-0x40] do-not-enreg[X] addr-exposed "field V13._hi32 (fldOffset=0x4)" P-DEP
-; V30 tmp22 [V30 ] ( 4, 5.00) long -> [ebp-0x3C] do-not-enreg[X] addr-exposed "field V13._lo64 (fldOffset=0x8)" P-DEP
-; V31 tmp23 [V31,T02] ( 3, 6 ) ref -> eax single-def "argument with side effect"
-; V32 rat0 [V32,T04] ( 2, 2 ) int -> ecx "field V15.lo (fldOffset=0x0)" P-INDEP
-; V33 rat1 [V33,T05] ( 2, 2 ) int -> edx "field V15.hi (fldOffset=0x4)" P-INDEP
-; V34 rat2 [V34,T09] ( 2, 1.00) int -> ecx "field V16.lo (fldOffset=0x0)" P-INDEP
-; V35 rat3 [V35,T10] ( 2, 1.00) int -> edx "field V16.hi (fldOffset=0x4)" P-INDEP
-; V36 rat4 [V36,T11] ( 2, 0.00) int -> ecx "field V18.lo (fldOffset=0x0)" P-INDEP
-; V37 rat5 [V37,T12] ( 2, 0.00) int -> edx "field V18.hi (fldOffset=0x4)" P-INDEP
+; V16 tmp8 [V16 ] ( 2, 2 ) int -> [ebp-0x14] do-not-enreg[X] addr-exposed "field V05._flags (fldOffset=0x0)" P-DEP
+; V17 tmp9 [V17 ] ( 2, 2 ) int -> [ebp-0x10] do-not-enreg[X] addr-exposed "field V05._hi32 (fldOffset=0x4)" P-DEP
+; V18 tmp10 [V18 ] ( 2, 2 ) long -> [ebp-0x0C] do-not-enreg[X] addr-exposed "field V05._lo64 (fldOffset=0x8)" P-DEP
+; V19 tmp11 [V19 ] ( 2, 2 ) int -> [ebp-0x24] do-not-enreg[X] addr-exposed "field V06._flags (fldOffset=0x0)" P-DEP
+; V20 tmp12 [V20 ] ( 2, 2 ) int -> [ebp-0x20] do-not-enreg[X] addr-exposed "field V06._hi32 (fldOffset=0x4)" P-DEP
+; V21 tmp13 [V21 ] ( 2, 2 ) long -> [ebp-0x1C] do-not-enreg[X] addr-exposed "field V06._lo64 (fldOffset=0x8)" P-DEP
+; V22 tmp14 [V22 ] ( 4, 3.50) int -> [ebp-0x34] do-not-enreg[X] addr-exposed "field V09._flags (fldOffset=0x0)" P-DEP
+; V23 tmp15 [V23 ] ( 4, 3.50) int -> [ebp-0x30] do-not-enreg[X] addr-exposed "field V09._hi32 (fldOffset=0x4)" P-DEP
+; V24 tmp16 [V24 ] ( 6, 4.00) long -> [ebp-0x2C] do-not-enreg[X] addr-exposed "field V09._lo64 (fldOffset=0x8)" P-DEP
+; V25 tmp17 [V25 ] ( 4, 3.50) int -> [ebp-0x44] do-not-enreg[X] addr-exposed "field V10._flags (fldOffset=0x0)" P-DEP
+; V26 tmp18 [V26 ] ( 3, 4.00) int -> [ebp-0x40] do-not-enreg[X] addr-exposed "field V10._hi32 (fldOffset=0x4)" P-DEP
+; V27 tmp19 [V27 ] ( 4, 5.00) long -> [ebp-0x3C] do-not-enreg[X] addr-exposed "field V10._lo64 (fldOffset=0x8)" P-DEP
+; V28 tmp20 [V28,T01] ( 3, 6 ) ref -> eax single-def "argument with side effect"
+; V29 tmp21 [V29,T03] ( 2, 4 ) ref -> edx single-def "argument with side effect"
+; V30 rat0 [V30,T04] ( 2, 2 ) int -> ecx "field V12.lo (fldOffset=0x0)" P-INDEP
+; V31 rat1 [V31,T05] ( 2, 2 ) int -> edx "field V12.hi (fldOffset=0x4)" P-INDEP
+; V32 rat2 [V32,T08] ( 2, 1.00) int -> ecx "field V13.lo (fldOffset=0x0)" P-INDEP
+; V33 rat3 [V33,T09] ( 2, 1.00) int -> edx "field V13.hi (fldOffset=0x4)" P-INDEP
+; V34 rat4 [V34,T10] ( 2, 0.00) int -> ecx "field V15.lo (fldOffset=0x0)" P-INDEP
+; V35 rat5 [V35,T11] ( 2, 0.00) int -> edx "field V15.hi (fldOffset=0x4)" P-INDEP
;
; Lcl frame size = 64
@@ -57,9 +55,9 @@ G_M13170_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
vxorps xmm4, xmm4, xmm4
vmovdqu ymmword ptr [ebp-0x24], ymm4
;; size=16 bbWeight=1 PerfScore 4.83
-G_M13170_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M13170_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E ; Program
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[eax]
mov esi, eax
; gcrRegs +[esi]
@@ -86,19 +84,19 @@ G_M13170_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov eax, dword ptr [eax+0x40]
call [eax+0x0C]<unknown method>
; gcrRegs -[ecx edx esi] +[eax]
+ mov edx, eax
+ ; gcrRegs +[edx]
+ mov ecx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOF_EXCEPTION
+ ; gcrRegs -[edx]
mov esi, eax
; gcrRegs +[esi]
- test esi, esi
- jne G_M13170_IG10
- ;; size=73 bbWeight=1 PerfScore 22.00
-G_M13170_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax]
push 3
lea edx, [ebp-0x14]
mov ecx, gword ptr [esi+0x04]
; gcrRegs +[ecx]
call [esi+0x0C]<unknown method>
- ; gcrRegs -[ecx]
+ ; gcrRegs -[eax ecx]
push 3
lea edx, [ebp-0x24]
mov ecx, gword ptr [esi+0x04]
@@ -114,89 +112,72 @@ G_M13170_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
or ecx, dword ptr [ebp-0x40]
or edx, 0
or ecx, edx
- je SHORT G_M13170_IG08
- ;; size=58 bbWeight=1 PerfScore 26.50
-G_M13170_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ je SHORT G_M13170_IG07
+ ;; size=135 bbWeight=1 PerfScore 48.75
+G_M13170_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [ebp-0x2C]
mov edx, dword ptr [ebp-0x28]
or ecx, dword ptr [ebp-0x30]
or edx, 0
or ecx, edx
- je SHORT G_M13170_IG14
+ je SHORT G_M13170_IG11
mov eax, dword ptr [ebp-0x34]
sar eax, 31
mov ecx, dword ptr [ebp-0x44]
sar ecx, 31
sub eax, ecx
- jne SHORT G_M13170_IG15
+ jne SHORT G_M13170_IG12
lea ecx, [ebp-0x34]
lea edx, [ebp-0x44]
call [<unknown method>]
;; size=44 bbWeight=0.50 PerfScore 6.87
-G_M13170_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M13170_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
test eax, eax
- jne SHORT G_M13170_IG12
+ jne SHORT G_M13170_IG09
;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M13170_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M13170_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, 100
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M13170_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M13170_IG06: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x04]
pop esi
pop ebp
ret
;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M13170_IG08: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M13170_IG07: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
mov ecx, dword ptr [ebp-0x2C]
mov edx, dword ptr [ebp-0x28]
or ecx, dword ptr [ebp-0x30]
or edx, 0
or ecx, edx
- je SHORT G_M13170_IG06
+ je SHORT G_M13170_IG05
;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M13170_IG09: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M13170_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ebp-0x34]
sar eax, 31
or eax, 1
- jmp SHORT G_M13170_IG05
+ jmp SHORT G_M13170_IG04
;; size=11 bbWeight=0 PerfScore 0.00
-G_M13170_IG10: ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs +[eax esi]
- mov ecx, 0xD1FFAB1E ; <unknown class>
- cmp dword ptr [esi], ecx
- je G_M13170_IG03
- ;; size=13 bbWeight=0.25 PerfScore 1.06
-G_M13170_IG11: ; bbWeight=0.12, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi]
- mov edx, eax
- ; gcrRegs +[edx]
- call CORINFO_HELP_CHKCASTANY
- ; gcrRegs -[edx]
- mov esi, eax
- ; gcrRegs +[esi]
- jmp G_M13170_IG03
- ;; size=14 bbWeight=0.12 PerfScore 0.44
-G_M13170_IG12: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax esi]
+G_M13170_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M13170_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M13170_IG10: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x04]
pop esi
pop ebp
ret
;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M13170_IG14: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M13170_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
mov eax, dword ptr [ebp-0x44]
sar eax, 31
or eax, 1
neg eax
- jmp SHORT G_M13170_IG05
+ jmp SHORT G_M13170_IG04
;; size=13 bbWeight=0 PerfScore 0.00
-G_M13170_IG15: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M13170_IG05
+G_M13170_IG12: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M13170_IG04
;; size=2 bbWeight=0 PerfScore 0.00
-; Total bytes of code 286, prolog size 16, PerfScore 65.08, instruction count 96, allocated bytes for code 286 (MethodHash=eaa4cc8d) for method Program:TestEntryPoint():int (FullOpts)
+; Total bytes of code 263, prolog size 16, PerfScore 63.83, instruction count 90, allocated bytes for code 263 (MethodHash=eaa4cc8d) for method Program:TestEntryPoint():int (FullOpts)
; ============================================================
libraries.crossgen2.windows.x86.checked.mch
-10 (-35.71%) : 20736.dasm - System.Threading.PreAllocatedOverlapped:AddRef():ubyte:this (FullOpts)
@@ -9,32 +9,26 @@
; 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 -> ebx this class-hnd single-def <System.Threading.PreAllocatedOverlapped>
+; V00 this [V00,T00] ( 4, 4 ) ref -> ecx this class-hnd single-def <System.Threading.PreAllocatedOverlapped>
;
; Lcl frame size = 0
G_M14591_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebx
- mov ebx, ecx
- ; gcrRegs +[ebx]
- ;; size=3 bbWeight=1 PerfScore 1.25
-G_M14591_IG02: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
- call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
- ; byrRegs +[eax]
- ; gcr arg pop 0
- cmp byte ptr [ebx], bl
- lea ecx, bword ptr [ebx+0x0C]
+ ;; size=0 bbWeight=1 PerfScore 0.00
+G_M14591_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+ ; gcrRegs +[ecx]
+ cmp byte ptr [ecx], cl
+ add ecx, 12
+ ; gcrRegs -[ecx]
; byrRegs +[ecx]
mov edx, dword ptr [(reloc)] ; <unknown class>
call [System.Threading.DeferredDisposableLifetime`1[System.__Canon]:AddRef():ubyte:this]
- ; gcrRegs -[ebx]
- ; byrRegs -[eax ecx]
- ;; size=23 bbWeight=1 PerfScore 11.50
+ ; byrRegs -[ecx]
+ ;; size=17 bbWeight=1 PerfScore 8.25
G_M14591_IG03: ; bbWeight=1, epilog, nogc, extend
- pop ebx
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 28, prolog size 1, PerfScore 14.25, instruction count 9, allocated bytes for code 28 (MethodHash=2830c700) for method System.Threading.PreAllocatedOverlapped:AddRef():ubyte:this (FullOpts)
+; Total bytes of code 18, prolog size 0, PerfScore 9.25, instruction count 5, allocated bytes for code 18 (MethodHash=2830c700) for method System.Threading.PreAllocatedOverlapped:AddRef():ubyte:this (FullOpts)
; ============================================================
-4 (-3.67%) : 134540.dasm - Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
@@ -14,7 +14,7 @@
;* V02 tmp0 [V02 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
;* V03 tmp1 [V03,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V04 tmp2 [V04,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V05 cse0 [V05,T03] ( 4, 3 ) byref -> eax "CSE - aggressive"
+; V05 cse0 [V05,T03] ( 4, 3 ) int -> ecx "CSE - aggressive"
; V06 cse1 [V06,T02] ( 5, 3.50) int -> edx "CSE - aggressive"
;
; Lcl frame size = 0
@@ -28,28 +28,27 @@ G_M44169_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
mov esi, edx
;; size=9 bbWeight=1 PerfScore 3.75
G_M44169_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
+ call [CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR]
; byrRegs +[eax]
movzx ecx, word ptr [eax]
movzx edx, di
cmp ecx, edx
je SHORT G_M44169_IG04
;; size=16 bbWeight=1 PerfScore 6.50
-G_M44169_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
+G_M44169_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ ; byrRegs -[eax]
cmp edx, 47
jne SHORT G_M44169_IG07
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M44169_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
- movzx ecx, word ptr [eax]
- movzx edi, si
- cmp ecx, edi
+G_M44169_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ movzx eax, si
+ cmp ecx, eax
je SHORT G_M44169_IG05
- movzx ecx, si
- cmp ecx, 47
+ movzx eax, si
+ cmp eax, 47
jne SHORT G_M44169_IG07
- ;; size=18 bbWeight=0.50 PerfScore 2.50
+ ;; size=15 bbWeight=0.50 PerfScore 1.50
G_M44169_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; byrRegs -[eax]
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M44169_IG06: ; bbWeight=0.50, epilog, nogc, extend
@@ -58,20 +57,18 @@ G_M44169_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M44169_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, gcvars, byref, isz
- ; byrRegs +[eax]
- cmp word ptr [eax], 47
+G_M44169_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ cmp ecx, 47
je SHORT G_M44169_IG09
mov ecx, edx
call [<unknown method>]
- ; byrRegs -[eax]
mov edi, eax
movzx ecx, si
call [<unknown method>]
cmp edi, eax
sete al
movzx eax, al
- ;; size=33 bbWeight=0.50 PerfScore 6.12
+ ;; size=32 bbWeight=0.50 PerfScore 4.75
G_M44169_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop esi
pop edi
@@ -91,6 +88,6 @@ G_M44169_IG10: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=4 bbWeight=0.50 PerfScore 1.25
-; Total bytes of code 109, prolog size 5, PerfScore 24.25, instruction count 47, allocated bytes for code 109 (MethodHash=17bc5376) for method Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
+; Total bytes of code 105, prolog size 5, PerfScore 21.88, instruction count 46, allocated bytes for code 105 (MethodHash=17bc5376) for method Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
; ============================================================
-11 (-2.75%) : 6551.dasm - System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)
@@ -9,25 +9,25 @@
; 0 inlinees with PGO data; 1 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T13] ( 3, 2.50) int -> edi
-; V01 loc1 [V01,T11] ( 3, 3 ) int -> ebx
+; V00 loc0 [V00,T07] ( 3, 2.50) int -> edi
+; V01 loc1 [V01,T05] ( 3, 3 ) int -> ebx
; V02 loc2 [V02,T04] ( 5, 4 ) int -> ecx
-; V03 loc3 [V03,T14] ( 3, 2.50) short -> ebx
-; V04 tmp0 [V04,T06] ( 2, 4 ) int -> ebx "value for stsfld with typeinit"
-; V05 tmp1 [V05,T07] ( 2, 4 ) int -> ecx "value for stsfld with typeinit"
-; V06 tmp2 [V06,T08] ( 2, 4 ) int -> eax "value for stsfld with typeinit"
-; V07 tmp3 [V07,T09] ( 2, 4 ) int -> eax "value for stsfld with typeinit"
-; V08 tmp4 [V08,T05] ( 3, 4 ) int -> edx "value for stsfld with typeinit"
-; V09 tmp5 [V09,T10] ( 2, 4 ) int -> edx "value for stsfld with typeinit"
-; V10 tmp6 [V10 ] ( 2, 2 ) ubyte -> [ebp-0x10] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V11 tmp7 [V11 ] ( 2, 2 ) ubyte -> [ebp-0x14] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V12 tmp8 [V12,T15] ( 3, 2.50) int -> edi "Inline return value spill temp"
-; V13 tmp9 [V13,T16] ( 4, 2 ) int -> edx "Inline return value spill temp"
-; V14 tmp10 [V14,T03] ( 3, 5 ) int -> eax "Inlining Arg"
-; V15 tmp11 [V15,T12] ( 3, 3 ) int -> eax "Inline return value spill temp"
-; V16 tmp12 [V16,T01] ( 3, 6 ) int -> eax "Inlining Arg"
-; V17 tmp13 [V17,T02] ( 3, 6 ) int -> edx "Inlining Arg"
-; V18 cse0 [V18,T00] ( 19, 17 ) byref -> esi "CSE - aggressive"
+; V03 loc3 [V03,T08] ( 3, 2.50) short -> ebx
+; V04 tmp0 [V04,T14] ( 2, 2 ) ubyte -> ebx "Inline return value spill temp"
+; V05 tmp1 [V05 ] ( 2, 2 ) ubyte -> [ebp-0x10] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V06 tmp2 [V06,T15] ( 2, 2 ) ubyte -> ecx "Inline return value spill temp"
+; V07 tmp3 [V07 ] ( 2, 2 ) ubyte -> [ebp-0x14] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V08 tmp4 [V08,T09] ( 3, 2.50) int -> edi "Inline return value spill temp"
+; V09 tmp5 [V09,T12] ( 4, 2 ) int -> edx "Inline return value spill temp"
+; V10 tmp6 [V10,T03] ( 3, 5 ) int -> eax "Inlining Arg"
+; V11 tmp7 [V11,T13] ( 3, 2 ) int -> edx "Inline return value spill temp"
+; V12 tmp8 [V12,T06] ( 3, 3 ) int -> eax "Inline return value spill temp"
+; V13 tmp9 [V13,T01] ( 3, 6 ) int -> eax "Inlining Arg"
+; V14 tmp10 [V14,T02] ( 3, 6 ) int -> edx "Inlining Arg"
+; V15 tmp11 [V15,T16] ( 2, 2 ) int -> edx "Inline return value spill temp"
+; V16 cse0 [V16,T10] ( 3, 2.50) int -> eax "CSE - moderate"
+; V17 cse1 [V17,T11] ( 3, 2.50) int -> eax "CSE - moderate"
+; V18 cse2 [V18,T00] ( 17, 16 ) byref -> esi "CSE - aggressive"
;
; Lcl frame size = 8
@@ -50,7 +50,7 @@ G_M39812_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov edx, 1
test eax, eax
cmove ebx, edx
- call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
+ call [CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR]
; byrRegs +[eax]
mov esi, eax
; byrRegs +[esi]
@@ -99,23 +99,23 @@ G_M39812_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
call [<unknown method>]
; gcrRegs -[ecx]
mov dword ptr [esi+0x0BA4], eax
- call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
+ call [CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR]
; byrRegs +[eax]
mov ecx, dword ptr [eax+0x0A90]
mov eax, ecx
; byrRegs -[eax]
imul eax, edi
mov word ptr [esi+0x0BA8], ax
- cmp word ptr [esi+0x0BA8], 0x7FFF
- jg SHORT G_M39812_IG04
- ;; size=214 bbWeight=1 PerfScore 71.50
-G_M39812_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
movsx eax, word ptr [esi+0x0BA8]
+ cmp eax, 0x7FFF
+ jg SHORT G_M39812_IG04
+ ;; size=217 bbWeight=1 PerfScore 72.75
+G_M39812_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
cdq
idiv edx:eax, ecx
cmp eax, edi
je SHORT G_M39812_IG05
- ;; size=14 bbWeight=0.50 PerfScore 15.38
+ ;; size=7 bbWeight=0.50 PerfScore 13.38
G_M39812_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
mov word ptr [esi+0x0BA8], 0x7FFF
;; size=9 bbWeight=0.50 PerfScore 0.50
@@ -135,12 +135,11 @@ G_M39812_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e
jg SHORT G_M39812_IG07
;; size=51 bbWeight=1 PerfScore 14.00
G_M39812_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
- movsx eax, word ptr [esi+0x0BAA]
cdq
idiv edx:eax, ecx
cmp eax, edi
je SHORT G_M39812_IG08
- ;; size=14 bbWeight=0.50 PerfScore 15.38
+ ;; size=7 bbWeight=0.50 PerfScore 13.38
G_M39812_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
mov word ptr [esi+0x0BAA], bx
;; size=7 bbWeight=0.50 PerfScore 0.50
@@ -184,6 +183,6 @@ G_M39812_IG14: ; bbWeight=1, epilog, nogc, extend
ret
;; size=8 bbWeight=1 PerfScore 3.50
-; Total bytes of code 400, prolog size 9, PerfScore 138.75, instruction count 107, allocated bytes for code 400 (MethodHash=8fd9647b) for method System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)
+; Total bytes of code 389, prolog size 9, PerfScore 136.00, instruction count 106, allocated bytes for code 389 (MethodHash=8fd9647b) for method System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)
; ============================================================
-1 (-1.32%) : 137495.dasm - Microsoft.CodeAnalysis.RuleSetInclude:g_resolveIncludePath|80(System.String,System.String):System.String (FullOpts)
@@ -13,7 +13,7 @@
; V01 arg1 [V01,T01] ( 4, 3.50) ref -> edi class-hnd single-def <System.String>
; V02 loc0 [V02,T02] ( 4, 3.50) ref -> ebx class-hnd <System.String>
; V03 tmp0 [V03,T03] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
-; V04 cse0 [V04,T04] ( 3, 1.50) byref -> eax "CSE - moderate"
+; V04 cse0 [V04,T04] ( 3, 1.50) int -> ecx "CSE - moderate"
;
; Lcl frame size = 0
@@ -42,11 +42,11 @@ G_M45118_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
;; size=16 bbWeight=1 PerfScore 5.00
G_M45118_IG03: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
- call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
+ call [CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR]
; byrRegs +[eax]
- cmp word ptr [eax], 47
- jne SHORT G_M45118_IG04
movzx ecx, word ptr [eax]
+ cmp ecx, 47
+ jne SHORT G_M45118_IG04
push ecx
mov ecx, esi
; gcrRegs +[ecx]
@@ -63,7 +63,7 @@ G_M45118_IG03: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
; gcrRegs -[ecx edx edi]
mov ebx, eax
; gcrRegs +[ebx]
- ;; size=43 bbWeight=0.50 PerfScore 10.12
+ ;; size=42 bbWeight=0.50 PerfScore 8.75
G_M45118_IG04: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
mov eax, ebx
@@ -77,6 +77,6 @@ G_M45118_IG05: ; bbWeight=1, epilog, nogc, extend
ret
;; size=5 bbWeight=1 PerfScore 3.00
-; Total bytes of code 76, prolog size 6, PerfScore 23.12, instruction count 32, allocated bytes for code 76 (MethodHash=eed24fc1) for method Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 75, prolog size 6, PerfScore 21.75, instruction count 32, allocated bytes for code 75 (MethodHash=eed24fc1) for method Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
; ============================================================
+0 (0.00%) : 26823.dasm - .$Array:.cctor() (FullOpts)
@@ -8,7 +8,6 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 tmp0 [V00,T00] ( 2, 4 ) int -> esi "value for stsfld with typeinit"
;
; Lcl frame size = 0
@@ -16,11 +15,14 @@ G_M35347_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push esi
;; size=1 bbWeight=1 PerfScore 1.00
G_M35347_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- call [<unknown method>]
- mov esi, eax
- call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
+ call [CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR]
; byrRegs +[eax]
- mov dword ptr [eax+0x0DF8], esi
+ mov esi, eax
+ ; byrRegs +[esi]
+ call [<unknown method>]
+ ; byrRegs -[eax]
+ ; gcr arg pop 0
+ mov dword ptr [esi+0x0DF8], eax
;; size=20 bbWeight=1 PerfScore 7.25
G_M35347_IG03: ; bbWeight=1, epilog, nogc, extend
pop esi
+0 (0.00%) : 22208.dasm - System.Globalization.CalendarData:SystemSupportsTaiwaneseCalendar():ubyte (FullOpts)
@@ -10,7 +10,6 @@
; Final local variable assignments
;
;* V00 tmp0 [V00 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V01 cse0 [V01,T00] ( 2, 2 ) byref -> eax "CSE - aggressive"
;
; Lcl frame size = 0
@@ -19,22 +18,22 @@ G_M37466_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
mov ebp, esp
;; size=3 bbWeight=1 PerfScore 1.25
G_M37466_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
+ call [CORINFO_HELP_READYTORUN_THREADSTATIC_BASE_NOCTOR]
; byrRegs +[eax]
cmp byte ptr [eax+0x0B18], 0
- jne SHORT G_M37466_IG05
+ je SHORT G_M37466_IG05
;; size=15 bbWeight=1 PerfScore 7.00
G_M37466_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; byrRegs -[eax]
- mov eax, 1
- ;; size=5 bbWeight=0.50 PerfScore 0.12
+ call [System.Globalization.CalendarData:NlsSystemSupportsTaiwaneseCalendar():ubyte]
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
G_M37466_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
G_M37466_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- call [System.Globalization.CalendarData:NlsSystemSupportsTaiwaneseCalendar():ubyte]
- ;; size=6 bbWeight=0.50 PerfScore 1.50
+ mov eax, 1
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
G_M37466_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
libraries.pmi.windows.x86.checked.mch
-26 (-81.25%) : 5269.dasm - System.Threading.WindowsThreadPool:get_ThreadCount():int (FullOpts)
@@ -12,23 +12,13 @@
G_M60266_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
-G_M60266_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [D1FFAB1EH], 1 ; global ptr
- je SHORT G_M60266_IG05
- ;; size=9 bbWeight=1 PerfScore 4.00
-G_M60266_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M60266_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, dword ptr [D1FFAB1EH] ; static handle
;; size=5 bbWeight=1 PerfScore 2.00
-G_M60266_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M60266_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00
-G_M60266_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- mov ecx, 0xD1FFAB1E
- mov edx, 980
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- jmp SHORT G_M60266_IG03
- ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 32, prolog size 0, PerfScore 7.00, instruction count 8, allocated bytes for code 32 (MethodHash=5b0e1495) for method System.Threading.WindowsThreadPool:get_ThreadCount():int (FullOpts)
+; Total bytes of code 6, prolog size 0, PerfScore 3.00, instruction count 2, allocated bytes for code 6 (MethodHash=5b0e1495) for method System.Threading.WindowsThreadPool:get_ThreadCount():int (FullOpts)
; ============================================================
-26 (-81.25%) : 5758.dasm - System.Threading.Tasks.AwaitTaskContinuation:GetInvokeActionCallback():System.Threading.ContextCallback (FullOpts)
@@ -12,25 +12,14 @@
G_M32434_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
-G_M32434_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [D1FFAB1EH], 1 ; global ptr
- je SHORT G_M32434_IG05
- ;; size=9 bbWeight=1 PerfScore 4.00
-G_M32434_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M32434_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
;; size=5 bbWeight=1 PerfScore 2.00
-G_M32434_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M32434_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00
-G_M32434_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- mov ecx, 0xD1FFAB1E
- mov edx, 0x43A
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- jmp SHORT G_M32434_IG03
- ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 32, prolog size 0, PerfScore 7.00, instruction count 8, allocated bytes for code 32 (MethodHash=945f814d) for method System.Threading.Tasks.AwaitTaskContinuation:GetInvokeActionCallback():System.Threading.ContextCallback (FullOpts)
+; Total bytes of code 6, prolog size 0, PerfScore 3.00, instruction count 2, allocated bytes for code 6 (MethodHash=945f814d) for method System.Threading.Tasks.AwaitTaskContinuation:GetInvokeActionCallback():System.Threading.ContextCallback (FullOpts)
; ============================================================
-26 (-74.29%) : 5275.dasm - System.Threading.WindowsThreadPool+ThreadCountHolder:.ctor():this (FullOpts)
@@ -15,25 +15,15 @@
G_M38881_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
-G_M38881_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [D1FFAB1EH], 1 ; global ptr
- je SHORT G_M38881_IG05
- ;; size=9 bbWeight=1 PerfScore 4.00
-G_M38881_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, 0xD1FFAB1E ; static handle
+G_M38881_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov eax, 0xD1FFAB1E ; static handle
lock
- inc dword ptr [ecx]
+ inc dword ptr [eax]
;; size=8 bbWeight=1 PerfScore 16.25
-G_M38881_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M38881_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00
-G_M38881_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- mov ecx, 0xD1FFAB1E
- mov edx, 980
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- jmp SHORT G_M38881_IG03
- ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 35, prolog size 0, PerfScore 21.25, instruction count 10, allocated bytes for code 35 (MethodHash=a0f7681e) for method System.Threading.WindowsThreadPool+ThreadCountHolder:.ctor():this (FullOpts)
+; Total bytes of code 9, prolog size 0, PerfScore 17.25, instruction count 4, allocated bytes for code 9 (MethodHash=a0f7681e) for method System.Threading.WindowsThreadPool+ThreadCountHolder:.ctor():this (FullOpts)
; ============================================================
-20 (-8.81%) : 2431.dasm - System.ReadOnlyMemory1[short]:get_Span():System.ReadOnlySpan1[short]:this (FullOpts)
@@ -58,7 +58,7 @@ G_M12719_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {e
mov gword ptr [ebp-0x1C], ecx
; GC ptr vars +{V04}
test ecx, ecx
- je G_M12719_IG08
+ je G_M12719_IG07
;; size=17 bbWeight=1 PerfScore 4.75
G_M12719_IG03: ; bbWeight=0.50, gcVars=00000004 {V04}, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, gcvars, byref, isz
; byrRegs -[ebx]
@@ -69,7 +69,7 @@ G_M12719_IG03: ; bbWeight=0.50, gcVars=00000004 {V04}, gcrefRegs=00000002
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; <unknown class>
; gcrRegs -[ecx]
- call CORINFO_HELP_ISINSTANCEOFARRAY
+ call CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[edx] +[eax]
test eax, eax
jne SHORT G_M12719_IG04
@@ -91,31 +91,22 @@ G_M12719_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0
; byrRegs -[edx]
mov ebx, edx
; gcrRegs -[ebx]
- jmp SHORT G_M12719_IG07
+ jmp SHORT G_M12719_IG06
;; size=15 bbWeight=0.50 PerfScore 3.00
-G_M12719_IG05: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref, isz
+G_M12719_IG05: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref
; gcrRegs +[ecx]
; byrRegs -[eax]
mov edx, ecx
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; <unknown class>
; gcrRegs -[ecx]
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx] +[eax]
- test eax, eax
- jne SHORT G_M12719_IG06
- mov ecx, 0xD1FFAB1E
- ; gcrRegs +[ecx]
- mov edx, 0xD1FFAB1E
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[eax ecx edx]
- ;; size=32 bbWeight=0.50 PerfScore 3.12
-G_M12719_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
lea edx, [ebp-0x18]
mov ecx, gword ptr [ebp-0x1C]
; gcrRegs +[ecx]
mov eax, dword ptr [ecx]
+ ; gcrRegs -[eax]
mov eax, dword ptr [eax+0x2C]
; GC ptr vars -{V04}
call [eax+0x14]<unknown method>
@@ -128,16 +119,16 @@ G_M12719_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0
mov eax, ebx
mov ebx, ecx
; byrRegs -[ebx]
- ;; size=26 bbWeight=0.50 PerfScore 5.62
-G_M12719_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C1 {eax esi edi}, byref, isz
+ ;; size=38 bbWeight=0.50 PerfScore 6.38
+G_M12719_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C1 {eax esi edi}, byref, isz
mov ecx, dword ptr [esi+0x04]
and ecx, 0xD1FFAB1E
mov edx, dword ptr [esi+0x08]
cmp ecx, ebx
- ja SHORT G_M12719_IG12
+ ja SHORT G_M12719_IG11
sub ebx, ecx
cmp ebx, edx
- jb SHORT G_M12719_IG12
+ jb SHORT G_M12719_IG11
lea eax, bword ptr [eax+2*ecx]
mov ebx, eax
; byrRegs +[ebx]
@@ -146,12 +137,12 @@ G_M12719_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C1
mov eax, esi
; byrRegs -[eax]
;; size=31 bbWeight=0.50 PerfScore 4.12
-G_M12719_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+G_M12719_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
mov dword ptr [ebp-0x10], eax
test eax, eax
- jge SHORT G_M12719_IG10
+ jge SHORT G_M12719_IG09
;; size=7 bbWeight=1 PerfScore 2.25
-G_M12719_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref
+G_M12719_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -159,12 +150,12 @@ G_M12719_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=16 bbWeight=0.50 PerfScore 1.75
-G_M12719_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref
+G_M12719_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref
mov eax, dword ptr [ebp-0x10]
mov bword ptr [edi], ebx
mov dword ptr [edi+0x04], eax
;; size=8 bbWeight=1 PerfScore 3.00
-G_M12719_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M12719_IG10: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -172,12 +163,12 @@ G_M12719_IG11: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=1 PerfScore 3.50
-G_M12719_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M12719_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[ebx edi]
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 227, prolog size 14, PerfScore 43.50, instruction count 80, allocated bytes for code 227 (MethodHash=8845ce50) for method System.ReadOnlyMemory`1[short]:get_Span():System.ReadOnlySpan`1[short]:this (FullOpts)
+; Total bytes of code 207, prolog size 14, PerfScore 41.12, instruction count 75, allocated bytes for code 207 (MethodHash=8845ce50) for method System.ReadOnlyMemory`1[short]:get_Span():System.ReadOnlySpan`1[short]:this (FullOpts)
; ============================================================
-20 (-8.81%) : 1724.dasm - System.Memory1[short]:get_Span():System.Span1[short]:this (FullOpts)
@@ -58,7 +58,7 @@ G_M44847_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {e
mov gword ptr [ebp-0x1C], ecx
; GC ptr vars +{V04}
test ecx, ecx
- je G_M44847_IG08
+ je G_M44847_IG07
;; size=17 bbWeight=1 PerfScore 4.75
G_M44847_IG03: ; bbWeight=0.50, gcVars=00000004 {V04}, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, gcvars, byref, isz
; byrRegs -[ebx]
@@ -69,7 +69,7 @@ G_M44847_IG03: ; bbWeight=0.50, gcVars=00000004 {V04}, gcrefRegs=00000002
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; <unknown class>
; gcrRegs -[ecx]
- call CORINFO_HELP_ISINSTANCEOFARRAY
+ call CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[edx] +[eax]
test eax, eax
jne SHORT G_M44847_IG04
@@ -91,31 +91,22 @@ G_M44847_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0
; byrRegs -[edx]
mov ebx, edx
; gcrRegs -[ebx]
- jmp SHORT G_M44847_IG07
+ jmp SHORT G_M44847_IG06
;; size=15 bbWeight=0.50 PerfScore 3.00
-G_M44847_IG05: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref, isz
+G_M44847_IG05: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref
; gcrRegs +[ecx]
; byrRegs -[eax]
mov edx, ecx
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; <unknown class>
; gcrRegs -[ecx]
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx] +[eax]
- test eax, eax
- jne SHORT G_M44847_IG06
- mov ecx, 0xD1FFAB1E
- ; gcrRegs +[ecx]
- mov edx, 0xD1FFAB1E
- ; gcrRegs +[edx]
- call [<unknown method>]
- ; gcrRegs -[eax ecx edx]
- ;; size=32 bbWeight=0.50 PerfScore 3.12
-G_M44847_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
lea edx, [ebp-0x18]
mov ecx, gword ptr [ebp-0x1C]
; gcrRegs +[ecx]
mov eax, dword ptr [ecx]
+ ; gcrRegs -[eax]
mov eax, dword ptr [eax+0x2C]
; GC ptr vars -{V04}
call [eax+0x14]<unknown method>
@@ -128,16 +119,16 @@ G_M44847_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0
mov eax, ebx
mov ebx, ecx
; byrRegs -[ebx]
- ;; size=26 bbWeight=0.50 PerfScore 5.62
-G_M44847_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C1 {eax esi edi}, byref, isz
+ ;; size=38 bbWeight=0.50 PerfScore 6.38
+G_M44847_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C1 {eax esi edi}, byref, isz
mov ecx, dword ptr [esi+0x04]
and ecx, 0xD1FFAB1E
mov edx, dword ptr [esi+0x08]
cmp ecx, ebx
- ja SHORT G_M44847_IG12
+ ja SHORT G_M44847_IG11
sub ebx, ecx
cmp ebx, edx
- jb SHORT G_M44847_IG12
+ jb SHORT G_M44847_IG11
lea eax, bword ptr [eax+2*ecx]
mov ebx, eax
; byrRegs +[ebx]
@@ -146,12 +137,12 @@ G_M44847_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C1
mov eax, esi
; byrRegs -[eax]
;; size=31 bbWeight=0.50 PerfScore 4.12
-G_M44847_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
+G_M44847_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref, isz
mov dword ptr [ebp-0x10], eax
test eax, eax
- jge SHORT G_M44847_IG10
+ jge SHORT G_M44847_IG09
;; size=7 bbWeight=1 PerfScore 2.25
-G_M44847_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref
+G_M44847_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E
@@ -159,12 +150,12 @@ G_M44847_IG09: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000088
call [<unknown method>]
; gcrRegs -[ecx edx]
;; size=16 bbWeight=0.50 PerfScore 1.75
-G_M44847_IG10: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref
+G_M44847_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000088 {ebx edi}, byref
mov eax, dword ptr [ebp-0x10]
mov bword ptr [edi], ebx
mov dword ptr [edi+0x04], eax
;; size=8 bbWeight=1 PerfScore 3.00
-G_M44847_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M44847_IG10: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -172,12 +163,12 @@ G_M44847_IG11: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=1 PerfScore 3.50
-G_M44847_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M44847_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; byrRegs -[ebx edi]
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 227, prolog size 14, PerfScore 43.50, instruction count 80, allocated bytes for code 227 (MethodHash=3e9b50d0) for method System.Memory`1[short]:get_Span():System.Span`1[short]:this (FullOpts)
+; Total bytes of code 207, prolog size 14, PerfScore 41.12, instruction count 75, allocated bytes for code 207 (MethodHash=3e9b50d0) for method System.Memory`1[short]:get_Span():System.Span`1[short]:this (FullOpts)
; ============================================================
-14 (-7.11%) : 5674.dasm - System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this (FullOpts)
@@ -8,20 +8,20 @@
; 0 inlinees with PGO data; 4 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 7, 4.50) ref -> edi this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[ubyte]>
+; V00 this [V00,T01] ( 6, 4 ) ref -> edi this class-hnd single-def <System.Threading.Tasks.Task+CancellationPromise`1[ubyte]>
; V01 arg1 [V01,T00] ( 8, 6 ) ref -> esi class-hnd single-def <System.Threading.Tasks.Task>
;* V02 loc0 [V02 ] ( 0, 0 ) ubyte -> zero-ref
-; V03 loc1 [V03,T02] ( 5, 2.50) ref -> eax class-hnd single-def <System.Threading.Tasks.Task`1[ubyte]>
-; V04 loc2 [V04,T03] ( 4, 2.50) ubyte -> eax
-; V05 loc3 [V05,T04] ( 3, 2.50) int -> eax
+; V03 loc1 [V03,T04] ( 4, 2 ) ref -> eax class-hnd single-def <System.Threading.Tasks.Task`1[ubyte]>
+; V04 loc2 [V04,T02] ( 4, 2.50) ubyte -> eax
+; V05 loc3 [V05,T03] ( 3, 2.50) int -> eax
;* V06 tmp0 [V06 ] ( 0, 0 ) struct ( 4) zero-ref "impAppendStmt" <System.Threading.CancellationToken>
-; V07 tmp1 [V07,T09] ( 3, 1.50) int -> eax
+; V07 tmp1 [V07,T10] ( 2, 1 ) int -> eax
;* V08 tmp2 [V08 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V09 tmp3 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp4 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V11 tmp5 [V11,T07] ( 3, 1.50) ref -> ecx class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
;* V12 tmp6 [V12 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
-; V13 tmp7 [V13,T10] ( 3, 1.50) ubyte -> edx "Inline return value spill temp"
+; V13 tmp7 [V13,T09] ( 3, 1.50) ubyte -> edx "Inline return value spill temp"
; V14 tmp8 [V14,T08] ( 3, 1.50) ref -> ecx "field V06._source (fldOffset=0x0)" P-INDEP
;* V15 tmp9 [V15 ] ( 0, 0 ) ref -> zero-ref single-def "field V12._source (fldOffset=0x0)" P-INDEP
; V16 tmp10 [V16,T05] ( 2, 2 ) ref -> edx single-def "argument with side effect"
@@ -88,7 +88,7 @@ G_M18509_IG08: ; bbWeight=0.50, gcrefRegs=000000C2 {ecx esi edi}, byrefRe
; gcrRegs +[ecx]
call [System.Threading.Tasks.Task:TrySetCanceled(System.Threading.CancellationToken,System.Object):ubyte:this]
; gcrRegs -[eax ecx edx]
- jmp SHORT G_M18509_IG14
+ jmp SHORT G_M18509_IG13
;; size=21 bbWeight=0.50 PerfScore 4.88
G_M18509_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi]
@@ -102,33 +102,23 @@ G_M18509_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
; gcrRegs +[ecx]
call [System.Threading.Tasks.Task:TrySetException(System.Object):ubyte:this]
; gcrRegs -[eax ecx edx]
- jmp SHORT G_M18509_IG14
+ jmp SHORT G_M18509_IG13
;; size=20 bbWeight=0.50 PerfScore 4.38
G_M18509_IG10: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi]
mov edx, esi
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; System.Threading.Tasks.Task`1[ubyte]
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx esi] +[eax]
- test eax, eax
- jne SHORT G_M18509_IG11
- mov ecx, edi
- ; gcrRegs +[ecx]
- call [System.Threading.Tasks.Task:TrySetResult():ubyte:this]
- ; gcrRegs -[eax ecx]
- jmp SHORT G_M18509_IG14
- ;; size=26 bbWeight=0.50 PerfScore 4.00
-G_M18509_IG11: ; bbWeight=0.50, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs +[eax]
mov ecx, dword ptr [eax+0x1C]
and ecx, 0xD1FFAB1E
cmp ecx, 0xD1FFAB1E
- jne SHORT G_M18509_IG12
+ jne SHORT G_M18509_IG11
movzx edx, byte ptr [eax+0x20]
- jmp SHORT G_M18509_IG13
- ;; size=23 bbWeight=0.50 PerfScore 3.75
-G_M18509_IG12: ; bbWeight=0.50, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M18509_IG12
+ ;; size=35 bbWeight=0.50 PerfScore 4.50
+G_M18509_IG11: ; bbWeight=0.50, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, byref
mov ecx, eax
; gcrRegs +[ecx]
mov edx, 1
@@ -136,29 +126,29 @@ G_M18509_IG12: ; bbWeight=0.50, gcrefRegs=00000081 {eax edi}, byrefRegs=0
; gcrRegs -[eax ecx]
mov edx, eax
;; size=15 bbWeight=0.50 PerfScore 1.88
-G_M18509_IG13: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M18509_IG12: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
mov ecx, edi
; gcrRegs +[ecx]
call [System.Threading.Tasks.Task`1[ubyte]:TrySetResult(ubyte):ubyte:this]
; gcrRegs -[ecx]
;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M18509_IG14: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+G_M18509_IG13: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
test eax, eax
- je SHORT G_M18509_IG16
+ je SHORT G_M18509_IG15
;; size=4 bbWeight=1 PerfScore 1.25
-G_M18509_IG15: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M18509_IG14: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
mov ecx, edi
; gcrRegs +[ecx]
call [System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:Cleanup():this]
; gcrRegs -[ecx edi]
;; size=8 bbWeight=0.50 PerfScore 1.62
-G_M18509_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M18509_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
pop esi
pop edi
pop ebp
ret
;; size=4 bbWeight=1 PerfScore 2.50
-; Total bytes of code 197, prolog size 5, PerfScore 45.25, instruction count 65, allocated bytes for code 197 (MethodHash=f8c0b7b2) for method System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this (FullOpts)
+; Total bytes of code 183, prolog size 5, PerfScore 42.00, instruction count 60, allocated bytes for code 183 (MethodHash=f8c0b7b2) for method System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:System.Threading.Tasks.ITaskCompletionAction.Invoke(System.Threading.Tasks.Task):this (FullOpts)
; ============================================================
libraries_tests.run.windows.x86.Release.mch
-15 (-60.00%) : 25.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:get_Current():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
@@ -13,17 +13,14 @@ G_M60123_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov ebp, esp
;; size=3 bbWeight=1 PerfScore 1.25
G_M60123_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, 0xD1FFAB1E
- mov edx, 8
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M60123_IG03: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 25, prolog size 3, PerfScore 6.25, instruction count 8, allocated bytes for code 25 (MethodHash=17301524) for method Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:get_Current():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
+; Total bytes of code 10, prolog size 3, PerfScore 4.75, instruction count 5, allocated bytes for code 10 (MethodHash=17301524) for method Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:get_Current():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
; ============================================================
-15 (-60.00%) : 3689.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
@@ -13,16 +13,13 @@ G_M27576_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov ebp, esp
;; size=3 bbWeight=1 PerfScore 1.25
G_M27576_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, 0xD1FFAB1E
- mov edx, 35
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov eax, dword ptr [D1FFAB1EH] ; static handle
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M27576_IG03: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 25, prolog size 3, PerfScore 6.25, instruction count 8, allocated bytes for code 25 (MethodHash=44ff9447) for method Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
+; Total bytes of code 10, prolog size 3, PerfScore 4.75, instruction count 5, allocated bytes for code 10 (MethodHash=44ff9447) for method Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
; ============================================================
-15 (-60.00%) : 22.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader:get_Default():Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader (Tier0)
@@ -13,17 +13,14 @@ G_M52025_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov ebp, esp
;; size=3 bbWeight=1 PerfScore 1.25
G_M52025_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, 0xD1FFAB1E
- mov edx, 7
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M52025_IG03: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 25, prolog size 3, PerfScore 6.25, instruction count 8, allocated bytes for code 25 (MethodHash=8f0334c6) for method Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader:get_Default():Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader (Tier0)
+; Total bytes of code 10, prolog size 3, PerfScore 4.75, instruction count 5, allocated bytes for code 10 (MethodHash=8f0334c6) for method Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader:get_Default():Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader (Tier0)
; ============================================================
-15 (-3.49%) : 108.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(Xunit.JsonObject):Internal.Microsoft.Extensions.DependencyModel.CompilationOptions:this (Tier0)
@@ -65,14 +65,9 @@ G_M3749_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, by
mov gword ptr [ebp-0x40], eax
cmp gword ptr [ebp-0x3C], 0
jne SHORT G_M3749_IG05
- mov ecx, 0xD1FFAB1E
- mov edx, 6
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- ; gcrRegs -[eax]
mov eax, gword ptr [D1FFAB1EH] ; static handle
- ; gcrRegs +[eax]
mov gword ptr [ebp-0x40], eax
- ;; size=54 bbWeight=1 PerfScore 17.75
+ ;; size=39 bbWeight=1 PerfScore 16.25
G_M3749_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
mov eax, gword ptr [ebp-0x40]
@@ -184,7 +179,7 @@ G_M3749_IG06: ; bbWeight=1, extend
; gcrRegs -[ecx]
mov gword ptr [ebp-0x4C], eax
mov ecx, 0xD1FFAB1E ; Internal.Microsoft.Extensions.DependencyModel.CompilationOptions
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWSFAST_ALIGN8
mov gword ptr [ebp-0x50], eax
push gword ptr [ebp-0x44]
push gword ptr [ebp-0x48]
@@ -216,6 +211,6 @@ G_M3749_IG07: ; bbWeight=1, epilog, nogc, extend
ret
;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 430, prolog size 28, PerfScore 163.58, instruction count 119, allocated bytes for code 430 (MethodHash=f11ef15a) for method Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(Xunit.JsonObject):Internal.Microsoft.Extensions.DependencyModel.CompilationOptions:this (Tier0)
+; Total bytes of code 415, prolog size 28, PerfScore 162.08, instruction count 116, allocated bytes for code 415 (MethodHash=f11ef15a) for method Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(Xunit.JsonObject):Internal.Microsoft.Extensions.DependencyModel.CompilationOptions:this (Tier0)
; ============================================================
-8 (-0.86%) : 2528.dasm - System.Linq.Enumerable:ToDictionarySystem.Canon,System.Canon,System.__Canon:System.Collections.Generic.Dictionary`2System.Canon,System.Canon
@@ -16,7 +16,7 @@
; V05 loc0 [V05 ] ( 3, 2 ) int -> [ebp-0x24] do-not-enreg[X] addr-exposed ld-addr-op
; V06 loc1 [V06,T10] ( 3, 5 ) ref -> [ebp-0x50] class-hnd exact spill-single-def <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]>
; V07 loc2 [V07,T52] ( 3, 1.50) ref -> [ebp-0x54] class-hnd spill-single-def <System.__Canon[]>
-; V08 loc3 [V08,T53] ( 3, 1.50) ref -> [ebp-0x58] class-hnd spill-single-def <System.Collections.Generic.List`1[System.__Canon]>
+; V08 loc3 [V08,T56] ( 2, 1 ) ref -> [ebp-0x58] class-hnd spill-single-def <System.Collections.Generic.List`1[System.__Canon]>
; V09 loc4 [V09 ] ( 2, 1 ) struct ( 8) [ebp-0x2C] do-not-enreg[XS] must-init addr-exposed <System.ReadOnlySpan`1[System.__Canon]>
; V10 loc5 [V10,T07] ( 7, 9 ) ref -> [ebp-0x5C] class-hnd EH-live spill-single-def <<unknown class>>
; V11 loc6 [V11,T04] ( 3, 12 ) ref -> [ebp-0x60] class-hnd spill-single-def <System.__Canon>
@@ -77,9 +77,9 @@
; V66 rat23 [V66,T33] ( 3, 2.24) int -> ecx "fgMakeTemp is creating a new local variable"
; V67 rat24 [V67,T24] ( 3, 2.80) int -> ecx "spilling expr"
; V68 rat25 [V68,T34] ( 3, 2.24) int -> ecx "fgMakeTemp is creating a new local variable"
-; V69 rat26 [V69,T56] ( 3, 1 ) int -> ebx "runtime lookup"
-; V70 rat27 [V70,T54] ( 3, 1.40) int -> ecx "spilling expr"
-; V71 rat28 [V71,T55] ( 3, 1.12) int -> eax "fgMakeTemp is creating a new local variable"
+; V69 rat26 [V69,T55] ( 3, 1 ) int -> ebx "runtime lookup"
+; V70 rat27 [V70,T53] ( 3, 1.40) int -> ecx "spilling expr"
+; V71 rat28 [V71,T54] ( 3, 1.12) int -> eax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 92
@@ -109,12 +109,12 @@ G_M36297_IG02: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=
mov gword ptr [ebp-0x4C], eax
; GC ptr vars +{V00}
test eax, eax
- je G_M36297_IG72
+ je G_M36297_IG71
mov eax, gword ptr [ebp-0x4C]
test esi, esi
- je G_M36297_IG73
+ je G_M36297_IG72
test edi, edi
- je G_M36297_IG74
+ je G_M36297_IG73
mov ecx, dword ptr [ebx+0x20]
mov ecx, dword ptr [ecx+0x10]
test ecx, ecx
@@ -129,7 +129,7 @@ G_M36297_IG04: ; bbWeight=0.20, gcrefRegs=000000C1 {eax esi edi}, byrefRe
; GC ptr vars +{V00}
mov ecx, ebx
mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcrRegs -[eax]
mov ecx, eax
mov eax, gword ptr [ebp-0x4C]
@@ -146,7 +146,7 @@ G_M36297_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=000000
call [System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte]
; gcrRegs -[eax ecx]
test eax, eax
- je G_M36297_IG50
+ je G_M36297_IG49
;; size=23 bbWeight=1 PerfScore 7.00
G_M36297_IG06: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [ebp-0x24], 0
@@ -168,11 +168,11 @@ G_M36297_IG08: ; bbWeight=0.32, gcrefRegs=00000000 {}, byrefRegs=00000000
G_M36297_IG09: ; bbWeight=0.18, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, ebx
mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov ecx, eax
;; size=14 bbWeight=0.18 PerfScore 0.32
G_M36297_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[eax]
mov ebx, eax
; gcrRegs +[ebx]
@@ -211,13 +211,13 @@ G_M36297_IG14: ; bbWeight=0.32, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
G_M36297_IG15: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, ebx
mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov ecx, eax
;; size=14 bbWeight=0.18 PerfScore 0.32
G_M36297_IG16: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, gword ptr [ebp-0x4C]
; gcrRegs +[edx]
- call [CORINFO_HELP_ISINSTANCEOFARRAY]
+ call [CORINFO_HELP_ISINSTANCEOFANY]
; gcrRegs -[edx] +[eax]
mov gword ptr [ebp-0x54], eax
; GC ptr vars +{V07}
@@ -243,7 +243,7 @@ G_M36297_IG20: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
; gcrRegs -[eax]
mov ecx, ebx
mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov dword ptr [ebp-0x40], eax
mov eax, gword ptr [ebp-0x54]
; gcrRegs +[eax]
@@ -274,7 +274,7 @@ G_M36297_IG26: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
; gcrRegs -[eax]
mov ecx, ebx
mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov ebx, eax
mov eax, gword ptr [ebp-0x54]
; gcrRegs +[eax]
@@ -325,79 +325,79 @@ G_M36297_IG31: ; bbWeight=0.32, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
G_M36297_IG32: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, ebx
mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov ecx, eax
;; size=14 bbWeight=0.18 PerfScore 0.32
G_M36297_IG33: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, gword ptr [ebp-0x4C]
; gcrRegs +[edx]
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; GC ptr vars -{V00 V08}
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx] +[eax]
mov gword ptr [ebp-0x58], eax
- test eax, eax
- je G_M36297_IG50
- mov eax, gword ptr [ebp-0x58]
+ ; GC ptr vars +{V08}
mov ecx, dword ptr [ebx+0x20]
cmp dword ptr [ecx+0x0C], 40
- jle SHORT G_M36297_IG37
- ;; size=31 bbWeight=0.50 PerfScore 5.62
-G_M36297_IG34: ; bbWeight=0.40, gcVars=0020000000000000 {V08}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00 V08}
+ jle SHORT G_M36297_IG36
+ ;; size=20 bbWeight=0.50 PerfScore 4.50
+G_M36297_IG34: ; bbWeight=0.40, gcVars=0100000000000000 {V08}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax]
+ mov eax, gword ptr [ebp-0x58]
+ ; gcrRegs +[eax]
mov edx, dword ptr [ecx+0x28]
test edx, edx
je SHORT G_M36297_IG36
- ;; size=7 bbWeight=0.40 PerfScore 1.30
+ ;; size=10 bbWeight=0.40 PerfScore 1.70
G_M36297_IG35: ; bbWeight=0.32, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M36297_IG38
+ jmp SHORT G_M36297_IG37
;; size=2 bbWeight=0.32 PerfScore 0.64
-G_M36297_IG36: ; bbWeight=0.20, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
- ;; size=0 bbWeight=0.20 PerfScore 0.00
-G_M36297_IG37: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M36297_IG36: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
mov ecx, ebx
mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov dword ptr [ebp-0x30], eax
mov eax, gword ptr [ebp-0x58]
; gcrRegs +[eax]
mov edx, dword ptr [ebp-0x30]
;; size=21 bbWeight=0.18 PerfScore 0.81
-G_M36297_IG38: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M36297_IG37: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [ebx+0x20]
cmp dword ptr [ecx+0x0C], 44
- jle SHORT G_M36297_IG42
+ jle SHORT G_M36297_IG41
;; size=9 bbWeight=0.50 PerfScore 3.00
-G_M36297_IG39: ; bbWeight=0.40, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M36297_IG38: ; bbWeight=0.40, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [ecx+0x2C]
test ecx, ecx
- je SHORT G_M36297_IG41
+ je SHORT G_M36297_IG40
;; size=7 bbWeight=0.40 PerfScore 1.30
-G_M36297_IG40: ; bbWeight=0.32, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M36297_IG39: ; bbWeight=0.32, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x34], ecx
- jmp SHORT G_M36297_IG44
- ;; size=5 bbWeight=0.32 PerfScore 0.96
-G_M36297_IG41: ; bbWeight=0.20, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x30], edx
jmp SHORT G_M36297_IG43
+ ;; size=5 bbWeight=0.32 PerfScore 0.96
+G_M36297_IG40: ; bbWeight=0.20, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x30], edx
+ jmp SHORT G_M36297_IG42
;; size=5 bbWeight=0.20 PerfScore 0.60
-G_M36297_IG42: ; bbWeight=0.25, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
+G_M36297_IG41: ; bbWeight=0.25, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x30], edx
;; size=3 bbWeight=0.25 PerfScore 0.25
-G_M36297_IG43: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M36297_IG42: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
mov ecx, ebx
mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov dword ptr [ebp-0x34], eax
mov eax, gword ptr [ebp-0x58]
; gcrRegs +[eax]
mov edx, dword ptr [ebp-0x30]
;; size=21 bbWeight=0.18 PerfScore 0.81
-G_M36297_IG44: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M36297_IG43: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
push edx
lea ecx, [ebp-0x3C]
mov edx, eax
; gcrRegs +[edx]
+ ; GC ptr vars -{V08}
call [System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon]]
; gcrRegs -[eax edx]
push dword ptr [ebp-0x38]
@@ -407,22 +407,22 @@ G_M36297_IG44: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRe
call [System.Span`1[System.__Canon]:op_Implicit(System.Span`1[System.__Canon]):System.ReadOnlySpan`1[System.__Canon]]
mov ecx, dword ptr [ebx+0x20]
cmp dword ptr [ecx+0x0C], 48
- jle SHORT G_M36297_IG47
+ jle SHORT G_M36297_IG46
;; size=39 bbWeight=0.50 PerfScore 8.62
-G_M36297_IG45: ; bbWeight=0.40, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M36297_IG44: ; bbWeight=0.40, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ecx+0x30]
test eax, eax
- je SHORT G_M36297_IG47
+ je SHORT G_M36297_IG46
;; size=7 bbWeight=0.40 PerfScore 1.30
-G_M36297_IG46: ; bbWeight=0.32, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M36297_IG48
+G_M36297_IG45: ; bbWeight=0.32, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M36297_IG47
;; size=2 bbWeight=0.32 PerfScore 0.64
-G_M36297_IG47: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M36297_IG46: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, ebx
mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=12 bbWeight=0.18 PerfScore 0.27
-G_M36297_IG48: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M36297_IG47: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
push dword ptr [ebp-0x28]
push bword ptr [ebp-0x2C]
push gword ptr [ebp+0x0C]
@@ -434,7 +434,7 @@ G_M36297_IG48: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
call [System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]]
; gcrRegs -[ecx edx esi edi] +[eax]
;; size=20 bbWeight=0.50 PerfScore 3.75
-G_M36297_IG49: ; bbWeight=0.50, epilog, nogc, extend
+G_M36297_IG48: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
...
+9 (+9.89%) : 1664.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable1[ubyte]](System.String,System.Nullable1[ubyte]):this (Tier0)
@@ -7,7 +7,7 @@
;
; V00 this [V00 ] ( 1, 1 ) ref -> [ebp-0x04] do-not-enreg[] this class-hnd <Xunit.TestFrameworkOptions>
; V01 arg1 [V01 ] ( 1, 1 ) ref -> [ebp-0x08] do-not-enreg[] class-hnd <System.String>
-; V02 arg2 [V02 ] ( 1, 1 ) struct ( 4) [ebp+0x08] do-not-enreg[XSF] addr-exposed <System.Nullable`1[ubyte]>
+; V02 arg2 [V02 ] ( 1, 1 ) struct ( 4) [ebp+0x08] do-not-enreg[XS] addr-exposed <System.Nullable`1[ubyte]>
; V03 tmp0 [V03 ] ( 1, 1 ) ref -> [ebp-0x0C] do-not-enreg[] must-init "argument with side effect"
;
; Lcl frame size = 12
@@ -22,11 +22,13 @@ G_M26730_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
mov gword ptr [ebp-0x08], edx
;; size=17 bbWeight=1 PerfScore 4.75
G_M26730_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- movzx eax, byte ptr [ebp+0x08]
+ lea edx, [ebp+0x08]
+ mov ecx, 0xD1FFAB1E ; System.Nullable`1[ubyte]
+ call CORINFO_HELP_UNBOX_NULLABLE
+ ; gcrRegs +[eax]
test eax, eax
jne SHORT G_M26730_IG04
mov eax, gword ptr [ebp-0x04]
- ; gcrRegs +[eax]
mov ecx, gword ptr [eax+0x04]
; gcrRegs +[ecx]
mov edx, gword ptr [ebp-0x08]
@@ -34,7 +36,7 @@ G_M26730_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
cmp dword ptr [ecx], ecx
call [<unknown method>]
; gcrRegs -[eax ecx edx]
- ;; size=25 bbWeight=1 PerfScore 12.25
+ ;; size=34 bbWeight=1 PerfScore 13.00
G_M26730_IG03: ; bbWeight=1, epilog, nogc, extend
mov esp, ebp
pop ebp
@@ -47,7 +49,7 @@ G_M26730_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
mov gword ptr [ebp-0x0C], eax
lea edx, [ebp+0x08]
mov ecx, 0xD1FFAB1E ; System.Nullable`1[ubyte]
- call CORINFO_HELP_BOX_NULLABLE
+ call CORINFO_HELP_UNBOX_NULLABLE
push eax
mov ecx, gword ptr [ebp-0x0C]
; gcrRegs +[ecx]
@@ -63,6 +65,6 @@ G_M26730_IG05: ; bbWeight=1, epilog, nogc, extend
ret 4
;; size=6 bbWeight=1 PerfScore 2.75
-; Total bytes of code 91, prolog size 11, PerfScore 37.25, instruction count 32, allocated bytes for code 91 (MethodHash=1fca9795) for method Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
+; Total bytes of code 100, prolog size 11, PerfScore 38.00, instruction count 34, allocated bytes for code 100 (MethodHash=1fca9795) for method Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
; ============================================================
librariestestsnotieredcompilation.run.windows.x86.Release.mch
-26 (-81.25%) : 2129.dasm - Microsoft.CodeAnalysis.AssemblyIdentityComparer:get_Default():Microsoft.CodeAnalysis.AssemblyIdentityComparer (FullOpts)
@@ -12,25 +12,14 @@
G_M7353_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
-G_M7353_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [D1FFAB1EH], 1 ; global ptr
- je SHORT G_M7353_IG05
- ;; size=9 bbWeight=1 PerfScore 4.00
-G_M7353_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M7353_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
;; size=5 bbWeight=1 PerfScore 2.00
-G_M7353_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M7353_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00
-G_M7353_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- mov ecx, 0xD1FFAB1E
- mov edx, 432
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- jmp SHORT G_M7353_IG03
- ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 32, prolog size 0, PerfScore 7.00, instruction count 8, allocated bytes for code 32 (MethodHash=2648e346) for method Microsoft.CodeAnalysis.AssemblyIdentityComparer:get_Default():Microsoft.CodeAnalysis.AssemblyIdentityComparer (FullOpts)
+; Total bytes of code 6, prolog size 0, PerfScore 3.00, instruction count 2, allocated bytes for code 6 (MethodHash=2648e346) for method Microsoft.CodeAnalysis.AssemblyIdentityComparer:get_Default():Microsoft.CodeAnalysis.AssemblyIdentityComparer (FullOpts)
; ============================================================
-26 (-81.25%) : 1894.dasm - Xunit.TestAssemblyExecutionFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
@@ -13,25 +13,14 @@
G_M50046_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
-G_M50046_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [D1FFAB1EH], 1 ; global ptr
- je SHORT G_M50046_IG05
- ;; size=9 bbWeight=1 PerfScore 4.00
-G_M50046_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M50046_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
;; size=5 bbWeight=1 PerfScore 2.00
-G_M50046_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M50046_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00
-G_M50046_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- mov ecx, 0xD1FFAB1E
- mov edx, 57
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- jmp SHORT G_M50046_IG03
- ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 32, prolog size 0, PerfScore 7.00, instruction count 8, allocated bytes for code 32 (MethodHash=c0343c81) for method Xunit.TestAssemblyExecutionFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
+; Total bytes of code 6, prolog size 0, PerfScore 3.00, instruction count 2, allocated bytes for code 6 (MethodHash=c0343c81) for method Xunit.TestAssemblyExecutionFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
; ============================================================
-26 (-81.25%) : 1934.dasm - Xunit.TestExecutionSummary:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
@@ -13,25 +13,14 @@
G_M23230_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
-G_M23230_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [D1FFAB1EH], 1 ; global ptr
- je SHORT G_M23230_IG05
- ;; size=9 bbWeight=1 PerfScore 4.00
-G_M23230_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M23230_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
;; size=5 bbWeight=1 PerfScore 2.00
-G_M23230_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M23230_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00
-G_M23230_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- mov ecx, 0xD1FFAB1E
- mov edx, 59
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- jmp SHORT G_M23230_IG03
- ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 32, prolog size 0, PerfScore 7.00, instruction count 8, allocated bytes for code 32 (MethodHash=cbe5a541) for method Xunit.TestExecutionSummary:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
+; Total bytes of code 6, prolog size 0, PerfScore 3.00, instruction count 2, allocated bytes for code 6 (MethodHash=cbe5a541) for method Xunit.TestExecutionSummary:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
; ============================================================
-8 (-0.86%) : 967.dasm - System.Linq.Enumerable:ToDictionarySystem.Canon,System.Canon,System.__Canon:System.Collections.Generic.Dictionary`2System.Canon,System.Canon
@@ -16,7 +16,7 @@
; V05 loc0 [V05 ] ( 3, 2 ) int -> [ebp-0x24] do-not-enreg[X] addr-exposed ld-addr-op
; V06 loc1 [V06,T10] ( 3, 5 ) ref -> [ebp-0x50] class-hnd exact spill-single-def <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]>
; V07 loc2 [V07,T52] ( 3, 1.50) ref -> [ebp-0x54] class-hnd spill-single-def <System.__Canon[]>
-; V08 loc3 [V08,T53] ( 3, 1.50) ref -> [ebp-0x58] class-hnd spill-single-def <System.Collections.Generic.List`1[System.__Canon]>
+; V08 loc3 [V08,T56] ( 2, 1 ) ref -> [ebp-0x58] class-hnd spill-single-def <System.Collections.Generic.List`1[System.__Canon]>
; V09 loc4 [V09 ] ( 2, 1 ) struct ( 8) [ebp-0x2C] do-not-enreg[XS] must-init addr-exposed <System.ReadOnlySpan`1[System.__Canon]>
; V10 loc5 [V10,T07] ( 7, 9 ) ref -> [ebp-0x5C] class-hnd EH-live spill-single-def <<unknown class>>
; V11 loc6 [V11,T04] ( 3, 12 ) ref -> [ebp-0x60] class-hnd spill-single-def <System.__Canon>
@@ -77,9 +77,9 @@
; V66 rat23 [V66,T33] ( 3, 2.24) int -> ecx "fgMakeTemp is creating a new local variable"
; V67 rat24 [V67,T24] ( 3, 2.80) int -> ecx "spilling expr"
; V68 rat25 [V68,T34] ( 3, 2.24) int -> ecx "fgMakeTemp is creating a new local variable"
-; V69 rat26 [V69,T56] ( 3, 1 ) int -> ebx "runtime lookup"
-; V70 rat27 [V70,T54] ( 3, 1.40) int -> ecx "spilling expr"
-; V71 rat28 [V71,T55] ( 3, 1.12) int -> eax "fgMakeTemp is creating a new local variable"
+; V69 rat26 [V69,T55] ( 3, 1 ) int -> ebx "runtime lookup"
+; V70 rat27 [V70,T53] ( 3, 1.40) int -> ecx "spilling expr"
+; V71 rat28 [V71,T54] ( 3, 1.12) int -> eax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 92
@@ -109,12 +109,12 @@ G_M36297_IG02: ; bbWeight=1, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=
mov gword ptr [ebp-0x4C], eax
; GC ptr vars +{V00}
test eax, eax
- je G_M36297_IG72
+ je G_M36297_IG71
mov eax, gword ptr [ebp-0x4C]
test esi, esi
- je G_M36297_IG73
+ je G_M36297_IG72
test edi, edi
- je G_M36297_IG74
+ je G_M36297_IG73
mov ecx, dword ptr [ebx+0x20]
mov ecx, dword ptr [ecx+0x10]
test ecx, ecx
@@ -129,7 +129,7 @@ G_M36297_IG04: ; bbWeight=0.20, gcrefRegs=000000C1 {eax esi edi}, byrefRe
; GC ptr vars +{V00}
mov ecx, ebx
mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcrRegs -[eax]
mov ecx, eax
mov eax, gword ptr [ebp-0x4C]
@@ -146,7 +146,7 @@ G_M36297_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=000000
call [System.Linq.Enumerable:TryGetNonEnumeratedCount[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):ubyte]
; gcrRegs -[eax ecx]
test eax, eax
- je G_M36297_IG50
+ je G_M36297_IG49
;; size=23 bbWeight=1 PerfScore 7.00
G_M36297_IG06: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp dword ptr [ebp-0x24], 0
@@ -168,11 +168,11 @@ G_M36297_IG08: ; bbWeight=0.32, gcrefRegs=00000000 {}, byrefRegs=00000000
G_M36297_IG09: ; bbWeight=0.18, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, ebx
mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov ecx, eax
;; size=14 bbWeight=0.18 PerfScore 0.32
G_M36297_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- call CORINFO_HELP_NEWSFAST
+ call CORINFO_HELP_NEWSFAST_ALIGN8
; gcrRegs +[eax]
mov ebx, eax
; gcrRegs +[ebx]
@@ -211,13 +211,13 @@ G_M36297_IG14: ; bbWeight=0.32, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
G_M36297_IG15: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, ebx
mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov ecx, eax
;; size=14 bbWeight=0.18 PerfScore 0.32
G_M36297_IG16: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, gword ptr [ebp-0x4C]
; gcrRegs +[edx]
- call CORINFO_HELP_ISINSTANCEOFARRAY
+ call CORINFO_HELP_ISINSTANCEOFANY
; gcrRegs -[edx] +[eax]
mov gword ptr [ebp-0x54], eax
; GC ptr vars +{V07}
@@ -243,7 +243,7 @@ G_M36297_IG20: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
; gcrRegs -[eax]
mov ecx, ebx
mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov dword ptr [ebp-0x40], eax
mov eax, gword ptr [ebp-0x54]
; gcrRegs +[eax]
@@ -274,7 +274,7 @@ G_M36297_IG26: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
; gcrRegs -[eax]
mov ecx, ebx
mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov ebx, eax
mov eax, gword ptr [ebp-0x54]
; gcrRegs +[eax]
@@ -325,79 +325,79 @@ G_M36297_IG31: ; bbWeight=0.32, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
G_M36297_IG32: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, ebx
mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov ecx, eax
;; size=14 bbWeight=0.18 PerfScore 0.32
G_M36297_IG33: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov edx, gword ptr [ebp-0x4C]
; gcrRegs +[edx]
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ ; GC ptr vars -{V00 V08}
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx] +[eax]
mov gword ptr [ebp-0x58], eax
- test eax, eax
- je G_M36297_IG50
- mov eax, gword ptr [ebp-0x58]
+ ; GC ptr vars +{V08}
mov ecx, dword ptr [ebx+0x20]
cmp dword ptr [ecx+0x0C], 40
- jle SHORT G_M36297_IG37
- ;; size=31 bbWeight=0.50 PerfScore 5.62
-G_M36297_IG34: ; bbWeight=0.40, gcVars=0020000000000000 {V08}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00 V08}
+ jle SHORT G_M36297_IG36
+ ;; size=20 bbWeight=0.50 PerfScore 4.50
+G_M36297_IG34: ; bbWeight=0.40, gcVars=0100000000000000 {V08}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax]
+ mov eax, gword ptr [ebp-0x58]
+ ; gcrRegs +[eax]
mov edx, dword ptr [ecx+0x28]
test edx, edx
je SHORT G_M36297_IG36
- ;; size=7 bbWeight=0.40 PerfScore 1.30
+ ;; size=10 bbWeight=0.40 PerfScore 1.70
G_M36297_IG35: ; bbWeight=0.32, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M36297_IG38
+ jmp SHORT G_M36297_IG37
;; size=2 bbWeight=0.32 PerfScore 0.64
-G_M36297_IG36: ; bbWeight=0.20, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
- ;; size=0 bbWeight=0.20 PerfScore 0.00
-G_M36297_IG37: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M36297_IG36: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
mov ecx, ebx
mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov dword ptr [ebp-0x30], eax
mov eax, gword ptr [ebp-0x58]
; gcrRegs +[eax]
mov edx, dword ptr [ebp-0x30]
;; size=21 bbWeight=0.18 PerfScore 0.81
-G_M36297_IG38: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M36297_IG37: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [ebx+0x20]
cmp dword ptr [ecx+0x0C], 44
- jle SHORT G_M36297_IG42
+ jle SHORT G_M36297_IG41
;; size=9 bbWeight=0.50 PerfScore 3.00
-G_M36297_IG39: ; bbWeight=0.40, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M36297_IG38: ; bbWeight=0.40, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [ecx+0x2C]
test ecx, ecx
- je SHORT G_M36297_IG41
+ je SHORT G_M36297_IG40
;; size=7 bbWeight=0.40 PerfScore 1.30
-G_M36297_IG40: ; bbWeight=0.32, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M36297_IG39: ; bbWeight=0.32, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
mov dword ptr [ebp-0x34], ecx
- jmp SHORT G_M36297_IG44
- ;; size=5 bbWeight=0.32 PerfScore 0.96
-G_M36297_IG41: ; bbWeight=0.20, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
- mov dword ptr [ebp-0x30], edx
jmp SHORT G_M36297_IG43
+ ;; size=5 bbWeight=0.32 PerfScore 0.96
+G_M36297_IG40: ; bbWeight=0.20, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov dword ptr [ebp-0x30], edx
+ jmp SHORT G_M36297_IG42
;; size=5 bbWeight=0.20 PerfScore 0.60
-G_M36297_IG42: ; bbWeight=0.25, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
+G_M36297_IG41: ; bbWeight=0.25, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x30], edx
;; size=3 bbWeight=0.25 PerfScore 0.25
-G_M36297_IG43: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M36297_IG42: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
mov ecx, ebx
mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov dword ptr [ebp-0x34], eax
mov eax, gword ptr [ebp-0x58]
; gcrRegs +[eax]
mov edx, dword ptr [ebp-0x30]
;; size=21 bbWeight=0.18 PerfScore 0.81
-G_M36297_IG44: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M36297_IG43: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
push edx
lea ecx, [ebp-0x3C]
mov edx, eax
; gcrRegs +[edx]
+ ; GC ptr vars -{V08}
call [System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon]]
; gcrRegs -[eax edx]
push dword ptr [ebp-0x38]
@@ -407,22 +407,22 @@ G_M36297_IG44: ; bbWeight=0.50, gcrefRegs=000000C1 {eax esi edi}, byrefRe
call [System.Span`1[System.__Canon]:op_Implicit(System.Span`1[System.__Canon]):System.ReadOnlySpan`1[System.__Canon]]
mov ecx, dword ptr [ebx+0x20]
cmp dword ptr [ecx+0x0C], 48
- jle SHORT G_M36297_IG47
+ jle SHORT G_M36297_IG46
;; size=39 bbWeight=0.50 PerfScore 8.62
-G_M36297_IG45: ; bbWeight=0.40, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M36297_IG44: ; bbWeight=0.40, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov eax, dword ptr [ecx+0x30]
test eax, eax
- je SHORT G_M36297_IG47
+ je SHORT G_M36297_IG46
;; size=7 bbWeight=0.40 PerfScore 1.30
-G_M36297_IG46: ; bbWeight=0.32, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M36297_IG48
+G_M36297_IG45: ; bbWeight=0.32, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M36297_IG47
;; size=2 bbWeight=0.32 PerfScore 0.64
-G_M36297_IG47: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M36297_IG46: ; bbWeight=0.18, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, ebx
mov edx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=12 bbWeight=0.18 PerfScore 0.27
-G_M36297_IG48: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M36297_IG47: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
push dword ptr [ebp-0x28]
push bword ptr [ebp-0x2C]
push gword ptr [ebp+0x0C]
@@ -434,7 +434,7 @@ G_M36297_IG48: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
call [System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]]
; gcrRegs -[ecx edx esi edi] +[eax]
;; size=20 bbWeight=0.50 PerfScore 3.75
-G_M36297_IG49: ; bbWeight=0.50, epilog, nogc, extend
+G_M36297_IG48: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
...
+2 (+4.26%) : 566.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
@@ -8,11 +8,11 @@
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 3 ) ref -> ecx this class-hnd single-def <Xunit.Sdk.ReflectionMethodInfo>
-; V01 arg1 [V01,T01] ( 3, 3 ) ref -> edx class-hnd single-def <System.String>
-; V02 tmp0 [V02,T02] ( 3, 5 ) ref -> esi class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]>
-; V03 tmp1 [V03,T03] ( 2, 4 ) ref -> eax class-hnd single-def "dup spill" <<unknown class>>
-; V04 tmp2 [V04,T04] ( 4, 3.50) ref -> eax
+; V00 this [V00,T01] ( 3, 3 ) ref -> ecx this class-hnd single-def <Xunit.Sdk.ReflectionMethodInfo>
+; V01 arg1 [V01,T02] ( 3, 3 ) ref -> edx class-hnd single-def <System.String>
+; V02 tmp0 [V02,T00] ( 4, 8 ) ref -> esi class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]>
+;* V03 tmp1 [V03,T04] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <<unknown class>>
+; V04 tmp2 [V04,T03] ( 3, 2.50) ref -> eax
;
; Lcl frame size = 0
@@ -31,18 +31,19 @@ G_M51894_IG02: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=0000
mov edx, esi
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx]
- test eax, eax
+ mov eax, esi
+ test esi, esi
jne SHORT G_M51894_IG04
- ;; size=27 bbWeight=1 PerfScore 8.00
-G_M51894_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov ecx, esi
+ ;; size=29 bbWeight=1 PerfScore 8.25
+G_M51894_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax esi]
+ xor ecx, ecx
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E ; <unknown method>
call [System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon]]
- ; gcrRegs -[ecx esi] +[eax]
+ ; gcrRegs -[ecx] +[eax]
;; size=13 bbWeight=0.50 PerfScore 1.75
G_M51894_IG04: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
pop esi
@@ -50,6 +51,6 @@ G_M51894_IG04: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000
ret
;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 47, prolog size 4, PerfScore 14.00, instruction count 17, allocated bytes for code 47 (MethodHash=ff0d3549) for method Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
+; Total bytes of code 49, prolog size 4, PerfScore 14.25, instruction count 18, allocated bytes for code 49 (MethodHash=ff0d3549) for method Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
; ============================================================
+2 (+4.26%) : 464.dasm - Xunit.Sdk.ReflectionTypeInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
@@ -8,11 +8,11 @@
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 3 ) ref -> ecx this class-hnd single-def <Xunit.Sdk.ReflectionTypeInfo>
-; V01 arg1 [V01,T01] ( 3, 3 ) ref -> edx class-hnd single-def <System.String>
-; V02 tmp0 [V02,T02] ( 3, 5 ) ref -> esi class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]>
-; V03 tmp1 [V03,T03] ( 2, 4 ) ref -> eax class-hnd single-def "dup spill" <<unknown class>>
-; V04 tmp2 [V04,T04] ( 4, 3.50) ref -> eax
+; V00 this [V00,T01] ( 3, 3 ) ref -> ecx this class-hnd single-def <Xunit.Sdk.ReflectionTypeInfo>
+; V01 arg1 [V01,T02] ( 3, 3 ) ref -> edx class-hnd single-def <System.String>
+; V02 tmp0 [V02,T00] ( 4, 8 ) ref -> esi class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]>
+;* V03 tmp1 [V03,T04] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <<unknown class>>
+; V04 tmp2 [V04,T03] ( 3, 2.50) ref -> eax
;
; Lcl frame size = 0
@@ -31,18 +31,19 @@ G_M47281_IG02: ; bbWeight=1, gcrefRegs=00000006 {ecx edx}, byrefRegs=0000
mov edx, esi
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx]
- test eax, eax
+ mov eax, esi
+ test esi, esi
jne SHORT G_M47281_IG04
- ;; size=27 bbWeight=1 PerfScore 8.00
-G_M47281_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[eax]
- mov ecx, esi
+ ;; size=29 bbWeight=1 PerfScore 8.25
+G_M47281_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax esi]
+ xor ecx, ecx
; gcrRegs +[ecx]
mov edx, 0xD1FFAB1E ; <unknown method>
call [System.Linq.Enumerable:ToList[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.List`1[System.__Canon]]
- ; gcrRegs -[ecx esi] +[eax]
+ ; gcrRegs -[ecx] +[eax]
;; size=13 bbWeight=0.50 PerfScore 1.75
G_M47281_IG04: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
pop esi
@@ -50,6 +51,6 @@ G_M47281_IG04: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000
ret
;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 47, prolog size 4, PerfScore 14.00, instruction count 17, allocated bytes for code 47 (MethodHash=13da474e) for method Xunit.Sdk.ReflectionTypeInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
+; Total bytes of code 49, prolog size 4, PerfScore 14.25, instruction count 18, allocated bytes for code 49 (MethodHash=13da474e) for method Xunit.Sdk.ReflectionTypeInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
; ============================================================
realworld.run.windows.x86.checked.mch
-26 (-81.25%) : 2625.dasm - System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (FullOpts)
@@ -12,25 +12,14 @@
G_M41081_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
-G_M41081_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [D1FFAB1EH], 1 ; global ptr
- je SHORT G_M41081_IG05
- ;; size=9 bbWeight=1 PerfScore 4.00
-G_M41081_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M41081_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
;; size=5 bbWeight=1 PerfScore 2.00
-G_M41081_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M41081_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00
-G_M41081_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- mov ecx, 0xD1FFAB1E
- mov edx, 0x525
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- jmp SHORT G_M41081_IG03
- ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 32, prolog size 0, PerfScore 7.00, instruction count 8, allocated bytes for code 32 (MethodHash=80065f86) for method System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (FullOpts)
+; Total bytes of code 6, prolog size 0, PerfScore 3.00, instruction count 2, allocated bytes for code 6 (MethodHash=80065f86) for method System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (FullOpts)
; ============================================================
-26 (-81.25%) : 2981.dasm - FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)
@@ -12,25 +12,14 @@
G_M34240_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
-G_M34240_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [D1FFAB1EH], 1 ; global ptr
- je SHORT G_M34240_IG05
- ;; size=9 bbWeight=1 PerfScore 4.00
-G_M34240_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M34240_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[eax]
;; size=5 bbWeight=1 PerfScore 2.00
-G_M34240_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M34240_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00
-G_M34240_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
- mov ecx, 0xD1FFAB1E
- mov edx, 0x3CAB
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- jmp SHORT G_M34240_IG03
- ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 32, prolog size 0, PerfScore 7.00, instruction count 8, allocated bytes for code 32 (MethodHash=e8cf7a3f) for method FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)
+; Total bytes of code 6, prolog size 0, PerfScore 3.00, instruction count 2, allocated bytes for code 6 (MethodHash=e8cf7a3f) for method FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)
; ============================================================
-27 (-77.14%) : 2521.dasm - Microsoft.FSharp.Reflection.Impl:.cctor() (FullOpts)
@@ -7,30 +7,19 @@
; No matching PGO data
; Final local variable assignments
;
-;* V00 cse0 [V00,T00] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
;
; Lcl frame size = 0
G_M8381_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
-G_M8381_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- test byte ptr [D1FFAB1EH], 1 ; global ptr
- je SHORT G_M8381_IG05
- ;; size=9 bbWeight=1 PerfScore 4.00
-G_M8381_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- xor ecx, ecx
- mov dword ptr [D1FFAB1EH], ecx
- ;; size=8 bbWeight=1 PerfScore 1.25
-G_M8381_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M8381_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ xor eax, eax
+ mov dword ptr [D1FFAB1EH], eax
+ ;; size=7 bbWeight=1 PerfScore 1.25
+G_M8381_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00
-G_M8381_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
- mov ecx, 0xD1FFAB1E
- mov edx, 0x5EE
- call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- jmp SHORT G_M8381_IG03
- ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 35, prolog size 0, PerfScore 6.25, instruction count 9, allocated bytes for code 35 (MethodHash=dfccdf42) for method Microsoft.FSharp.Reflection.Impl:.cctor() (FullOpts)
+; Total bytes of code 8, prolog size 0, PerfScore 2.25, instruction count 3, allocated bytes for code 8 (MethodHash=dfccdf42) for method Microsoft.FSharp.Reflection.Impl:.cctor() (FullOpts)
; ============================================================
+0 (0.00%) : 2607.dasm - System.Reflection.SignatureTypeExtensions:MatchesParameterTypeExactly(System.Type,System.Reflection.ParameterInfo):ubyte (FullOpts)
@@ -7,10 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 4, 3.50) ref -> edi class-hnd single-def <System.Type>
+; V00 arg0 [V00,T01] ( 4, 4 ) ref -> edi class-hnd single-def <System.Type>
; V01 arg1 [V01,T00] ( 6, 4 ) ref -> esi class-hnd single-def <System.Reflection.ParameterInfo>
-; V02 loc0 [V02,T02] ( 3, 2.50) ref -> ebx class-hnd single-def <<unknown class>>
-; V03 tmp0 [V03,T03] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V02 loc0 [V02,T03] ( 2, 1.50) ref -> ebx class-hnd single-def <<unknown class>>
+; V03 tmp0 [V03,T02] ( 2, 2 ) ref -> edx single-def "argument with side effect"
;
; Lcl frame size = 0
@@ -29,11 +29,11 @@ G_M22240_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
mov edx, edi
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx] +[eax]
mov ebx, eax
; gcrRegs +[ebx]
- test ebx, ebx
+ test edi, edi
je SHORT G_M22240_IG05
;; size=18 bbWeight=1 PerfScore 3.00
G_M22240_IG03: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
@@ -58,15 +58,15 @@ G_M22240_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M22240_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs +[esi edi]
+G_M22240_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs +[esi]
mov ecx, esi
; gcrRegs +[ecx]
mov eax, dword ptr [esi]
mov eax, dword ptr [eax+0x2C]
call [eax+0x1C]<unknown method>
; gcrRegs -[ecx esi] +[eax]
- cmp eax, edi
+ test eax, eax
sete al
; gcrRegs -[eax]
movzx eax, al
+3 (+4.84%) : 2351.dasm - System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
@@ -7,10 +7,10 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 7, 5 ) ref -> esi this class-hnd single-def <System.Xml.XmlNode>
-; V01 loc0 [V01,T01] ( 4, 3 ) ref -> eax class-hnd single-def <<unknown class>>
+; V00 this [V00,T00] ( 6, 5 ) ref -> esi this class-hnd single-def <System.Xml.XmlNode>
+; V01 loc0 [V01,T02] ( 2, 1.50) ref -> edx class-hnd single-def <<unknown class>>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-; V03 tmp0 [V03,T02] ( 3, 3 ) ref -> eax single-def "argument with side effect"
+; V03 tmp0 [V03,T01] ( 3, 3 ) ref -> eax single-def "argument with side effect"
;
; Lcl frame size = 0
@@ -25,51 +25,51 @@ G_M19732_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov edx, esi
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFCLASS
+ call CORINFO_HELP_CHKCASTINTERFACE
; gcrRegs -[edx] +[eax]
- test eax, eax
- je SHORT G_M19732_IG05
- ;; size=16 bbWeight=1 PerfScore 2.75
-G_M19732_IG03: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
- mov ecx, eax
- ; gcrRegs +[ecx]
- mov edx, esi
+ mov edx, eax
; gcrRegs +[edx]
- mov eax, dword ptr [eax]
+ test esi, esi
+ je SHORT G_M19732_IG05
+ ;; size=18 bbWeight=1 PerfScore 3.00
+G_M19732_IG03: ; bbWeight=0.50, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
+ mov ecx, esi
+ ; gcrRegs +[ecx]
+ mov eax, dword ptr [esi]
mov eax, dword ptr [eax+0x54]
call [eax+0x08]<unknown method>
; gcrRegs -[ecx edx esi] +[eax]
- ;; size=12 bbWeight=0.50 PerfScore 3.75
+ ;; size=10 bbWeight=0.50 PerfScore 3.62
G_M19732_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop esi
pop ebp
ret
;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M19732_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax] +[esi]
- mov ecx, esi
+G_M19732_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax]
+ xor ecx, ecx
; gcrRegs +[ecx]
- mov eax, dword ptr [esi]
+ mov eax, dword ptr [0x0000]
mov eax, dword ptr [eax+0x30]
call [eax+0x18]<unknown method>
; gcrRegs -[ecx] +[eax]
mov ecx, eax
; gcrRegs +[ecx]
- mov edx, esi
+ xor edx, edx
; gcrRegs +[edx]
mov eax, dword ptr [eax]
; gcrRegs -[eax]
mov eax, dword ptr [eax+0x54]
call [eax+0x08]<unknown method>
- ; gcrRegs -[ecx edx esi] +[eax]
- ;; size=22 bbWeight=0.50 PerfScore 7.38
+ ; gcrRegs -[ecx edx] +[eax]
+ ;; size=25 bbWeight=0.50 PerfScore 7.38
G_M19732_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop esi
pop ebp
ret
;; size=3 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 62, prolog size 4, PerfScore 18.38, instruction count 29, allocated bytes for code 62 (MethodHash=3159b2eb) for method System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
+; Total bytes of code 65, prolog size 4, PerfScore 18.50, instruction count 29, allocated bytes for code 65 (MethodHash=3159b2eb) for method System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
; ============================================================
+10 (+14.29%) : 953.dasm - System.Linq.OrderedEnumerable`1[double]:ToArray():double[]:this (FullOpts)
@@ -10,18 +10,18 @@
;
; V00 this [V00,T00] ( 4, 3.50) ref -> esi this class-hnd single-def <System.Linq.OrderedEnumerable`1[double]>
; V01 loc0 [V01,T01] ( 4, 3 ) ref -> edi class-hnd single-def <double[]>
-; V02 loc1 [V02,T03] ( 4, 2 ) ref -> ebx class-hnd exact single-def <double[]>
+; V02 loc1 [V02,T02] ( 5, 2.50) ref -> ebx class-hnd single-def <double[]>
;* V03 tmp0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[double]>
;* V04 tmp1 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[double]>
;* V05 tmp2 [V05 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP
;* V06 tmp3 [V06 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x4)" P-INDEP
-; V07 tmp4 [V07,T04] ( 2, 1 ) byref -> ecx "field V04._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp5 [V08,T05] ( 2, 1 ) int -> edx "field V04._length (fldOffset=0x4)" P-INDEP
-; V09 cse0 [V09,T02] ( 3, 2.50) int -> edx "CSE - aggressive"
+; V07 tmp4 [V07,T04] ( 3, 1.50) byref -> ecx "field V04._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp5 [V08,T05] ( 3, 1.50) int -> edx "field V04._length (fldOffset=0x4)" P-INDEP
+; V09 cse0 [V09,T03] ( 3, 2.50) int -> edx "CSE - aggressive"
;
; Lcl frame size = 0
-G_M51402_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M51402_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
push edi
@@ -53,16 +53,28 @@ G_M51402_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret
;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M51402_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M51402_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax] +[esi]
mov ecx, 0xD1FFAB1E ; double[]
- call CORINFO_HELP_NEWARR_1_ALIGN8
+ call CORINFO_HELP_INITCLASS
; gcrRegs +[eax]
mov ebx, eax
; gcrRegs +[ebx]
+ test ebx, ebx
+ jne SHORT G_M51402_IG06
+ xor ecx, ecx
+ ; byrRegs +[ecx]
+ xor edx, edx
+ jmp SHORT G_M51402_IG07
+ ;; size=22 bbWeight=0.50 PerfScore 2.62
+G_M51402_IG06: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
+ ; byrRegs -[ecx]
lea ecx, bword ptr [ebx+0x08]
; byrRegs +[ecx]
mov edx, dword ptr [ebx+0x04]
+ ;; size=6 bbWeight=0.50 PerfScore 1.25
+G_M51402_IG07: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000002 {ecx}, byref
push edx
push ecx
mov ecx, esi
@@ -71,11 +83,11 @@ G_M51402_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e
mov edx, edi
; gcrRegs +[edx]
call [System.Linq.OrderedEnumerable`1[double]:Fill(double[],System.Span`1[double]):this]
- ; gcrRegs -[eax ecx edx esi edi]
+ ; gcrRegs -[ecx edx esi edi]
mov eax, ebx
; gcrRegs +[eax]
- ;; size=32 bbWeight=0.50 PerfScore 4.88
-G_M51402_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=14 bbWeight=0.50 PerfScore 2.88
+G_M51402_IG08: ; bbWeight=0.50, epilog, nogc, extend
pop ebx
pop esi
pop edi
@@ -83,6 +95,6 @@ G_M51402_IG06: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=5 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 70, prolog size 6, PerfScore 21.00, instruction count 34, allocated bytes for code 70 (MethodHash=0c773735) for method System.Linq.OrderedEnumerable`1[double]:ToArray():double[]:this (FullOpts)
+; Total bytes of code 80, prolog size 6, PerfScore 22.88, instruction count 39, allocated bytes for code 80 (MethodHash=0c773735) for method System.Linq.OrderedEnumerable`1[double]:ToArray():double[]:this (FullOpts)
; ============================================================
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.windows.x86.checked.mch |
63 |
58 |
3 |
2 |
-2,805 |
+19 |
| benchmarks.run_pgo.windows.x86.checked.mch |
88 |
84 |
0 |
4 |
-2,055 |
+0 |
| benchmarks.run_tiered.windows.x86.checked.mch |
93 |
87 |
1 |
5 |
-2,938 |
+5 |
| coreclr_tests.run.windows.x86.checked.mch |
16 |
16 |
0 |
0 |
-666 |
+0 |
| libraries.crossgen2.windows.x86.checked.mch |
7 |
5 |
0 |
2 |
-27 |
+0 |
| libraries.pmi.windows.x86.checked.mch |
171 |
171 |
0 |
0 |
-5,465 |
+0 |
| libraries_tests.run.windows.x86.Release.mch |
50 |
49 |
1 |
0 |
-922 |
+9 |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
72 |
70 |
2 |
0 |
-2,741 |
+4 |
| realworld.run.windows.x86.checked.mch |
75 |
72 |
2 |
1 |
-10,659 |
+13 |
|
635 |
612 |
9 |
14 |
-28,278 |
+50 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.windows.x86.checked.mch |
1,148 |
1 |
1,147 |
1 (0.03%) |
1,503 (49.33%) |
| benchmarks.run_pgo.windows.x86.checked.mch |
4,525 |
3,429 |
1,096 |
2 (0.02%) |
3,487 (41.47%) |
| benchmarks.run_tiered.windows.x86.checked.mch |
4,292 |
2,975 |
1,317 |
2 (0.03%) |
2,538 (35.12%) |
| coreclr_tests.run.windows.x86.checked.mch |
252 |
3 |
249 |
0 (0.00%) |
947 (59.37%) |
| libraries.crossgen2.windows.x86.checked.mch |
93,212 |
11 |
93,201 |
20 (0.01%) |
83,478 (47.14%) |
| libraries.pmi.windows.x86.checked.mch |
5,698 |
0 |
5,698 |
0 (0.00%) |
1,753 (22.34%) |
| libraries_tests.run.windows.x86.Release.mch |
2,048 |
1,519 |
529 |
21 (0.41%) |
2,630 (51.83%) |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
848 |
0 |
848 |
1 (0.04%) |
1,424 (53.37%) |
| realworld.run.windows.x86.checked.mch |
1,712 |
0 |
1,712 |
0 (0.00%) |
3,016 (58.86%) |
|
113,735 |
7,938 |
105,797 |
47 (0.02%) |
100,776 (46.21%) |
jit-analyze output
benchmarks.run.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 121260 (overridden on cmd)
Total bytes of diff: 118474 (overridden on cmd)
Total bytes of delta: -2786 (-2.30 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
10 : 974.dasm (14.29 % of base)
5 : 2934.dasm (3.50 % of base)
4 : 2088.dasm (0.92 % of base)
Top file improvements (bytes):
-372 : 531.dasm (-78.32 % of base)
-357 : 1534.dasm (-71.54 % of base)
-139 : 9.dasm (-73.54 % of base)
-88 : 1838.dasm (-27.24 % of base)
-83 : 1772.dasm (-31.80 % of base)
-83 : 1543.dasm (-31.80 % of base)
-79 : 568.dasm (-27.82 % of base)
-78 : 914.dasm (-59.09 % of base)
-72 : 1696.dasm (-61.54 % of base)
-67 : 2820.dasm (-23.93 % of base)
-59 : 2851.dasm (-21.15 % of base)
-59 : 1039.dasm (-31.72 % of base)
-58 : 1600.dasm (-24.89 % of base)
-54 : 236.dasm (-12.22 % of base)
-35 : 1240.dasm (-20.47 % of base)
-35 : 2058.dasm (-13.31 % of base)
-33 : 1261.dasm (-2.72 % of base)
-33 : 2497.dasm (-8.89 % of base)
-33 : 1955.dasm (-10.93 % of base)
-33 : 946.dasm (-4.80 % of base)
55 total files with Code Size differences (52 improved, 3 regressed), 2 unchanged.
Top method regressions (bytes):
10 (14.29 % of base) : 974.dasm - System.Linq.OrderedEnumerable`1[double]:ToArray():double[]:this (FullOpts)
5 (3.50 % of base) : 2934.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)
4 (0.92 % of base) : 2088.dasm - System.RuntimeType:FilterApplyBase(System.Reflection.MemberInfo,int,ubyte,ubyte,ubyte,System.String,ubyte):ubyte (FullOpts)
Top method improvements (bytes):
-372 (-78.32 % of base) : 531.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-357 (-71.54 % of base) : 1534.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[int]:SignalCompletion():this (FullOpts)
-139 (-73.54 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
-88 (-27.24 % of base) : 1838.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
-83 (-31.80 % of base) : 1543.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1+ConfiguredValueTaskAwaiter[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
-83 (-31.80 % of base) : 1772.dasm - System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable+ConfiguredValueTaskAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (FullOpts)
-79 (-27.82 % of base) : 568.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-78 (-59.09 % of base) : 914.dasm - System.Threading.ThreadPool:get_CompletedWorkItemCount():long (FullOpts)
-72 (-61.54 % of base) : 1696.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[int](System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.IOrderedCollection`1[int] (FullOpts)
-67 (-23.93 % of base) : 2820.dasm - System.HashCode:Add(int):this (FullOpts)
-59 (-31.72 % of base) : 1039.dasm - System.Linq.Enumerable:Concat[int](System.Collections.Generic.IEnumerable`1[int],System.Collections.Generic.IEnumerable`1[int]):System.Collections.Generic.IEnumerable`1[int] (FullOpts)
-59 (-21.15 % of base) : 2851.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[MicroBenchmarks.Serializers.StructRecord]():System.Text.Json.Serialization.JsonConverter`1[MicroBenchmarks.Serializers.StructRecord]:this (FullOpts)
-58 (-24.89 % of base) : 1600.dasm - System.Text.EncodingHelper:GetSupportedConsoleEncoding(int):System.Text.Encoding (FullOpts)
-54 (-12.22 % of base) : 236.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-35 (-13.31 % of base) : 2058.dasm - Microsoft.Extensions.Logging.EventSourceLoggerFactoryExtensions:AddEventSourceLogger(Microsoft.Extensions.Logging.ILoggingBuilder):Microsoft.Extensions.Logging.ILoggingBuilder (FullOpts)
-35 (-20.47 % of base) : 1240.dasm - System.Threading.PortableThreadPool:ShouldAdjustMaxWorkersActive(int):ubyte:this (FullOpts)
-33 (-10.93 % of base) : 1955.dasm - Microsoft.Extensions.DependencyInjection.DependencyInjectionEventSource:CallSiteBuilt(Microsoft.Extensions.DependencyInjection.ServiceProvider,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite):this (FullOpts)
-33 (-8.89 % of base) : 2497.dasm - ProtoBuf.Internal.TypeCompatibilityHelper:GetModuleCompatibilityLevel(System.Reflection.Module):int (FullOpts)
-33 (-2.72 % of base) : 1261.dasm - System.Threading.ManualResetEventSlim:Wait(int,System.Threading.CancellationToken):ubyte:this (FullOpts)
-33 (-4.80 % of base) : 946.dasm - System.Threading.ProcessorIdCache:ProcessorNumberSpeedCheck():ubyte (FullOpts)
Top method regressions (percentages):
10 (14.29 % of base) : 974.dasm - System.Linq.OrderedEnumerable`1[double]:ToArray():double[]:this (FullOpts)
5 (3.50 % of base) : 2934.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (FullOpts)
4 (0.92 % of base) : 2088.dasm - System.RuntimeType:FilterApplyBase(System.Reflection.MemberInfo,int,ubyte,ubyte,ubyte,System.String,ubyte):ubyte (FullOpts)
Top method improvements (percentages):
-372 (-78.32 % of base) : 531.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-139 (-73.54 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
-26 (-72.22 % of base) : 2379.dasm - ProtoBuf.Meta.TypeModel+NullModel:get_Singleton():ProtoBuf.Meta.TypeModel (FullOpts)
-357 (-71.54 % of base) : 1534.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[int]:SignalCompletion():this (FullOpts)
-30 (-66.67 % of base) : 1063.dasm - System.Numerics.Tests.Perf_VectorConvert:Convert_uint_float():System.Numerics.Vector`1[float]:this (FullOpts)
-30 (-65.22 % of base) : 1595.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
-26 (-63.41 % of base) : 1174.dasm - System.Threading.ThreadPool:RequestWorkerThread() (FullOpts)
-72 (-61.54 % of base) : 1696.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[int](System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.IOrderedCollection`1[int] (FullOpts)
-78 (-59.09 % of base) : 914.dasm - System.Threading.ThreadPool:get_CompletedWorkItemCount():long (FullOpts)
-30 (-51.72 % of base) : 2024.dasm - Microsoft.Extensions.Logging.ScopesOverheadBenchmark:NotFiltered():this (FullOpts)
-30 (-51.72 % of base) : 1654.dasm - System.Numerics.Tests.Perf_Vector2:AddFunctionBenchmark():System.Numerics.Vector2:this (FullOpts)
-26 (-50.00 % of base) : 2358.dasm - System.Reflection.Attributes:IsDefinedMethodOverrideMissInherit():ubyte:this (FullOpts)
-26 (-50.00 % of base) : 1163.dasm - System.Threading.Tasks.TaskReplicator:GenerateCooperativeMultitaskingTaskTimeout():int (FullOpts)
-32 (-47.06 % of base) : 1021.dasm - System.AppDomain:OnProcessExit() (FullOpts)
-26 (-44.83 % of base) : 798.dasm - System.Text.RegularExpressions.Regex:.cctor() (FullOpts)
-30 (-40.00 % of base) : 1731.dasm - System.Numerics.Tests.Perf_Vector3:NegateBenchmark():System.Numerics.Vector3:this (FullOpts)
-16 (-40.00 % of base) : 846.dasm - System.Text.RegularExpressions.RegexNode:ChildCount():int:this (FullOpts)
-28 (-39.44 % of base) : 1132.dasm - System.Threading.Tasks.TaskScheduler:get_Id():int:this (FullOpts)
-26 (-36.62 % of base) : 1812.dasm - System.IO.Tests.Perf_RandomAccess_NoBuffering+<>c:<Setup>b__11_9(int):System.AlignedMemory:this (FullOpts)
-28 (-35.00 % of base) : 2149.dasm - System.Diagnostics.Tracing.NameInfo:ReserveEventIDsBelow(int) (FullOpts)
benchmarks.run_pgo.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 446652 (overridden on cmd)
Total bytes of diff: 444597 (overridden on cmd)
Total bytes of delta: -2055 (-0.46 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-225 : 8124.dasm (-14.76 % of base)
-128 : 8544.dasm (-17.61 % of base)
-79 : 3657.dasm (-71.82 % of base)
-74 : 2975.dasm (-56.06 % of base)
-74 : 2974.dasm (-56.06 % of base)
-69 : 5526.dasm (-23.63 % of base)
-60 : 5128.dasm (-43.48 % of base)
-45 : 17.dasm (-36.59 % of base)
-42 : 2158.dasm (-56.76 % of base)
-40 : 5833.dasm (-46.51 % of base)
-33 : 2990.dasm (-4.55 % of base)
-30 : 3667.dasm (-6.80 % of base)
-30 : 3182.dasm (-31.91 % of base)
-28 : 4138.dasm (-39.44 % of base)
-27 : 2582.dasm (-50.94 % of base)
-27 : 2647.dasm (-49.09 % of base)
-25 : 4158.dasm (-34.25 % of base)
-25 : 878.dasm (-12.14 % of base)
-25 : 2576.dasm (-22.32 % of base)
-25 : 5103.dasm (-20.49 % of base)
68 total files with Code Size differences (68 improved, 0 regressed), 4 unchanged.
Top method improvements (bytes):
-225 (-14.76 % of base) : 8124.dasm - ProtoBuf.Meta.ValueMember:TryGetCoreSerializer(ProtoBuf.Meta.RuntimeTypeModel,int,int,System.Type,byref,ubyte,ubyte,ubyte,ubyte):ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode (Tier0)
-128 (-17.61 % of base) : 8544.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(int):System.Reflection.MethodInfo:this (Tier0)
-79 (-71.82 % of base) : 3657.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:DefineBlockLabels(System.Linq.Expressions.Expression):this (Tier0-FullOpts)
-74 (-56.06 % of base) : 2975.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
-74 (-56.06 % of base) : 2974.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
-69 (-23.63 % of base) : 5526.dasm - System.Net.Primitives.Tests.CredentialCacheTests:CreateCredentialCache(int,int):System.Net.CredentialCache (Tier0-FullOpts)
-60 (-43.48 % of base) : 5128.dasm - System.HashCode:Initialize(byref,byref,byref,byref) (Tier0)
-45 (-36.59 % of base) : 17.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (Tier0)
-42 (-56.76 % of base) : 2158.dasm - System.Xml.XmlUTF8NodeWriter:.ctor():this (Tier0)
-40 (-46.51 % of base) : 5833.dasm - System.Numerics.Tests.Perf_Vector2:AddFunctionBenchmark():System.Numerics.Vector2:this (Tier0)
-33 (-4.55 % of base) : 2990.dasm - System.Threading.ProcessorIdCache:ProcessorNumberSpeedCheck():ubyte (Tier0-FullOpts)
-30 (-6.80 % of base) : 3667.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitConditionalExpression(System.Linq.Expressions.Expression,int):this (Tier0)
-30 (-31.91 % of base) : 3182.dasm - System.TimeZoneInfo:UtcOffsetOutOfRange(System.TimeSpan):ubyte (Tier0)
-28 (-39.44 % of base) : 4138.dasm - System.Threading.Tasks.TaskScheduler:get_Id():int:this (Tier0-FullOpts)
-27 (-50.94 % of base) : 2582.dasm - Microsoft.Extensions.DependencyInjection.ServiceCollectionContainerBuilderExtensions:BuildServiceProvider(Microsoft.Extensions.DependencyInjection.IServiceCollection):Microsoft.Extensions.DependencyInjection.ServiceProvider (Tier0)
-27 (-49.09 % of base) : 2647.dasm - System.String:ToUpperInvariant():System.String:this (Tier0)
-25 (-22.32 % of base) : 2576.dasm - Microsoft.Extensions.DependencyInjection.OptionsServiceCollectionExtensions:Configure[System.__Canon](Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action`1[System.__Canon]):Microsoft.Extensions.DependencyInjection.IServiceCollection (Tier0)
-25 (-12.14 % of base) : 878.dasm - System.Reflection.PseudoCustomAttribute:IsDefined(System.RuntimeType,System.RuntimeType):ubyte (Tier0)
-25 (-20.49 % of base) : 5103.dasm - System.Text.Json.JsonSerializer:GetTypeInfo(System.Text.Json.JsonSerializerOptions,System.Type):System.Text.Json.Serialization.Metadata.JsonTypeInfo (Tier0)
-25 (-34.25 % of base) : 4158.dasm - System.Threading.ThreadPool:UnsafeQueueUserWorkItemInternal(System.Object,ubyte) (Tier0)
Top method improvements (percentages):
-79 (-71.82 % of base) : 3657.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:DefineBlockLabels(System.Linq.Expressions.Expression):this (Tier0-FullOpts)
-15 (-60.00 % of base) : 3214.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:get_Default():MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext (Tier0)
-15 (-60.00 % of base) : 8058.dasm - ProtoBuf.Meta.TypeModel+NullModel:get_Singleton():ProtoBuf.Meta.TypeModel (Tier0)
-15 (-60.00 % of base) : 3534.dasm - System.Collections.Generic.ReferenceEqualityComparer:get_Instance():System.Collections.Generic.ReferenceEqualityComparer (Tier0)
-15 (-60.00 % of base) : 4367.dasm - System.Diagnostics.DistributedContextPropagator:get_Current():System.Diagnostics.DistributedContextPropagator (Tier0)
-15 (-60.00 % of base) : 4370.dasm - System.Diagnostics.LegacyPropagator:get_Instance():System.Diagnostics.DistributedContextPropagator (Tier0)
-15 (-60.00 % of base) : 7189.dasm - System.Globalization.DateTimeFormatInfo:get_InvariantInfo():System.Globalization.DateTimeFormatInfo (Tier0)
-15 (-60.00 % of base) : 4332.dasm - System.Net.Http.GlobalHttpSettings+SocketsHttpHandler:get_MaxConnectionsPerServer():int (Tier0)
-15 (-60.00 % of base) : 2242.dasm - System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (Tier0)
-15 (-60.00 % of base) : 6780.dasm - System.Runtime.Serialization.SerializationInfo:get_AsyncDeserializationInProgress():System.Threading.AsyncLocal`1[ubyte] (Tier0)
-15 (-60.00 % of base) : 7217.dasm - System.Security.Cryptography.RandomNumberGenerator:Create():System.Security.Cryptography.RandomNumberGenerator (Tier0)
-15 (-60.00 % of base) : 21.dasm - System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
-15 (-60.00 % of base) : 26.dasm - System.StringComparer:get_OrdinalIgnoreCase():System.StringComparer (Tier0)
-15 (-60.00 % of base) : 449.dasm - System.Text.DecoderFallback:get_ExceptionFallback():System.Text.DecoderFallback (Tier0)
-15 (-60.00 % of base) : 446.dasm - System.Text.EncoderFallback:get_ExceptionFallback():System.Text.EncoderFallback (Tier0)
-15 (-60.00 % of base) : 2725.dasm - System.Text.Encoding:get_BigEndianUnicode():System.Text.Encoding (Tier0)
-15 (-60.00 % of base) : 94.dasm - System.Text.Encoding:get_UTF8():System.Text.Encoding (Tier0)
-15 (-60.00 % of base) : 5058.dasm - System.Text.Encodings.Web.JavaScriptEncoder:get_Default():System.Text.Encodings.Web.JavaScriptEncoder (Tier0)
-15 (-60.00 % of base) : 3218.dasm - System.Text.Json.JsonSerializerOptions+TrackedOptionsInstances:get_All():System.Runtime.CompilerServices.ConditionalWeakTable`2[System.Text.Json.JsonSerializerOptions,System.Object] (Tier0)
-15 (-60.00 % of base) : 454.dasm - System.Threading.Tasks.Task:get_CompletedTask():System.Threading.Tasks.Task (Tier0)
benchmarks.run_tiered.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 340626 (overridden on cmd)
Total bytes of diff: 337693 (overridden on cmd)
Total bytes of delta: -2933 (-0.86 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
5 : 3963.dasm (3.50 % of base)
Top file improvements (bytes):
-372 : 1741.dasm (-78.32 % of base)
-324 : 6779.dasm (-69.53 % of base)
-193 : 3180.dasm (-74.81 % of base)
-128 : 4319.dasm (-17.61 % of base)
-88 : 6794.dasm (-27.24 % of base)
-80 : 4262.dasm (-11.35 % of base)
-79 : 1844.dasm (-27.82 % of base)
-74 : 2289.dasm (-56.06 % of base)
-74 : 2290.dasm (-56.06 % of base)
-60 : 3359.dasm (-43.48 % of base)
-45 : 17.dasm (-36.59 % of base)
-33 : 2305.dasm (-4.80 % of base)
-33 : 2967.dasm (-2.72 % of base)
-33 : 6033.dasm (-10.93 % of base)
-33 : 6514.dasm (-9.40 % of base)
-30 : 2627.dasm (-41.67 % of base)
-30 : 3238.dasm (-31.91 % of base)
-30 : 4937.dasm (-17.54 % of base)
-30 : 6142.dasm (-31.25 % of base)
-28 : 2833.dasm (-47.46 % of base)
63 total files with Code Size differences (62 improved, 1 regressed), 5 unchanged.
Top method regressions (bytes):
5 (3.50 % of base) : 3963.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (Tier1)
Top method improvements (bytes):
-372 (-78.32 % of base) : 1741.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
-324 (-69.53 % of base) : 6779.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[int]:SignalCompletion():this (Tier1)
-193 (-74.81 % of base) : 3180.dasm - System.Linq.Enumerable:Where[double](System.Collections.Generic.IEnumerable`1[double],System.Func`2[double,ubyte]):System.Collections.Generic.IEnumerable`1[double] (Tier1)
-128 (-17.61 % of base) : 4319.dasm - System.RuntimeType+RuntimeTypeCache:GetGenericMethodInfo(int):System.Reflection.MethodInfo:this (Tier0)
-88 (-27.24 % of base) : 6794.dasm - System.Runtime.CompilerServices.ValueTaskAwaiter`1[int]:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
-80 (-11.35 % of base) : 4262.dasm - System.Text.RegularExpressions.RegexCompiler:EmitTryFindNextPossibleStartingPosition():this (Tier0)
-79 (-27.82 % of base) : 1844.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
-74 (-56.06 % of base) : 2290.dasm - System.Threading.PortableThreadPool:get_HasForcedMaxThreads():ubyte (Tier0)
-74 (-56.06 % of base) : 2289.dasm - System.Threading.PortableThreadPool:get_HasForcedMinThreads():ubyte (Tier0)
-60 (-43.48 % of base) : 3359.dasm - System.HashCode:Initialize(byref,byref,byref,byref) (Tier0)
-45 (-36.59 % of base) : 17.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (Tier0)
-33 (-10.93 % of base) : 6033.dasm - Microsoft.Extensions.DependencyInjection.DependencyInjectionEventSource:CallSiteBuilt(Microsoft.Extensions.DependencyInjection.ServiceProvider,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite):this (Tier0-FullOpts)
-33 (-9.40 % of base) : 6514.dasm - System.MemoryExtensions:Equals(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):ubyte (Tier1)
-33 (-2.72 % of base) : 2967.dasm - System.Threading.ManualResetEventSlim:Wait(int,System.Threading.CancellationToken):ubyte:this (Tier0-FullOpts)
-33 (-4.80 % of base) : 2305.dasm - System.Threading.ProcessorIdCache:ProcessorNumberSpeedCheck():ubyte (Tier0-FullOpts)
-30 (-31.25 % of base) : 6142.dasm - Microsoft.Extensions.Logging.ScopesOverheadBenchmark:NotFiltered():this (Tier0)
-30 (-17.54 % of base) : 4937.dasm - System.Reflection.Emit.RuntimeTypeBuilder:DefineConstructorNoLock(int,int,System.Type[],System.Type[][],System.Type[][]):System.Reflection.Emit.ConstructorBuilder:this (Tier0)
-30 (-41.67 % of base) : 2627.dasm - System.Runtime.Intrinsics.Tests.Perf_Vector128Int:LessThanBenchmark():System.Runtime.Intrinsics.Vector128`1[int]:this (Tier0)
-30 (-31.91 % of base) : 3238.dasm - System.TimeZoneInfo:UtcOffsetOutOfRange(System.TimeSpan):ubyte (Tier0)
-28 (-47.46 % of base) : 2833.dasm - System.Runtime.CompilerServices.AsyncMethodBuilderCore:get_TrackAsyncMethodCompletion():ubyte (Tier0)
Top method regressions (percentages):
5 (3.50 % of base) : 3963.dasm - System.Text.Json.Serialization.JsonConverter:CreateCastingConverter[System.__Canon]():System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:this (Tier1)
Top method improvements (percentages):
-372 (-78.32 % of base) : 1741.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
-193 (-74.81 % of base) : 3180.dasm - System.Linq.Enumerable:Where[double](System.Collections.Generic.IEnumerable`1[double],System.Func`2[double,ubyte]):System.Collections.Generic.IEnumerable`1[double] (Tier1)
-324 (-69.53 % of base) : 6779.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[int]:SignalCompletion():this (Tier1)
-15 (-60.00 % of base) : 3270.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:get_Default():MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext (Tier0)
-15 (-60.00 % of base) : 6035.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:get_Instance():Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver (Tier0)
-15 (-60.00 % of base) : 6838.dasm - System.Globalization.DateTimeFormatInfo:get_InvariantInfo():System.Globalization.DateTimeFormatInfo (Tier0)
-15 (-60.00 % of base) : 6366.dasm - System.IO.Pipelines.PipeScheduler:get_ThreadPool():System.IO.Pipelines.PipeScheduler (Tier0)
-15 (-60.00 % of base) : 3880.dasm - System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (Tier0)
-15 (-60.00 % of base) : 6499.dasm - System.Runtime.Serialization.SerializationInfo:get_AsyncDeserializationInProgress():System.Threading.AsyncLocal`1[ubyte] (Tier0)
-15 (-60.00 % of base) : 21.dasm - System.StringComparer:get_Ordinal():System.StringComparer (Tier0)
-15 (-60.00 % of base) : 26.dasm - System.StringComparer:get_OrdinalIgnoreCase():System.StringComparer (Tier0)
-15 (-60.00 % of base) : 415.dasm - System.Text.DecoderFallback:get_ExceptionFallback():System.Text.DecoderFallback (Tier0)
-15 (-60.00 % of base) : 6951.dasm - System.Text.DecoderFallback:get_ReplacementFallback():System.Text.DecoderFallback (Tier0)
-15 (-60.00 % of base) : 412.dasm - System.Text.EncoderFallback:get_ExceptionFallback():System.Text.EncoderFallback (Tier0)
-15 (-60.00 % of base) : 6948.dasm - System.Text.EncoderFallback:get_ReplacementFallback():System.Text.EncoderFallback (Tier0)
-15 (-60.00 % of base) : 1992.dasm - System.Text.Encoding:get_BigEndianUnicode():System.Text.Encoding (Tier0)
-15 (-60.00 % of base) : 6943.dasm - System.Text.Encoding:get_Default():System.Text.Encoding (Tier0)
-15 (-60.00 % of base) : 80.dasm - System.Text.Encoding:get_UTF8():System.Text.Encoding (Tier0)
-15 (-60.00 % of base) : 3297.dasm - System.Text.Encodings.Web.JavaScriptEncoder:get_Default():System.Text.Encodings.Web.JavaScriptEncoder (Tier0)
-15 (-60.00 % of base) : 3274.dasm - System.Text.Json.JsonSerializerOptions+TrackedOptionsInstances:get_All():System.Runtime.CompilerServices.ConditionalWeakTable`2[System.Text.Json.JsonSerializerOptions,System.Object] (Tier0)
coreclr_tests.run.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 23513 (overridden on cmd)
Total bytes of diff: 22847 (overridden on cmd)
Total bytes of delta: -666 (-2.83 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-87 : 41.dasm (-77.68 % of base)
-87 : 753.dasm (-77.68 % of base)
-58 : 12.dasm (-24.89 % of base)
-58 : 683.dasm (-24.89 % of base)
-55 : 687.dasm (-31.79 % of base)
-55 : 16.dasm (-31.79 % of base)
-33 : 550.dasm (-10.78 % of base)
-30 : 678.dasm (-65.22 % of base)
-30 : 7.dasm (-65.22 % of base)
-30 : 31.dasm (-49.18 % of base)
-26 : 418.dasm (-78.79 % of base)
-26 : 556.dasm (-44.83 % of base)
-26 : 500.dasm (-49.06 % of base)
-26 : 473.dasm (-41.27 % of base)
-23 : 326.dasm (-8.04 % of base)
-16 : 573.dasm (-40.00 % of base)
16 total files with Code Size differences (16 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-87 (-77.68 % of base) : 41.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
-87 (-77.68 % of base) : 753.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
-58 (-24.89 % of base) : 12.dasm - System.Text.EncodingHelper:GetSupportedConsoleEncoding(int):System.Text.Encoding (FullOpts)
-58 (-24.89 % of base) : 683.dasm - System.Text.EncodingHelper:GetSupportedConsoleEncoding(int):System.Text.Encoding (FullOpts)
-55 (-31.79 % of base) : 687.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
-55 (-31.79 % of base) : 16.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
-33 (-10.78 % of base) : 550.dasm - CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (FullOpts)
-30 (-65.22 % of base) : 678.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
-30 (-65.22 % of base) : 7.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
-30 (-49.18 % of base) : 31.dasm - TestLibrary.Utilities:get_Verbose():ubyte (FullOpts)
-26 (-78.79 % of base) : 418.dasm - DelegateDefinitions:TestVoidParameterVoidStaticCallback() (FullOpts)
-26 (-44.83 % of base) : 556.dasm - System.Text.RegularExpressions.Regex:.cctor() (FullOpts)
-26 (-41.27 % of base) : 473.dasm - Test_negativegenerics:TestEntryPoint():int (FullOpts)
-26 (-49.06 % of base) : 500.dasm - TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (FullOpts)
-23 (-8.04 % of base) : 326.dasm - Program:TestEntryPoint():int (FullOpts)
-16 (-40.00 % of base) : 573.dasm - System.Text.RegularExpressions.RegexNode:ChildCount():int:this (FullOpts)
Top method improvements (percentages):
-26 (-78.79 % of base) : 418.dasm - DelegateDefinitions:TestVoidParameterVoidStaticCallback() (FullOpts)
-87 (-77.68 % of base) : 41.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
-87 (-77.68 % of base) : 753.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
-30 (-65.22 % of base) : 678.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
-30 (-65.22 % of base) : 7.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
-30 (-49.18 % of base) : 31.dasm - TestLibrary.Utilities:get_Verbose():ubyte (FullOpts)
-26 (-49.06 % of base) : 500.dasm - TestLibrary.OutOfProcessTest:get_OutOfProcessTestsSupported():ubyte (FullOpts)
-26 (-44.83 % of base) : 556.dasm - System.Text.RegularExpressions.Regex:.cctor() (FullOpts)
-26 (-41.27 % of base) : 473.dasm - Test_negativegenerics:TestEntryPoint():int (FullOpts)
-16 (-40.00 % of base) : 573.dasm - System.Text.RegularExpressions.RegexNode:ChildCount():int:this (FullOpts)
-55 (-31.79 % of base) : 687.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
-55 (-31.79 % of base) : 16.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
-58 (-24.89 % of base) : 12.dasm - System.Text.EncodingHelper:GetSupportedConsoleEncoding(int):System.Text.Encoding (FullOpts)
-58 (-24.89 % of base) : 683.dasm - System.Text.EncodingHelper:GetSupportedConsoleEncoding(int):System.Text.Encoding (FullOpts)
-33 (-10.78 % of base) : 550.dasm - CoreclrTestLib.MobileAppHandler:CheckExitCode(int,System.String,System.String,System.IO.StreamWriter) (FullOpts)
-23 (-8.04 % of base) : 326.dasm - Program:TestEntryPoint():int (FullOpts)
16 total methods with Code Size differences (16 improved, 0 regressed).
libraries.crossgen2.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 5347103 (overridden on cmd)
Total bytes of diff: 5347076 (overridden on cmd)
Total bytes of delta: -27 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-11 : 6551.dasm (-2.75 % of base)
-10 : 20736.dasm (-35.71 % of base)
-4 : 134540.dasm (-3.67 % of base)
-1 : 137495.dasm (-1.32 % of base)
-1 : 134544.dasm (-2.44 % of base)
5 total files with Code Size differences (5 improved, 0 regressed), 2 unchanged.
Top method improvements (bytes):
-11 (-2.75 % of base) : 6551.dasm - System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)
-10 (-35.71 % of base) : 20736.dasm - System.Threading.PreAllocatedOverlapped:AddRef():ubyte:this (FullOpts)
-4 (-3.67 % of base) : 134540.dasm - Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
-1 (-1.32 % of base) : 137495.dasm - Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
-1 (-2.44 % of base) : 134544.dasm - Roslyn.Utilities.PathUtilities:NormalizeWithForwardSlash(System.String):System.String (FullOpts)
Top method improvements (percentages):
-10 (-35.71 % of base) : 20736.dasm - System.Threading.PreAllocatedOverlapped:AddRef():ubyte:this (FullOpts)
-4 (-3.67 % of base) : 134540.dasm - Roslyn.Utilities.PathUtilities:PathCharEqual(ushort,ushort):ubyte (FullOpts)
-11 (-2.75 % of base) : 6551.dasm - System.Threading.PortableThreadPool+BlockingConfig:.cctor() (FullOpts)
-1 (-2.44 % of base) : 134544.dasm - Roslyn.Utilities.PathUtilities:NormalizeWithForwardSlash(System.String):System.String (FullOpts)
-1 (-1.32 % of base) : 137495.dasm - Microsoft.CodeAnalysis.RuleSetInclude:<GetIncludePath>g__resolveIncludePath|8_0(System.String,System.String):System.String (FullOpts)
5 total methods with Code Size differences (5 improved, 0 regressed).
libraries.pmi.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 792946 (overridden on cmd)
Total bytes of diff: 787481 (overridden on cmd)
Total bytes of delta: -5465 (-0.69 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-357 : 5929.dasm (-71.54 % of base)
-203 : 5707.dasm (-40.52 % of base)
-108 : 1635.dasm (-29.75 % of base)
-105 : 1652.dasm (-28.69 % of base)
-99 : 1668.dasm (-24.44 % of base)
-88 : 5901.dasm (-40.55 % of base)
-83 : 1662.dasm (-19.90 % of base)
-83 : 5904.dasm (-36.40 % of base)
-79 : 5888.dasm (-57.25 % of base)
-79 : 5889.dasm (-54.86 % of base)
-64 : 5694.dasm (-25.00 % of base)
-60 : 5850.dasm (-13.57 % of base)
-58 : 17.dasm (-24.89 % of base)
-55 : 21.dasm (-31.79 % of base)
-48 : 5665.dasm (-21.62 % of base)
-45 : 1633.dasm (-34.88 % of base)
-44 : 2432.dasm (-10.28 % of base)
-44 : 1726.dasm (-10.23 % of base)
-44 : 1725.dasm (-10.28 % of base)
-44 : 2433.dasm (-10.23 % of base)
78 total files with Code Size differences (78 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-357 (-71.54 % of base) : 5929.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[ubyte]:SignalCompletion():this (FullOpts)
-203 (-40.52 % of base) : 5707.dasm - System.Threading.Tasks.TaskAsyncEnumerableExtensions+<ToBlockingEnumerable>d__3`1[ubyte]:<>m__Finally1():this (FullOpts)
-108 (-29.75 % of base) : 1635.dasm - System.Lazy`1[ubyte]:CreateValue():ubyte:this (FullOpts)
-105 (-28.69 % of base) : 1652.dasm - System.Lazy`1[short]:CreateValue():short:this (FullOpts)
-99 (-24.44 % of base) : 1668.dasm - System.Lazy`1[System.Numerics.Vector`1[float]]:CreateValue():System.Numerics.Vector`1[float]:this (FullOpts)
-88 (-40.55 % of base) : 5901.dasm - System.Threading.Tasks.ValueTask`1[double]:get_Result():double:this (FullOpts)
-83 (-19.90 % of base) : 1662.dasm - System.Lazy`1[double]:CreateValue():double:this (FullOpts)
-83 (-36.40 % of base) : 5904.dasm - System.Threading.Tasks.ValueTask`1[System.Numerics.Vector`1[float]]:get_Result():System.Numerics.Vector`1[float]:this (FullOpts)
-79 (-54.86 % of base) : 5889.dasm - System.Threading.Tasks.ValueTask`1[ubyte]:get_IsCanceled():ubyte:this (FullOpts)
-79 (-57.25 % of base) : 5888.dasm - System.Threading.Tasks.ValueTask`1[ubyte]:get_IsFaulted():ubyte:this (FullOpts)
-64 (-25.00 % of base) : 5694.dasm - System.Threading.Tasks.UnwrapPromise`1[ubyte]:ProcessCompletedOuterTask(System.Threading.Tasks.Task):this (FullOpts)
-60 (-13.57 % of base) : 5850.dasm - System.Threading.Tasks.TaskFactory+CompleteOnCountdownPromise`1[ubyte]:Invoke(System.Threading.Tasks.Task):this (FullOpts)
-58 (-24.89 % of base) : 17.dasm - System.Text.EncodingHelper:GetSupportedConsoleEncoding(int):System.Text.Encoding (FullOpts)
-55 (-31.79 % of base) : 21.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
-48 (-21.62 % of base) : 5665.dasm - System.Threading.Tasks.Task:Run[ubyte](System.Func`1[System.Threading.Tasks.Task`1[ubyte]],System.Threading.CancellationToken):System.Threading.Tasks.Task`1[ubyte] (FullOpts)
-45 (-34.88 % of base) : 1633.dasm - System.Lazy`1[ubyte]:PublicationOnlyViaFactory(System.LazyHelper):this (FullOpts)
-44 (-10.28 % of base) : 1725.dasm - System.Memory`1[short]:CopyTo(System.Memory`1[short]):this (FullOpts)
-44 (-10.23 % of base) : 1726.dasm - System.Memory`1[short]:TryCopyTo(System.Memory`1[short]):ubyte:this (FullOpts)
-44 (-10.28 % of base) : 2432.dasm - System.ReadOnlyMemory`1[short]:CopyTo(System.Memory`1[short]):this (FullOpts)
-44 (-10.23 % of base) : 2433.dasm - System.ReadOnlyMemory`1[short]:TryCopyTo(System.Memory`1[short]):ubyte:this (FullOpts)
Top method improvements (percentages):
-26 (-81.25 % of base) : 5758.dasm - System.Threading.Tasks.AwaitTaskContinuation:GetInvokeActionCallback():System.Threading.ContextCallback (FullOpts)
-26 (-81.25 % of base) : 5269.dasm - System.Threading.WindowsThreadPool:get_ThreadCount():int (FullOpts)
-26 (-74.29 % of base) : 5275.dasm - System.Threading.WindowsThreadPool+ThreadCountHolder:.ctor():this (FullOpts)
-357 (-71.54 % of base) : 5929.dasm - System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[ubyte]:SignalCompletion():this (FullOpts)
-36 (-70.59 % of base) : 5267.dasm - System.Threading.WindowsThreadPool:GetMaxThreads(byref,byref) (FullOpts)
-30 (-65.22 % of base) : 12.dasm - System.Console:get_Out():System.IO.TextWriter (FullOpts)
-34 (-58.62 % of base) : 3978.dasm - System.Numerics.BitOperations+Crc32Fallback:Crc32C(uint,ubyte):uint (FullOpts)
-26 (-57.78 % of base) : 5052.dasm - System.Threading.Lock:get_ContentionCount():long (FullOpts)
-30 (-57.69 % of base) : 4973.dasm - System.Threading.ThreadPool:BindHandlePortableCore(int):ubyte (FullOpts)
-79 (-57.25 % of base) : 5888.dasm - System.Threading.Tasks.ValueTask`1[ubyte]:get_IsFaulted():ubyte:this (FullOpts)
-30 (-56.60 % of base) : 5760.dasm - System.Threading.Tasks.TaskFactory:get_DefaultScheduler():System.Threading.Tasks.TaskScheduler:this (FullOpts)
-30 (-56.60 % of base) : 5432.dasm - System.Threading.Tasks.TaskFactory`1[System.__Canon]:get_DefaultScheduler():System.Threading.Tasks.TaskScheduler:this (FullOpts)
-30 (-56.60 % of base) : 5483.dasm - System.Threading.Tasks.TaskFactory`1[ubyte]:get_DefaultScheduler():System.Threading.Tasks.TaskScheduler:this (FullOpts)
-26 (-55.32 % of base) : 5270.dasm - System.Threading.WindowsThreadPool:get_CompletedWorkItemCount():long (FullOpts)
-79 (-54.86 % of base) : 5889.dasm - System.Threading.Tasks.ValueTask`1[ubyte]:get_IsCanceled():ubyte:this (FullOpts)
-26 (-53.06 % of base) : 6193.dasm - System.Runtime.MemoryFailPoint:set_LastTimeCheckingAddressSpace(long) (FullOpts)
-26 (-53.06 % of base) : 6088.dasm - System.Text.Unicode.TextSegmentationUtility:GetLengthOfFirstUtf16ExtendedGraphemeCluster(System.ReadOnlySpan`1[ushort]):int (FullOpts)
-42 (-49.41 % of base) : 4285.dasm - System.Numerics.Vector:StoreAligned[ubyte](System.Numerics.Vector`1[ubyte],uint) (FullOpts)
-42 (-48.84 % of base) : 4217.dasm - System.Numerics.Vector:LoadAligned[ubyte](uint):System.Numerics.Vector`1[ubyte] (FullOpts)
-26 (-48.15 % of base) : 6192.dasm - System.Runtime.MemoryFailPoint:get_LastTimeCheckingAddressSpace():long (FullOpts)
libraries_tests.run.windows.x86.Release.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 194262 (overridden on cmd)
Total bytes of diff: 193349 (overridden on cmd)
Total bytes of delta: -913 (-0.47 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
9 : 1664.dasm (9.89 % of base)
Top file improvements (bytes):
-39 : 4438.dasm (-25.66 % of base)
-39 : 920.dasm (-25.66 % of base)
-38 : 3016.dasm (-19.69 % of base)
-33 : 3066.dasm (-7.88 % of base)
-30 : 27.dasm (-23.08 % of base)
-30 : 277.dasm (-8.62 % of base)
-30 : 3473.dasm (-23.08 % of base)
-30 : 2177.dasm (-55.56 % of base)
-30 : 3729.dasm (-8.62 % of base)
-30 : 4403.dasm (-10.83 % of base)
-30 : 1659.dasm (-12.00 % of base)
-25 : 3130.dasm (-13.89 % of base)
-23 : 1774.dasm (-17.97 % of base)
-16 : 2832.dasm (-23.53 % of base)
-16 : 2848.dasm (-23.53 % of base)
-15 : 1896.dasm (-14.02 % of base)
-15 : 2258.dasm (-37.50 % of base)
-15 : 25.dasm (-60.00 % of base)
-15 : 284.dasm (-8.33 % of base)
-15 : 2985.dasm (-48.39 % of base)
49 total files with Code Size differences (48 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
9 (9.89 % of base) : 1664.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
Top method improvements (bytes):
-39 (-25.66 % of base) : 4438.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (Tier0)
-39 (-25.66 % of base) : 920.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (Tier0)
-38 (-19.69 % of base) : 3016.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:AcquireAllLocks(byref):this (Tier0)
-33 (-7.88 % of base) : 3066.dasm - System.Linq.Enumerable:Sum[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Decimal,System.Decimal](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Decimal]):System.Decimal (Tier0-FullOpts)
-30 (-23.08 % of base) : 27.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:GetCurrent():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
-30 (-23.08 % of base) : 3473.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:GetCurrent():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
-30 (-12.00 % of base) : 1659.dasm - Xunit.ConsoleClient.ConsoleRunner:ValidateFileExists(System.Object,System.String):ubyte:this (Tier0)
-30 (-8.62 % of base) : 277.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier0)
-30 (-8.62 % of base) : 3729.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier0)
-30 (-10.83 % of base) : 4403.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
-30 (-55.56 % of base) : 2177.dasm - Xunit.DefaultRunnerReporterWithTypesMessageHandler+ReaderWriterLockWrapper:WriteLock():System.IDisposable (Tier0)
-25 (-13.89 % of base) : 3130.dasm - System.Xml.Linq.ElementWriter:WriteElement(System.Xml.Linq.XElement):this (Tier0-FullOpts)
-23 (-17.97 % of base) : 1774.dasm - Xunit.Sdk.TestFramework:.ctor(Xunit.Abstractions.IMessageSink):this (Tier0)
-16 (-23.53 % of base) : 2832.dasm - System.Runtime.Loader.AssemblyLoadContext:Resolve(int,System.Reflection.AssemblyName):System.Reflection.Assembly (Instrumented Tier1)
-16 (-23.53 % of base) : 2848.dasm - System.Runtime.Loader.AssemblyLoadContext:ResolveUsingResolvingEvent(int,System.Reflection.AssemblyName):System.Reflection.Assembly (Instrumented Tier1)
-15 (-44.12 % of base) : 3692.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.Native.PlatformApis:GetOSPlatform():int (Tier0)
-15 (-44.12 % of base) : 246.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.Native.PlatformApis:GetOSPlatform():int (Tier0)
-15 (-60.00 % of base) : 244.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
-15 (-60.00 % of base) : 3689.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
-15 (-3.49 % of base) : 108.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(Xunit.JsonObject):Internal.Microsoft.Extensions.DependencyModel.CompilationOptions:this (Tier0)
Top method regressions (percentages):
9 (9.89 % of base) : 1664.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
Top method improvements (percentages):
-15 (-60.00 % of base) : 244.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
-15 (-60.00 % of base) : 3689.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment:get_OperatingSystemPlatform():int (Tier0)
-15 (-60.00 % of base) : 3468.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader:get_Default():Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader (Tier0)
-15 (-60.00 % of base) : 22.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader:get_Default():Internal.Microsoft.Extensions.DependencyModel.DependencyContextLoader (Tier0)
-15 (-60.00 % of base) : 25.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:get_Current():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
-15 (-60.00 % of base) : 3471.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths:get_Current():Internal.Microsoft.Extensions.DependencyModel.DependencyContextPaths (Tier0)
-15 (-60.00 % of base) : 3488.dasm - Internal.Microsoft.Extensions.DependencyModel.FileSystemWrapper:get_Default():Internal.Microsoft.Extensions.DependencyModel.IFileSystem (Tier0)
-15 (-60.00 % of base) : 43.dasm - Internal.Microsoft.Extensions.DependencyModel.FileSystemWrapper:get_Default():Internal.Microsoft.Extensions.DependencyModel.IFileSystem (Tier0)
-30 (-55.56 % of base) : 2177.dasm - Xunit.DefaultRunnerReporterWithTypesMessageHandler+ReaderWriterLockWrapper:WriteLock():System.IDisposable (Tier0)
-15 (-48.39 % of base) : 2162.dasm - Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (Tier0)
-15 (-48.39 % of base) : 1869.dasm - Xunit.TestAssemblyDiscoveryStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (Tier0)
-15 (-48.39 % of base) : 2985.dasm - Xunit.TestAssemblyExecutionFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (Tier0)
-15 (-48.39 % of base) : 2170.dasm - Xunit.TestAssemblyExecutionStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (Tier0)
-15 (-48.39 % of base) : 3035.dasm - Xunit.TestExecutionSummary:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (Tier0)
-15 (-44.12 % of base) : 3692.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.Native.PlatformApis:GetOSPlatform():int (Tier0)
-15 (-44.12 % of base) : 246.dasm - Internal.Microsoft.DotNet.PlatformAbstractions.Native.PlatformApis:GetOSPlatform():int (Tier0)
-15 (-39.47 % of base) : 2282.dasm - Xunit.Sdk.ExecutionContextHelper:get_IsSupported():ubyte (Tier0)
-15 (-37.50 % of base) : 2258.dasm - Xunit.Sdk.XunitTestAssemblyRunner:AfterTestAssemblyStartingAsync():System.Threading.Tasks.Task:this (Tier0)
-15 (-29.41 % of base) : 370.dasm - System.Text.RegularExpressions.Regex:.cctor() (Tier0)
-15 (-29.41 % of base) : 3827.dasm - System.Text.RegularExpressions.Regex:.cctor() (Tier0)
librariestestsnotieredcompilation.run.windows.x86.Release.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 51784 (overridden on cmd)
Total bytes of diff: 49047 (overridden on cmd)
Total bytes of delta: -2737 (-5.29 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
2 : 464.dasm (4.26 % of base)
2 : 566.dasm (4.26 % of base)
Top file improvements (bytes):
-372 : 65.dasm (-78.32 % of base)
-173 : 2379.dasm (-68.11 % of base)
-108 : 121.dasm (-29.83 % of base)
-87 : 1151.dasm (-77.68 % of base)
-79 : 451.dasm (-27.82 % of base)
-78 : 1115.dasm (-69.03 % of base)
-58 : 515.dasm (-24.89 % of base)
-56 : 139.dasm (-17.23 % of base)
-55 : 519.dasm (-31.79 % of base)
-54 : 9.dasm (-12.22 % of base)
-53 : 67.dasm (-45.69 % of base)
-41 : 939.dasm (-35.04 % of base)
-36 : 1356.dasm (-61.02 % of base)
-36 : 1501.dasm (-61.02 % of base)
-36 : 1538.dasm (-61.02 % of base)
-33 : 1947.dasm (-7.88 % of base)
-31 : 1421.dasm (-58.49 % of base)
-30 : 1480.dasm (-65.22 % of base)
-30 : 1546.dasm (-65.22 % of base)
-30 : 1674.dasm (-65.22 % of base)
64 total files with Code Size differences (62 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
2 (4.26 % of base) : 566.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
2 (4.26 % of base) : 464.dasm - Xunit.Sdk.ReflectionTypeInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
Top method improvements (bytes):
-372 (-78.32 % of base) : 65.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-173 (-68.11 % of base) : 2379.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
-108 (-29.83 % of base) : 121.dasm - System.Lazy`1[int]:CreateValue():int:this (FullOpts)
-87 (-77.68 % of base) : 1151.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
-79 (-27.82 % of base) : 451.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-78 (-69.03 % of base) : 1115.dasm - System.Runtime.InteropServices.Marshalling.StrategyBasedComWrappers:GetOrCreateInterfaceDetailsStrategy():System.Runtime.InteropServices.Marshalling.IIUnknownInterfaceDetailsStrategy:this (FullOpts)
-58 (-24.89 % of base) : 515.dasm - System.Text.EncodingHelper:GetSupportedConsoleEncoding(int):System.Text.Encoding (FullOpts)
-56 (-17.23 % of base) : 139.dasm - Xunit.ConsoleClient.DiagnosticMessageSink:OnMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (FullOpts)
-55 (-31.79 % of base) : 519.dasm - System.Console:CreateOutputWriter(System.IO.Stream):System.IO.TextWriter (FullOpts)
-54 (-12.22 % of base) : 9.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-53 (-45.69 % of base) : 67.dasm - System.Linq.Enumerable:Cast[System.__Canon](System.Collections.IEnumerable):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-41 (-35.04 % of base) : 939.dasm - System.Linq.Expressions.Compiler.ILGen:CanEmitConstant(System.Object,System.Type):ubyte (FullOpts)
-36 (-61.02 % of base) : 1356.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+ImplicitThis+INativeObject:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():uint (FullOpts)
-36 (-61.02 % of base) : 1501.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObject:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():uint (FullOpts)
-36 (-61.02 % of base) : 1538.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObjectStateful:System.Runtime.InteropServices.Marshalling.IUnmanagedInterfaceType.get_VirtualMethodTableManagedImplementation():uint (FullOpts)
-33 (-7.88 % of base) : 1947.dasm - System.Linq.Enumerable:Sum[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Decimal,System.Decimal](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Decimal]):System.Decimal (FullOpts)
-31 (-58.49 % of base) : 1421.dasm - <SharedTypes_ComInterfaces_IDerived>FD2E2000916F7322C38FFC890B0CD47AC749A1C6B3C465B21BB923E8FEB7CDED7__InterfaceInformation:get_ManagedVirtualMethodTable():uint (FullOpts)
-30 (-65.22 % of base) : 1546.dasm - <SharedTypes_ComInterfaces_IArrayOfStatelessElements>F997BA340F1C602826A33304D11289B2F916116FCF25AA5066692B8DC9808E77C__InterfaceInformation:get_Iid():System.Guid (FullOpts)
-30 (-65.22 % of base) : 1217.dasm - <SharedTypes_ComInterfaces_IBool>F1FE57BB180AB34F547DA2AF42A54F6BB7C54809B082630C4DB88EA10A9B77BAA__InterfaceInformation:get_Iid():System.Guid (FullOpts)
-30 (-65.22 % of base) : 1239.dasm - <SharedTypes_ComInterfaces_IFloat>F78CC465A10946FB6FDAE1935E39E2936108140B34974C4C5D2879B22D4C0BCC2__InterfaceInformation:get_Iid():System.Guid (FullOpts)
Top method regressions (percentages):
2 (4.26 % of base) : 566.dasm - Xunit.Sdk.ReflectionMethodInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
2 (4.26 % of base) : 464.dasm - Xunit.Sdk.ReflectionTypeInfo:GetCustomAttributes(System.String):System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.IAttributeInfo]:this (FullOpts)
Top method improvements (percentages):
-26 (-81.25 % of base) : 2129.dasm - Microsoft.CodeAnalysis.AssemblyIdentityComparer:get_Default():Microsoft.CodeAnalysis.AssemblyIdentityComparer (FullOpts)
-26 (-81.25 % of base) : 735.dasm - Xunit.TestAssemblyDiscoveryFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
-26 (-81.25 % of base) : 484.dasm - Xunit.TestAssemblyDiscoveryStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
-26 (-81.25 % of base) : 1894.dasm - Xunit.TestAssemblyExecutionFinished:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
-26 (-81.25 % of base) : 743.dasm - Xunit.TestAssemblyExecutionStarting:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
-26 (-81.25 % of base) : 1934.dasm - Xunit.TestExecutionSummary:get_InterfaceTypes():System.Collections.Generic.HashSet`1[System.String]:this (FullOpts)
-372 (-78.32 % of base) : 65.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-87 (-77.68 % of base) : 1151.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker(System.Collections.IEnumerable):Xunit.Sdk.CollectionTracker (FullOpts)
-78 (-69.03 % of base) : 1115.dasm - System.Runtime.InteropServices.Marshalling.StrategyBasedComWrappers:GetOrCreateInterfaceDetailsStrategy():System.Runtime.InteropServices.Marshalling.IIUnknownInterfaceDetailsStrategy:this (FullOpts)
-26 (-68.42 % of base) : 793.dasm - Xunit.Sdk.XunitTestAssemblyRunner:AfterTestAssemblyStartingAsync():System.Threading.Tasks.Task:this (FullOpts)
-173 (-68.11 % of base) : 2379.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.ValueTuple`3[int,int,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[int,int,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.ValueTuple`3[int,int,System.__Canon]] (FullOpts)
-30 (-65.22 % of base) : 1546.dasm - <SharedTypes_ComInterfaces_IArrayOfStatelessElements>F997BA340F1C602826A33304D11289B2F916116FCF25AA5066692B8DC9808E77C__InterfaceInformation:get_Iid():System.Guid (FullOpts)
-30 (-65.22 % of base) : 1217.dasm - <SharedTypes_ComInterfaces_IBool>F1FE57BB180AB34F547DA2AF42A54F6BB7C54809B082630C4DB88EA10A9B77BAA__InterfaceInformation:get_Iid():System.Guid (FullOpts)
-30 (-65.22 % of base) : 1239.dasm - <SharedTypes_ComInterfaces_IFloat>F78CC465A10946FB6FDAE1935E39E2936108140B34974C4C5D2879B22D4C0BCC2__InterfaceInformation:get_Iid():System.Guid (FullOpts)
-30 (-65.22 % of base) : 1129.dasm - <SharedTypes_ComInterfaces_IGetAndSetInt>F7D680BDD9F632803E4C91B4471F4B075906326C3E62CD0B30BD3929C056710FF__InterfaceInformation:get_Iid():System.Guid (FullOpts)
-30 (-65.22 % of base) : 1387.dasm - <SharedTypes_ComInterfaces_IGetIntArray>FA214D816C95247C6B11496DF3E741F51CFFDF42655C9ADCC408020ADDEBD389B__InterfaceInformation:get_Iid():System.Guid (FullOpts)
-30 (-65.22 % of base) : 1637.dasm - <SharedTypes_ComInterfaces_IInt>F5760B97C133242F5A106190440B4906CD2EB48D5707A49A7150FCE3CC122F69A__InterfaceInformation:get_Iid():System.Guid (FullOpts)
-30 (-65.22 % of base) : 1447.dasm - <SharedTypes_ComInterfaces_IIntArray>FC8C36D862B5D89EFA40DC2F69A3F2BB75A6AFAFDD2DD51BB784960FEC6297044__InterfaceInformation:get_Iid():System.Guid (FullOpts)
-30 (-65.22 % of base) : 1643.dasm - <SharedTypes_ComInterfaces_IInterface>F0F8D3EC26B752C48BE9B9C143F24949B29CF1C6BE9A1BE3C3F507CEEFFF883D7__InterfaceInformation:get_Iid():System.Guid (FullOpts)
-30 (-65.22 % of base) : 1734.dasm - <SharedTypes_ComInterfaces_IJaggedIntArray>F9E7186D7D1C2305121E3CFFB9B96C704885894333BE2F6EA823FE55F12BCB2F5__InterfaceInformation:get_Iid():System.Guid (FullOpts)
realworld.run.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 374068 (overridden on cmd)
Total bytes of diff: 363422 (overridden on cmd)
Total bytes of delta: -10646 (-2.85 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
10 : 953.dasm (14.29 % of base)
3 : 2351.dasm (4.84 % of base)
Top file improvements (bytes):
-7277 : 5256.dasm (-84.01 % of base)
-372 : 532.dasm (-78.32 % of base)
-264 : 5190.dasm (-77.42 % of base)
-175 : 4004.dasm (-48.75 % of base)
-139 : 9.dasm (-73.54 % of base)
-139 : 1595.dasm (-73.54 % of base)
-88 : 3028.dasm (-8.02 % of base)
-81 : 5102.dasm (-40.91 % of base)
-79 : 569.dasm (-27.82 % of base)
-79 : 5490.dasm (-27.82 % of base)
-78 : 893.dasm (-59.09 % of base)
-71 : 2942.dasm (-17.44 % of base)
-70 : 3886.dasm (-18.04 % of base)
-65 : 2932.dasm (-46.43 % of base)
-63 : 3042.dasm (-9.63 % of base)
-63 : 5118.dasm (-91.30 % of base)
-54 : 1822.dasm (-12.22 % of base)
-54 : 237.dasm (-12.22 % of base)
-52 : 3048.dasm (-49.06 % of base)
-52 : 3842.dasm (-61.18 % of base)
61 total files with Code Size differences (59 improved, 2 regressed), 1 unchanged.
Top method regressions (bytes):
10 (14.29 % of base) : 953.dasm - System.Linq.OrderedEnumerable`1[double]:ToArray():double[]:this (FullOpts)
3 (4.84 % of base) : 2351.dasm - System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
Top method improvements (bytes):
-7277 (-84.01 % of base) : 5256.dasm - FSharp.Compiler.CompilerDiagnostics:RangeFromException@79(System.Exception):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] (FullOpts)
-372 (-78.32 % of base) : 532.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-264 (-77.42 % of base) : 5190.dasm - FSharp.Compiler.ParseAndCheckInputs:PostParseModuleImpl[int](int,Microsoft.FSharp.Core.FSharpOption`1[System.String],System.Tuple`2[ubyte,ubyte],System.String,FSharp.Compiler.Syntax.ParsedImplFileFragment):FSharp.Compiler.Syntax.SynModuleOrNamespace (FullOpts)
-175 (-48.75 % of base) : 4004.dasm - FSharp.Compiler.Parser:tables():Internal.Utilities.Text.Parsing.Tables`1[FSharp.Compiler.Parser+token] (FullOpts)
-139 (-73.54 % of base) : 9.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
-139 (-73.54 % of base) : 1595.dasm - System.Collections.Generic.NonRandomizedStringEqualityComparer:GetStringComparer(System.Object):System.Collections.Generic.IEqualityComparer`1[System.String] (FullOpts)
-88 (-8.02 % of base) : 3028.dasm - FSharp.Compiler.Features+LanguageVersion:getVersionFromString(System.String):System.Decimal (FullOpts)
-81 (-40.91 % of base) : 5102.dasm - FSharp.Compiler.LexFilter+LexFilter:GetToken():FSharp.Compiler.Parser+token:this (FullOpts)
-79 (-27.82 % of base) : 569.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-79 (-27.82 % of base) : 5490.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-78 (-59.09 % of base) : 893.dasm - System.Threading.ThreadPool:get_CompletedWorkItemCount():long (FullOpts)
-71 (-17.44 % of base) : 2942.dasm - FSharp.Compiler.Text.RangeModule:rangeN(System.String,int):FSharp.Compiler.Text.Range (FullOpts)
-70 (-18.04 % of base) : 3886.dasm - Microsoft.Build.Shared.FrameworkLocationHelper:GenerateProgramFilesReferenceAssemblyRoot():System.String (FullOpts)
-65 (-46.43 % of base) : 2932.dasm - FSharp.Compiler.Text.Position:.ctor(int,int):this (FullOpts)
-63 (-91.30 % of base) : 5118.dasm - FSharp.Compiler.Lexer:get_trans():ushort[][] (FullOpts)
-63 (-9.63 % of base) : 3042.dasm - System.Number:DecimalToNumber(byref,byref) (FullOpts)
-54 (-12.22 % of base) : 1822.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-54 (-12.22 % of base) : 237.dasm - System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-52 (-49.06 % of base) : 3048.dasm - FSComp.SR:optsHelpBannerOutputFiles():System.String (FullOpts)
-52 (-61.18 % of base) : 3842.dasm - FSharp.Compiler.CompilerImports:logMessage@377(FSharp.Compiler.CompilerConfig+TcConfig,ubyte):Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.Unit] (FullOpts)
Top method regressions (percentages):
10 (14.29 % of base) : 953.dasm - System.Linq.OrderedEnumerable`1[double]:ToArray():double[]:this (FullOpts)
3 (4.84 % of base) : 2351.dasm - System.Xml.XmlNode:CreateNavigator():System.Xml.XPath.XPathNavigator:this (FullOpts)
Top method improvements (percentages):
-63 (-91.30 % of base) : 5118.dasm - FSharp.Compiler.Lexer:get_trans():ushort[][] (FullOpts)
-7277 (-84.01 % of base) : 5256.dasm - FSharp.Compiler.CompilerDiagnostics:RangeFromException@79(System.Exception):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] (FullOpts)
-26 (-81.25 % of base) : 2981.dasm - FSharp.Compiler.Features+LanguageFeature:get_SingleUnderscorePattern():FSharp.Compiler.Features+LanguageFeature (FullOpts)
-26 (-81.25 % of base) : 2625.dasm - System.Runtime.Loader.AssemblyLoadContext:get_Default():System.Runtime.Loader.AssemblyLoadContext (FullOpts)
-372 (-78.32 % of base) : 532.dasm - System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
-264 (-77.42 % of base) : 5190.dasm - FSharp.Compiler.ParseAndCheckInputs:PostParseModuleImpl[int](int,Microsoft.FSharp.Core.FSharpOption`1[System.String],System.Tuple`2[ubyte,ubyte],System.String,FSharp.Compiler.Syntax.ParsedImplFileFragment):FSharp.Compiler.Syntax.SynModuleOrNamespace (FullOpts)
-27 (-77.14 % of base) : 3049.dasm - FSComp.SR:.cctor() (FullOpts)
-27 (-77.14 % of base) : 1912.dasm - FSharp.Benchmarks.Program:.cctor() (FullOpts)
-27 (-77.14 % of base) : 3251.dasm - FSharp.Compiler.AbstractIL.IL:.cctor() (FullOpts)
-27 (-77.14 % of base) : 3420.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:.cctor() (FullOpts)
-27 (-77.14 % of base) : 2458.dasm - FSharp.Compiler.CodeAnalysis.FSharpChecker:.cctor() (FullOpts)
-27 (-77.14 % of base) : 2468.dasm - FSharp.Compiler.CodeAnalysis.SimulatedMSBuildReferenceResolver:.cctor() (FullOpts)
-27 (-77.14 % of base) : 2875.dasm - FSharp.Compiler.ErrorLogger+StackGuard:.cctor() (FullOpts)
-27 (-77.14 % of base) : 2969.dasm - FSharp.Compiler.Features+LanguageVersion:.cctor() (FullOpts)
-27 (-77.14 % of base) : 3356.dasm - FSharp.Compiler.FxResolver:.cctor() (FullOpts)
-27 (-77.14 % of base) : 4005.dasm - FSharp.Compiler.Parser:.cctor() (FullOpts)
-27 (-77.14 % of base) : 3132.dasm - FSharp.Compiler.Syntax.PrettyNaming:.cctor() (FullOpts)
-27 (-77.14 % of base) : 2933.dasm - FSharp.Compiler.Text.PosImpl:.cctor() (FullOpts)
-27 (-77.14 % of base) : 2892.dasm - Internal.Utilities.Library.LazyWithContextFailure:.cctor() (FullOpts)
-27 (-77.14 % of base) : 2521.dasm - Microsoft.FSharp.Reflection.Impl:.cctor() (FullOpts)