Diffs are based on 2,237,690 contexts (827,812 MinOpts, 1,409,878 FullOpts).
MISSED contexts: 74,588 (3.23%)
Overall (-277,852 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run.linux.arm.checked.mch
15,303,134
-1,294
benchmarks.run_pgo.linux.arm.checked.mch
61,262,128
+39,336
benchmarks.run_tiered.linux.arm.checked.mch
22,643,448
-1,326
coreclr_tests.run.linux.arm.checked.mch
321,791,116
-209,470
libraries.crossgen2.linux.arm.checked.mch
35,175,262
-5,168
libraries.pmi.linux.arm.checked.mch
49,615,946
-6,010
libraries_tests.run.linux.arm.Release.mch
242,762,120
-83,274
librariestestsnotieredcompilation.run.linux.arm.Release.mch
93,201,612
-8,510
realworld.run.linux.arm.checked.mch
13,613,446
-2,136
MinOpts (-137,640 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch
10,797,602
-6,080
benchmarks.run_tiered.linux.arm.checked.mch
9,107,156
-74
coreclr_tests.run.linux.arm.checked.mch
212,730,134
-77,912
libraries_tests.run.linux.arm.Release.mch
122,002,944
-53,574
FullOpts (-140,212 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run.linux.arm.checked.mch
14,913,878
-1,294
benchmarks.run_pgo.linux.arm.checked.mch
50,464,526
+45,416
benchmarks.run_tiered.linux.arm.checked.mch
13,536,292
-1,252
coreclr_tests.run.linux.arm.checked.mch
109,060,982
-131,558
libraries.crossgen2.linux.arm.checked.mch
35,174,032
-5,168
libraries.pmi.linux.arm.checked.mch
49,509,442
-6,010
libraries_tests.run.linux.arm.Release.mch
120,759,176
-29,700
librariestestsnotieredcompilation.run.linux.arm.Release.mch
83,117,792
-8,510
realworld.run.linux.arm.checked.mch
13,163,500
-2,136
Example diffs
benchmarks.run.linux.arm.checked.mch
-38 (-29.69%) : 13019.dasm - System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
@@ -8,36 +8,32 @@
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Buffers.Text.Tests.Utf8FormatterTests>
-; V01 arg1 [V01,T05] ( 3, 3 ) struct (16) [sp+0x38] do-not-enreg[S] single-def double-align <System.DateTimeOffset>
-; V02 loc0 [V02 ] ( 1, 1 ) int -> [sp+0x2C] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V00 this [V00,T03] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Buffers.Text.Tests.Utf8FormatterTests>
+; V01 arg1 [V01,T00] ( 6, 6 ) struct (16) [sp+0x20] do-not-enreg[SA] multireg-arg single-def double-align <System.DateTimeOffset>
+; V02 loc0 [V02 ] ( 1, 1 ) int -> [sp+0x14] do-not-enreg[X] must-init addr-exposed ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Buffers.StandardFormat>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Span`1[ubyte]>
; V06 tmp2 [V06,T01] ( 4, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <ubyte[]>
;* V07 tmp3 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-;* V08 tmp4 [V08,T08] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._format (fldOffset=0x0)" P-INDEP
-;* V09 tmp5 [V09,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._precision (fldOffset=0x1)" P-INDEP
+;* V08 tmp4 [V08,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._format (fldOffset=0x0)" P-INDEP
+;* V09 tmp5 [V09,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._precision (fldOffset=0x1)" P-INDEP
;* V10 tmp6 [V10 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V11 tmp7 [V11 ] ( 0, 0 ) int -> zero-ref single-def "field V05._length (fldOffset=0x4)" P-INDEP
-; V12 tmp8 [V12,T06] ( 3, 2 ) byref -> r1 "field V07._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp9 [V13,T07] ( 3, 2 ) int -> r2 "field V07._length (fldOffset=0x4)" P-INDEP
-; V14 tmp10 [V14,T02] ( 3, 6 ) struct ( 4) [sp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Buffers.StandardFormat>
-; V15 tmp11 [V15,T00] ( 5, 10 ) struct (16) [sp+0x18] do-not-enreg[SFA] multireg-arg double-align "argument with side effect" <System.DateTimeOffset>
-; V16 tmp12 [V16,T03] ( 3, 6 ) struct ( 8) [sp+0x10] do-not-enreg[SF] must-init "argument with side effect" <System.Span`1[ubyte]>
+; V12 tmp8 [V12,T04] ( 3, 2 ) byref -> r1 "field V07._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp9 [V13,T05] ( 3, 2 ) int -> r2 "field V07._length (fldOffset=0x4)" P-INDEP
+; V14 tmp10 [V14,T02] ( 3, 6 ) struct ( 4) [sp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Buffers.StandardFormat>
;
-; Lcl frame size = 48
+; Lcl frame size = 24
G_M7377_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r2,r3}
push {r11,lr}
- sub sp, 48
- add r11, sp, 48
+ sub sp, 24
+ add r11, sp, 24
movs r1, 0
- str r1, [sp+0x2C]
- str r1, [sp+0x10]
str r1, [sp+0x14]
- ;; size=20 bbWeight=1 PerfScore 8.00
+ ;; size=16 bbWeight=1 PerfScore 6.00
G_M7377_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
ldr r0, [r0+0x04]
@@ -58,49 +54,35 @@ G_M7377_IG04: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, by
;; size=6 bbWeight=0.50 PerfScore 1.00
G_M7377_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref
; gcrRegs -[r0]
- ldr r0, [sp+0x38]
- str r0, [sp+0x18]
- ldr r0, [sp+0x3C]
- str r0, [sp+0x1C]
- ldr r0, [sp+0x40]
- str r0, [sp+0x20]
- ldr r0, [sp+0x44]
- str r0, [sp+0x24]
- str r1, [sp+0x10]
- str r2, [sp+0x14]
- add r0, sp, 44
+ str r1, [sp]
+ str r2, [sp+0x04]
+ add r0, sp, 20
str r0, [sp+0x08]
movs r0, 0
- strb r0, [sp+0x28]
- ;; size=30 bbWeight=1 PerfScore 14.00
+ strb r0, [sp+0x10]
+ ;; size=14 bbWeight=1 PerfScore 6.00
G_M7377_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r1]
- strb r0, [sp+0x29]
- ldr r0, [sp+0x18]
- ldr r1, [sp+0x1C]
- ldr r2, [sp+0x20]
- ldr r3, [sp+0x24]
- ldr lr, [sp+0x10]
- ; byrRegs +[lr]
- str lr, [sp]
- ldr lr, [sp+0x14]
- ; byrRegs -[lr]
- str lr, [sp+0x04]
- ldrh lr, [sp+0x28]
- str lr, [sp+0x0C]
+ strb r0, [sp+0x11]
+ ldrh r0, [sp+0x10]
+ str r0, [sp+0x0C]
+ ldr r0, [sp+0x20]
+ ldr r1, [sp+0x24]
+ ldr r2, [sp+0x28]
+ ldr r3, [sp+0x2C]
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // <unknown method>
- ;; size=50 bbWeight=1 PerfScore 15.00
+ ;; size=32 bbWeight=1 PerfScore 11.00
G_M7377_IG07: ; bbWeight=1, epilog, nogc, extend
- add sp, 48
+ add sp, 24
pop {r11,lr}
add sp, 8
bx lr
;; size=10 bbWeight=1 PerfScore 4.00
-; Total bytes of code 128, prolog size 20, PerfScore 46.50, instruction count 49, allocated bytes for code 128 (MethodHash=d298e32e) for method System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
+; Total bytes of code 90, prolog size 16, PerfScore 32.50, instruction count 35, allocated bytes for code 90 (MethodHash=d298e32e) for method System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -112,19 +94,19 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 64 (0x00040) Actual length = 128 (0x000080)
+ 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)
Condition : 14 (0xe) (always)
Epilog Start Index : 6 (0x06)
---- Unwind codes ----
- 0C add sp, sp, #48 ; opsize 16
+ 06 add sp, sp, #24 ; opsize 16
A8 00 pop {r11,lr} ; opsize 32
EC 0C pop {r2,r3} ; opsize 16
FF end
---- Epilog start at index 6 ----
- 0C add sp, sp, #48 ; opsize 16
+ 06 add sp, sp, #24 ; opsize 16
A8 00 pop {r11,lr} ; opsize 32
02 add sp, sp, #8 ; opsize 16
FD end + nop ; opsize 16
-18 (-7.96%) : 3564.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.Object:this (FullOpts)
@@ -8,45 +8,42 @@
; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 3, 6 ) ref -> r4 this class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver>
-; V01 arg1 [V01,T06] ( 6, 8.50) ref -> r5 class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite>
-; V02 arg2 [V02,T11] ( 4, 3 ) struct ( 8) [sp+0x38] do-not-enreg[SA] multireg-arg single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext>
-; V03 loc0 [V03,T07] ( 5, 6.50) ref -> r6 class-hnd <<unknown class>>
-; V04 loc1 [V04,T02] ( 5, 16.50) int -> r7
+; V00 this [V00,T05] ( 3, 6 ) ref -> r5 this class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver>
+; V01 arg1 [V01,T04] ( 5, 8 ) ref -> r4 class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite>
+; V02 arg2 [V02,T08] ( 4, 3 ) struct ( 8) [sp+0x30] do-not-enreg[SA] multireg-arg single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext>
+; V03 loc0 [V03,T06] ( 5, 6.50) ref -> r7 class-hnd <<unknown class>>
+; V04 loc1 [V04,T00] ( 7, 24.50) int -> r6
; V05 OutArgs [V05 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T01] ( 3, 24 ) ref -> r0 "arr expr"
-;* V07 tmp2 [V07,T08] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V08 tmp3 [V08,T03] ( 2, 16 ) ref -> r1 "argument with side effect"
-; V09 tmp4 [V09,T04] ( 2, 16 ) ref -> r2 "argument with side effect"
-; V10 tmp5 [V10,T00] ( 4, 32 ) int -> [sp+0x0C] spill-single-def "argument with side effect"
-;* V11 tmp6 [V11,T09] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V12 tmp7 [V12,T10] ( 3, 6 ) ref -> r0 single-def "argument with side effect"
-; V13 cse0 [V13,T13] ( 2, 4.50) ref -> [sp+0x08] spill-single-def hoist "CSE - moderate"
-; V14 cse1 [V14,T14] ( 2, 4.50) int -> r10 hoist "CSE - moderate"
-; V15 cse2 [V15,T12] ( 3, 5 ) int -> r8 "CSE - moderate"
+; V06 tmp1 [V06,T01] ( 3, 24 ) ref -> r1 "arr expr"
+; V07 tmp2 [V07,T02] ( 2, 16 ) ref -> r1 "argument with side effect"
+; V08 tmp3 [V08,T03] ( 2, 16 ) ref -> r2 "argument with side effect"
+; V09 tmp4 [V09,T07] ( 3, 6 ) ref -> r0 single-def "argument with side effect"
+; V10 cse0 [V10,T12] ( 3, 2.50) ref -> r6 "CSE - aggressive"
+; V11 cse1 [V11,T10] ( 2, 4.50) ref -> r9 hoist "CSE - aggressive"
+; V12 cse2 [V12,T11] ( 2, 4.50) int -> r10 hoist "CSE - aggressive"
+; V13 cse3 [V13,T09] ( 3, 5 ) int -> r8 "CSE - aggressive"
;
-; Lcl frame size = 20
+; Lcl frame size = 12
G_M56674_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r2,r3}
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 20
- add r11, sp, 48
- mov r4, r0
- ; gcrRegs +[r4]
- mov r5, r1
+ sub sp, 12
+ add r11, sp, 40
+ mov r5, r0
; gcrRegs +[r5]
+ mov r4, r1
+ ; gcrRegs +[r4]
;; size=16 bbWeight=1 PerfScore 6.00
G_M56674_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r5+0x20]
- ; gcrRegs +[r0]
- ldr r0, [r0+0x04]
- ; gcrRegs -[r0]
+ ldr r6, [r4+0x20]
+ ; gcrRegs +[r6]
+ ldr r0, [r6+0x04]
cmp r0, 0
bne SHORT G_M56674_IG04
;; size=8 bbWeight=1 PerfScore 4.00
-G_M56674_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4]
+G_M56674_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r5-r6]
movw r0, 0xd1ff
movt r0, 0xd1ff
movs r1, 30
@@ -55,84 +52,73 @@ G_M56674_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
blx r3 // CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
movw r1, 0xd1ff
movt r1, 0xd1ff
- ldr r6, [r1]
- ; gcrRegs +[r6]
+ ldr r7, [r1]
+ ; gcrRegs +[r7]
b SHORT G_M56674_IG06
;; size=32 bbWeight=0.50 PerfScore 5.00
-G_M56674_IG04: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r6] +[r4]
- ldr r1, [r5+0x20]
- ; gcrRegs +[r1]
- ldr r1, [r1+0x04]
- ; gcrRegs -[r1]
+G_M56674_IG04: ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r7] +[r5-r6]
+ ldr r1, [r6+0x04]
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_NEWARR_1_OBJ
- ; gcrRegs +[r0]
- mov r6, r0
- ; gcrRegs +[r6]
- movs r7, 0
- ldr r8, [r6+0x04]
+ ; gcrRegs -[r6] +[r0]
+ mov r7, r0
+ ; gcrRegs +[r7]
+ movs r6, 0
+ ldr r8, [r7+0x04]
cmp r8, 0
ble SHORT G_M56674_IG06
- ldr r9, [sp+0x38]
+ ldr r9, [sp+0x30]
; gcrRegs +[r9]
- str r9, [sp+0x08]
- ; GC ptr vars +{V13}
- ldr r10, [sp+0x3C]
- ;; size=48 bbWeight=0.50 PerfScore 7.50
-G_M56674_IG05: ; bbWeight=4, gcVars=00002000 {V13}, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr r10, [sp+0x34]
+ ;; size=42 bbWeight=0.50 PerfScore 6.50
+G_M56674_IG05: ; bbWeight=4, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
- mov lr, r7
- str lr, [sp+0x0C]
- ldr r0, [r5+0x20]
- ; gcrRegs +[r0]
- ldr r1, [r0+0x04]
- cmp lr, r1
- bhs SHORT G_M56674_IG08
- adds r0, 8
- ; gcrRegs -[r0]
- ; byrRegs +[r0]
- lsl r1, lr, 2
- ldr r1, [r0+r1]
+ ldr r1, [r4+0x20]
; gcrRegs +[r1]
- mov r0, r4
- ; gcrRegs +[r0]
- ; byrRegs -[r0]
+ ldr r2, [r1+0x04]
+ cmp r6, r2
+ bhs SHORT G_M56674_IG08
+ adds r1, 8
+ ; gcrRegs -[r1]
+ ; byrRegs +[r1]
+ lsls r2, r6, 2
+ ldr r1, [r1+r2]
+ ; gcrRegs +[r1]
+ ; byrRegs -[r1]
mov r2, r9
; gcrRegs +[r2]
mov r3, r10
- movw r12, 0xd1ff
- movt r12, 0xd1ff
- ldr r12, [r12]
- ldr r9, [r0]
- ; gcrRegs -[r9]
- blx r12 // Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext,System.__Canon]:VisitCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.__Canon:this
+ mov r0, r5
+ ; gcrRegs +[r0]
+ movw lr, 0xd1ff
+ movt lr, 0xd1ff
+ ldr lr, [lr]
+ ldr r12, [r0]
+ blx lr // Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext,System.__Canon]:VisitCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.__Canon:this
; gcrRegs -[r1-r2]
mov r2, r0
; gcrRegs +[r2]
- ldr r1, [sp+0x0C] // [V10 tmp5]
- mov r0, r6
+ mov r1, r6
+ mov r0, r7
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_ARRADDR_ST
; gcrRegs -[r0 r2]
- adds r7, r7, 1
- cmp r8, r7
- ldr r9, [sp+0x08] // [V13 cse0]
- ; gcrRegs +[r9]
+ adds r6, r6, 1
+ cmp r8, r6
bgt SHORT G_M56674_IG05
- ;; size=72 bbWeight=4 PerfScore 108.00
-G_M56674_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r4 r9]
- ; GC ptr vars -{V13}
- ldr r0, [r5+0x1C]
+ ;; size=60 bbWeight=4 PerfScore 96.00
+G_M56674_IG06: ; bbWeight=1, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r5 r9]
+ ldr r0, [r4+0x1C]
; gcrRegs +[r0]
movs r3, 0
- str r3, [sp] // [V05 OutArgs]
- mov r3, r6
+ str r3, [sp]
+ mov r3, r7
; gcrRegs +[r3]
mov r1, 0x2000000
movs r2, 0
@@ -140,10 +126,10 @@ G_M56674_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6},
ldr lr, [lr+0x3C]
ldr lr, [lr+0x14]
blx lr // <unknown method>
- ; gcrRegs -[r3 r5-r6]
+ ; gcrRegs -[r3-r4 r7]
;; size=28 bbWeight=1 PerfScore 10.00
G_M56674_IG07: ; bbWeight=1, epilog, nogc, extend
- add sp, 20
+ add sp, 12
pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
add sp, 8
bx lr
@@ -156,7 +142,7 @@ G_M56674_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 226, prolog size 12, PerfScore 144.50, instruction count 80, allocated bytes for code 226 (MethodHash=ece7229d) for method Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.Object:this (FullOpts)
+; Total bytes of code 208, prolog size 12, PerfScore 131.50, instruction count 75, allocated bytes for code 208 (MethodHash=ece7229d) for method Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -168,19 +154,19 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 113 (0x00071) Actual length = 226 (0x0000e2)
+ Function Length : 104 (0x00068) Actual length = 208 (0x0000d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Condition : 14 (0xe) (always)
Epilog Start Index : 5 (0x05)
---- Unwind codes ----
- 05 add sp, sp, #20 ; opsize 16
+ 03 add sp, sp, #12 ; opsize 16
DF pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32
EC 0C pop {r2,r3} ; opsize 16
FF end
---- Epilog start at index 5 ----
- 05 add sp, sp, #20 ; opsize 16
+ 03 add sp, sp, #12 ; opsize 16
DF pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32
02 add sp, sp, #8 ; opsize 16
FD end + nop ; opsize 16
-36 (-7.86%) : 29854.dasm - System.Text.Json.Utf8JsonWriter:WriteStringValueMinimized(System.Guid):this (FullOpts)
@@ -9,11 +9,11 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 15, 13.50) ref -> r4 this class-hnd single-def <System.Text.Json.Utf8JsonWriter>
-; V01 arg1 [V01,T12] ( 3, 3 ) struct (16) [sp+0x5C] do-not-enreg[S] single-def <System.Guid>
+; V01 arg1 [V01,T03] ( 6, 6 ) struct (16) [sp+0x44] do-not-enreg[SA] multireg-arg single-def <System.Guid>
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Span`1[ubyte]>
;* V04 loc2 [V04 ] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc3 [V05 ] ( 2, 2 ) int -> [sp+0x34] do-not-enreg[X] addr-exposed ld-addr-op
+; V05 loc3 [V05 ] ( 2, 2 ) int -> [sp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op
; V06 loc4 [V06,T01] ( 12, 10 ) int -> r5
;* V07 loc5 [V07 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Buffers.StandardFormat>
; V08 OutArgs [V08 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -22,17 +22,17 @@
;* V11 tmp3 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V12 tmp4 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
; V13 tmp5 [V13,T05] ( 9, 6.50) byref -> r6 "Inline stloc first use temp"
-; V14 tmp6 [V14,T03] ( 12, 9 ) int -> r7 "Inline stloc first use temp"
+; V14 tmp6 [V14,T02] ( 12, 9 ) int -> r7 "Inline stloc first use temp"
; V15 tmp7 [V15,T07] ( 4, 6 ) byref -> r5 single-def "Inlining Arg"
-; V16 tmp8 [V16,T11] ( 9, 5.50) ref -> r8 class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V16 tmp8 [V16,T10] ( 9, 5.50) ref -> r8 class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V17 tmp9 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V18 tmp10 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
-; V19 tmp11 [V19 ] ( 3, 1.50) struct ( 8) [sp+0x2C] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Span`1[ubyte]>
-; V20 tmp12 [V20,T15] ( 4, 2 ) int -> r0 "Inline stloc first use temp"
-; V21 tmp13 [V21,T19] ( 3, 1.50) int -> r1 "Inline stloc first use temp"
+; V19 tmp11 [V19 ] ( 3, 1.50) struct ( 8) [sp+0x14] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Span`1[ubyte]>
+; V20 tmp12 [V20,T13] ( 4, 2 ) int -> r0 "Inline stloc first use temp"
+; V21 tmp13 [V21,T17] ( 3, 1.50) int -> r1 "Inline stloc first use temp"
;* V22 tmp14 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <<unknown class>>
;* V23 tmp15 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
-; V24 tmp16 [V24,T16] ( 2, 2 ) byref -> r1 single-def "Inlining Arg"
+; V24 tmp16 [V24,T14] ( 2, 2 ) byref -> r1 single-def "Inlining Arg"
;* V25 tmp17 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V26 tmp18 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V27 tmp19 [V27 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
@@ -43,46 +43,43 @@
; V32 tmp24 [V32,T04] ( 4, 8 ) int -> r0 "Inlining Arg"
;* V33 tmp25 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V34 tmp26 [V34,T08] ( 3, 6 ) int -> r8 "Inlining Arg"
-; V35 tmp27 [V35,T13] ( 2, 4 ) byref -> r5 single-def "Inlining Arg"
+; V35 tmp27 [V35,T11] ( 2, 4 ) byref -> r5 single-def "Inlining Arg"
;* V36 tmp28 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V37 tmp29 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V38 tmp30 [V38 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V39 tmp31 [V39 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V40 tmp32 [V40 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp33 [V41 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x4)" P-INDEP
-;* V42 tmp34 [V42,T21] ( 0, 0 ) ubyte -> zero-ref "field V07._format (fldOffset=0x0)" P-INDEP
-;* V43 tmp35 [V43,T22] ( 0, 0 ) ubyte -> zero-ref "field V07._precision (fldOffset=0x1)" P-INDEP
+;* V42 tmp34 [V42,T19] ( 0, 0 ) ubyte -> zero-ref "field V07._format (fldOffset=0x0)" P-INDEP
+;* V43 tmp35 [V43,T20] ( 0, 0 ) ubyte -> zero-ref "field V07._precision (fldOffset=0x1)" P-INDEP
;* V44 tmp36 [V44 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
;* V45 tmp37 [V45 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP
;* V46 tmp38 [V46 ] ( 0, 0 ) byref -> zero-ref "field V12._reference (fldOffset=0x0)" P-INDEP
;* V47 tmp39 [V47 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x4)" P-INDEP
;* V48 tmp40 [V48 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP
;* V49 tmp41 [V49 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x4)" P-INDEP
-; V50 tmp42 [V50 ] ( 2, 1 ) byref -> [sp+0x2C] do-not-enreg[X] addr-exposed "field V19._reference (fldOffset=0x0)" P-DEP
-; V51 tmp43 [V51 ] ( 2, 1 ) int -> [sp+0x30] do-not-enreg[X] addr-exposed "field V19._length (fldOffset=0x4)" P-DEP
-; V52 tmp44 [V52,T20] ( 2, 1 ) byref -> r6 single-def "field V27._reference (fldOffset=0x0)" P-INDEP
+; V50 tmp42 [V50 ] ( 2, 1 ) byref -> [sp+0x14] do-not-enreg[X] addr-exposed "field V19._reference (fldOffset=0x0)" P-DEP
+; V51 tmp43 [V51 ] ( 2, 1 ) int -> [sp+0x18] do-not-enreg[X] addr-exposed "field V19._length (fldOffset=0x4)" P-DEP
+; V52 tmp44 [V52,T18] ( 2, 1 ) byref -> r6 single-def "field V27._reference (fldOffset=0x0)" P-INDEP
;* V53 tmp45 [V53 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x4)" P-INDEP
-; V54 tmp46 [V54,T17] ( 2, 2 ) byref -> r5 single-def "field V33._reference (fldOffset=0x0)" P-INDEP
-; V55 tmp47 [V55,T18] ( 2, 2 ) int -> r8 "field V33._length (fldOffset=0x4)" P-INDEP
-; V56 tmp48 [V56,T09] ( 3, 6 ) struct ( 4) [sp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Buffers.StandardFormat>
-; V57 tmp49 [V57,T02] ( 5, 10 ) struct (16) [sp+0x18] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.Guid>
-; V58 tmp50 [V58,T10] ( 3, 6 ) struct ( 8) [sp+0x10] do-not-enreg[SF] must-init "argument with side effect" <System.Span`1[ubyte]>
-; V59 cse0 [V59,T14] ( 3, 3 ) int -> r5 "CSE - moderate"
-; V60 cse1 [V60,T06] ( 12, 6 ) ref -> r1 multi-def "CSE - aggressive"
+; V54 tmp46 [V54,T15] ( 2, 2 ) byref -> r5 single-def "field V33._reference (fldOffset=0x0)" P-INDEP
+; V55 tmp47 [V55,T16] ( 2, 2 ) int -> r8 "field V33._length (fldOffset=0x4)" P-INDEP
+; V56 tmp48 [V56,T09] ( 3, 6 ) struct ( 4) [sp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Buffers.StandardFormat>
+; V57 cse0 [V57,T12] ( 3, 3 ) int -> r5 "CSE - moderate"
+; V58 cse1 [V58,T06] ( 12, 6 ) ref -> r1 multi-def "CSE - aggressive"
;
-; Lcl frame size = 60
+; Lcl frame size = 36
G_M53232_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r1,r2,r3}
push {r4,r5,r6,r7,r8,r10,r11,lr}
- sub sp, 60
- add r11, sp, 84
+ sub sp, 36
+ add r11, sp, 60
movs r1, 0
- str r1, [sp+0x2C]
- str r1, [sp+0x10]
+ str r1, [sp+0x14]
mov r4, r0
; gcrRegs +[r4]
- ;; size=20 bbWeight=1 PerfScore 8.00
+ ;; size=18 bbWeight=1 PerfScore 7.00
G_M53232_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x34]
ldr r1, [r4+0x24]
@@ -163,7 +160,7 @@ G_M53232_IG07: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0020 {r
; gcrRegs -[r0]
;; size=46 bbWeight=0.50 PerfScore 7.50
G_M53232_IG08: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0020 {r5}, byref
- add r1, sp, 44
+ add r1, sp, 20
mov r0, r8
; gcrRegs +[r0]
ldr r3, [r8]
@@ -171,9 +168,9 @@ G_M53232_IG08: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0020 {r
ldr r3, [r3+0x14]
blx r3 // <unknown method>
; gcrRegs -[r0 r8]
- ldr r6, [sp+0x2C]
+ ldr r6, [sp+0x14]
; byrRegs +[r6]
- ldr r7, [sp+0x30]
+ ldr r7, [sp+0x18]
;; size=18 bbWeight=0.50 PerfScore 4.00
G_M53232_IG09: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0060 {r5 r6}, byref, isz
ldr r0, [r5+0x04]
@@ -247,42 +244,28 @@ G_M53232_IG15: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0060 {r5 r
; gcrRegs -[r0]
;; size=22 bbWeight=0.50 PerfScore 3.50
G_M53232_IG16: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0060 {r5 r6}, byref
- ldr r0, [sp+0x5C]
- str r0, [sp+0x18]
- ldr r0, [sp+0x60]
- str r0, [sp+0x1C]
- ldr r0, [sp+0x64]
- str r0, [sp+0x20]
- ldr r0, [sp+0x68]
- str r0, [sp+0x24]
- str r5, [sp+0x10]
- str r8, [sp+0x14]
- add r0, sp, 52
+ str r5, [sp]
+ str r8, [sp+0x04]
+ add r0, sp, 28
str r0, [sp+0x08]
movs r0, 0
- strb r0, [sp+0x28]
- ;; size=32 bbWeight=1 PerfScore 14.00
+ strb r0, [sp+0x10]
+ ;; size=16 bbWeight=1 PerfScore 6.00
G_M53232_IG17: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6}, byref, isz
; byrRegs -[r5]
- strb r0, [sp+0x29]
- ldr r0, [sp+0x18]
- ldr r1, [sp+0x1C]
- ldr r2, [sp+0x20]
- ldr r3, [sp+0x24]
- ldr lr, [sp+0x10]
- ; byrRegs +[lr]
- str lr, [sp]
- ldr lr, [sp+0x14]
- ; byrRegs -[lr]
- str lr, [sp+0x04]
- ldrh lr, [sp+0x28]
- str lr, [sp+0x0C]
+ strb r0, [sp+0x11]
+ ldrh r0, [sp+0x10]
+ str r0, [sp+0x0C]
+ ldr r0, [sp+0x44]
+ ldr r1, [sp+0x48]
+ ldr r2, [sp+0x4C]
+ ldr r3, [sp+0x50]
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // System.Buffers.Text.Utf8Formatter:TryFormat(System.Guid,System.Span`1[ubyte],byref,System.Buffers.StandardFormat):ubyte
ldr r3, [r4+0x24]
- ldr r2, [sp+0x34]
+ ldr r2, [sp+0x1C]
adds r5, r3, r2
str r5, [r4+0x24]
adds r3, r5, 1
@@ -291,9 +274,9 @@ G_M53232_IG17: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6}, by
bhs SHORT G_M53232_IG19
movs r3, 34
strb r3, [r6+r5]
- ;; size=70 bbWeight=1 PerfScore 25.00
+ ;; size=52 bbWeight=1 PerfScore 21.00
G_M53232_IG18: ; bbWeight=1, epilog, nogc, extend
- add sp, 60
+ add sp, 36
pop {r4,r5,r6,r7,r8,r10,r11,lr}
add sp, 12
bx lr
@@ -313,7 +296,7 @@ G_M53232_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 458, prolog size 18, PerfScore 123.00, instruction count 173, allocated bytes for code 458 (MethodHash=0c2e300f) for method System.Text.Json.Utf8JsonWriter:WriteStringValueMinimized(System.Guid):this (FullOpts)
+; Total bytes of code 422, prolog size 16, PerfScore 110.00, instruction count 160, allocated bytes for code 422 (MethodHash=0c2e300f) for method System.Text.Json.Utf8JsonWriter:WriteStringValueMinimized(System.Guid):this (FullOpts)
; ============================================================
Unwind Info:
@@ -325,19 +308,19 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 229 (0x000e5) Actual length = 458 (0x0001ca)
+ Function Length : 211 (0x000d3) Actual length = 422 (0x0001a6)
---- 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 : 6 (0x06)
---- Unwind codes ----
- 0F add sp, sp, #60 ; opsize 16
+ 09 add sp, sp, #36 ; opsize 16
AD F0 pop {r4,r5,r6,r7,r8,r10,r11,lr} ; opsize 32
EC 0E pop {r1,r2,r3} ; opsize 16
FF end
---- Epilog start at index 6 ----
- 0F add sp, sp, #60 ; opsize 16
+ 09 add sp, sp, #36 ; opsize 16
AD F0 pop {r4,r5,r6,r7,r8,r10,r11,lr} ; opsize 32
03 add sp, sp, #12 ; opsize 16
FD end + nop ; opsize 16
+6 (+6.67%) : 9583.dasm - System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (FullOpts)
@@ -16,12 +16,12 @@
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.XmlBaseWriter+NamespaceManager+Namespace>
;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.XmlBaseWriter+NamespaceManager+Namespace>
; V07 cse0 [V07,T02] ( 5, 5 ) ref -> r2 "CSE - aggressive"
-; V08 cse1 [V08,T04] ( 3, 3 ) ref -> r1 "CSE - aggressive"
+; V08 cse1 [V08,T04] ( 3, 3 ) ref -> [sp+0x04] spill-single-def "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M35133_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,lr}
+ push {r2,r3,r4,lr}
mov r4, r0
; gcrRegs +[r4]
;; size=4 bbWeight=1 PerfScore 2.00
@@ -51,31 +51,36 @@ G_M35133_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcrRegs +[r1]
movs r0, 0
strh r0, [r1+0x14]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ str r3, [sp+0x04]
+ ; GC ptr vars +{V08}
adds r0, r1, 4
; byrRegs +[r0]
- movw r1, 0xd1ff
- ; gcrRegs -[r1]
- movt r1, 0xd1ff
+ mov r1, r3
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r4] +[r1]
+ ; gcrRegs -[r1 r4]
; byrRegs -[r0]
add r0, r2, 8
; byrRegs +[r0]
+ ldr r1, [sp+0x04] // [V08 cse1]
+ ; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
+ ; GC ptr vars -{V08}
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
movs r3, 0
str r3, [r2+0x0C]
- ;; size=84 bbWeight=1 PerfScore 28.00
+ ;; size=90 bbWeight=1 PerfScore 31.00
G_M35133_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r4,pc}
+ pop {r2,r3,r4,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 90, prolog size 2, PerfScore 31.00, instruction count 31, allocated bytes for code 90 (MethodHash=d42076c2) for method System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (FullOpts)
+; Total bytes of code 96, prolog size 2, PerfScore 34.00, instruction count 34, allocated bytes for code 96 (MethodHash=d42076c2) for method System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (FullOpts)
; ============================================================
Unwind Info:
@@ -87,12 +92,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 45 (0x0002d) Actual length = 90 (0x00005a)
+ Function Length : 48 (0x00030) Actual length = 96 (0x000060)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- D4 pop {r4,lr} ; opsize 16
- FF end
+ ED 1C pop {r2,r3,r4,lr} ; opsize 16
FF end
FF end
+16 (+10.81%) : 24885.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
@@ -8,33 +8,31 @@
; 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 -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V00 this [V00,T02] ( 3, 3 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T03] ( 2, 4 ) ref -> r1 class-hnd single-def "dup spill" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref single-def
-; V04 tmp3 [V04,T05] ( 4, 3.50) ref -> r1
+; V04 tmp3 [V04,T04] ( 4, 3.50) ref -> r1
;* V05 tmp4 [V05 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-; V06 tmp5 [V06,T02] ( 5, 5 ) ref -> [sp+0x00] class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
-; V07 tmp6 [V07,T07] ( 3, 3 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V08 tmp7 [V08,T09] ( 0, 0 ) ubyte -> zero-ref "field V05.hasValue (fldOffset=0x0)" P-INDEP
-;* V09 tmp8 [V09,T10] ( 0, 0 ) ubyte -> zero-ref "field V05.value (fldOffset=0x1)" P-INDEP
-; V10 tmp9 [V10,T01] ( 3, 6 ) struct ( 4) [sp+0x04] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;* V11 tmp10 [V11,T08] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V12 tmp11 [V12,T04] ( 2, 4 ) ref -> r1 single-def "argument with side effect"
-; V13 cse0 [V13,T06] ( 4, 3 ) int -> r5 "CSE - aggressive"
+; V06 tmp5 [V06,T01] ( 5, 5 ) ref -> [sp+0x00] class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
+; V07 tmp6 [V07,T05] ( 3, 3 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+;* V08 tmp7 [V08,T06] ( 0, 0 ) ubyte -> zero-ref "field V05.hasValue (fldOffset=0x0)" P-INDEP
+;* V09 tmp8 [V09,T07] ( 0, 0 ) ubyte -> zero-ref "field V05.value (fldOffset=0x1)" P-INDEP
+; V10 tmp9 [V10,T00] ( 3, 6 ) struct ( 4) [sp+0x04] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M24931_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r11,lr}
+ push {r4,r11,lr}
+ sub sp, 12
add r11, sp, 16
mov r4, r0
; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M24931_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- movw r5, 0xd1ff
- movt r5, 0xd1ff
- ldr r1, [r5]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ ldr r1, [r0]
; gcrRegs +[r1]
cmp r1, 0
bne SHORT G_M24931_IG04
@@ -51,12 +49,14 @@ G_M24931_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs +[r1]
str r1, [sp]
; GC ptr vars +{V06}
- ldr r3, [r5-0x30]
+ movw r0, 0xd1ff
+ ; gcrRegs -[r0]
+ movt r0, 0xd1ff
+ ldr r3, [r0]
; gcrRegs +[r3]
cmp r3, 0
beq SHORT G_M24931_IG06
adds r0, r1, 4
- ; gcrRegs -[r0]
; byrRegs +[r0]
mov r1, r3
movw r12, 0xd1ff
@@ -69,7 +69,8 @@ G_M24931_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r2, [sp]
; gcrRegs +[r2]
str r1, [r2+0x0C]
- mov r0, r5
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
mov r1, r2
; gcrRegs +[r1]
movw r12, 0xd1ff
@@ -78,17 +79,17 @@ G_M24931_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r1]
mov r1, r2
; gcrRegs +[r1]
- ;; size=72 bbWeight=0.50 PerfScore 12.50
+ ;; size=84 bbWeight=0.50 PerfScore 14.00
G_M24931_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r2]
; GC ptr vars -{V06}
- movs r0, 1
- strb r0, [sp+0x04]
- movs r0, 16
- strb r0, [sp+0x05]
+ movs r3, 1
+ strb r3, [sp+0x04]
+ movs r3, 16
+ strb r3, [sp+0x05]
+ ldrh r3, [sp+0x04]
mov r0, r4
; gcrRegs +[r0]
- ldrh r3, [sp+0x04]
movs r2, 0
movw lr, 0xd1ff
movt lr, 0xd1ff
@@ -97,8 +98,9 @@ G_M24931_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4},
; gcrRegs -[r1 r4]
;; size=34 bbWeight=1 PerfScore 11.00
G_M24931_IG05: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
+ add sp, 12
+ pop {r4,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M24931_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0]
movw r3, 0xd1ff
@@ -108,7 +110,7 @@ G_M24931_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 148, prolog size 8, PerfScore 32.50, instruction count 50, allocated bytes for code 148 (MethodHash=85d59e9c) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
+; Total bytes of code 164, prolog size 10, PerfScore 36.00, instruction count 55, allocated bytes for code 164 (MethodHash=85d59e9c) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -120,7 +122,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 74 (0x0004a) Actual length = 148 (0x000094)
+ Function Length : 82 (0x00052) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -128,7 +130,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32
- FF end
+ 03 add sp, sp, #12 ; opsize 16
+ A8 10 pop {r4,r11,lr} ; opsize 32
FF end
+16 (+10.96%) : 24953.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
@@ -8,33 +8,31 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 3 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V00 this [V00,T02] ( 3, 3 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Nullable`1[ubyte]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T03] ( 2, 4 ) ref -> r1 class-hnd single-def "dup spill" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def
-; V05 tmp3 [V05,T05] ( 4, 3.50) ref -> r1
-; V06 tmp4 [V06,T02] ( 5, 5 ) ref -> [sp+0x00] class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
-; V07 tmp5 [V07,T07] ( 3, 3 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V08 tmp6 [V08,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V09 tmp7 [V09,T10] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
-; V10 tmp8 [V10,T01] ( 3, 6 ) struct ( 4) [sp+0x04] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;* V11 tmp9 [V11,T08] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V12 tmp10 [V12,T04] ( 2, 4 ) ref -> r1 single-def "argument with side effect"
-; V13 cse0 [V13,T06] ( 4, 3 ) int -> r5 "CSE - aggressive"
+; V05 tmp3 [V05,T04] ( 4, 3.50) ref -> r1
+; V06 tmp4 [V06,T01] ( 5, 5 ) ref -> [sp+0x00] class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
+; V07 tmp5 [V07,T05] ( 3, 3 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+;* V08 tmp6 [V08,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V09 tmp7 [V09,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
+; V10 tmp8 [V10,T00] ( 3, 6 ) struct ( 4) [sp+0x04] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M22152_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r11,lr}
+ push {r4,r11,lr}
+ sub sp, 12
add r11, sp, 16
mov r4, r0
; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M22152_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- movw r5, 0xd1ff
- movt r5, 0xd1ff
- ldr r1, [r5]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ ldr r1, [r0]
; gcrRegs +[r1]
cmp r1, 0
bne SHORT G_M22152_IG04
@@ -51,12 +49,14 @@ G_M22152_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs +[r1]
str r1, [sp]
; GC ptr vars +{V06}
- ldr r3, [r5-0x2C]
+ movw r0, 0xd1ff
+ ; gcrRegs -[r0]
+ movt r0, 0xd1ff
+ ldr r3, [r0]
; gcrRegs +[r3]
cmp r3, 0
beq SHORT G_M22152_IG07
adds r0, r1, 4
- ; gcrRegs -[r0]
; byrRegs +[r0]
mov r1, r3
movw r12, 0xd1ff
@@ -69,7 +69,8 @@ G_M22152_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r2, [sp]
; gcrRegs +[r2]
str r1, [r2+0x0C]
- mov r0, r5
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
mov r1, r2
; gcrRegs +[r1]
movw r12, 0xd1ff
@@ -78,18 +79,18 @@ G_M22152_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r1]
mov r1, r2
; gcrRegs +[r1]
- ;; size=72 bbWeight=0.50 PerfScore 12.50
+ ;; size=84 bbWeight=0.50 PerfScore 14.00
G_M22152_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r2]
; GC ptr vars -{V06}
- movs r0, 0
- strb r0, [sp+0x04]
+ movs r3, 0
+ strb r3, [sp+0x04]
;; size=6 bbWeight=1 PerfScore 2.00
G_M22152_IG05: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
- strb r0, [sp+0x05]
+ strb r3, [sp+0x05]
+ ldrh r3, [sp+0x04]
mov r0, r4
; gcrRegs +[r0]
- ldrh r3, [sp+0x04]
movs r2, 0
movw lr, 0xd1ff
movt lr, 0xd1ff
@@ -98,8 +99,9 @@ G_M22152_IG05: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b
; gcrRegs -[r1 r4]
;; size=26 bbWeight=1 PerfScore 8.00
G_M22152_IG06: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
+ add sp, 12
+ pop {r4,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M22152_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0]
movw r3, 0xd1ff
@@ -109,7 +111,7 @@ G_M22152_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 146, prolog size 8, PerfScore 31.50, instruction count 49, allocated bytes for code 146 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
+; Total bytes of code 162, prolog size 10, PerfScore 35.00, instruction count 54, allocated bytes for code 162 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -121,7 +123,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 73 (0x00049) Actual length = 146 (0x000092)
+ Function Length : 81 (0x00051) Actual length = 162 (0x0000a2)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -129,7 +131,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32
- FF end
+ 03 add sp, sp, #12 ; opsize 16
+ A8 10 pop {r4,r11,lr} ; opsize 32
FF end
benchmarks.run_pgo.linux.arm.checked.mch
-16 (-19.51%) : 17710.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
@@ -5,52 +5,39 @@
; partially interruptible
; Final local variable assignments
;
-; V00 arg0 [V00 ] ( 1, 1 ) ref -> [sp+0x2C] do-not-enreg[] class-hnd <System.String>
-; V01 arg1 [V01 ] ( 1, 1 ) ushort -> [sp+0x28] do-not-enreg[]
-; V02 arg2 [V02 ] ( 1, 1 ) int -> [sp+0x24] do-not-enreg[]
-; V03 arg3 [V03 ] ( 1, 1 ) byref -> [sp+0x20] do-not-enreg[]
+; V00 arg0 [V00 ] ( 1, 1 ) ref -> [sp+0x1C] do-not-enreg[] class-hnd <System.String>
+; V01 arg1 [V01 ] ( 1, 1 ) ushort -> [sp+0x18] do-not-enreg[]
+; V02 arg2 [V02 ] ( 1, 1 ) int -> [sp+0x14] do-not-enreg[]
+; V03 arg3 [V03 ] ( 1, 1 ) byref -> [sp+0x10] do-not-enreg[]
; V04 OutArgs [V04 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05 ] ( 1, 1 ) int -> [sp+0x1C] do-not-enreg[] "Cast away GC"
-; V06 tmp2 [V06 ] ( 1, 1 ) int -> [sp+0x18] do-not-enreg[] "argument with side effect"
-; V07 tmp3 [V07 ] ( 1, 1 ) ref -> [sp+0x14] do-not-enreg[] must-init "argument with side effect"
-; V08 tmp4 [V08 ] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[] "argument with side effect"
-; V09 tmp5 [V09 ] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[] "argument with side effect"
+; V05 tmp1 [V05 ] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[] "Cast away GC"
+; V06 tmp2 [V06 ] ( 1, 1 ) int -> [sp+0x08] do-not-enreg[] "argument with side effect"
;
-; Lcl frame size = 48
+; Lcl frame size = 32
G_M56677_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r10,r11,lr}
- sub sp, 48
- add r11, sp, 56
- movs r4, 0
- str r4, [sp+0x14] // [V07 tmp3]
- str r0, [sp+0x2C] // [V00 arg0]
- str r1, [sp+0x28] // [V01 arg1]
- str r2, [sp+0x24] // [V02 arg2]
- str r3, [sp+0x20] // [V03 arg3]
- ;; size=22 bbWeight=1 PerfScore 9.00
+ sub sp, 32
+ add r11, sp, 40
+ str r0, [sp+0x1C] // [V00 arg0]
+ str r1, [sp+0x18] // [V01 arg1]
+ str r2, [sp+0x14] // [V02 arg2]
+ str r3, [sp+0x10] // [V03 arg3]
+ ;; size=18 bbWeight=1 PerfScore 7.00
G_M56677_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r1, [sp+0x2C]
+ ldr r2, [sp+0x10]
+ ; byrRegs +[r2]
+ str r2, [sp+0x0C] // [V05 tmp1]
+ ldr r2, [sp+0x0C] // [V05 tmp1]
+ ; byrRegs -[r2]
+ str r2, [sp+0x08] // [V06 tmp2]
+ ldr r2, [sp+0x08] // [V06 tmp2]
+ str r2, [sp] // [V04 OutArgs]
+ ldr r2, [sp+0x18] // [V01 arg1]
+ uxth r2, r2
+ ldr r1, [sp+0x1C] // [V00 arg0]
; gcrRegs +[r1]
- str r1, [sp+0x14] // [V07 tmp3]
- ldr r1, [sp+0x28] // [V01 arg1]
- ; gcrRegs -[r1]
- uxth r1, r1
- str r1, [sp+0x10] // [V08 tmp4]
- ldr r1, [sp+0x24] // [V02 arg2]
- str r1, [sp+0x0C] // [V09 tmp5]
- ldr r1, [sp+0x20] // [V03 arg3]
- ; byrRegs +[r1]
- str r1, [sp+0x1C] // [V05 tmp1]
- ldr r1, [sp+0x1C] // [V05 tmp1]
- ; byrRegs -[r1]
- str r1, [sp+0x18] // [V06 tmp2]
- ldr r1, [sp+0x18] // [V06 tmp2]
- str r1, [sp] // [V04 OutArgs]
- ldr r1, [sp+0x14] // [V07 tmp3]
- ; gcrRegs +[r1]
- ldr r2, [sp+0x10] // [V08 tmp4]
- ldr r3, [sp+0x0C] // [V09 tmp5]
+ ldr r3, [sp+0x14] // [V02 arg2]
movw r0, 0xd1ff
movt r0, 0xd1ff
movw lr, 0xd1ff
@@ -58,13 +45,13 @@ G_M56677_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr lr, [lr]
blx lr // <unknown method>
; gcrRegs -[r1]
- ;; size=54 bbWeight=1 PerfScore 22.00
+ ;; size=42 bbWeight=1 PerfScore 16.00
G_M56677_IG03: ; bbWeight=1, epilog, nogc, extend
- add sp, 48
+ add sp, 32
pop {r4,r10,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 82, prolog size 14, PerfScore 33.00, instruction count 33, allocated bytes for code 82 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
+; Total bytes of code 66, prolog size 10, PerfScore 25.00, instruction count 25, allocated bytes for code 66 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
; ============================================================
Unwind Info:
@@ -76,11 +63,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 82 (0x000052)
+ Function Length : 33 (0x00021) Actual length = 66 (0x000042)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 0C add sp, sp, #48 ; opsize 16
+ 08 add sp, sp, #32 ; opsize 16
AC 10 pop {r4,r10,r11,lr} ; opsize 32
FF end
-16 (-19.51%) : 24751.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Instrumented Tier0)
@@ -5,52 +5,39 @@
; partially interruptible
; Final local variable assignments
;
-; V00 arg0 [V00 ] ( 1, 1 ) ref -> [sp+0x2C] do-not-enreg[] class-hnd <System.String>
-; V01 arg1 [V01 ] ( 1, 1 ) ushort -> [sp+0x28] do-not-enreg[]
-; V02 arg2 [V02 ] ( 1, 1 ) int -> [sp+0x24] do-not-enreg[]
-; V03 arg3 [V03 ] ( 1, 1 ) byref -> [sp+0x20] do-not-enreg[]
+; V00 arg0 [V00 ] ( 1, 1 ) ref -> [sp+0x1C] do-not-enreg[] class-hnd <System.String>
+; V01 arg1 [V01 ] ( 1, 1 ) ushort -> [sp+0x18] do-not-enreg[]
+; V02 arg2 [V02 ] ( 1, 1 ) int -> [sp+0x14] do-not-enreg[]
+; V03 arg3 [V03 ] ( 1, 1 ) byref -> [sp+0x10] do-not-enreg[]
; V04 OutArgs [V04 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05 ] ( 1, 1 ) int -> [sp+0x1C] do-not-enreg[] "Cast away GC"
-; V06 tmp2 [V06 ] ( 1, 1 ) int -> [sp+0x18] do-not-enreg[] "argument with side effect"
-; V07 tmp3 [V07 ] ( 1, 1 ) ref -> [sp+0x14] do-not-enreg[] must-init "argument with side effect"
-; V08 tmp4 [V08 ] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[] "argument with side effect"
-; V09 tmp5 [V09 ] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[] "argument with side effect"
+; V05 tmp1 [V05 ] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[] "Cast away GC"
+; V06 tmp2 [V06 ] ( 1, 1 ) int -> [sp+0x08] do-not-enreg[] "argument with side effect"
;
-; Lcl frame size = 48
+; Lcl frame size = 32
G_M56677_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r10,r11,lr}
- sub sp, 48
- add r11, sp, 56
- movs r4, 0
- str r4, [sp+0x14] // [V07 tmp3]
- str r0, [sp+0x2C] // [V00 arg0]
- str r1, [sp+0x28] // [V01 arg1]
- str r2, [sp+0x24] // [V02 arg2]
- str r3, [sp+0x20] // [V03 arg3]
- ;; size=22 bbWeight=1 PerfScore 9.00
+ sub sp, 32
+ add r11, sp, 40
+ str r0, [sp+0x1C] // [V00 arg0]
+ str r1, [sp+0x18] // [V01 arg1]
+ str r2, [sp+0x14] // [V02 arg2]
+ str r3, [sp+0x10] // [V03 arg3]
+ ;; size=18 bbWeight=1 PerfScore 7.00
G_M56677_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r1, [sp+0x2C]
+ ldr r2, [sp+0x10]
+ ; byrRegs +[r2]
+ str r2, [sp+0x0C] // [V05 tmp1]
+ ldr r2, [sp+0x0C] // [V05 tmp1]
+ ; byrRegs -[r2]
+ str r2, [sp+0x08] // [V06 tmp2]
+ ldr r2, [sp+0x08] // [V06 tmp2]
+ str r2, [sp] // [V04 OutArgs]
+ ldr r2, [sp+0x18] // [V01 arg1]
+ uxth r2, r2
+ ldr r1, [sp+0x1C] // [V00 arg0]
; gcrRegs +[r1]
- str r1, [sp+0x14] // [V07 tmp3]
- ldr r1, [sp+0x28] // [V01 arg1]
- ; gcrRegs -[r1]
- uxth r1, r1
- str r1, [sp+0x10] // [V08 tmp4]
- ldr r1, [sp+0x24] // [V02 arg2]
- str r1, [sp+0x0C] // [V09 tmp5]
- ldr r1, [sp+0x20] // [V03 arg3]
- ; byrRegs +[r1]
- str r1, [sp+0x1C] // [V05 tmp1]
- ldr r1, [sp+0x1C] // [V05 tmp1]
- ; byrRegs -[r1]
- str r1, [sp+0x18] // [V06 tmp2]
- ldr r1, [sp+0x18] // [V06 tmp2]
- str r1, [sp] // [V04 OutArgs]
- ldr r1, [sp+0x14] // [V07 tmp3]
- ; gcrRegs +[r1]
- ldr r2, [sp+0x10] // [V08 tmp4]
- ldr r3, [sp+0x0C] // [V09 tmp5]
+ ldr r3, [sp+0x14] // [V02 arg2]
movw r0, 0xd1ff
movt r0, 0xd1ff
movw lr, 0xd1ff
@@ -58,13 +45,13 @@ G_M56677_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr lr, [lr]
blx lr // <unknown method>
; gcrRegs -[r1]
- ;; size=54 bbWeight=1 PerfScore 22.00
+ ;; size=42 bbWeight=1 PerfScore 16.00
G_M56677_IG03: ; bbWeight=1, epilog, nogc, extend
- add sp, 48
+ add sp, 32
pop {r4,r10,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 82, prolog size 14, PerfScore 33.00, instruction count 33, allocated bytes for code 82 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Instrumented Tier0)
+; Total bytes of code 66, prolog size 10, PerfScore 25.00, instruction count 25, allocated bytes for code 66 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Instrumented Tier0)
; ============================================================
Unwind Info:
@@ -76,11 +63,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 82 (0x000052)
+ Function Length : 33 (0x00021) Actual length = 66 (0x000042)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 0C add sp, sp, #48 ; opsize 16
+ 08 add sp, sp, #32 ; opsize 16
AC 10 pop {r4,r10,r11,lr} ; opsize 32
FF end
-28 (-15.73%) : 74034.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
@@ -12,37 +12,29 @@
; V00 this [V00,T00] ( 4, 3 ) byref -> r4 this single-def
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Formats.Asn1.AsnReaderOptions>
; V02 OutArgs [V02 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03 ] ( 2, 0 ) struct (12) [sp+0x1C] do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <System.ReadOnlyMemory`1[ubyte]>
-; V04 tmp2 [V04,T06] ( 2, 0 ) int -> r4 "impAppendStmt"
+; V03 tmp1 [V03 ] ( 4, 0 ) struct (12) [sp+0x0C] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "impAppendStmt" <System.ReadOnlyMemory`1[ubyte]>
+; V04 tmp2 [V04,T05] ( 2, 0 ) int -> r4 "impAppendStmt"
; V05 tmp3 [V05,T01] ( 3, 0 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <System.Formats.Asn1.AsnReader>
;* V06 tmp4 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V07 tmp5 [V07,T11] ( 0, 0 ) ushort -> zero-ref "field V01._twoDigitYearMax (fldOffset=0x0)" P-INDEP
-;* V08 tmp6 [V08,T12] ( 0, 0 ) ubyte -> zero-ref "field V01.<SkipSetSortOrderVerification>k__BackingField (fldOffset=0x2)" P-INDEP
-; V09 tmp7 [V09,T04] ( 2, 0 ) ref -> [sp+0x1C] do-not-enreg[H] hidden-struct-arg "field V03._object (fldOffset=0x0)" P-DEP
-; V10 tmp8 [V10,T07] ( 2, 0 ) int -> [sp+0x20] do-not-enreg[H] hidden-struct-arg "field V03._index (fldOffset=0x4)" P-DEP
-; V11 tmp9 [V11,T08] ( 2, 0 ) int -> [sp+0x24] do-not-enreg[H] hidden-struct-arg "field V03._length (fldOffset=0x8)" P-DEP
-; V12 tmp10 [V12,T05] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
-; V13 tmp11 [V13,T03] ( 3, 0 ) struct ( 4) [sp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Formats.Asn1.AsnReaderOptions>
-;* V14 tmp12 [V14,T10] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V15 tmp13 [V15,T02] ( 4, 0 ) struct (12) [sp+0x0C] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlyMemory`1[ubyte]>
-; V16 tmp14 [V16,T09] ( 2, 0 ) int -> r4 "argument with side effect"
+;* V07 tmp5 [V07,T08] ( 0, 0 ) ushort -> zero-ref "field V01._twoDigitYearMax (fldOffset=0x0)" P-INDEP
+;* V08 tmp6 [V08,T09] ( 0, 0 ) ubyte -> zero-ref "field V01.<SkipSetSortOrderVerification>k__BackingField (fldOffset=0x2)" P-INDEP
+; V09 tmp7 [V09,T03] ( 2, 0 ) ref -> [sp+0x0C] do-not-enreg[H] hidden-struct-arg "field V03._object (fldOffset=0x0)" P-DEP
+; V10 tmp8 [V10,T06] ( 2, 0 ) int -> [sp+0x10] do-not-enreg[H] hidden-struct-arg "field V03._index (fldOffset=0x4)" P-DEP
+; V11 tmp9 [V11,T07] ( 2, 0 ) int -> [sp+0x14] do-not-enreg[H] hidden-struct-arg "field V03._length (fldOffset=0x8)" P-DEP
+; V12 tmp10 [V12,T04] ( 2, 0 ) ref -> r1 single-def "argument with side effect"
+; V13 tmp11 [V13,T02] ( 3, 0 ) struct ( 4) [sp+0x08] do-not-enreg[SF] "by-value struct argument" <System.Formats.Asn1.AsnReaderOptions>
;
-; Lcl frame size = 40
+; Lcl frame size = 24
G_M34208_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r11,lr}
- sub sp, 40
- add r11, sp, 48
- sub r3, r11, 36
+ sub sp, 24
+ add r11, sp, 32
movs r1, 0
- movs r2, 0
- stm r3!, {r1,r2}
- stm r3!, {r1,r2}
- stm r3!, {r1,r2}
- str r1, [r3]
+ str r1, [sp+0x0C]
mov r4, r0
; byrRegs +[r4]
- ;; size=28 bbWeight=1 PerfScore 11.00
+ ;; size=16 bbWeight=1 PerfScore 6.00
G_M34208_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
ldr r0, [r4+0x04]
cmp r0, 0
@@ -50,7 +42,7 @@ G_M34208_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre
;; size=6 bbWeight=1 PerfScore 3.00
G_M34208_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r4]
- add sp, 40
+ add sp, 24
pop {r4,r5,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
G_M34208_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, gcvars, byref
@@ -65,7 +57,7 @@ G_M34208_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
movt r1, 0xd1ff
ldr r1, [r1]
; gcrRegs +[r1]
- add r0, sp, 28
+ add r0, sp, 12
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -81,31 +73,21 @@ G_M34208_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
; gcrRegs +[r0]
mov r5, r0
; gcrRegs +[r5]
- ;; size=68 bbWeight=0 PerfScore 0.00
-G_M34208_IG05: ; bbWeight=0, nogc, extend
- ldr r0, [sp+0x1C]
+ str r4, [sp]
+ movs r1, 0
+ strh r1, [sp+0x08]
+ ;; size=76 bbWeight=0 PerfScore 0.00
+G_M34208_IG05: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
- str r0, [sp+0x0C]
- ldr r0, [sp+0x20]
- str r0, [sp+0x10]
- ldr r0, [sp+0x24]
- str r0, [sp+0x14]
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M34208_IG06: ; bbWeight=0, extend
- movs r0, 0
- strh r0, [sp+0x18]
- ;; size=6 bbWeight=0 PerfScore 0.00
-G_M34208_IG07: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
- strb r0, [sp+0x1A]
- mov r0, r5
- ; gcrRegs +[r0]
+ strb r1, [sp+0x0A]
+ ldr r1, [sp+0x08]
+ str r1, [sp+0x04]
ldr r1, [sp+0x0C]
; gcrRegs +[r1]
ldr r2, [sp+0x10]
ldr r3, [sp+0x14]
- str r4, [sp]
- ldr lr, [sp+0x18]
- str lr, [sp+0x04]
+ mov r0, r5
+ ; gcrRegs +[r0]
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
@@ -119,9 +101,9 @@ G_M34208_IG07: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
blx r3 // System.Formats.Asn1.AsnReader:ThrowIfNotEmpty():this
; gcrRegs -[r0 r5]
b SHORT G_M34208_IG03
- ;; size=52 bbWeight=0 PerfScore 0.00
+ ;; size=46 bbWeight=0 PerfScore 0.00
-; Total bytes of code 178, prolog size 26, PerfScore 16.00, instruction count 63, allocated bytes for code 178 (MethodHash=fab97a5f) for method System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
+; Total bytes of code 150, prolog size 14, PerfScore 11.00, instruction count 52, allocated bytes for code 150 (MethodHash=fab97a5f) for method System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
; ============================================================
Unwind Info:
@@ -133,7 +115,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 89 (0x00059) Actual length = 178 (0x0000b2)
+ Function Length : 75 (0x0004b) Actual length = 150 (0x000096)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -141,7 +123,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- 0A add sp, sp, #40 ; opsize 16
+ 06 add sp, sp, #24 ; opsize 16
A8 30 pop {r4,r5,r11,lr} ; opsize 32
FF end
+30 (+5.21%) : 154732.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:Populate(System.String,int,int):System.Canon[]:this (Tier1)
@@ -14,29 +14,29 @@
; V02 arg2 [V02,T02] ( 6, 4 ) int -> r6 single-def
; V03 arg3 [V03,T03] ( 6, 4 ) int -> r7 single-def
; V04 loc0 [V04 ] ( 5, 3.00) ref -> [r11-0x24] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon[]>
-; V05 loc1 [V05,T06] ( 6, 3.33) int -> r8
+; V05 loc1 [V05,T06] ( 6, 3.33) int -> [r11-0x28] spill-single-def
;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc3 [V07 ] ( 3, 2.50) byref -> [r11-0x28] must-init pinned
+; V07 loc3 [V07 ] ( 3, 2.50) byref -> [r11-0x2C] must-init pinned
;* V08 loc4 [V08 ] ( 0, 0 ) int -> zero-ref
;* V09 loc5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref
-; V11 loc7 [V11 ] ( 3, 0 ) byref -> [r11-0x2C] must-init pinned
+; V11 loc7 [V11 ] ( 3, 0 ) byref -> [r11-0x30] must-init pinned
; V12 loc8 [V12,T14] ( 2, 1.67) int -> r3
; V13 OutArgs [V13 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T05] ( 7, 4.17) int -> [r11-0x30] spill-single-def
-; V15 tmp2 [V15,T08] ( 3, 3.33) ref -> [r11-0x48] class-hnd exact spill-single-def "spilling ret_expr" <System.Text.UTF8Encoding+UTF8EncodingSealed>
-; V16 tmp3 [V16,T07] ( 6, 3.33) int -> [r11-0x34] spill-single-def "guarded devirt return temp"
+; V14 tmp1 [V14,T05] ( 7, 4.17) int -> [r11-0x34] spill-single-def
+; V15 tmp2 [V15,T08] ( 3, 3.33) ref -> [r11-0x50] class-hnd exact spill-single-def "spilling ret_expr" <System.Text.UTF8Encoding+UTF8EncodingSealed>
+; V16 tmp3 [V16,T07] ( 6, 3.33) int -> [r11-0x38] spill-single-def "guarded devirt return temp"
;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Text.UTF8Encoding+UTF8EncodingSealed>
;* V18 tmp5 [V18,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V19 tmp6 [V19,T17] ( 0, 0 ) int -> zero-ref
;* V20 tmp7 [V20 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-; V21 tmp8 [V21,T13] ( 5, 1.67) int -> [r11-0x38] "Inline stloc first use temp"
+; V21 tmp8 [V21,T13] ( 5, 1.67) int -> [r11-0x3C] "Inline stloc first use temp"
;* V22 tmp9 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp10 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp11 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp12 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V26 tmp13 [V26 ] ( 3, 2.50) long -> [r11-0x40] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V27 tmp14 [V27 ] ( 1, 0.83) int -> [r11-0x44] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V26 tmp13 [V26 ] ( 3, 2.50) long -> [r11-0x48] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V27 tmp14 [V27 ] ( 1, 0.83) int -> [r11-0x4C] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V28 tmp15 [V28 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V29 tmp16 [V29,T11] ( 4, 2.50) int -> r3 "Inline stloc first use temp"
;* V30 tmp17 [V30 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
@@ -44,36 +44,36 @@
; V32 tmp19 [V32,T10] ( 2, 3.33) int -> r0 "argument with side effect"
; V33 tmp20 [V33,T18] ( 3, 0 ) ref -> r0 single-def "arr expr"
; V34 tmp21 [V34,T19] ( 2, 0 ) int -> r3 "Cast away GC"
-;* V35 tmp22 [V35,T23] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V36 tmp23 [V36,T20] ( 2, 0 ) int -> r1 "argument with side effect"
-; V37 tmp24 [V37,T21] ( 2, 0 ) int -> r2 "argument with side effect"
-; V38 tmp25 [V38,T22] ( 2, 0 ) int -> r3 "argument with side effect"
-; V39 GsCookie [V39 ] ( 1, 1 ) int -> [r11-0x4C] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V40 rat0 [V40,T12] ( 3, 2.50) int -> lr "field V30.lo (fldOffset=0x0)" P-INDEP
-; V41 rat1 [V41,T15] ( 2, 1.67) int -> r0 "field V30.hi (fldOffset=0x4)" P-INDEP
-; V42 rat2 [V42,T04] ( 3, 5.00) int -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V35 tmp22 [V35,T20] ( 2, 0 ) int -> r3 "argument with side effect"
+; V36 GsCookie [V36 ] ( 1, 1 ) int -> [r11-0x54] do-not-enreg[X] addr-exposed "GSSecurityCookie"
+; V37 rat0 [V37,T12] ( 3, 2.50) int -> lr "field V30.lo (fldOffset=0x0)" P-INDEP
+; V38 rat1 [V38,T15] ( 2, 1.67) int -> r0 "field V30.hi (fldOffset=0x4)" P-INDEP
+; V39 rat2 [V39,T04] ( 3, 5.00) int -> r0 "ReplaceWithLclVar is creating a new local variable"
+; TEMP_02 ref -> [r11-0x58]
+; TEMP_01 int -> [r11-0x5C]
;
-; Lcl frame size = 68
+; Lcl frame size = 84
G_M22299_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 68
+ sub sp, 84
mov r9, sp
- add r11, sp, 96
+ add r11, sp, 112
movs r4, 0
- str r4, [r9+0x3C] // [V04 loc0]
- str r4, [r9+0x38] // [V07 loc3]
- str r4, [r9+0x34] // [V11 loc7]
+ str r4, [r9+0x4C] // [V04 loc0]
+ str r4, [r9+0x44] // [V07 loc3]
+ str r4, [r9+0x40] // [V11 loc7]
+ str r4, [r9+0x18] // [TEMP_02]
movw r4, 0xd1ff
movt r4, 0xd1ff
- str r4, [r9+0x14] // [V39 GsCookie]
+ str r4, [r9+0x1C] // [V36 GsCookie]
mov r5, r0
; gcrRegs +[r5]
mov r4, r1
; gcrRegs +[r4]
mov r6, r2
mov r7, r3
- ;; size=46 bbWeight=1 PerfScore 15.00
+ ;; size=50 bbWeight=1 PerfScore 16.00
G_M22299_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
cmp r4, 0
beq G_M22299_IG11
@@ -85,35 +85,35 @@ G_M22299_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
;; size=20 bbWeight=1 PerfScore 7.00
G_M22299_IG03: ; bbWeight=0.83, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r8, [r4+0x04]
+ str r8, [r9+0x48]
add r2, r4, 8
; byrRegs +[r2]
- str r2, [r9+0x38] // [V07 loc3]
- ldr lr, [r9+0x38] // [V07 loc3]
+ str r2, [r9+0x44] // [V07 loc3]
+ ldr lr, [r9+0x44] // [V07 loc3]
; byrRegs +[lr]
- mov r1, lr
- str r1, [r9+0x30] // [V14 tmp1]
+ str lr, [r9+0x3C] // [V14 tmp1]
movw r2, 0xd1ff
; byrRegs -[r2]
movt r2, 0xd1ff
- ldr lr, [r2]
- ; gcrRegs +[lr]
- ; byrRegs -[lr]
- str lr, [r9+0x18] // [V15 tmp2]
+ ldr r12, [r2]
+ ; gcrRegs +[r12]
+ str r12, [r9+0x20] // [V15 tmp2]
; GC ptr vars +{V15}
- ldrsb r2, [lr]
- cmp r1, 0
+ ldrsb r2, [r12]
+ cmp lr, 0
beq G_M22299_IG12
- addw r2, r9, 32 // [V26 tmp13]
- addw r3, r9, 28 // [V27 tmp14]
- mov r0, r1
+ addw r2, r9, 40 // [V26 tmp13]
+ addw r3, r9, 36 // [V27 tmp14]
+ mov r0, lr
mov r1, r8
- movw r12, 0xd1ff
- movt r12, 0xd1ff
- ldr r12, [r12]
- blx r12 // <unknown method>
- ; gcrRegs -[lr]
- ldr r1, [r9+0x30] // [V14 tmp1]
- subs r0, r0, r1
+ movw r8, 0xd1ff
+ movt r8, 0xd1ff
+ ldr r8, [r8]
+ blx r8 // <unknown method>
+ ; gcrRegs -[r12]
+ ; byrRegs -[lr]
+ ldr r8, [r9+0x3C] // [V14 tmp1]
+ sub r0, r0, r8
movs r1, 2
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -121,8 +121,8 @@ G_M22299_IG03: ; bbWeight=0.83, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
mov r3, r0
mov r0, r3
asrs r1, r0, 31
- ldr r2, [r9+0x20] // [V26 tmp13]
- ldr lr, [r9+0x24] // [V26 tmp13+0x04]
+ ldr r2, [r9+0x28] // [V26 tmp13]
+ ldr lr, [r9+0x2C] // [V26 tmp13+0x04]
adds r12, r0, r2
adc r0, r1, lr
mov lr, r12
@@ -130,16 +130,17 @@ G_M22299_IG03: ; bbWeight=0.83, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
cmp lr, 0x80000000
sbcs r0, r1
bhs G_M22299_IG14
- cmp r3, r8
+ ldr r12, [r9+0x48] // [V05 loc1]
+ cmp r3, r12
bne SHORT G_M22299_IG13
- ;; size=132 bbWeight=0.83 PerfScore 34.17
+ ;; size=142 bbWeight=0.83 PerfScore 35.00
G_M22299_IG04: ; bbWeight=0.83, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V15}
- mov r12, lr
- str r12, [r9+0x2C] // [V16 tmp3]
- cmp r12, 0x400
- bgt SHORT G_M22299_IG15
- mov r3, r12
+ mov r2, lr
+ str r2, [r9+0x38] // [V16 tmp3]
+ cmp r2, 0x400
+ bgt G_M22299_IG15
+ mov r3, r2
tst r3, r3
beq SHORT G_M22299_IG07
add sp, 16
@@ -148,7 +149,7 @@ G_M22299_IG04: ; bbWeight=0.83, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5
subs r3, sp, r3
bvc SHORT G_M22299_IG05
movs r3, 0
- ;; size=34 bbWeight=0.83 PerfScore 10.83
+ ;; size=36 bbWeight=0.83 PerfScore 10.83
G_M22299_IG05: ; bbWeight=0.83, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r0, [sp]
sub r0, sp, 0x1000
@@ -164,26 +165,26 @@ G_M22299_IG06: ; bbWeight=0.83, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
add r3, sp, 16
;; size=10 bbWeight=0.83 PerfScore 3.33
G_M22299_IG07: ; bbWeight=0.83, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- str r12, [sp] // [V13 OutArgs]
+ str r2, [sp] // [V13 OutArgs]
str r6, [sp+0x04] // [V13 OutArgs+0x04]
str r7, [sp+0x08] // [V13 OutArgs+0x08]
mov r0, r5
; gcrRegs +[r0]
- ldr r1, [r9+0x30] // [V14 tmp1]
- mov r2, r8
+ mov r1, r8
+ mov r2, r12
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // <unknown method>
- str r0, [r9+0x3C] // [V04 loc0]
- ;; size=34 bbWeight=0.83 PerfScore 9.17
+ str r0, [r9+0x4C] // [V04 loc0]
+ ;; size=30 bbWeight=0.83 PerfScore 9.17
G_M22299_IG08: ; bbWeight=0.83, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
movs r1, 0
- str r1, [r9+0x38] // [V07 loc3]
+ str r1, [r9+0x44] // [V07 loc3]
;; size=6 bbWeight=0.83 PerfScore 1.67
G_M22299_IG09: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- addw r1, r9, 60 // [V04 loc0]
+ addw r1, r9, 76 // [V04 loc0]
mov r0, r5
; gcrRegs +[r0]
mov r2, r4
@@ -194,11 +195,11 @@ G_M22299_IG09: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
ldr lr, [lr]
blx lr // <unknown method>
; gcrRegs -[r0 r2 r4-r5]
- ldr r0, [r9+0x3C] // [V04 loc0]
+ ldr r0, [r9+0x4C] // [V04 loc0]
; gcrRegs +[r0]
movw r12, 0xd1ff
movt r12, 0xd1ff
- ldr lr, [r9+0x14] // [V39 GsCookie]
+ ldr lr, [r9+0x1C] // [V36 GsCookie]
cmp r12, lr
beq SHORT G_M22299_IG10
movw r12, 0xd1ff
@@ -209,7 +210,7 @@ G_M22299_IG09: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
G_M22299_IG10: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[r0]
mov sp, r9
- add sp, 68
+ add sp, 84
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=8 bbWeight=1 PerfScore 3.00
G_M22299_IG11: ; bbWeight=0.17, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
...
+30 (+5.21%) : 155896.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:Populate(System.String,int,int):System.Canon[]:this (Tier1)
@@ -14,29 +14,29 @@
; V02 arg2 [V02,T02] ( 6, 4 ) int -> r6 single-def
; V03 arg3 [V03,T03] ( 6, 4 ) int -> r7 single-def
; V04 loc0 [V04 ] ( 5, 3 ) ref -> [r11-0x24] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon[]>
-; V05 loc1 [V05,T06] ( 6, 3.20) int -> r8
+; V05 loc1 [V05,T06] ( 6, 3.20) int -> [r11-0x28] spill-single-def
;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc3 [V07 ] ( 3, 2.40) byref -> [r11-0x28] must-init pinned
+; V07 loc3 [V07 ] ( 3, 2.40) byref -> [r11-0x2C] must-init pinned
;* V08 loc4 [V08 ] ( 0, 0 ) int -> zero-ref
;* V09 loc5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref
-; V11 loc7 [V11 ] ( 3, 0 ) byref -> [r11-0x2C] must-init pinned
+; V11 loc7 [V11 ] ( 3, 0 ) byref -> [r11-0x30] must-init pinned
; V12 loc8 [V12,T14] ( 2, 1.60) int -> r3
; V13 OutArgs [V13 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T05] ( 7, 4 ) int -> [r11-0x30] spill-single-def
-; V15 tmp2 [V15,T08] ( 3, 3.20) ref -> [r11-0x48] class-hnd exact spill-single-def "spilling ret_expr" <System.Text.UTF8Encoding+UTF8EncodingSealed>
-; V16 tmp3 [V16,T07] ( 6, 3.20) int -> [r11-0x34] spill-single-def "guarded devirt return temp"
+; V14 tmp1 [V14,T05] ( 7, 4 ) int -> [r11-0x34] spill-single-def
+; V15 tmp2 [V15,T08] ( 3, 3.20) ref -> [r11-0x50] class-hnd exact spill-single-def "spilling ret_expr" <System.Text.UTF8Encoding+UTF8EncodingSealed>
+; V16 tmp3 [V16,T07] ( 6, 3.20) int -> [r11-0x38] spill-single-def "guarded devirt return temp"
;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Text.UTF8Encoding+UTF8EncodingSealed>
;* V18 tmp5 [V18,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V19 tmp6 [V19,T17] ( 0, 0 ) int -> zero-ref
;* V20 tmp7 [V20 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-; V21 tmp8 [V21,T13] ( 5, 1.60) int -> [r11-0x38] "Inline stloc first use temp"
+; V21 tmp8 [V21,T13] ( 5, 1.60) int -> [r11-0x3C] "Inline stloc first use temp"
;* V22 tmp9 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp10 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp11 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp12 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V26 tmp13 [V26 ] ( 3, 2.40) long -> [r11-0x40] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V27 tmp14 [V27 ] ( 1, 0.80) int -> [r11-0x44] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V26 tmp13 [V26 ] ( 3, 2.40) long -> [r11-0x48] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V27 tmp14 [V27 ] ( 1, 0.80) int -> [r11-0x4C] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V28 tmp15 [V28 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V29 tmp16 [V29,T11] ( 4, 2.40) int -> r3 "Inline stloc first use temp"
;* V30 tmp17 [V30 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
@@ -44,36 +44,36 @@
; V32 tmp19 [V32,T10] ( 2, 3.20) int -> r0 "argument with side effect"
; V33 tmp20 [V33,T18] ( 3, 0 ) ref -> r0 single-def "arr expr"
; V34 tmp21 [V34,T19] ( 2, 0 ) int -> r3 "Cast away GC"
-;* V35 tmp22 [V35,T23] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V36 tmp23 [V36,T20] ( 2, 0 ) int -> r1 "argument with side effect"
-; V37 tmp24 [V37,T21] ( 2, 0 ) int -> r2 "argument with side effect"
-; V38 tmp25 [V38,T22] ( 2, 0 ) int -> r3 "argument with side effect"
-; V39 GsCookie [V39 ] ( 1, 1 ) int -> [r11-0x4C] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V40 rat0 [V40,T12] ( 3, 2.40) int -> lr "field V30.lo (fldOffset=0x0)" P-INDEP
-; V41 rat1 [V41,T15] ( 2, 1.60) int -> r0 "field V30.hi (fldOffset=0x4)" P-INDEP
-; V42 rat2 [V42,T04] ( 3, 4.80) int -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V35 tmp22 [V35,T20] ( 2, 0 ) int -> r3 "argument with side effect"
+; V36 GsCookie [V36 ] ( 1, 1 ) int -> [r11-0x54] do-not-enreg[X] addr-exposed "GSSecurityCookie"
+; V37 rat0 [V37,T12] ( 3, 2.40) int -> lr "field V30.lo (fldOffset=0x0)" P-INDEP
+; V38 rat1 [V38,T15] ( 2, 1.60) int -> r0 "field V30.hi (fldOffset=0x4)" P-INDEP
+; V39 rat2 [V39,T04] ( 3, 4.80) int -> r0 "ReplaceWithLclVar is creating a new local variable"
+; TEMP_02 ref -> [r11-0x58]
+; TEMP_01 int -> [r11-0x5C]
;
-; Lcl frame size = 68
+; Lcl frame size = 84
G_M22299_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 68
+ sub sp, 84
mov r9, sp
- add r11, sp, 96
+ add r11, sp, 112
movs r4, 0
- str r4, [r9+0x3C] // [V04 loc0]
- str r4, [r9+0x38] // [V07 loc3]
- str r4, [r9+0x34] // [V11 loc7]
+ str r4, [r9+0x4C] // [V04 loc0]
+ str r4, [r9+0x44] // [V07 loc3]
+ str r4, [r9+0x40] // [V11 loc7]
+ str r4, [r9+0x18] // [TEMP_02]
movw r4, 0xd1ff
movt r4, 0xd1ff
- str r4, [r9+0x14] // [V39 GsCookie]
+ str r4, [r9+0x1C] // [V36 GsCookie]
mov r5, r0
; gcrRegs +[r5]
mov r4, r1
; gcrRegs +[r4]
mov r6, r2
mov r7, r3
- ;; size=46 bbWeight=1 PerfScore 15.00
+ ;; size=50 bbWeight=1 PerfScore 16.00
G_M22299_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
cmp r4, 0
beq G_M22299_IG11
@@ -85,35 +85,35 @@ G_M22299_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
;; size=20 bbWeight=1 PerfScore 7.00
G_M22299_IG03: ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r8, [r4+0x04]
+ str r8, [r9+0x48]
add r2, r4, 8
; byrRegs +[r2]
- str r2, [r9+0x38] // [V07 loc3]
- ldr lr, [r9+0x38] // [V07 loc3]
+ str r2, [r9+0x44] // [V07 loc3]
+ ldr lr, [r9+0x44] // [V07 loc3]
; byrRegs +[lr]
- mov r1, lr
- str r1, [r9+0x30] // [V14 tmp1]
+ str lr, [r9+0x3C] // [V14 tmp1]
movw r2, 0xd1ff
; byrRegs -[r2]
movt r2, 0xd1ff
- ldr lr, [r2]
- ; gcrRegs +[lr]
- ; byrRegs -[lr]
- str lr, [r9+0x18] // [V15 tmp2]
+ ldr r12, [r2]
+ ; gcrRegs +[r12]
+ str r12, [r9+0x20] // [V15 tmp2]
; GC ptr vars +{V15}
- ldrsb r2, [lr]
- cmp r1, 0
+ ldrsb r2, [r12]
+ cmp lr, 0
beq G_M22299_IG12
- addw r2, r9, 32 // [V26 tmp13]
- addw r3, r9, 28 // [V27 tmp14]
- mov r0, r1
+ addw r2, r9, 40 // [V26 tmp13]
+ addw r3, r9, 36 // [V27 tmp14]
+ mov r0, lr
mov r1, r8
- movw r12, 0xd1ff
- movt r12, 0xd1ff
- ldr r12, [r12]
- blx r12 // <unknown method>
- ; gcrRegs -[lr]
- ldr r1, [r9+0x30] // [V14 tmp1]
- subs r0, r0, r1
+ movw r8, 0xd1ff
+ movt r8, 0xd1ff
+ ldr r8, [r8]
+ blx r8 // <unknown method>
+ ; gcrRegs -[r12]
+ ; byrRegs -[lr]
+ ldr r8, [r9+0x3C] // [V14 tmp1]
+ sub r0, r0, r8
movs r1, 2
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -121,8 +121,8 @@ G_M22299_IG03: ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
mov r3, r0
mov r0, r3
asrs r1, r0, 31
- ldr r2, [r9+0x20] // [V26 tmp13]
- ldr lr, [r9+0x24] // [V26 tmp13+0x04]
+ ldr r2, [r9+0x28] // [V26 tmp13]
+ ldr lr, [r9+0x2C] // [V26 tmp13+0x04]
adds r12, r0, r2
adc r0, r1, lr
mov lr, r12
@@ -130,16 +130,17 @@ G_M22299_IG03: ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
cmp lr, 0x80000000
sbcs r0, r1
bhs G_M22299_IG14
- cmp r3, r8
+ ldr r12, [r9+0x48] // [V05 loc1]
+ cmp r3, r12
bne SHORT G_M22299_IG13
- ;; size=132 bbWeight=0.80 PerfScore 32.80
+ ;; size=142 bbWeight=0.80 PerfScore 33.60
G_M22299_IG04: ; bbWeight=0.80, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V15}
- mov r12, lr
- str r12, [r9+0x2C] // [V16 tmp3]
- cmp r12, 0x400
- bgt SHORT G_M22299_IG15
- mov r3, r12
+ mov r2, lr
+ str r2, [r9+0x38] // [V16 tmp3]
+ cmp r2, 0x400
+ bgt G_M22299_IG15
+ mov r3, r2
tst r3, r3
beq SHORT G_M22299_IG07
add sp, 16
@@ -148,7 +149,7 @@ G_M22299_IG04: ; bbWeight=0.80, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5
subs r3, sp, r3
bvc SHORT G_M22299_IG05
movs r3, 0
- ;; size=34 bbWeight=0.80 PerfScore 10.40
+ ;; size=36 bbWeight=0.80 PerfScore 10.40
G_M22299_IG05: ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r0, [sp]
sub r0, sp, 0x1000
@@ -164,26 +165,26 @@ G_M22299_IG06: ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
add r3, sp, 16
;; size=10 bbWeight=0.80 PerfScore 3.20
G_M22299_IG07: ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- str r12, [sp] // [V13 OutArgs]
+ str r2, [sp] // [V13 OutArgs]
str r6, [sp+0x04] // [V13 OutArgs+0x04]
str r7, [sp+0x08] // [V13 OutArgs+0x08]
mov r0, r5
; gcrRegs +[r0]
- ldr r1, [r9+0x30] // [V14 tmp1]
- mov r2, r8
+ mov r1, r8
+ mov r2, r12
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // <unknown method>
- str r0, [r9+0x3C] // [V04 loc0]
- ;; size=34 bbWeight=0.80 PerfScore 8.80
+ str r0, [r9+0x4C] // [V04 loc0]
+ ;; size=30 bbWeight=0.80 PerfScore 8.80
G_M22299_IG08: ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
movs r1, 0
- str r1, [r9+0x38] // [V07 loc3]
+ str r1, [r9+0x44] // [V07 loc3]
;; size=6 bbWeight=0.80 PerfScore 1.60
G_M22299_IG09: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- addw r1, r9, 60 // [V04 loc0]
+ addw r1, r9, 76 // [V04 loc0]
mov r0, r5
; gcrRegs +[r0]
mov r2, r4
@@ -194,11 +195,11 @@ G_M22299_IG09: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
ldr lr, [lr]
blx lr // <unknown method>
; gcrRegs -[r0 r2 r4-r5]
- ldr r0, [r9+0x3C] // [V04 loc0]
+ ldr r0, [r9+0x4C] // [V04 loc0]
; gcrRegs +[r0]
movw r12, 0xd1ff
movt r12, 0xd1ff
- ldr lr, [r9+0x14] // [V39 GsCookie]
+ ldr lr, [r9+0x1C] // [V36 GsCookie]
cmp r12, lr
beq SHORT G_M22299_IG10
movw r12, 0xd1ff
@@ -209,7 +210,7 @@ G_M22299_IG09: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
G_M22299_IG10: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[r0]
mov sp, r9
- add sp, 68
+ add sp, 84
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=8 bbWeight=1 PerfScore 3.00
G_M22299_IG11: ; bbWeight=0.20, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
...
+30 (+5.21%) : 156632.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:Populate(System.String,int,int):System.Canon[]:this (Tier1)
@@ -14,29 +14,29 @@
; V02 arg2 [V02,T02] ( 6, 4 ) int -> r6 single-def
; V03 arg3 [V03,T03] ( 6, 4 ) int -> r7 single-def
; V04 loc0 [V04 ] ( 5, 3 ) ref -> [r11-0x24] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon[]>
-; V05 loc1 [V05,T06] ( 6, 3.20) int -> r8
+; V05 loc1 [V05,T06] ( 6, 3.20) int -> [r11-0x28] spill-single-def
;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc3 [V07 ] ( 3, 2.40) byref -> [r11-0x28] must-init pinned
+; V07 loc3 [V07 ] ( 3, 2.40) byref -> [r11-0x2C] must-init pinned
;* V08 loc4 [V08 ] ( 0, 0 ) int -> zero-ref
;* V09 loc5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref
-; V11 loc7 [V11 ] ( 3, 0 ) byref -> [r11-0x2C] must-init pinned
+; V11 loc7 [V11 ] ( 3, 0 ) byref -> [r11-0x30] must-init pinned
; V12 loc8 [V12,T14] ( 2, 1.60) int -> r3
; V13 OutArgs [V13 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T05] ( 7, 4 ) int -> [r11-0x30] spill-single-def
-; V15 tmp2 [V15,T08] ( 3, 3.20) ref -> [r11-0x48] class-hnd exact spill-single-def "spilling ret_expr" <System.Text.UTF8Encoding+UTF8EncodingSealed>
-; V16 tmp3 [V16,T07] ( 6, 3.20) int -> [r11-0x34] spill-single-def "guarded devirt return temp"
+; V14 tmp1 [V14,T05] ( 7, 4 ) int -> [r11-0x34] spill-single-def
+; V15 tmp2 [V15,T08] ( 3, 3.20) ref -> [r11-0x50] class-hnd exact spill-single-def "spilling ret_expr" <System.Text.UTF8Encoding+UTF8EncodingSealed>
+; V16 tmp3 [V16,T07] ( 6, 3.20) int -> [r11-0x38] spill-single-def "guarded devirt return temp"
;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Text.UTF8Encoding+UTF8EncodingSealed>
;* V18 tmp5 [V18,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V19 tmp6 [V19,T17] ( 0, 0 ) int -> zero-ref
;* V20 tmp7 [V20 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-; V21 tmp8 [V21,T13] ( 5, 1.60) int -> [r11-0x38] "Inline stloc first use temp"
+; V21 tmp8 [V21,T13] ( 5, 1.60) int -> [r11-0x3C] "Inline stloc first use temp"
;* V22 tmp9 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp10 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp11 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp12 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V26 tmp13 [V26 ] ( 3, 2.40) long -> [r11-0x40] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V27 tmp14 [V27 ] ( 1, 0.80) int -> [r11-0x44] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V26 tmp13 [V26 ] ( 3, 2.40) long -> [r11-0x48] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V27 tmp14 [V27 ] ( 1, 0.80) int -> [r11-0x4C] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V28 tmp15 [V28 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V29 tmp16 [V29,T11] ( 4, 2.40) int -> r3 "Inline stloc first use temp"
;* V30 tmp17 [V30 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
@@ -44,36 +44,36 @@
; V32 tmp19 [V32,T10] ( 2, 3.20) int -> r0 "argument with side effect"
; V33 tmp20 [V33,T18] ( 3, 0 ) ref -> r0 single-def "arr expr"
; V34 tmp21 [V34,T19] ( 2, 0 ) int -> r3 "Cast away GC"
-;* V35 tmp22 [V35,T23] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V36 tmp23 [V36,T20] ( 2, 0 ) int -> r1 "argument with side effect"
-; V37 tmp24 [V37,T21] ( 2, 0 ) int -> r2 "argument with side effect"
-; V38 tmp25 [V38,T22] ( 2, 0 ) int -> r3 "argument with side effect"
-; V39 GsCookie [V39 ] ( 1, 1 ) int -> [r11-0x4C] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V40 rat0 [V40,T12] ( 3, 2.40) int -> lr "field V30.lo (fldOffset=0x0)" P-INDEP
-; V41 rat1 [V41,T15] ( 2, 1.60) int -> r0 "field V30.hi (fldOffset=0x4)" P-INDEP
-; V42 rat2 [V42,T04] ( 3, 4.80) int -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V35 tmp22 [V35,T20] ( 2, 0 ) int -> r3 "argument with side effect"
+; V36 GsCookie [V36 ] ( 1, 1 ) int -> [r11-0x54] do-not-enreg[X] addr-exposed "GSSecurityCookie"
+; V37 rat0 [V37,T12] ( 3, 2.40) int -> lr "field V30.lo (fldOffset=0x0)" P-INDEP
+; V38 rat1 [V38,T15] ( 2, 1.60) int -> r0 "field V30.hi (fldOffset=0x4)" P-INDEP
+; V39 rat2 [V39,T04] ( 3, 4.80) int -> r0 "ReplaceWithLclVar is creating a new local variable"
+; TEMP_02 ref -> [r11-0x58]
+; TEMP_01 int -> [r11-0x5C]
;
-; Lcl frame size = 68
+; Lcl frame size = 84
G_M22299_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 68
+ sub sp, 84
mov r9, sp
- add r11, sp, 96
+ add r11, sp, 112
movs r4, 0
- str r4, [r9+0x3C] // [V04 loc0]
- str r4, [r9+0x38] // [V07 loc3]
- str r4, [r9+0x34] // [V11 loc7]
+ str r4, [r9+0x4C] // [V04 loc0]
+ str r4, [r9+0x44] // [V07 loc3]
+ str r4, [r9+0x40] // [V11 loc7]
+ str r4, [r9+0x18] // [TEMP_02]
movw r4, 0xd1ff
movt r4, 0xd1ff
- str r4, [r9+0x14] // [V39 GsCookie]
+ str r4, [r9+0x1C] // [V36 GsCookie]
mov r5, r0
; gcrRegs +[r5]
mov r4, r1
; gcrRegs +[r4]
mov r6, r2
mov r7, r3
- ;; size=46 bbWeight=1 PerfScore 15.00
+ ;; size=50 bbWeight=1 PerfScore 16.00
G_M22299_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
cmp r4, 0
beq G_M22299_IG11
@@ -85,35 +85,35 @@ G_M22299_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
;; size=20 bbWeight=1 PerfScore 7.00
G_M22299_IG03: ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r8, [r4+0x04]
+ str r8, [r9+0x48]
add r2, r4, 8
; byrRegs +[r2]
- str r2, [r9+0x38] // [V07 loc3]
- ldr lr, [r9+0x38] // [V07 loc3]
+ str r2, [r9+0x44] // [V07 loc3]
+ ldr lr, [r9+0x44] // [V07 loc3]
; byrRegs +[lr]
- mov r1, lr
- str r1, [r9+0x30] // [V14 tmp1]
+ str lr, [r9+0x3C] // [V14 tmp1]
movw r2, 0xd1ff
; byrRegs -[r2]
movt r2, 0xd1ff
- ldr lr, [r2]
- ; gcrRegs +[lr]
- ; byrRegs -[lr]
- str lr, [r9+0x18] // [V15 tmp2]
+ ldr r12, [r2]
+ ; gcrRegs +[r12]
+ str r12, [r9+0x20] // [V15 tmp2]
; GC ptr vars +{V15}
- ldrsb r2, [lr]
- cmp r1, 0
+ ldrsb r2, [r12]
+ cmp lr, 0
beq G_M22299_IG12
- addw r2, r9, 32 // [V26 tmp13]
- addw r3, r9, 28 // [V27 tmp14]
- mov r0, r1
+ addw r2, r9, 40 // [V26 tmp13]
+ addw r3, r9, 36 // [V27 tmp14]
+ mov r0, lr
mov r1, r8
- movw r12, 0xd1ff
- movt r12, 0xd1ff
- ldr r12, [r12]
- blx r12 // <unknown method>
- ; gcrRegs -[lr]
- ldr r1, [r9+0x30] // [V14 tmp1]
- subs r0, r0, r1
+ movw r8, 0xd1ff
+ movt r8, 0xd1ff
+ ldr r8, [r8]
+ blx r8 // <unknown method>
+ ; gcrRegs -[r12]
+ ; byrRegs -[lr]
+ ldr r8, [r9+0x3C] // [V14 tmp1]
+ sub r0, r0, r8
movs r1, 2
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -121,8 +121,8 @@ G_M22299_IG03: ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
mov r3, r0
mov r0, r3
asrs r1, r0, 31
- ldr r2, [r9+0x20] // [V26 tmp13]
- ldr lr, [r9+0x24] // [V26 tmp13+0x04]
+ ldr r2, [r9+0x28] // [V26 tmp13]
+ ldr lr, [r9+0x2C] // [V26 tmp13+0x04]
adds r12, r0, r2
adc r0, r1, lr
mov lr, r12
@@ -130,16 +130,17 @@ G_M22299_IG03: ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
cmp lr, 0x80000000
sbcs r0, r1
bhs G_M22299_IG14
- cmp r3, r8
+ ldr r12, [r9+0x48] // [V05 loc1]
+ cmp r3, r12
bne SHORT G_M22299_IG13
- ;; size=132 bbWeight=0.80 PerfScore 32.80
+ ;; size=142 bbWeight=0.80 PerfScore 33.60
G_M22299_IG04: ; bbWeight=0.80, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V15}
- mov r12, lr
- str r12, [r9+0x2C] // [V16 tmp3]
- cmp r12, 0x400
- bgt SHORT G_M22299_IG15
- mov r3, r12
+ mov r2, lr
+ str r2, [r9+0x38] // [V16 tmp3]
+ cmp r2, 0x400
+ bgt G_M22299_IG15
+ mov r3, r2
tst r3, r3
beq SHORT G_M22299_IG07
add sp, 16
@@ -148,7 +149,7 @@ G_M22299_IG04: ; bbWeight=0.80, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5
subs r3, sp, r3
bvc SHORT G_M22299_IG05
movs r3, 0
- ;; size=34 bbWeight=0.80 PerfScore 10.40
+ ;; size=36 bbWeight=0.80 PerfScore 10.40
G_M22299_IG05: ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
ldr r0, [sp]
sub r0, sp, 0x1000
@@ -164,26 +165,26 @@ G_M22299_IG06: ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
add r3, sp, 16
;; size=10 bbWeight=0.80 PerfScore 3.20
G_M22299_IG07: ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- str r12, [sp] // [V13 OutArgs]
+ str r2, [sp] // [V13 OutArgs]
str r6, [sp+0x04] // [V13 OutArgs+0x04]
str r7, [sp+0x08] // [V13 OutArgs+0x08]
mov r0, r5
; gcrRegs +[r0]
- ldr r1, [r9+0x30] // [V14 tmp1]
- mov r2, r8
+ mov r1, r8
+ mov r2, r12
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // <unknown method>
- str r0, [r9+0x3C] // [V04 loc0]
- ;; size=34 bbWeight=0.80 PerfScore 8.80
+ str r0, [r9+0x4C] // [V04 loc0]
+ ;; size=30 bbWeight=0.80 PerfScore 8.80
G_M22299_IG08: ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
movs r1, 0
- str r1, [r9+0x38] // [V07 loc3]
+ str r1, [r9+0x44] // [V07 loc3]
;; size=6 bbWeight=0.80 PerfScore 1.60
G_M22299_IG09: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- addw r1, r9, 60 // [V04 loc0]
+ addw r1, r9, 76 // [V04 loc0]
mov r0, r5
; gcrRegs +[r0]
mov r2, r4
@@ -194,11 +195,11 @@ G_M22299_IG09: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
ldr lr, [lr]
blx lr // <unknown method>
; gcrRegs -[r0 r2 r4-r5]
- ldr r0, [r9+0x3C] // [V04 loc0]
+ ldr r0, [r9+0x4C] // [V04 loc0]
; gcrRegs +[r0]
movw r12, 0xd1ff
movt r12, 0xd1ff
- ldr lr, [r9+0x14] // [V39 GsCookie]
+ ldr lr, [r9+0x1C] // [V36 GsCookie]
cmp r12, lr
beq SHORT G_M22299_IG10
movw r12, 0xd1ff
@@ -209,7 +210,7 @@ G_M22299_IG09: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
G_M22299_IG10: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[r0]
mov sp, r9
- add sp, 68
+ add sp, 84
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=8 bbWeight=1 PerfScore 3.00
G_M22299_IG11: ; bbWeight=0.20, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
...
benchmarks.run_tiered.linux.arm.checked.mch
-16 (-19.51%) : 11098.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
@@ -5,52 +5,39 @@
; partially interruptible
; Final local variable assignments
;
-; V00 arg0 [V00 ] ( 1, 1 ) ref -> [sp+0x2C] do-not-enreg[] class-hnd <System.String>
-; V01 arg1 [V01 ] ( 1, 1 ) ushort -> [sp+0x28] do-not-enreg[]
-; V02 arg2 [V02 ] ( 1, 1 ) int -> [sp+0x24] do-not-enreg[]
-; V03 arg3 [V03 ] ( 1, 1 ) byref -> [sp+0x20] do-not-enreg[]
+; V00 arg0 [V00 ] ( 1, 1 ) ref -> [sp+0x1C] do-not-enreg[] class-hnd <System.String>
+; V01 arg1 [V01 ] ( 1, 1 ) ushort -> [sp+0x18] do-not-enreg[]
+; V02 arg2 [V02 ] ( 1, 1 ) int -> [sp+0x14] do-not-enreg[]
+; V03 arg3 [V03 ] ( 1, 1 ) byref -> [sp+0x10] do-not-enreg[]
; V04 OutArgs [V04 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05 ] ( 1, 1 ) int -> [sp+0x1C] do-not-enreg[] "Cast away GC"
-; V06 tmp2 [V06 ] ( 1, 1 ) int -> [sp+0x18] do-not-enreg[] "argument with side effect"
-; V07 tmp3 [V07 ] ( 1, 1 ) ref -> [sp+0x14] do-not-enreg[] must-init "argument with side effect"
-; V08 tmp4 [V08 ] ( 1, 1 ) int -> [sp+0x10] do-not-enreg[] "argument with side effect"
-; V09 tmp5 [V09 ] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[] "argument with side effect"
+; V05 tmp1 [V05 ] ( 1, 1 ) int -> [sp+0x0C] do-not-enreg[] "Cast away GC"
+; V06 tmp2 [V06 ] ( 1, 1 ) int -> [sp+0x08] do-not-enreg[] "argument with side effect"
;
-; Lcl frame size = 48
+; Lcl frame size = 32
G_M56677_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r10,r11,lr}
- sub sp, 48
- add r11, sp, 56
- movs r4, 0
- str r4, [sp+0x14] // [V07 tmp3]
- str r0, [sp+0x2C] // [V00 arg0]
- str r1, [sp+0x28] // [V01 arg1]
- str r2, [sp+0x24] // [V02 arg2]
- str r3, [sp+0x20] // [V03 arg3]
- ;; size=22 bbWeight=1 PerfScore 9.00
+ sub sp, 32
+ add r11, sp, 40
+ str r0, [sp+0x1C] // [V00 arg0]
+ str r1, [sp+0x18] // [V01 arg1]
+ str r2, [sp+0x14] // [V02 arg2]
+ str r3, [sp+0x10] // [V03 arg3]
+ ;; size=18 bbWeight=1 PerfScore 7.00
G_M56677_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r1, [sp+0x2C]
+ ldr r2, [sp+0x10]
+ ; byrRegs +[r2]
+ str r2, [sp+0x0C] // [V05 tmp1]
+ ldr r2, [sp+0x0C] // [V05 tmp1]
+ ; byrRegs -[r2]
+ str r2, [sp+0x08] // [V06 tmp2]
+ ldr r2, [sp+0x08] // [V06 tmp2]
+ str r2, [sp] // [V04 OutArgs]
+ ldr r2, [sp+0x18] // [V01 arg1]
+ uxth r2, r2
+ ldr r1, [sp+0x1C] // [V00 arg0]
; gcrRegs +[r1]
- str r1, [sp+0x14] // [V07 tmp3]
- ldr r1, [sp+0x28] // [V01 arg1]
- ; gcrRegs -[r1]
- uxth r1, r1
- str r1, [sp+0x10] // [V08 tmp4]
- ldr r1, [sp+0x24] // [V02 arg2]
- str r1, [sp+0x0C] // [V09 tmp5]
- ldr r1, [sp+0x20] // [V03 arg3]
- ; byrRegs +[r1]
- str r1, [sp+0x1C] // [V05 tmp1]
- ldr r1, [sp+0x1C] // [V05 tmp1]
- ; byrRegs -[r1]
- str r1, [sp+0x18] // [V06 tmp2]
- ldr r1, [sp+0x18] // [V06 tmp2]
- str r1, [sp] // [V04 OutArgs]
- ldr r1, [sp+0x14] // [V07 tmp3]
- ; gcrRegs +[r1]
- ldr r2, [sp+0x10] // [V08 tmp4]
- ldr r3, [sp+0x0C] // [V09 tmp5]
+ ldr r3, [sp+0x14] // [V02 arg2]
movw r0, 0xd1ff
movt r0, 0xd1ff
movw lr, 0xd1ff
@@ -58,13 +45,13 @@ G_M56677_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr lr, [lr]
blx lr // <unknown method>
; gcrRegs -[r1]
- ;; size=54 bbWeight=1 PerfScore 22.00
+ ;; size=42 bbWeight=1 PerfScore 16.00
G_M56677_IG03: ; bbWeight=1, epilog, nogc, extend
- add sp, 48
+ add sp, 32
pop {r4,r10,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 82, prolog size 14, PerfScore 33.00, instruction count 33, allocated bytes for code 82 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
+; Total bytes of code 66, prolog size 10, PerfScore 25.00, instruction count 25, allocated bytes for code 66 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
; ============================================================
Unwind Info:
@@ -76,11 +63,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 82 (0x000052)
+ Function Length : 33 (0x00021) Actual length = 66 (0x000042)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 0C add sp, sp, #48 ; opsize 16
+ 08 add sp, sp, #32 ; opsize 16
AC 10 pop {r4,r10,r11,lr} ; opsize 32
FF end
-4 (-9.09%) : 11103.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier1)
@@ -10,32 +10,28 @@
;
; V00 arg0 [V00,T00] ( 3, 3 ) ref -> r0 class-hnd single-def <System.String>
; V01 arg1 [V01,T02] ( 3, 3 ) ushort -> r1 single-def
-; V02 arg2 [V02,T03] ( 3, 3 ) int -> r2 single-def
+; V02 arg2 [V02,T03] ( 3, 3 ) int -> lr single-def
; V03 arg3 [V03,T01] ( 3, 3 ) byref -> r3 single-def
; V04 OutArgs [V04 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V06 tmp2 [V06,T05] ( 2, 4 ) int -> r3 "Cast away GC"
-; V07 tmp3 [V07,T06] ( 2, 4 ) int -> r3 "argument with side effect"
-; V08 tmp4 [V08,T04] ( 2, 4 ) ref -> r0 single-def "argument with side effect"
-; V09 tmp5 [V09,T07] ( 2, 4 ) int -> lr "argument with side effect"
-; V10 tmp6 [V10,T08] ( 2, 4 ) int -> r12 "argument with side effect"
+; V06 tmp2 [V06,T04] ( 2, 4 ) int -> r3 "Cast away GC"
+; V07 tmp3 [V07,T05] ( 2, 4 ) int -> r3 "argument with side effect"
;
; Lcl frame size = 12
G_M56677_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {lr}
sub sp, 12
- ;; size=4 bbWeight=1 PerfScore 2.00
+ mov lr, r2
+ ;; size=6 bbWeight=1 PerfScore 3.00
G_M56677_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0008 {r3}, byref
; gcrRegs +[r0]
; byrRegs +[r3]
- uxth lr, r1
- mov r12, r2
str r3, [sp]
+ uxth r2, r1
mov r1, r0
; gcrRegs +[r1]
- mov r2, lr
- mov r3, r12
+ mov r3, lr
; byrRegs -[r3]
movw r0, 0xd1ff
; gcrRegs -[r0]
@@ -46,13 +42,13 @@ G_M56677_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0008 {r3}, by
blx lr // Interop+Globalization:EnumCalendarInfo(int,System.String,ushort,int,int):ubyte
; gcrRegs -[r1]
; gcr arg pop 0
- ;; size=36 bbWeight=1 PerfScore 12.00
+ ;; size=30 bbWeight=1 PerfScore 10.00
G_M56677_IG03: ; bbWeight=1, epilog, nogc, extend
add sp, 12
pop {pc}
;; size=4 bbWeight=1 PerfScore 2.00
-; Total bytes of code 44, prolog size 4, PerfScore 16.00, instruction count 16, allocated bytes for code 44 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier1)
+; Total bytes of code 40, prolog size 4, PerfScore 15.00, instruction count 15, allocated bytes for code 40 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -64,7 +60,7 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 22 (0x00016) Actual length = 44 (0x00002c)
+ Function Length : 20 (0x00014) Actual length = 40 (0x000028)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
-18 (-8.82%) : 5327.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.Object:this (Tier0-FullOpts)
@@ -8,53 +8,48 @@
; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 3, 6 ) ref -> r4 this class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver>
-; V01 arg1 [V01,T06] ( 6, 8.50) ref -> r5 class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite>
-; V02 arg2 [V02,T11] ( 4, 3 ) struct ( 8) [sp+0x38] do-not-enreg[SA] multireg-arg single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext>
-; V03 loc0 [V03,T07] ( 5, 6.50) ref -> r6 class-hnd <<unknown class>>
-; V04 loc1 [V04,T02] ( 5, 16.50) int -> r7
+; V00 this [V00,T05] ( 3, 6 ) ref -> r5 this class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver>
+; V01 arg1 [V01,T04] ( 5, 8 ) ref -> r4 class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite>
+; V02 arg2 [V02,T08] ( 4, 3 ) struct ( 8) [sp+0x30] do-not-enreg[SA] multireg-arg single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext>
+; V03 loc0 [V03,T06] ( 5, 6.50) ref -> r6 class-hnd <<unknown class>>
+; V04 loc1 [V04,T00] ( 7, 24.50) int -> r7
; V05 OutArgs [V05 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T01] ( 3, 24 ) ref -> r0 "arr expr"
-;* V07 tmp2 [V07,T08] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V08 tmp3 [V08,T03] ( 2, 16 ) ref -> r1 "argument with side effect"
-; V09 tmp4 [V09,T04] ( 2, 16 ) ref -> r2 "argument with side effect"
-; V10 tmp5 [V10,T00] ( 4, 32 ) int -> [sp+0x0C] spill-single-def "argument with side effect"
-;* V11 tmp6 [V11,T09] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V12 tmp7 [V12,T10] ( 3, 6 ) ref -> r0 single-def "argument with side effect"
-; V13 cse0 [V13,T13] ( 2, 4.50) ref -> [sp+0x08] spill-single-def hoist "CSE - moderate"
-; V14 cse1 [V14,T14] ( 2, 4.50) int -> r10 hoist "CSE - moderate"
-; V15 cse2 [V15,T12] ( 3, 5 ) int -> r8 "CSE - moderate"
+; V06 tmp1 [V06,T01] ( 3, 24 ) ref -> r1 "arr expr"
+; V07 tmp2 [V07,T02] ( 2, 16 ) ref -> r1 "argument with side effect"
+; V08 tmp3 [V08,T03] ( 2, 16 ) ref -> r2 "argument with side effect"
+; V09 tmp4 [V09,T07] ( 3, 6 ) ref -> r0 single-def "argument with side effect"
+; V10 cse0 [V10,T12] ( 3, 2.50) ref -> r1 "CSE - aggressive"
+; V11 cse1 [V11,T10] ( 2, 4.50) ref -> r9 hoist "CSE - aggressive"
+; V12 cse2 [V12,T11] ( 2, 4.50) int -> r10 hoist "CSE - aggressive"
+; V13 cse3 [V13,T09] ( 3, 5 ) int -> r8 "CSE - aggressive"
;
-; Lcl frame size = 20
+; Lcl frame size = 12
G_M56674_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r2,r3}
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 20
- add r11, sp, 48
- mov r4, r0
- ; gcrRegs +[r4]
- mov r5, r1
+ sub sp, 12
+ add r11, sp, 40
+ mov r5, r0
; gcrRegs +[r5]
+ mov r4, r1
+ ; gcrRegs +[r4]
;; size=16 bbWeight=1 PerfScore 6.00
G_M56674_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ldr r1, [r5+0x20]
+ ldr r1, [r4+0x20]
; gcrRegs +[r1]
- ldr r1, [r1+0x04]
- ; gcrRegs -[r1]
- cmp r1, 0
+ ldr r0, [r1+0x04]
+ cmp r0, 0
bne SHORT G_M56674_IG04
;; size=8 bbWeight=1 PerfScore 4.00
-G_M56674_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r4]
+G_M56674_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r1 r5]
movw r6, 0xd1ff
movt r6, 0xd1ff
b SHORT G_M56674_IG06
;; size=10 bbWeight=0.50 PerfScore 1.50
-G_M56674_IG04: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r4]
- ldr r1, [r5+0x20]
- ; gcrRegs +[r1]
+G_M56674_IG04: ; bbWeight=0.50, gcrefRegs=0032 {r1 r4 r5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r1 r5]
ldr r1, [r1+0x04]
; gcrRegs -[r1]
movw r0, 0xd1ff
@@ -69,43 +64,38 @@ G_M56674_IG04: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
ldr r8, [r6+0x04]
cmp r8, 0
ble SHORT G_M56674_IG06
- ldr r9, [sp+0x38]
+ ldr r9, [sp+0x30]
; gcrRegs +[r9]
- str r9, [sp+0x08]
- ; GC ptr vars +{V13}
- ldr r10, [sp+0x3C]
- ;; size=48 bbWeight=0.50 PerfScore 7.50
-G_M56674_IG05: ; bbWeight=4, gcVars=00002000 {V13}, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr r10, [sp+0x34]
+ ;; size=42 bbWeight=0.50 PerfScore 6.50
+G_M56674_IG05: ; bbWeight=4, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0]
- mov lr, r7
- str lr, [sp+0x0C]
- ldr r0, [r5+0x20]
- ; gcrRegs +[r0]
- ldr r1, [r0+0x04]
- cmp lr, r1
- bhs SHORT G_M56674_IG08
- adds r0, 8
- ; gcrRegs -[r0]
- ; byrRegs +[r0]
- lsl r1, lr, 2
- ldr r1, [r0+r1]
+ ldr r1, [r4+0x20]
; gcrRegs +[r1]
- mov r0, r4
- ; gcrRegs +[r0]
- ; byrRegs -[r0]
+ ldr r2, [r1+0x04]
+ cmp r7, r2
+ bhs SHORT G_M56674_IG08
+ adds r1, 8
+ ; gcrRegs -[r1]
+ ; byrRegs +[r1]
+ lsls r2, r7, 2
+ ldr r1, [r1+r2]
+ ; gcrRegs +[r1]
+ ; byrRegs -[r1]
mov r2, r9
; gcrRegs +[r2]
mov r3, r10
- movw r12, 0xd1ff
- movt r12, 0xd1ff
- ldr r12, [r12]
- ldr r9, [r0]
- ; gcrRegs -[r9]
- blx r12 // Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext,System.__Canon]:VisitCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.__Canon:this
+ mov r0, r5
+ ; gcrRegs +[r0]
+ movw lr, 0xd1ff
+ movt lr, 0xd1ff
+ ldr lr, [lr]
+ ldr r12, [r0]
+ blx lr // Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext,System.__Canon]:VisitCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.__Canon:this
; gcrRegs -[r1-r2]
mov r2, r0
; gcrRegs +[r2]
- ldr r1, [sp+0x0C] // [V10 tmp5]
+ mov r1, r7
mov r0, r6
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -113,17 +103,14 @@ G_M56674_IG05: ; bbWeight=4, gcVars=00002000 {V13}, gcrefRegs=0270 {r4 r5
; gcrRegs -[r0 r2]
adds r7, r7, 1
cmp r8, r7
- ldr r9, [sp+0x08] // [V13 cse0]
- ; gcrRegs +[r9]
bgt SHORT G_M56674_IG05
- ;; size=72 bbWeight=4 PerfScore 108.00
-G_M56674_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r4 r9]
- ; GC ptr vars -{V13}
- ldr r0, [r5+0x1C]
+ ;; size=60 bbWeight=4 PerfScore 96.00
+G_M56674_IG06: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r5 r9]
+ ldr r0, [r4+0x1C]
; gcrRegs +[r0]
movs r3, 0
- str r3, [sp] // [V05 OutArgs]
+ str r3, [sp]
mov r3, r6
; gcrRegs +[r3]
mov r1, 0x2000000
@@ -132,10 +119,10 @@ G_M56674_IG06: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6},
ldr lr, [lr+0x3C]
ldr lr, [lr+0x14]
blx lr // <unknown method>
- ; gcrRegs -[r3 r5-r6]
+ ; gcrRegs -[r3-r4 r6]
;; size=28 bbWeight=1 PerfScore 10.00
G_M56674_IG07: ; bbWeight=1, epilog, nogc, extend
- add sp, 20
+ add sp, 12
pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
add sp, 8
bx lr
@@ -148,7 +135,7 @@ G_M56674_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 12, PerfScore 141.00, instruction count 73, allocated bytes for code 204 (MethodHash=ece7229d) for method Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.Object:this (Tier0-FullOpts)
+; Total bytes of code 186, prolog size 12, PerfScore 128.00, instruction count 68, allocated bytes for code 186 (MethodHash=ece7229d) for method Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.Object:this (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -160,19 +147,19 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 102 (0x00066) Actual length = 204 (0x0000cc)
+ Function Length : 93 (0x0005d) Actual length = 186 (0x0000ba)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Condition : 14 (0xe) (always)
Epilog Start Index : 5 (0x05)
---- Unwind codes ----
- 05 add sp, sp, #20 ; opsize 16
+ 03 add sp, sp, #12 ; opsize 16
DF pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32
EC 0C pop {r2,r3} ; opsize 16
FF end
---- Epilog start at index 5 ----
- 05 add sp, sp, #20 ; opsize 16
+ 03 add sp, sp, #12 ; opsize 16
DF pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32
02 add sp, sp, #8 ; opsize 16
FD end + nop ; opsize 16
+18 (+2.51%) : 26700.dasm - MicroBenchmarks.Serializers.DataGenerator:CreateDateTimeArray(int):System.DateTime
@@ -9,7 +9,7 @@
; Final local variable assignments
;
; V00 arg0 [V00,T05] ( 8, 10 ) int -> r4 single-def
-; V01 loc0 [V01,T15] ( 6, 7.04) ref -> r5 class-hnd exact single-def <System.DateTime[]>
+; V01 loc0 [V01,T13] ( 6, 7.04) ref -> r5 class-hnd exact single-def <System.DateTime[]>
; V02 loc1 [V02,T04] ( 9, 17 ) int -> r6
;* V03 loc2 [V03,T29] ( 0, 0 ) int -> zero-ref single-def
;* V04 loc3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op double-align <System.DateTime>
@@ -19,7 +19,7 @@
;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 8) zero-ref double-align "Strict ordering of exceptions for Array store" <System.DateTime>
;* V09 tmp2 [V09 ] ( 0, 0 ) double -> zero-ref "Inlining Arg"
; V10 tmp3 [V10,T12] ( 4, 8 ) double -> f16:f17 "Inlining Arg"
-; V11 tmp4 [V11,T19] ( 3, 3 ) double -> [sp+0x38] spill-single-def "Inline stloc first use temp"
+; V11 tmp4 [V11,T18] ( 3, 3 ) double -> [sp+0x38] spill-single-def "Inline stloc first use temp"
;* V12 tmp5 [V12 ] ( 0, 0 ) double -> zero-ref "Inline stloc first use temp"
;* V13 tmp6 [V13 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V14 tmp7 [V14 ] ( 0, 0 ) long -> zero-ref single-def "Inline stloc first use temp"
@@ -28,7 +28,7 @@
;* V17 tmp10 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op double-align "Inlining Arg" <System.DateTime>
;* V18 tmp11 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op double-align "NewObj constructor temp" <System.DateTime>
;* V19 tmp12 [V19 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V20 tmp13 [V20,T16] ( 0, 0 ) double -> zero-ref "Inline stloc first use temp"
+;* V20 tmp13 [V20,T14] ( 0, 0 ) double -> zero-ref "Inline stloc first use temp"
;* V21 tmp14 [V21 ] ( 0, 0 ) double -> zero-ref "Inline stloc first use temp"
;* V22 tmp15 [V22 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V23 tmp16 [V23 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
@@ -39,7 +39,7 @@
; V28 tmp21 [V28,T02] ( 11, 21 ) long -> [sp+0x30] do-not-enreg[F] "field V04._dateData (fldOffset=0x0)" P-INDEP
; V29 tmp22 [V29 ] ( 5, 5 ) long -> [sp+0x40] do-not-enreg[X] addr-exposed "field V05._dateData (fldOffset=0x0)" P-DEP
;* V30 tmp23 [V30 ] ( 0, 0 ) long -> zero-ref "field V08._dateData (fldOffset=0x0)" P-INDEP
-; V31 tmp24 [V31,T20] ( 3, 3 ) long -> [sp+0x28] do-not-enreg[F] single-def "field V15._dateData (fldOffset=0x0)" P-INDEP
+; V31 tmp24 [V31,T19] ( 3, 3 ) long -> [sp+0x28] do-not-enreg[F] single-def "field V15._dateData (fldOffset=0x0)" P-INDEP
;* V32 tmp25 [V32 ] ( 0, 0 ) long -> zero-ref "field V17._dateData (fldOffset=0x0)" P-INDEP
; V33 tmp26 [V33,T06] ( 6, 12 ) long -> [sp+0x20] do-not-enreg[F] "field V18._dateData (fldOffset=0x0)" P-INDEP
; V34 tmp27 [V34,T07] ( 6, 12 ) long -> [sp+0x18] do-not-enreg[F] "field V24._dateData (fldOffset=0x0)" P-INDEP
@@ -47,32 +47,31 @@
;* V36 tmp29 [V36 ] ( 0, 0 ) long -> zero-ref "argument with side effect"
; V37 tmp30 [V37,T36] ( 2, 0 ) ref -> r2 "argument with side effect"
;* V38 cse0 [V38 ] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
-;* V39 cse1 [V39 ] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
-;* V40 cse2 [V40 ] ( 0, 0 ) long -> zero-ref "CSE - conservative"
-; V41 rat0 [V41,T21] ( 3, 3 ) int -> r0 "field V14.lo (fldOffset=0x0)" P-INDEP
-; V42 rat1 [V42,T22] ( 3, 3 ) int -> r1 "field V14.hi (fldOffset=0x4)" P-INDEP
-; V43 rat2 [V43,T08] ( 6, 12 ) int -> r3 "field V23.lo (fldOffset=0x0)" P-INDEP
-; V44 rat3 [V44,T09] ( 6, 12 ) int -> r2 "field V23.hi (fldOffset=0x4)" P-INDEP
-; V45 rat4 [V45,T23] ( 2, 3 ) int -> r0 "field V35.lo (fldOffset=0x0)" P-INDEP
-; V46 rat5 [V46,T24] ( 2, 3 ) int -> r1 "field V35.hi (fldOffset=0x4)" P-INDEP
-;* V47 rat6 [V47,T17] ( 0, 0 ) int -> zero-ref "field V36.lo (fldOffset=0x0)" P-INDEP
-;* V48 rat7 [V48,T18] ( 0, 0 ) int -> zero-ref "field V36.hi (fldOffset=0x4)" P-INDEP
-; V49 rat8 [V49,T13] ( 2, 7.92) int -> r3 "field V38.lo (fldOffset=0x0)" P-INDEP
-; V50 rat9 [V50,T14] ( 2, 7.92) int -> r2 "field V38.hi (fldOffset=0x4)" P-INDEP
-; V51 rat10 [V51,T10] ( 3, 11.88) int -> r0 "field V39.lo (fldOffset=0x0)" P-INDEP
-; V52 rat11 [V52,T11] ( 3, 11.88) int -> r1 "field V39.hi (fldOffset=0x4)" P-INDEP
-; V53 rat12 [V53,T32] ( 3, 0.12) int -> r0 "field V40.lo (fldOffset=0x0)" P-INDEP
-; V54 rat13 [V54,T33] ( 3, 0.12) int -> r1 "field V40.hi (fldOffset=0x4)" P-INDEP
-; V55 rat14 [V55 ] ( 1, 2 ) long -> [sp+0x08] multireg-ret "ReplaceWithLclVar is creating a new local variable"
-; V56 rat15 [V56,T25] ( 2, 3 ) int -> r0 "field V55.lo (fldOffset=0x0)" P-INDEP
-; V57 rat16 [V57,T26] ( 2, 3 ) int -> r1 "field V55.hi (fldOffset=0x4)" P-INDEP
-; V58 rat17 [V58 ] ( 1, 2 ) long -> [sp+0x00] multireg-ret "ReplaceWithLclVar is creating a new local variable"
-; V59 rat18 [V59,T27] ( 2, 3 ) int -> r0 "field V58.lo (fldOffset=0x0)" P-INDEP
-; V60 rat19 [V60,T28] ( 2, 3 ) int -> r1 "field V58.hi (fldOffset=0x4)" P-INDEP
-; V61 rat20 [V61,T01] ( 2, 15.84) int -> r3 "ReplaceWithLclVar is creating a new local variable"
-; V62 rat21 [V62,T00] ( 3, 23.76) byref -> r3 "ReplaceWithLclVar is creating a new local variable"
-; V63 rat22 [V63,T31] ( 2, 0.16) int -> r3 "ReplaceWithLclVar is creating a new local variable"
-; V64 rat23 [V64,T30] ( 3, 0.24) byref -> r3 "ReplaceWithLclVar is creating a new local variable"
+;* V39 cse1 [V39 ] ( 0, 0 ) long -> zero-ref "CSE - conservative"
+; V40 cse2 [V40,T28] ( 2, 2 ) double -> f8:f9 "CSE - moderate"
+;* V41 cse3 [V41,T15] ( 0, 0 ) double -> zero-ref multi-def "CSE - aggressive"
+; V42 rat0 [V42,T20] ( 3, 3 ) int -> r0 "field V14.lo (fldOffset=0x0)" P-INDEP
+; V43 rat1 [V43,T21] ( 3, 3 ) int -> r1 "field V14.hi (fldOffset=0x4)" P-INDEP
+; V44 rat2 [V44,T08] ( 6, 12 ) int -> r8 "field V23.lo (fldOffset=0x0)" P-INDEP
+; V45 rat3 [V45,T09] ( 6, 12 ) int -> r9 "field V23.hi (fldOffset=0x4)" P-INDEP
+; V46 rat4 [V46,T22] ( 2, 3 ) int -> r0 "field V35.lo (fldOffset=0x0)" P-INDEP
+; V47 rat5 [V47,T23] ( 2, 3 ) int -> r1 "field V35.hi (fldOffset=0x4)" P-INDEP
+;* V48 rat6 [V48,T16] ( 0, 0 ) int -> zero-ref "field V36.lo (fldOffset=0x0)" P-INDEP
+;* V49 rat7 [V49,T17] ( 0, 0 ) int -> zero-ref "field V36.hi (fldOffset=0x4)" P-INDEP
+; V50 rat8 [V50,T10] ( 3, 11.88) int -> r0 "field V38.lo (fldOffset=0x0)" P-INDEP
+; V51 rat9 [V51,T11] ( 3, 11.88) int -> r1 "field V38.hi (fldOffset=0x4)" P-INDEP
+; V52 rat10 [V52,T32] ( 3, 0.12) int -> r0 "field V39.lo (fldOffset=0x0)" P-INDEP
+; V53 rat11 [V53,T33] ( 3, 0.12) int -> r1 "field V39.hi (fldOffset=0x4)" P-INDEP
+; V54 rat12 [V54 ] ( 1, 2 ) long -> [sp+0x08] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V55 rat13 [V55,T24] ( 2, 3 ) int -> r0 "field V54.lo (fldOffset=0x0)" P-INDEP
+; V56 rat14 [V56,T25] ( 2, 3 ) int -> r1 "field V54.hi (fldOffset=0x4)" P-INDEP
+; V57 rat15 [V57 ] ( 1, 2 ) long -> [sp+0x00] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V58 rat16 [V58,T26] ( 2, 3 ) int -> r0 "field V57.lo (fldOffset=0x0)" P-INDEP
+; V59 rat17 [V59,T27] ( 2, 3 ) int -> r1 "field V57.hi (fldOffset=0x4)" P-INDEP
+; V60 rat18 [V60,T01] ( 2, 15.84) int -> r3 "ReplaceWithLclVar is creating a new local variable"
+; V61 rat19 [V61,T00] ( 3, 23.76) byref -> r3 "ReplaceWithLclVar is creating a new local variable"
+; V62 rat20 [V62,T31] ( 2, 0.16) int -> r3 "ReplaceWithLclVar is creating a new local variable"
+; V63 rat21 [V63,T30] ( 3, 0.24) byref -> r3 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 72
@@ -209,21 +208,21 @@ G_M59090_IG03: ; bbWeight=3.96, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
; byrRegs -[r3]
movt r3, 0xd1ff
movs r2, 8
- adds r3, r3, r0
- adcs r2, r1
+ adds r8, r3, r0
+ adc r9, r2, r1
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r1, 0xd1ff
movt r1, 0xd1ff
- cmp r3, r0
- sbcs r0, r2, r1
- bhs SHORT G_M59090_IG12
+ cmp r8, r0
+ sbcs r0, r9, r1
+ bhs G_M59090_IG12
ldr r0, [sp+0x30] // [V28 tmp21]
ldr r1, [sp+0x34] // [V28 tmp21+0x04]
and r0, r0, 0
and r1, r1, -0x40000000
- orrs r0, r3
- orrs r1, r2
+ orr r0, r8, r0
+ orr r1, r9, r1
str r0, [sp+0x18] // [V34 tmp27]
str r1, [sp+0x1C] // [V34 tmp27+0x04]
ldr r0, [sp+0x18] // [V34 tmp27]
@@ -240,7 +239,7 @@ G_M59090_IG03: ; bbWeight=3.96, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
adds r7, r7, 1
cmp r7, r4
blt SHORT G_M59090_IG03
- ;; size=132 bbWeight=3.96 PerfScore 205.92
+ ;; size=142 bbWeight=3.96 PerfScore 205.92
G_M59090_IG04: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
b SHORT G_M59090_IG06
;; size=2 bbWeight=1 PerfScore 1.00
@@ -272,21 +271,21 @@ G_M59090_IG05: ; bbWeight=0.04, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
; byrRegs -[r3]
movt r3, 0xd1ff
movs r2, 8
- adds r3, r3, r0
- adcs r2, r1
+ adds r8, r3, r0
+ adc r9, r2, r1
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r1, 0xd1ff
movt r1, 0xd1ff
- cmp r3, r0
- sbcs r0, r2, r1
+ cmp r8, r0
+ sbcs r0, r9, r1
bhs SHORT G_M59090_IG12
ldr r0, [sp+0x30] // [V28 tmp21]
ldr r1, [sp+0x34] // [V28 tmp21+0x04]
and r0, r0, 0
and r1, r1, -0x40000000
- orrs r0, r3
- orrs r1, r2
+ orr r0, r8, r0
+ orr r1, r9, r1
str r0, [sp+0x18] // [V34 tmp27]
str r1, [sp+0x1C] // [V34 tmp27+0x04]
ldr r0, [sp+0x18] // [V34 tmp27]
@@ -303,7 +302,7 @@ G_M59090_IG05: ; bbWeight=0.04, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
adds r7, r7, 1
cmp r7, r4
blt SHORT G_M59090_IG05
- ;; size=136 bbWeight=0.04 PerfScore 2.20
+ ;; size=144 bbWeight=0.04 PerfScore 2.20
G_M59090_IG06: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
mov r0, r5
; gcrRegs +[r0]
@@ -392,7 +391,7 @@ G_M59090_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bkpt
;; size=86 bbWeight=0 PerfScore 0.00
-; Total bytes of code 716, prolog size 22, PerfScore 307.12, instruction count 254, allocated bytes for code 716 (MethodHash=11d1192d) for method MicroBenchmarks.Serializers.DataGenerator:CreateDateTimeArray(int):System.DateTime[] (Tier0-FullOpts)
+; Total bytes of code 734, prolog size 22, PerfScore 307.12, instruction count 254, allocated bytes for code 734 (MethodHash=11d1192d) for method MicroBenchmarks.Serializers.DataGenerator:CreateDateTimeArray(int):System.DateTime[] (Tier0-FullOpts)
; ============================================================
Unwind Info:
@@ -404,7 +403,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 358 (0x00166) Actual length = 716 (0x0002cc)
+ Function Length : 367 (0x0016f) Actual length = 734 (0x0002de)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+6 (+6.67%) : 26653.dasm - System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (Tier1)
@@ -16,12 +16,12 @@
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.XmlBaseWriter+NamespaceManager+Namespace>
;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.XmlBaseWriter+NamespaceManager+Namespace>
; V07 cse0 [V07,T02] ( 5, 5 ) ref -> r2 "CSE - aggressive"
-; V08 cse1 [V08,T04] ( 3, 3 ) ref -> r1 "CSE - aggressive"
+; V08 cse1 [V08,T04] ( 3, 3 ) ref -> [sp+0x04] spill-single-def "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M35133_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,lr}
+ push {r2,r3,r4,lr}
mov r4, r0
; gcrRegs +[r4]
;; size=4 bbWeight=1 PerfScore 2.00
@@ -51,31 +51,36 @@ G_M35133_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcrRegs +[r1]
movs r0, 0
strh r0, [r1+0x14]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ str r3, [sp+0x04]
+ ; GC ptr vars +{V08}
adds r0, r1, 4
; byrRegs +[r0]
- movw r1, 0xd1ff
- ; gcrRegs -[r1]
- movt r1, 0xd1ff
+ mov r1, r3
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r4] +[r1]
+ ; gcrRegs -[r1 r4]
; byrRegs -[r0]
add r0, r2, 8
; byrRegs +[r0]
+ ldr r1, [sp+0x04] // [V08 cse1]
+ ; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
+ ; GC ptr vars -{V08}
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
movs r3, 0
str r3, [r2+0x0C]
- ;; size=84 bbWeight=1 PerfScore 28.00
+ ;; size=90 bbWeight=1 PerfScore 31.00
G_M35133_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r4,pc}
+ pop {r2,r3,r4,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 90, prolog size 2, PerfScore 31.00, instruction count 31, allocated bytes for code 90 (MethodHash=d42076c2) for method System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (Tier1)
+; Total bytes of code 96, prolog size 2, PerfScore 34.00, instruction count 34, allocated bytes for code 96 (MethodHash=d42076c2) for method System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (Tier1)
; ============================================================
Unwind Info:
@@ -87,12 +92,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 45 (0x0002d) Actual length = 90 (0x00005a)
+ Function Length : 48 (0x00030) Actual length = 96 (0x000060)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- D4 pop {r4,lr} ; opsize 16
- FF end
+ ED 1C pop {r2,r3,r4,lr} ; opsize 16
FF end
FF end
+16 (+10.81%) : 53306.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (Tier1)
@@ -8,33 +8,31 @@
; 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 -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V00 this [V00,T02] ( 3, 3 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T03] ( 2, 4 ) ref -> r1 class-hnd single-def "dup spill" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref single-def
-; V04 tmp3 [V04,T05] ( 4, 3.50) ref -> r1
+; V04 tmp3 [V04,T04] ( 4, 3.50) ref -> r1
;* V05 tmp4 [V05 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-; V06 tmp5 [V06,T02] ( 5, 5 ) ref -> [sp+0x00] class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
-; V07 tmp6 [V07,T07] ( 3, 3 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V08 tmp7 [V08,T09] ( 0, 0 ) ubyte -> zero-ref "field V05.hasValue (fldOffset=0x0)" P-INDEP
-;* V09 tmp8 [V09,T10] ( 0, 0 ) ubyte -> zero-ref "field V05.value (fldOffset=0x1)" P-INDEP
-; V10 tmp9 [V10,T01] ( 3, 6 ) struct ( 4) [sp+0x04] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;* V11 tmp10 [V11,T08] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V12 tmp11 [V12,T04] ( 2, 4 ) ref -> r1 single-def "argument with side effect"
-; V13 cse0 [V13,T06] ( 4, 3 ) int -> r5 "CSE - aggressive"
+; V06 tmp5 [V06,T01] ( 5, 5 ) ref -> [sp+0x00] class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
+; V07 tmp6 [V07,T05] ( 3, 3 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+;* V08 tmp7 [V08,T06] ( 0, 0 ) ubyte -> zero-ref "field V05.hasValue (fldOffset=0x0)" P-INDEP
+;* V09 tmp8 [V09,T07] ( 0, 0 ) ubyte -> zero-ref "field V05.value (fldOffset=0x1)" P-INDEP
+; V10 tmp9 [V10,T00] ( 3, 6 ) struct ( 4) [sp+0x04] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M24931_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r11,lr}
+ push {r4,r11,lr}
+ sub sp, 12
add r11, sp, 16
mov r4, r0
; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M24931_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- movw r5, 0xd1ff
- movt r5, 0xd1ff
- ldr r1, [r5]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ ldr r1, [r0]
; gcrRegs +[r1]
cmp r1, 0
bne SHORT G_M24931_IG04
@@ -51,12 +49,14 @@ G_M24931_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs +[r1]
str r1, [sp]
; GC ptr vars +{V06}
- ldr r3, [r5-0x30]
+ movw r0, 0xd1ff
+ ; gcrRegs -[r0]
+ movt r0, 0xd1ff
+ ldr r3, [r0]
; gcrRegs +[r3]
cmp r3, 0
beq SHORT G_M24931_IG06
adds r0, r1, 4
- ; gcrRegs -[r0]
; byrRegs +[r0]
mov r1, r3
movw r12, 0xd1ff
@@ -69,7 +69,8 @@ G_M24931_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r2, [sp]
; gcrRegs +[r2]
str r1, [r2+0x0C]
- mov r0, r5
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
mov r1, r2
; gcrRegs +[r1]
movw r12, 0xd1ff
@@ -78,17 +79,17 @@ G_M24931_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r1]
mov r1, r2
; gcrRegs +[r1]
- ;; size=72 bbWeight=0.50 PerfScore 12.50
+ ;; size=84 bbWeight=0.50 PerfScore 14.00
G_M24931_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r2]
; GC ptr vars -{V06}
- movs r0, 1
- strb r0, [sp+0x04]
- movs r0, 16
- strb r0, [sp+0x05]
+ movs r3, 1
+ strb r3, [sp+0x04]
+ movs r3, 16
+ strb r3, [sp+0x05]
+ ldrh r3, [sp+0x04]
mov r0, r4
; gcrRegs +[r0]
- ldrh r3, [sp+0x04]
movs r2, 0
movw lr, 0xd1ff
movt lr, 0xd1ff
@@ -97,8 +98,9 @@ G_M24931_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4},
; gcrRegs -[r1 r4]
;; size=34 bbWeight=1 PerfScore 11.00
G_M24931_IG05: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
+ add sp, 12
+ pop {r4,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M24931_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0]
movw r3, 0xd1ff
@@ -108,7 +110,7 @@ G_M24931_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 148, prolog size 8, PerfScore 32.50, instruction count 50, allocated bytes for code 148 (MethodHash=85d59e9c) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (Tier1)
+; Total bytes of code 164, prolog size 10, PerfScore 36.00, instruction count 55, allocated bytes for code 164 (MethodHash=85d59e9c) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (Tier1)
; ============================================================
Unwind Info:
@@ -120,7 +122,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 74 (0x0004a) Actual length = 148 (0x000094)
+ Function Length : 82 (0x00052) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -128,7 +130,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32
- FF end
+ 03 add sp, sp, #12 ; opsize 16
+ A8 10 pop {r4,r11,lr} ; opsize 32
FF end
coreclr_tests.run.linux.arm.checked.mch
-40 (-23.26%) : 397572.dasm - (dynamicClass):ABIStress_TailCaller649(ABIStress.S2P,ABIStress.Hfa1,ABIStress.S7U,ABIStress.S5U,int,ABIStress.S17U,ABIStress.Hfa2,ABIStress.S32U,ABIStress.S10U,ABIStress.Hfa2,ABIStress.S14U,ABIStress.S9U,ABIStress.S2P,ABIStress.Hfa2,ABIStress.Hfa1,ABIStress.S15U,double,ABIStress.Hfa1,ABIStress.S5U,ABIStress.S4U,short,ABIStress.S6U,ABIStress.Hfa2,ABIStress.S8P,int):int (FullOpts)
@@ -8,21 +8,21 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00 ] ( 1, 1 ) struct ( 4) [sp+0x60] single-def <ABIStress.S2P>
-; V01 arg1 [V01 ] ( 5, 5 ) struct ( 8) [sp+0x48] HFA(float) multireg-arg single-def <ABIStress.Hfa1>
+; V00 arg0 [V00 ] ( 1, 1 ) struct ( 4) [sp+0x38] single-def <ABIStress.S2P>
+; V01 arg1 [V01 ] ( 5, 5 ) struct ( 8) [sp+0x28] HFA(float) multireg-arg single-def <ABIStress.Hfa1>
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] single-def <ABIStress.S7U>
;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] single-def <ABIStress.S5U>
;* V04 arg4 [V04 ] ( 0, 0 ) int -> zero-ref single-def
;* V05 arg5 [V05 ] ( 0, 0 ) struct (20) zero-ref do-not-enreg[S] single-def <ABIStress.S17U>
;* V06 arg6 [V06 ] ( 0, 0 ) struct (32) zero-ref HFA(double) do-not-enreg[SA] multireg-arg single-def double-align <ABIStress.Hfa2>
;* V07 arg7 [V07 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[S] single-def <ABIStress.S32U>
-; V08 arg8 [V08,T12] ( 1, 1 ) struct (12) [sp+0xAC] do-not-enreg[S] single-def <ABIStress.S10U>
+; V08 arg8 [V08,T03] ( 3, 3 ) struct (12) [sp+0x84] do-not-enreg[SA] multireg-arg single-def <ABIStress.S10U>
;* V09 arg9 [V09 ] ( 0, 0 ) struct (32) zero-ref HFA(double) do-not-enreg[S] single-def double-align <ABIStress.Hfa2>
-; V10 arg10 [V10,T13] ( 1, 1 ) struct (16) [sp+0xD8] do-not-enreg[S] single-def <ABIStress.S14U>
+; V10 arg10 [V10,T06] ( 1, 1 ) struct (16) [sp+0xB0] do-not-enreg[S] single-def <ABIStress.S14U>
;* V11 arg11 [V11 ] ( 0, 0 ) struct (12) zero-ref do-not-enreg[S] single-def <ABIStress.S9U>
;* V12 arg12 [V12 ] ( 0, 0 ) struct ( 4) zero-ref single-def <ABIStress.S2P>
;* V13 arg13 [V13 ] ( 0, 0 ) struct (32) zero-ref HFA(double) do-not-enreg[S] single-def double-align <ABIStress.Hfa2>
-; V14 arg14 [V14 ] ( 1, 1 ) struct ( 8) [sp+0x118] HFA(float) single-def <ABIStress.Hfa1>
+; V14 arg14 [V14 ] ( 1, 1 ) struct ( 8) [sp+0xF0] HFA(float) single-def <ABIStress.Hfa1>
;* V15 arg15 [V15 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] single-def <ABIStress.S15U>
;* V16 arg16 [V16 ] ( 0, 0 ) double -> zero-ref single-def
;* V17 arg17 [V17 ] ( 0, 0 ) struct ( 8) zero-ref HFA(float) single-def <ABIStress.Hfa1>
@@ -30,113 +30,91 @@
;* V19 arg19 [V19 ] ( 0, 0 ) struct ( 4) zero-ref do-not-enreg[S] single-def <ABIStress.S4U>
;* V20 arg20 [V20 ] ( 0, 0 ) short -> zero-ref single-def
;* V21 arg21 [V21 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] single-def <ABIStress.S6U>
-; V22 arg22 [V22 ] ( 1, 1 ) struct (32) [sp+0x158] HFA(double) single-def double-align <ABIStress.Hfa2>
-; V23 arg23 [V23 ] ( 2, 2 ) struct ( 8) [sp+0x178] single-def double-align <ABIStress.S8P>
+; V22 arg22 [V22 ] ( 1, 1 ) struct (32) [sp+0x130] HFA(double) single-def double-align <ABIStress.Hfa2>
+; V23 arg23 [V23 ] ( 2, 2 ) struct ( 8) [sp+0x150] single-def double-align <ABIStress.S8P>
;* V24 arg24 [V24 ] ( 0, 0 ) int -> zero-ref single-def
; V25 OutArgs [V25 ] ( 1, 1 ) struct (28) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V26 tmp1 [V26 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <ABIStress.S2U>
-;* V27 tmp2 [V27,T14] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V28 tmp3 [V28,T15] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-; V29 tmp4 [V29,T08] ( 1, 1 ) short -> [sp+0x60] do-not-enreg[] single-def "field V00.F0 (fldOffset=0x0)" P-DEP
-; V30 tmp5 [V30,T01] ( 4, 4 ) float -> [sp+0x48] do-not-enreg[] single-def "field V01.F0 (fldOffset=0x0)" P-DEP
-; V31 tmp6 [V31,T03] ( 3, 3 ) float -> [sp+0x4C] do-not-enreg[] single-def "field V01.F1 (fldOffset=0x4)" P-DEP
+;* V27 tmp2 [V27,T07] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V28 tmp3 [V28,T08] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+; V29 tmp4 [V29,T04] ( 1, 1 ) short -> [sp+0x38] do-not-enreg[] single-def "field V00.F0 (fldOffset=0x0)" P-DEP
+; V30 tmp5 [V30,T00] ( 4, 4 ) float -> [sp+0x28] do-not-enreg[] single-def "field V01.F0 (fldOffset=0x0)" P-DEP
+; V31 tmp6 [V31,T02] ( 3, 3 ) float -> [sp+0x2C] do-not-enreg[] single-def "field V01.F1 (fldOffset=0x4)" P-DEP
;* V32 tmp7 [V32 ] ( 0, 0 ) short -> zero-ref do-not-enreg[] single-def "field V12.F0 (fldOffset=0x0)" P-DEP
-; V33 tmp8 [V33,T16] ( 1, 1 ) float -> [sp+0x118] do-not-enreg[] single-def "field V14.F0 (fldOffset=0x0)" P-DEP
+; V33 tmp8 [V33,T09] ( 1, 1 ) float -> [sp+0xF0] do-not-enreg[] single-def "field V14.F0 (fldOffset=0x0)" P-DEP
;* V34 tmp9 [V34 ] ( 0, 0 ) float -> zero-ref do-not-enreg[] single-def "field V14.F1 (fldOffset=0x4)" P-DEP
;* V35 tmp10 [V35 ] ( 0, 0 ) float -> zero-ref do-not-enreg[] single-def "field V17.F0 (fldOffset=0x0)" P-DEP
;* V36 tmp11 [V36 ] ( 0, 0 ) float -> zero-ref do-not-enreg[] single-def "field V17.F1 (fldOffset=0x4)" P-DEP
;* V37 tmp12 [V37 ] ( 0, 0 ) double -> zero-ref do-not-enreg[] single-def "field V22.F0 (fldOffset=0x0)" P-DEP
;* V38 tmp13 [V38 ] ( 0, 0 ) double -> zero-ref do-not-enreg[] single-def "field V22.F1 (fldOffset=0x8)" P-DEP
-; V39 tmp14 [V39,T17] ( 1, 1 ) double -> [sp+0x168] do-not-enreg[] single-def "field V22.F2 (fldOffset=0x10)" P-DEP
+; V39 tmp14 [V39,T10] ( 1, 1 ) double -> [sp+0x140] do-not-enreg[] single-def "field V22.F2 (fldOffset=0x10)" P-DEP
;* V40 tmp15 [V40 ] ( 0, 0 ) double -> zero-ref do-not-enreg[] single-def "field V22.F3 (fldOffset=0x18)" P-DEP
-; V41 tmp16 [V41,T09] ( 2, 2 ) long -> [sp+0x178] do-not-enreg[] single-def "field V23.F0 (fldOffset=0x0)" P-DEP
-;* V42 tmp17 [V42,T18] ( 0, 0 ) ubyte -> zero-ref single-def "field V26.F0 (fldOffset=0x0)" P-INDEP
-;* V43 tmp18 [V43,T19] ( 0, 0 ) ubyte -> zero-ref single-def "field V26.F1 (fldOffset=0x1)" P-INDEP
-; V44 tmp19 [V44 ] ( 2, 2 ) int -> [sp+0x44] do-not-enreg[X] must-init addr-exposed "Return value for tail call dispatcher"
-; V45 ReturnAddress[V45 ] ( 1, 1 ) int -> [sp+0x5C] do-not-enreg[X] addr-exposed "Return address"
-; V46 tmp21 [V46,T02] ( 3, 6 ) struct ( 4) [sp+0x40] do-not-enreg[SF] "by-value struct argument" <ABIStress.S2U>
-; V47 tmp22 [V47,T04] ( 2, 4 ) float -> f0 "argument with side effect"
-; V48 tmp23 [V48,T00] ( 4, 8 ) struct (12) [sp+0x34] do-not-enreg[SFA] multireg-arg "argument with side effect" <ABIStress.S10U>
-; V49 tmp24 [V49,T05] ( 2, 4 ) float -> f1 "argument with side effect"
-;* V50 tmp25 [V50 ] ( 0, 0 ) long -> zero-ref "argument with side effect"
-; V51 tmp26 [V51,T06] ( 2, 4 ) double -> f2:f3 "argument with side effect"
-; V52 tmp27 [V52,T07] ( 2, 4 ) struct (16) [sp+0x24] do-not-enreg[S] "argument with side effect" <ABIStress.S14U>
-; V53 rat0 [V53,T10] ( 2, 2 ) int -> r3 "field V50.lo (fldOffset=0x0)" P-INDEP
-; V54 rat1 [V54,T11] ( 2, 2 ) int -> lr "field V50.hi (fldOffset=0x4)" P-INDEP
+; V41 tmp16 [V41,T05] ( 2, 2 ) long -> [sp+0x150] do-not-enreg[] single-def "field V23.F0 (fldOffset=0x0)" P-DEP
+;* V42 tmp17 [V42,T11] ( 0, 0 ) ubyte -> zero-ref single-def "field V26.F0 (fldOffset=0x0)" P-INDEP
+;* V43 tmp18 [V43,T12] ( 0, 0 ) ubyte -> zero-ref single-def "field V26.F1 (fldOffset=0x1)" P-INDEP
+; V44 tmp19 [V44 ] ( 2, 2 ) int -> [sp+0x24] do-not-enreg[X] must-init addr-exposed "Return value for tail call dispatcher"
+; V45 ReturnAddress[V45 ] ( 1, 1 ) int -> [sp+0x34] do-not-enreg[X] addr-exposed "Return address"
+; V46 tmp21 [V46,T01] ( 3, 6 ) struct ( 4) [sp+0x20] do-not-enreg[SF] "by-value struct argument" <ABIStress.S2U>
;
-; Lcl frame size = 84
+; Lcl frame size = 48
G_M38866_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r0,r1,r2,r3}
- push {r10,r11,lr}
- sub sp, 84
- add r11, sp, 88
+ push {r11,lr}
+ sub sp, 48
+ add r11, sp, 48
movs r0, 0
- str r0, [sp+0x44]
- vstr s0, [sp+0x48]
- vstr s1, [sp+0x4C]
+ str r0, [sp+0x24]
+ vstr s0, [sp+0x28]
+ vstr s1, [sp+0x2C]
;; size=24 bbWeight=1 PerfScore 8.00
G_M38866_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- vldr s0, [sp+0x48]
- ldr r0, [sp+0xAC]
- str r0, [sp+0x34]
+ ldr r0, [sp+0x150]
+ ldr r1, [sp+0x154]
+ str r0, [sp]
+ str r1, [sp+0x04]
ldr r0, [sp+0xB0]
- str r0, [sp+0x38]
- ldrh r0, [sp+0xB4]
- strh r0, [sp+0x3C]
- vldr s1, [sp+0x118]
- ldr r3, [sp+0x178]
- ldr lr, [sp+0x17C]
- vldr d1, [sp+0x168]
- ldr r0, [sp+0xD8]
- str r0, [sp+0x24]
- ldr r0, [sp+0xDC]
- str r0, [sp+0x28]
- ldr r0, [sp+0xE0]
- str r0, [sp+0x2C]
- ldrh r0, [sp+0xE4]
- strh r0, [sp+0x30]
+ str r0, [sp+0x08]
+ ldr r0, [sp+0xB4]
+ str r0, [sp+0x0C]
+ ldr r0, [sp+0xB8]
+ str r0, [sp+0x10]
+ ldr r0, [sp+0xBC]
+ str r0, [sp+0x14]
movs r0, 180
- strb r0, [sp+0x40]
+ strb r0, [sp+0x20]
movs r0, 235
- strb r0, [sp+0x41]
- ldr r0, [sp+0x34]
- ldr r1, [sp+0x38]
- ldr r2, [sp+0x3C]
- str r3, [sp]
- str lr, [sp+0x04]
- ldr r3, [sp+0x24]
- str r3, [sp+0x08]
- ldr r3, [sp+0x28]
- str r3, [sp+0x0C]
- ldr r3, [sp+0x2C]
- str r3, [sp+0x10]
- ldr r3, [sp+0x30]
- str r3, [sp+0x14]
- ldrh r3, [sp+0x40]
- str r3, [sp+0x18]
+ strb r0, [sp+0x21]
+ ldrh r0, [sp+0x20]
+ str r0, [sp+0x18]
+ ldr r0, [sp+0x84]
+ ldr r1, [sp+0x88]
+ ldr r2, [sp+0x8C]
+ vldr s1, [sp+0xF0]
+ vldr d1, [sp+0x140]
+ vldr s0, [sp+0x28]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- add r0, sp, 92
- add r2, sp, 68
+ add r0, sp, 52
+ add r2, sp, 36
movw r1, 0xd1ff
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ldr r0, [sp+0x44]
- ;; size=138 bbWeight=1 PerfScore 51.00
+ ldr r0, [sp+0x24]
+ ;; size=98 bbWeight=1 PerfScore 37.00
G_M38866_IG03: ; bbWeight=1, epilog, nogc, extend
- add sp, 84
- pop {r10,r11,lr}
+ add sp, 48
+ pop {r11,lr}
add sp, 16
bx lr
;; size=10 bbWeight=1 PerfScore 4.00
-; Total bytes of code 172, prolog size 16, PerfScore 63.00, instruction count 63, allocated bytes for code 172 (MethodHash=4426682d) for method (dynamicClass):ABIStress_TailCaller649(ABIStress.S2P,ABIStress.Hfa1,ABIStress.S7U,ABIStress.S5U,int,ABIStress.S17U,ABIStress.Hfa2,ABIStress.S32U,ABIStress.S10U,ABIStress.Hfa2,ABIStress.S14U,ABIStress.S9U,ABIStress.S2P,ABIStress.Hfa2,ABIStress.Hfa1,ABIStress.S15U,double,ABIStress.Hfa1,ABIStress.S5U,ABIStress.S4U,short,ABIStress.S6U,ABIStress.Hfa2,ABIStress.S8P,int):int (FullOpts)
+; Total bytes of code 132, prolog size 16, PerfScore 49.00, instruction count 49, allocated bytes for code 132 (MethodHash=4426682d) for method (dynamicClass):ABIStress_TailCaller649(ABIStress.S2P,ABIStress.Hfa1,ABIStress.S7U,ABIStress.S5U,int,ABIStress.S17U,ABIStress.Hfa2,ABIStress.S32U,ABIStress.S10U,ABIStress.Hfa2,ABIStress.S14U,ABIStress.S9U,ABIStress.S2P,ABIStress.Hfa2,ABIStress.Hfa1,ABIStress.S15U,double,ABIStress.Hfa1,ABIStress.S5U,ABIStress.S4U,short,ABIStress.S6U,ABIStress.Hfa2,ABIStress.S8P,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -148,20 +126,20 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 86 (0x00056) Actual length = 172 (0x0000ac)
+ Function Length : 66 (0x00042) Actual length = 132 (0x000084)
---- 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 : 6 (0x06)
---- Unwind codes ----
- 15 add sp, sp, #84 ; opsize 16
- AC 00 pop {r10,r11,lr} ; opsize 32
+ 0C add sp, sp, #48 ; opsize 16
+ A8 00 pop {r11,lr} ; opsize 32
EC 0F pop {r0,r1,r2,r3} ; opsize 16
FF end
---- Epilog start at index 6 ----
- 15 add sp, sp, #84 ; opsize 16
- AC 00 pop {r10,r11,lr} ; opsize 32
+ 0C add sp, sp, #48 ; opsize 16
+ A8 00 pop {r11,lr} ; opsize 32
04 add sp, sp, #16 ; opsize 16
FD end + nop ; opsize 16
FF end
-42 (-23.08%) : 396870.dasm - (dynamicClass):ILSTUBCallTailCallTarget(int,byref,int) (FullOpts)
@@ -12,32 +12,30 @@
; V02 arg2 [V02,T03] ( 4, 4 ) int -> r2 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T05] ( 2, 4 ) struct (32) [sp+0x28] HFA(double) do-not-enreg[S] double-align "impAppendStmt" <ABIStress.Hfa2>
+; V05 tmp1 [V05,T01] ( 5, 10 ) struct (32) [sp+0x08] HFA(double) do-not-enreg[SA] multireg-arg double-align "impAppendStmt" <ABIStress.Hfa2>
;* V06 tmp2 [V06 ] ( 0, 0 ) struct ( 4) zero-ref "impAppendStmt" <ABIStress.S3U>
-; V07 tmp3 [V07,T06] ( 2, 4 ) float -> f16 "impAppendStmt"
-; V08 tmp4 [V08,T07] ( 2, 4 ) int -> r9 "impAppendStmt"
-; V09 tmp5 [V09,T08] ( 2, 4 ) int -> r10 "impAppendStmt"
-; V10 tmp6 [V10,T09] ( 2, 4 ) float -> f17 "impAppendStmt"
-; V11 tmp7 [V11,T10] ( 2, 4 ) float -> f18 "impAppendStmt"
+; V07 tmp3 [V07,T05] ( 2, 4 ) float -> f8 "impAppendStmt"
+; V08 tmp4 [V08,T06] ( 2, 4 ) int -> r3 "impAppendStmt"
+; V09 tmp5 [V09,T07] ( 2, 4 ) int -> lr "impAppendStmt"
+; V10 tmp6 [V10,T08] ( 2, 4 ) float -> f9 "impAppendStmt"
+; V11 tmp7 [V11,T09] ( 2, 4 ) float -> f10 "impAppendStmt"
;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 4) zero-ref "impAppendStmt" <ABIStress.S1P>
-; V13 tmp9 [V13,T11] ( 2, 2 ) ubyte -> r6 "field V06.F0 (fldOffset=0x0)" P-INDEP
-; V14 tmp10 [V14,T12] ( 2, 2 ) ubyte -> r7 "field V06.F1 (fldOffset=0x1)" P-INDEP
-; V15 tmp11 [V15,T13] ( 2, 2 ) ubyte -> r8 "field V06.F2 (fldOffset=0x2)" P-INDEP
-; V16 tmp12 [V16,T14] ( 2, 2 ) ubyte -> [sp+0x24] spill-single-def "field V12.F0 (fldOffset=0x0)" P-INDEP
-; V17 tmp13 [V17,T02] ( 4, 8 ) struct ( 4) [sp+0x20] do-not-enreg[SF] "by-value struct argument" <ABIStress.S3U>
-; V18 tmp14 [V18,T01] ( 5, 10 ) struct (32) [sp+0x00] HFA(double) do-not-enreg[SFA] multireg-arg double-align "argument with side effect" <ABIStress.Hfa2>
+; V13 tmp9 [V13,T10] ( 2, 2 ) ubyte -> r0 "field V06.F0 (fldOffset=0x0)" P-INDEP
+; V14 tmp10 [V14,T11] ( 2, 2 ) ubyte -> r1 "field V06.F1 (fldOffset=0x1)" P-INDEP
+; V15 tmp11 [V15,T12] ( 2, 2 ) ubyte -> r2 "field V06.F2 (fldOffset=0x2)" P-INDEP
+; V16 tmp12 [V16,T13] ( 2, 2 ) ubyte -> r12 "field V12.F0 (fldOffset=0x0)" P-INDEP
+; V17 tmp13 [V17,T02] ( 4, 8 ) struct ( 4) [sp+0x04] do-not-enreg[SF] "by-value struct argument" <ABIStress.S3U>
;
-; Lcl frame size = 76
+; Lcl frame size = 44
G_M50245_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- vpush {d8-d9}
- sub sp, 76
- add r11, sp, 120
+ push {r4,r5,r6,r11,lr}
+ sub sp, 44
+ add r11, sp, 56
mov r4, r0
mov r5, r1
; byrRegs +[r5]
- ;; size=18 bbWeight=1 PerfScore 6.00
+ ;; size=14 bbWeight=1 PerfScore 5.00
G_M50245_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref
movs r1, 0
str r1, [r2+0x04]
@@ -45,62 +43,48 @@ G_M50245_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byre
movt r1, HIGH ADDRESS G_M50245_IG03
str r1, [r2]
add r1, r4, 16
- add r0, sp, 40
+ add r0, sp, 8
; byrRegs +[r0]
movs r2, 32
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_MEMCPY
; byrRegs -[r0]
- ldrb r6, [r4+0x30]
- ldrb r7, [r4+0x31]
- ldrb r8, [r4+0x32]
- vldr s16, [r4+0x34]
- ldrb r9, [r4+0x38]
- ldr r10, [r4+0x3C]
- vldr s17, [r4+0x40]
- vldr s18, [r4+0x44]
- ldrb r3, [r4+0x48]
- strb r3, [sp+0x24] // [V16 tmp12]
- movs r2, 2
- str r2, [r4]
- add r0, sp, 0 // [V18 tmp14]
- ; byrRegs +[r0]
- add r1, sp, 40 // [V05 tmp1]
- ; byrRegs +[r1]
- movs r2, 32
- movw r12, 0xd1ff
- movt r12, 0xd1ff
- blx r12 // CORINFO_HELP_MEMCPY
- ; byrRegs -[r0-r1]
- strb r6, [sp+0x20] // [V17 tmp13]
- strb r7, [sp+0x21] // [V17 tmp13+0x01]
- strb r8, [sp+0x22] // [V17 tmp13+0x02]
- vldr d0, [sp] // [V18 tmp14]
- vldr d1, [sp+0x08] // [V18 tmp14+0x08]
- vldr d2, [sp+0x10] // [V18 tmp14+0x10]
- vldr d3, [sp+0x18] // [V18 tmp14+0x18]
- ldr r0, [sp+0x20] // [V17 tmp13]
- vmov s8, s16
- mov r1, r9
- mov r2, r10
- vmov s9, s17
- vmov s10, s18
- ldrb r3, [sp+0x24] // [V16 tmp12]
+ ldrb r0, [r4+0x30]
+ ldrb r1, [r4+0x31]
+ ldrb r2, [r4+0x32]
+ vldr s8, [r4+0x34]
+ ldrb r3, [r4+0x38]
+ ldr lr, [r4+0x3C]
+ vldr s9, [r4+0x40]
+ vldr s10, [r4+0x44]
+ ldrb r12, [r4+0x48]
+ movs r6, 2
+ str r6, [r4]
+ strb r0, [sp+0x04]
+ strb r1, [sp+0x05]
+ strb r2, [sp+0x06]
+ ldr r0, [sp+0x04]
+ vldr d0, [sp+0x08]
+ vldr d1, [sp+0x10]
+ vldr d2, [sp+0x18]
+ vldr d3, [sp+0x20]
+ mov r1, r3
+ mov r2, lr
+ mov r3, r12
movw lr, 0xd1ff
movt lr, 0xd1ff
blx lr // <unknown method>
- ;; size=152 bbWeight=1 PerfScore 46.00
+ ;; size=118 bbWeight=1 PerfScore 36.00
G_M50245_IG03: ; bbWeight=1, extend
str r0, [r5]
;; size=2 bbWeight=1 PerfScore 1.00
G_M50245_IG04: ; bbWeight=1, epilog, nogc, extend
- add sp, 76
- vpop {d8-d9}
- pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
- ;; size=10 bbWeight=1 PerfScore 3.00
+ add sp, 44
+ pop {r4,r5,r6,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 182, prolog size 14, PerfScore 56.00, instruction count 56, allocated bytes for code 182 (MethodHash=c0f83bba) for method (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
+; Total bytes of code 140, prolog size 10, PerfScore 44.00, instruction count 44, allocated bytes for code 140 (MethodHash=c0f83bba) for method (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
; ============================================================
Unwind Info:
@@ -112,12 +96,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 91 (0x0005b) Actual length = 182 (0x0000b6)
+ Function Length : 70 (0x00046) Actual length = 140 (0x00008c)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 13 add sp, sp, #76 ; opsize 16
- E1 vpop {d8,d9} ; opsize 32
- DF pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32
+ 0B add sp, sp, #44 ; opsize 16
+ A8 70 pop {r4,r5,r6,r11,lr} ; opsize 32
FF end
-48 (-22.43%) : 395819.dasm - (dynamicClass):ILSTUBCallTailCallTarget(int,byref,int) (FullOpts)
@@ -13,25 +13,22 @@
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (28) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct ( 4) zero-ref "impAppendStmt" <ABIStress.S4P>
-; V06 tmp2 [V06,T05] ( 2, 4 ) struct (12) [sp+0x4C] do-not-enreg[S] "impAppendStmt" <ABIStress.S11U>
-; V07 tmp3 [V07,T06] ( 2, 4 ) struct ( 8) [sp+0x44] do-not-enreg[S] "impAppendStmt" <ABIStress.S5U>
+; V06 tmp2 [V06,T01] ( 4, 8 ) struct (12) [sp+0x3C] do-not-enreg[SA] multireg-arg "impAppendStmt" <ABIStress.S11U>
+; V07 tmp3 [V07,T05] ( 2, 4 ) struct ( 8) [sp+0x34] do-not-enreg[S] "impAppendStmt" <ABIStress.S5U>
;* V08 tmp4 [V08 ] ( 0, 0 ) struct ( 4) zero-ref "impAppendStmt" <ABIStress.S2U>
-; V09 tmp5 [V09,T07] ( 2, 4 ) int -> lr "impAppendStmt"
-; V10 tmp6 [V10,T08] ( 2, 4 ) struct (12) [sp+0x38] do-not-enreg[S] "impAppendStmt" <ABIStress.S9U>
-; V11 tmp7 [V11,T11] ( 2, 2 ) int -> r1 "field V05.F0 (fldOffset=0x0)" P-INDEP
-; V12 tmp8 [V12,T12] ( 2, 2 ) ubyte -> r2 "field V08.F0 (fldOffset=0x0)" P-INDEP
-; V13 tmp9 [V13,T13] ( 2, 2 ) ubyte -> r3 "field V08.F1 (fldOffset=0x1)" P-INDEP
-; V14 tmp10 [V14,T03] ( 3, 6 ) struct ( 4) [sp+0x34] do-not-enreg[SF] "by-value struct argument" <ABIStress.S2U>
-; V15 tmp11 [V15,T09] ( 2, 4 ) int -> r0 "argument with side effect"
-; V16 tmp12 [V16,T01] ( 4, 8 ) struct (12) [sp+0x28] do-not-enreg[SFA] multireg-arg "argument with side effect" <ABIStress.S11U>
-; V17 tmp13 [V17,T10] ( 2, 4 ) struct ( 8) [sp+0x20] do-not-enreg[S] "argument with side effect" <ABIStress.S5U>
+; V09 tmp5 [V09,T06] ( 2, 4 ) int -> r3 "impAppendStmt"
+; V10 tmp6 [V10,T07] ( 2, 4 ) struct (12) [sp+0x28] do-not-enreg[S] "impAppendStmt" <ABIStress.S9U>
+; V11 tmp7 [V11,T08] ( 2, 2 ) int -> lr "field V05.F0 (fldOffset=0x0)" P-INDEP
+; V12 tmp8 [V12,T09] ( 2, 2 ) ubyte -> r1 "field V08.F0 (fldOffset=0x0)" P-INDEP
+; V13 tmp9 [V13,T10] ( 2, 2 ) ubyte -> r2 "field V08.F1 (fldOffset=0x1)" P-INDEP
+; V14 tmp10 [V14,T03] ( 3, 6 ) struct ( 4) [sp+0x24] do-not-enreg[SF] "by-value struct argument" <ABIStress.S2U>
;
-; Lcl frame size = 92
+; Lcl frame size = 76
G_M50245_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r11,lr}
- sub sp, 92
- add r11, sp, 96
+ sub sp, 76
+ add r11, sp, 80
mov r4, r1
; byrRegs +[r4]
;; size=12 bbWeight=1 PerfScore 4.00
@@ -41,74 +38,62 @@ G_M50245_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre
movw r1, LOW ADDRESS G_M50245_IG03
movt r1, HIGH ADDRESS G_M50245_IG03
str r1, [r2]
- ldr r1, [r0+0x0C]
- ldr r2, [r0+0x10]
- str r2, [sp+0x4C]
- ldr r2, [r0+0x14]
- str r2, [sp+0x50]
- ldrh r2, [r0+0x18]
- strh r2, [sp+0x54]
- ldrb r2, [r0+0x1A]
- strb r2, [sp+0x56]
- ldr r2, [r0+0x1B]
- str r2, [sp+0x44]
- ldrb r2, [r0+0x1F]
- strb r2, [sp+0x48]
- ldrb r2, [r0+0x20]
- ldrb r3, [r0+0x21]
- ldr lr, [r0+0x24]
+ ldr lr, [r0+0x0C]
+ ldr r1, [r0+0x10]
+ str r1, [sp+0x3C]
+ ldr r1, [r0+0x14]
+ str r1, [sp+0x40]
+ ldrh r1, [r0+0x18]
+ strh r1, [sp+0x44]
+ ldrb r1, [r0+0x1A]
+ strb r1, [sp+0x46]
+ ldr r1, [r0+0x1B]
+ str r1, [sp+0x34]
+ ldrb r1, [r0+0x1F]
+ strb r1, [sp+0x38]
+ ldrb r1, [r0+0x20]
+ ldrb r2, [r0+0x21]
+ ldr r3, [r0+0x24]
ldr r12, [r0+0x28]
- str r12, [sp+0x38]
+ str r12, [sp+0x28]
ldr r12, [r0+0x2C]
- str r12, [sp+0x3C]
+ str r12, [sp+0x2C]
ldrb r12, [r0+0x30]
- strb r12, [sp+0x40]
+ strb r12, [sp+0x30]
mov r12, 2
str r12, [r0]
- mov r0, r1
- ldr r1, [sp+0x4C]
- str r1, [sp+0x28]
- ldr r1, [sp+0x50]
- str r1, [sp+0x2C]
- ldrh r1, [sp+0x54]
- strh r1, [sp+0x30]
- ldrb r1, [sp+0x56]
- strb r1, [sp+0x32]
- ldr r1, [sp+0x44]
- str r1, [sp+0x20]
- ldrb r1, [sp+0x48]
+ ldr r0, [sp+0x34]
+ str r0, [sp]
+ ldr r0, [sp+0x38]
+ str r0, [sp+0x04]
strb r1, [sp+0x24]
- strb r2, [sp+0x34]
- strb r3, [sp+0x35]
- str lr, [sp+0x0C]
- ldr r1, [sp+0x38]
- str r1, [sp+0x10]
- ldr r1, [sp+0x3C]
- str r1, [sp+0x14]
- ldr r1, [sp+0x40]
- str r1, [sp+0x18]
+ strb r2, [sp+0x25]
+ str r3, [sp+0x0C]
ldr r1, [sp+0x28]
- ldr r2, [sp+0x2C]
- ldr r3, [sp+0x30]
- ldr lr, [sp+0x20]
- str lr, [sp]
- ldr lr, [sp+0x24]
- str lr, [sp+0x04]
- ldrh lr, [sp+0x34]
- str lr, [sp+0x08]
+ str r1, [sp+0x10]
+ ldr r1, [sp+0x2C]
+ str r1, [sp+0x14]
+ ldr r1, [sp+0x30]
+ str r1, [sp+0x18]
+ ldrh r1, [sp+0x24]
+ str r1, [sp+0x08]
+ ldr r1, [sp+0x3C]
+ ldr r2, [sp+0x40]
+ ldr r3, [sp+0x44]
+ mov r0, lr
movw lr, 0xd1ff
movt lr, 0xd1ff
blx lr // <unknown method>
- ;; size=194 bbWeight=1 PerfScore 63.00
+ ;; size=146 bbWeight=1 PerfScore 51.00
G_M50245_IG03: ; bbWeight=1, extend
str r0, [r4]
;; size=2 bbWeight=1 PerfScore 1.00
G_M50245_IG04: ; bbWeight=1, epilog, nogc, extend
- add sp, 92
+ add sp, 76
pop {r4,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 214, prolog size 10, PerfScore 70.00, instruction count 70, allocated bytes for code 214 (MethodHash=c0f83bba) for method (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
+; Total bytes of code 166, prolog size 10, PerfScore 58.00, instruction count 58, allocated bytes for code 166 (MethodHash=c0f83bba) for method (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
; ============================================================
Unwind Info:
@@ -120,11 +105,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 107 (0x0006b) Actual length = 214 (0x0000d6)
+ Function Length : 83 (0x00053) Actual length = 166 (0x0000a6)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 17 add sp, sp, #92 ; opsize 16
+ 13 add sp, sp, #76 ; opsize 16
A8 10 pop {r4,r11,lr} ; opsize 32
FF end
+16 (+10.96%) : 378634.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
@@ -8,33 +8,31 @@
; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 3 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V00 this [V00,T02] ( 3, 3 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Nullable`1[ubyte]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T03] ( 2, 4 ) ref -> r1 class-hnd single-def "dup spill" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def
-; V05 tmp3 [V05,T05] ( 4, 3.50) ref -> r1
-; V06 tmp4 [V06,T02] ( 5, 5 ) ref -> [sp+0x00] class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
-; V07 tmp5 [V07,T07] ( 3, 3 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V08 tmp6 [V08,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V09 tmp7 [V09,T10] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
-; V10 tmp8 [V10,T01] ( 3, 6 ) struct ( 4) [sp+0x04] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;* V11 tmp9 [V11,T08] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V12 tmp10 [V12,T04] ( 2, 4 ) ref -> r1 single-def "argument with side effect"
-; V13 cse0 [V13,T06] ( 4, 3 ) int -> r5 "CSE - aggressive"
+; V05 tmp3 [V05,T04] ( 4, 3.50) ref -> r1
+; V06 tmp4 [V06,T01] ( 5, 5 ) ref -> [sp+0x00] class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
+; V07 tmp5 [V07,T05] ( 3, 3 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+;* V08 tmp6 [V08,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V09 tmp7 [V09,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
+; V10 tmp8 [V10,T00] ( 3, 6 ) struct ( 4) [sp+0x04] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M22152_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r11,lr}
+ push {r4,r11,lr}
+ sub sp, 12
add r11, sp, 16
mov r4, r0
; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M22152_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- movw r5, 0xd1ff
- movt r5, 0xd1ff
- ldr r1, [r5]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ ldr r1, [r0]
; gcrRegs +[r1]
cmp r1, 0
bne SHORT G_M22152_IG04
@@ -51,12 +49,14 @@ G_M22152_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs +[r1]
str r1, [sp]
; GC ptr vars +{V06}
- ldr r3, [r5-0x2C]
+ movw r0, 0xd1ff
+ ; gcrRegs -[r0]
+ movt r0, 0xd1ff
+ ldr r3, [r0]
; gcrRegs +[r3]
cmp r3, 0
beq SHORT G_M22152_IG07
adds r0, r1, 4
- ; gcrRegs -[r0]
; byrRegs +[r0]
mov r1, r3
movw r12, 0xd1ff
@@ -69,7 +69,8 @@ G_M22152_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r2, [sp]
; gcrRegs +[r2]
str r1, [r2+0x0C]
- mov r0, r5
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
mov r1, r2
; gcrRegs +[r1]
movw r12, 0xd1ff
@@ -78,18 +79,18 @@ G_M22152_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r1]
mov r1, r2
; gcrRegs +[r1]
- ;; size=72 bbWeight=0.50 PerfScore 12.50
+ ;; size=84 bbWeight=0.50 PerfScore 14.00
G_M22152_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r2]
; GC ptr vars -{V06}
- movs r0, 0
- strb r0, [sp+0x04]
+ movs r3, 0
+ strb r3, [sp+0x04]
;; size=6 bbWeight=1 PerfScore 2.00
G_M22152_IG05: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
- strb r0, [sp+0x05]
+ strb r3, [sp+0x05]
+ ldrh r3, [sp+0x04]
mov r0, r4
; gcrRegs +[r0]
- ldrh r3, [sp+0x04]
movs r2, 0
movw lr, 0xd1ff
movt lr, 0xd1ff
@@ -98,8 +99,9 @@ G_M22152_IG05: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b
; gcrRegs -[r1 r4]
;; size=26 bbWeight=1 PerfScore 8.00
G_M22152_IG06: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
+ add sp, 12
+ pop {r4,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M22152_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0]
movw r3, 0xd1ff
@@ -109,7 +111,7 @@ G_M22152_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 146, prolog size 8, PerfScore 31.50, instruction count 49, allocated bytes for code 146 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
+; Total bytes of code 162, prolog size 10, PerfScore 35.00, instruction count 54, allocated bytes for code 162 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -121,7 +123,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 73 (0x00049) Actual length = 146 (0x000092)
+ Function Length : 81 (0x00051) Actual length = 162 (0x0000a2)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -129,7 +131,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32
- FF end
+ 03 add sp, sp, #12 ; opsize 16
+ A8 10 pop {r4,r11,lr} ; opsize 32
FF end
+44 (+12.87%) : 406809.dasm - Test10w5d.testout1:Func0():int (FullOpts)
@@ -8,14 +8,14 @@
; 0 inlinees with PGO data; 12 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T12] ( 2, 2 ) float -> [sp+0x2C] spill-single-def
-; V01 loc1 [V01,T13] ( 2, 2 ) double -> [sp+0x20] spill-single-def
-; V02 loc2 [V02,T14] ( 2, 2 ) double -> [sp+0x18] spill-single-def
-; V03 loc3 [V03,T15] ( 2, 2 ) float -> [sp+0x14] spill-single-def
-; V04 loc4 [V04,T16] ( 2, 2 ) float -> [sp+0x10] spill-single-def
-; V05 loc5 [V05 ] ( 1, 1 ) long -> [sp+0x08] multireg-ret single-def
-; V06 loc6 [V06,T17] ( 2, 2 ) float -> f16 single-def
-; V07 loc7 [V07,T18] ( 2, 2 ) float -> f17 single-def
+; V00 loc0 [V00,T12] ( 2, 2 ) float -> [sp+0x3C] spill-single-def
+; V01 loc1 [V01,T00] ( 4, 4 ) double -> f16:f17 single-def
+; V02 loc2 [V02,T13] ( 2, 2 ) double -> [sp+0x30] spill-single-def
+; V03 loc3 [V03,T14] ( 2, 2 ) float -> [sp+0x2C] spill-single-def
+; V04 loc4 [V04,T15] ( 2, 2 ) float -> [sp+0x28] spill-single-def
+; V05 loc5 [V05 ] ( 1, 1 ) long -> [sp+0x20] multireg-ret single-def
+; V06 loc6 [V06,T16] ( 2, 2 ) float -> f18 single-def
+; V07 loc7 [V07,T05] ( 3, 3 ) float -> f19 single-def
;* V08 loc8 [V08 ] ( 0, 0 ) int -> zero-ref
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) float -> zero-ref "impAppendStmt"
@@ -27,58 +27,57 @@
;* V16 tmp7 [V16 ] ( 0, 0 ) double -> zero-ref "Inlining Arg"
;* V17 tmp8 [V17 ] ( 0, 0 ) float -> zero-ref "Inlining Arg"
;* V18 tmp9 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V19 tmp10 [V19,T01] ( 2, 4 ) double -> f0:f1 "argument with side effect"
-; V20 tmp11 [V20,T02] ( 2, 4 ) double -> f0:f1 "argument with side effect"
-; V21 tmp12 [V21,T03] ( 2, 4 ) double -> f0:f1 "argument with side effect"
-; V22 cse0 [V22,T04] ( 3, 3 ) float -> f17 "CSE - aggressive"
-; V23 cse1 [V23,T05] ( 3, 3 ) float -> f20 "CSE - aggressive"
-; V24 cse2 [V24,T00] ( 4, 4 ) double -> f18:f19 "CSE - aggressive"
-; V25 rat0 [V25,T19] ( 2, 2 ) int -> r0 "field V05.lo (fldOffset=0x0)" P-INDEP
-; V26 rat1 [V26,T20] ( 2, 2 ) int -> r1 "field V05.hi (fldOffset=0x4)" P-INDEP
-; V27 rat2 [V27 ] ( 1, 2 ) long -> [sp+0x00] multireg-ret "ReplaceWithLclVar is creating a new local variable"
-; V28 rat3 [V28,T06] ( 2, 3 ) int -> r0 "field V27.lo (fldOffset=0x0)" P-INDEP
-; V29 rat4 [V29,T07] ( 2, 3 ) int -> r1 "field V27.hi (fldOffset=0x4)" P-INDEP
-;* V30 rat5 [V30 ] ( 0, 0 ) long -> zero-ref do-not-enreg[BR] multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;* V31 rat6 [V31,T08] ( 0, 0 ) int -> zero-ref "field V30.lo (fldOffset=0x0)" P-DEP
-;* V32 rat7 [V32,T09] ( 0, 0 ) int -> zero-ref "field V30.hi (fldOffset=0x4)" P-DEP
-;* V33 rat8 [V33 ] ( 0, 0 ) long -> zero-ref do-not-enreg[BR] multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;* V34 rat9 [V34,T10] ( 0, 0 ) int -> zero-ref "field V33.lo (fldOffset=0x0)" P-DEP
-;* V35 rat10 [V35,T11] ( 0, 0 ) int -> zero-ref "field V33.hi (fldOffset=0x4)" P-DEP
+; V19 tmp10 [V19,T02] ( 2, 4 ) double -> f0:f1 "argument with side effect"
+; V20 tmp11 [V20,T03] ( 2, 4 ) double -> f0:f1 "argument with side effect"
+; V21 tmp12 [V21,T04] ( 2, 4 ) double -> f0:f1 "argument with side effect"
+; V22 cse0 [V22,T01] ( 4, 4 ) double -> f20:f21 "CSE - aggressive"
+; V23 rat0 [V23,T17] ( 2, 2 ) int -> r0 "field V05.lo (fldOffset=0x0)" P-INDEP
+; V24 rat1 [V24,T18] ( 2, 2 ) int -> r1 "field V05.hi (fldOffset=0x4)" P-INDEP
+; V25 rat2 [V25 ] ( 1, 2 ) long -> [sp+0x18] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V26 rat3 [V26,T06] ( 2, 3 ) int -> r0 "field V25.lo (fldOffset=0x0)" P-INDEP
+; V27 rat4 [V27,T07] ( 2, 3 ) int -> r1 "field V25.hi (fldOffset=0x4)" P-INDEP
+; V28 rat5 [V28 ] ( 1, 2 ) long -> [sp+0x10] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V29 rat6 [V29,T08] ( 2, 3 ) int -> r0 "field V28.lo (fldOffset=0x0)" P-INDEP
+; V30 rat7 [V30,T09] ( 2, 3 ) int -> r1 "field V28.hi (fldOffset=0x4)" P-INDEP
+; V31 rat8 [V31 ] ( 1, 2 ) long -> [sp+0x08] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V32 rat9 [V32,T10] ( 2, 3 ) int -> r0 "field V31.lo (fldOffset=0x0)" P-INDEP
+; V33 rat10 [V33,T11] ( 2, 3 ) int -> r1 "field V31.hi (fldOffset=0x4)" P-INDEP
+; TEMP_01 float -> [r11-0x54]
;
-; Lcl frame size = 48
+; Lcl frame size = 64
G_M41296_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r11,lr}
vpush {d8-d10}
- sub sp, 48
- add r11, sp, 72
+ sub sp, 64
+ add r11, sp, 88
;; size=14 bbWeight=1 PerfScore 4.00
G_M41296_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // Test_10w5d.testout1:Func_0_6():float
- vstr s0, [sp+0x2C] // [V00 loc0]
+ vstr s0, [sp+0x3C] // [V00 loc0]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- vstr d0, [sp+0x20] // [V01 loc1]
+ vmov d8, d0
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // Test_10w5d.testout1:Func_0_4():double
- vstr d0, [sp+0x18] // [V02 loc2]
+ vstr d0, [sp+0x30] // [V02 loc2]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // Test_10w5d.testout1:Func_0_3():float
- vstr s0, [sp+0x14] // [V03 loc3]
+ vstr s0, [sp+0x2C] // [V03 loc3]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // Test_10w5d.testout1:Func_0_2():float
- vstr s0, [sp+0x10] // [V04 loc4]
+ vstr s0, [sp+0x28] // [V04 loc4]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -86,24 +85,24 @@ G_M41296_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movw r3, 0xd1ff
movt r3, 0xd1ff
vmov.i2f s8, r3
- vldr s0, [sp+0x14] // [V03 loc3]
+ vldr s0, [sp+0x2C] // [V03 loc3]
vsub s8, s0, s8
mov r3, 0x43000000
vmov.i2f s9, r3
- vldr s0, [sp+0x2C] // [V00 loc0]
+ vldr s0, [sp+0x3C] // [V00 loc0]
vadd s9, s0, s9
- vsub s16, s8, s9
+ vsub s18, s8, s9
movw r3, 0xd1ff
movt r3, 0xd1ff
vmov.i2f s8, r3
- vldr s0, [sp+0x10] // [V04 loc4]
- vsub s17, s0, s8
+ vldr s0, [sp+0x28] // [V04 loc4]
+ vsub s19, s0, s8
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_LNG2DBL
- vldr d4, [sp+0x18] // [V02 loc2]
- vmul d9, d0, d4
- vmov d0, d9
+ vldr d4, [sp+0x30] // [V02 loc2]
+ vmul d10, d0, d4
+ vmov d0, d10
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_DBLROUND
@@ -113,21 +112,27 @@ G_M41296_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_LNG2DBL
- vldr d4, [sp+0x20] // [V01 loc1]
- vdiv d0, d0, d4
- vcvt.d2f s20, d0
- vmov d0, d9
+ vdiv d0, d0, d8
+ vcvt.d2f s8, d0
+ vstr s8, [sp+0x04] // [TEMP_01]
+ vmov d0, d10
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_DBLROUND
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_DBL2LNG_OVF
- vadd s17, s20, s17
- vcmp s20, s17
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_LNG2DBL
+ vdiv d4, d0, d8
+ vcvt.d2f s8, d4
+ vadd s8, s8, s19
+ vldr s9, [sp+0x04] // [TEMP_01]
+ vcmp s9, s8
vmrs APSR, FPSCR
ble SHORT G_M41296_IG04
- ;; size=254 bbWeight=1 PerfScore 73.00
+ ;; size=276 bbWeight=1 PerfScore 79.00
G_M41296_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -137,27 +142,33 @@ G_M41296_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
blx r3 // <unknown method>
;; size=20 bbWeight=0.50 PerfScore 3.00
G_M41296_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- vmov d0, d9
+ vmov d0, d10
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_DBLROUND
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_DBL2LNG_OVF
- vadd s0, s17, s16
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_LNG2DBL
+ vdiv d0, d0, d8
+ vcvt.d2f s0, d0
+ vadd s0, s0, s19
+ vadd s0, s0, s18
vcvt.f2d d0, s0
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ;; size=44 bbWeight=1 PerfScore 13.00
+ ;; size=66 bbWeight=1 PerfScore 19.00
G_M41296_IG05: ; bbWeight=1, epilog, nogc, extend
- add sp, 48
+ add sp, 64
vpop {d8-d10}
pop {r11,pc}
;; size=10 bbWeight=1 PerfScore 3.00
-; Total bytes of code 342, prolog size 14, PerfScore 96.00, instruction count 99, allocated bytes for code 342 (MethodHash=f2de5eaf) for method Test_10w5d.testout1:Func_0():int (FullOpts)
+; Total bytes of code 386, prolog size 14, PerfScore 108.00, instruction count 111, allocated bytes for code 386 (MethodHash=f2de5eaf) for method Test_10w5d.testout1:Func_0():int (FullOpts)
; ============================================================
Unwind Info:
@@ -169,11 +180,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 171 (0x000ab) Actual length = 342 (0x000156)
+ Function Length : 193 (0x000c1) Actual length = 386 (0x000182)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 0C add sp, sp, #48 ; opsize 16
+ 10 add sp, sp, #64 ; opsize 16
E2 vpop {d8,d9,d10} ; opsize 32
A8 00 pop {r11,lr} ; opsize 32
FF end
+44 (+13.02%) : 413230.dasm - Test10w5d.testout1:Func0():int (FullOpts)
@@ -8,15 +8,15 @@
; 0 inlinees with PGO data; 12 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T13] ( 2, 2 ) float -> [sp+0x2C] spill-single-def
-; V01 loc1 [V01,T14] ( 2, 2 ) double -> [sp+0x20] spill-single-def
-; V02 loc2 [V02,T15] ( 2, 2 ) double -> [sp+0x18] spill-single-def
-; V03 loc3 [V03,T16] ( 2, 2 ) float -> [sp+0x14] spill-single-def
-; V04 loc4 [V04 ] ( 1, 1 ) long -> [sp+0x08] multireg-ret single-def
-; V05 loc5 [V05,T17] ( 2, 2 ) float -> f16 single-def
-; V06 loc6 [V06,T18] ( 2, 2 ) float -> f17 single-def
+; V00 loc0 [V00,T13] ( 2, 2 ) float -> [sp+0x3C] spill-single-def
+; V01 loc1 [V01,T00] ( 4, 4 ) double -> f16:f17 single-def
+; V02 loc2 [V02,T14] ( 2, 2 ) double -> [sp+0x30] spill-single-def
+; V03 loc3 [V03,T15] ( 2, 2 ) float -> [sp+0x2C] spill-single-def
+; V04 loc4 [V04 ] ( 1, 1 ) long -> [sp+0x20] multireg-ret single-def
+; V05 loc5 [V05,T16] ( 2, 2 ) float -> f18 single-def
+; V06 loc6 [V06,T06] ( 3, 3 ) float -> f19 single-def
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T01] ( 2, 4 ) float -> f16 "impAppendStmt"
+; V08 tmp1 [V08,T02] ( 2, 4 ) float -> f18 "impAppendStmt"
;* V09 tmp2 [V09 ] ( 0, 0 ) float -> zero-ref "impAppendStmt"
;* V10 tmp3 [V10 ] ( 0, 0 ) double -> zero-ref "Inlining Arg"
;* V11 tmp4 [V11 ] ( 0, 0 ) double -> zero-ref "Inlining Arg"
@@ -26,58 +26,57 @@
;* V15 tmp8 [V15 ] ( 0, 0 ) double -> zero-ref "Inlining Arg"
;* V16 tmp9 [V16 ] ( 0, 0 ) float -> zero-ref "Inlining Arg"
;* V17 tmp10 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V18 tmp11 [V18,T02] ( 2, 4 ) double -> f0:f1 "argument with side effect"
-; V19 tmp12 [V19,T03] ( 2, 4 ) double -> f0:f1 "argument with side effect"
-; V20 tmp13 [V20,T04] ( 2, 4 ) double -> f0:f1 "argument with side effect"
-; V21 cse0 [V21,T05] ( 3, 3 ) float -> f17 "CSE - aggressive"
-; V22 cse1 [V22,T06] ( 3, 3 ) float -> f20 "CSE - aggressive"
-; V23 cse2 [V23,T00] ( 4, 4 ) double -> f18:f19 "CSE - aggressive"
-; V24 rat0 [V24,T19] ( 2, 2 ) int -> r0 "field V04.lo (fldOffset=0x0)" P-INDEP
-; V25 rat1 [V25,T20] ( 2, 2 ) int -> r1 "field V04.hi (fldOffset=0x4)" P-INDEP
-; V26 rat2 [V26 ] ( 1, 2 ) long -> [sp+0x00] multireg-ret "ReplaceWithLclVar is creating a new local variable"
-; V27 rat3 [V27,T07] ( 2, 3 ) int -> r0 "field V26.lo (fldOffset=0x0)" P-INDEP
-; V28 rat4 [V28,T08] ( 2, 3 ) int -> r1 "field V26.hi (fldOffset=0x4)" P-INDEP
-;* V29 rat5 [V29 ] ( 0, 0 ) long -> zero-ref do-not-enreg[BR] multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;* V30 rat6 [V30,T09] ( 0, 0 ) int -> zero-ref "field V29.lo (fldOffset=0x0)" P-DEP
-;* V31 rat7 [V31,T10] ( 0, 0 ) int -> zero-ref "field V29.hi (fldOffset=0x4)" P-DEP
-;* V32 rat8 [V32 ] ( 0, 0 ) long -> zero-ref do-not-enreg[BR] multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;* V33 rat9 [V33,T11] ( 0, 0 ) int -> zero-ref "field V32.lo (fldOffset=0x0)" P-DEP
-;* V34 rat10 [V34,T12] ( 0, 0 ) int -> zero-ref "field V32.hi (fldOffset=0x4)" P-DEP
+; V18 tmp11 [V18,T03] ( 2, 4 ) double -> f0:f1 "argument with side effect"
+; V19 tmp12 [V19,T04] ( 2, 4 ) double -> f0:f1 "argument with side effect"
+; V20 tmp13 [V20,T05] ( 2, 4 ) double -> f0:f1 "argument with side effect"
+; V21 cse0 [V21,T01] ( 4, 4 ) double -> f20:f21 "CSE - aggressive"
+; V22 rat0 [V22,T17] ( 2, 2 ) int -> r0 "field V04.lo (fldOffset=0x0)" P-INDEP
+; V23 rat1 [V23,T18] ( 2, 2 ) int -> r1 "field V04.hi (fldOffset=0x4)" P-INDEP
+; V24 rat2 [V24 ] ( 1, 2 ) long -> [sp+0x18] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V25 rat3 [V25,T07] ( 2, 3 ) int -> r0 "field V24.lo (fldOffset=0x0)" P-INDEP
+; V26 rat4 [V26,T08] ( 2, 3 ) int -> r1 "field V24.hi (fldOffset=0x4)" P-INDEP
+; V27 rat5 [V27 ] ( 1, 2 ) long -> [sp+0x10] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V28 rat6 [V28,T09] ( 2, 3 ) int -> r0 "field V27.lo (fldOffset=0x0)" P-INDEP
+; V29 rat7 [V29,T10] ( 2, 3 ) int -> r1 "field V27.hi (fldOffset=0x4)" P-INDEP
+; V30 rat8 [V30 ] ( 1, 2 ) long -> [sp+0x08] multireg-ret "ReplaceWithLclVar is creating a new local variable"
+; V31 rat9 [V31,T11] ( 2, 3 ) int -> r0 "field V30.lo (fldOffset=0x0)" P-INDEP
+; V32 rat10 [V32,T12] ( 2, 3 ) int -> r1 "field V30.hi (fldOffset=0x4)" P-INDEP
+; TEMP_01 float -> [r11-0x54]
;
-; Lcl frame size = 48
+; Lcl frame size = 64
G_M41296_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r11,lr}
vpush {d8-d10}
- sub sp, 48
- add r11, sp, 72
+ sub sp, 64
+ add r11, sp, 88
;; size=14 bbWeight=1 PerfScore 4.00
G_M41296_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // Test_10w5d.testout1:Func_0_6():float
- vstr s0, [sp+0x2C] // [V00 loc0]
+ vstr s0, [sp+0x3C] // [V00 loc0]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- vstr d0, [sp+0x20] // [V01 loc1]
+ vmov d8, d0
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // Test_10w5d.testout1:Func_0_4():double
- vstr d0, [sp+0x18] // [V02 loc2]
+ vstr d0, [sp+0x30] // [V02 loc2]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // Test_10w5d.testout1:Func_0_3():float
- vmov s16, s0
+ vmov s18, s0
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // Test_10w5d.testout1:Func_0_2():float
- vstr s0, [sp+0x14] // [V03 loc3]
+ vstr s0, [sp+0x2C] // [V03 loc3]
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
@@ -85,23 +84,23 @@ G_M41296_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movw r3, 0xd1ff
movt r3, 0xd1ff
vmov.i2f s8, r3
- vsub s8, s16, s8
+ vsub s8, s18, s8
mov r3, 0x43000000
vmov.i2f s9, r3
- vldr s0, [sp+0x2C] // [V00 loc0]
+ vldr s0, [sp+0x3C] // [V00 loc0]
vadd s9, s0, s9
- vsub s16, s8, s9
+ vsub s18, s8, s9
movw r3, 0xd1ff
movt r3, 0xd1ff
vmov.i2f s8, r3
- vldr s0, [sp+0x14] // [V03 loc3]
- vsub s17, s0, s8
+ vldr s0, [sp+0x2C] // [V03 loc3]
+ vsub s19, s0, s8
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_LNG2DBL
- vldr d4, [sp+0x18] // [V02 loc2]
- vmul d9, d0, d4
- vmov d0, d9
+ vldr d4, [sp+0x30] // [V02 loc2]
+ vmul d10, d0, d4
+ vmov d0, d10
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_DBLROUND
@@ -111,21 +110,27 @@ G_M41296_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_LNG2DBL
- vldr d4, [sp+0x20] // [V01 loc1]
- vdiv d0, d0, d4
- vcvt.d2f s20, d0
- vmov d0, d9
+ vdiv d0, d0, d8
+ vcvt.d2f s8, d0
+ vstr s8, [sp+0x04] // [TEMP_01]
+ vmov d0, d10
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_DBLROUND
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_DBL2LNG_OVF
- vadd s17, s20, s17
- vcmp s20, s17
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_LNG2DBL
+ vdiv d4, d0, d8
+ vcvt.d2f s8, d4
+ vadd s8, s8, s19
+ vldr s9, [sp+0x04] // [TEMP_01]
+ vcmp s9, s8
vmrs APSR, FPSCR
ble SHORT G_M41296_IG04
- ;; size=250 bbWeight=1 PerfScore 72.00
+ ;; size=272 bbWeight=1 PerfScore 78.00
G_M41296_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -135,27 +140,33 @@ G_M41296_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
blx r3 // <unknown method>
;; size=20 bbWeight=0.50 PerfScore 3.00
G_M41296_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- vmov d0, d9
+ vmov d0, d10
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_DBLROUND
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_DBL2LNG_OVF
- vadd s0, s17, s16
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ blx r3 // CORINFO_HELP_LNG2DBL
+ vdiv d0, d0, d8
+ vcvt.d2f s0, d0
+ vadd s0, s0, s19
+ vadd s0, s0, s18
vcvt.f2d d0, s0
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ;; size=44 bbWeight=1 PerfScore 13.00
+ ;; size=66 bbWeight=1 PerfScore 19.00
G_M41296_IG05: ; bbWeight=1, epilog, nogc, extend
- add sp, 48
+ add sp, 64
vpop {d8-d10}
pop {r11,pc}
;; size=10 bbWeight=1 PerfScore 3.00
-; Total bytes of code 338, prolog size 14, PerfScore 95.00, instruction count 98, allocated bytes for code 338 (MethodHash=f2de5eaf) for method Test_10w5d.testout1:Func_0():int (FullOpts)
+; Total bytes of code 382, prolog size 14, PerfScore 107.00, instruction count 110, allocated bytes for code 382 (MethodHash=f2de5eaf) for method Test_10w5d.testout1:Func_0():int (FullOpts)
; ============================================================
Unwind Info:
@@ -167,11 +178,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 169 (0x000a9) Actual length = 338 (0x000152)
+ Function Length : 191 (0x000bf) Actual length = 382 (0x00017e)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 0C add sp, sp, #48 ; opsize 16
+ 10 add sp, sp, #64 ; opsize 16
E2 vpop {d8,d9,d10} ; opsize 32
A8 00 pop {r11,lr} ; opsize 32
FF end
libraries.crossgen2.linux.arm.checked.mch
-22 (-26.83%) : 160244.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.Guid]):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -8,47 +8,34 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 3, 3 ) struct (20) [sp+0x28] do-not-enreg[S] single-def <System.Nullable`1[System.Guid]>
+; V00 arg0 [V00,T01] ( 3, 3 ) struct (20) [sp+0x18] do-not-enreg[S] single-def <System.Nullable`1[System.Guid]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
; V02 OutArgs [V02 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V04 tmp2 [V04,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V05 tmp3 [V05,T00] ( 3, 6 ) struct ( 4) [sp+0x1C] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V06 tmp4 [V06,T02] ( 2, 4 ) struct (20) [sp+0x08] do-not-enreg[S] "argument with side effect" <System.Nullable`1[System.Guid]>
+;* V03 tmp1 [V03,T02] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V04 tmp2 [V04,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V05 tmp3 [V05,T00] ( 3, 6 ) struct ( 4) [sp+0x0C] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M50413_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r0,r1,r2,r3}
push {r4,lr}
- sub sp, 32
+ sub sp, 16
;; size=6 bbWeight=1 PerfScore 3.00
G_M50413_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add r0, sp, 8
- ; byrRegs +[r0]
- add r1, sp, 40
- ; byrRegs +[r1]
- movs r2, 20
- movw r12, LOW RELOC 0xD1FFAB1E
- movt r12, HIGH RELOC 0xD1FFAB1E
- add r12, pc
- ldr r12, [r12]
- blx r12 // CORINFO_HELP_MEMCPY
- ; byrRegs -[r0-r1]
- ; gcr arg pop 0
movs r3, 0
- strb r3, [sp+0x1C]
- ;; size=28 bbWeight=1 PerfScore 10.00
+ strb r3, [sp+0x0C]
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M50413_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- strb r3, [sp+0x1D]
- ldrh r3, [sp+0x1C]
+ strb r3, [sp+0x0D]
+ ldrh r3, [sp+0x0C]
str r3, [sp+0x04]
- ldr r0, [sp+0x18]
+ ldr r0, [sp+0x28]
str r0, [sp]
- ldr r0, [sp+0x08]
- ldr r1, [sp+0x0C]
- ldr r2, [sp+0x10]
- ldr r3, [sp+0x14]
+ ldr r0, [sp+0x18]
+ ldr r1, [sp+0x1C]
+ ldr r2, [sp+0x20]
+ ldr r3, [sp+0x24]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
@@ -58,13 +45,13 @@ G_M50413_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
;; size=38 bbWeight=1 PerfScore 14.00
G_M50413_IG04: ; bbWeight=1, epilog, nogc, extend
- add sp, 32
+ add sp, 16
pop {r4,lr}
add sp, 16
bx lr
;; size=10 bbWeight=1 PerfScore 4.00
-; Total bytes of code 82, prolog size 6, PerfScore 31.00, instruction count 31, allocated bytes for code 82 (MethodHash=80603b12) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.Guid]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 60, prolog size 6, PerfScore 23.00, instruction count 23, allocated bytes for code 60 (MethodHash=80603b12) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.Guid]):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -76,19 +63,19 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 82 (0x000052)
+ Function Length : 30 (0x0001e) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Condition : 14 (0xe) (always)
Epilog Start Index : 5 (0x05)
---- Unwind codes ----
- 08 add sp, sp, #32 ; opsize 16
+ 04 add sp, sp, #16 ; opsize 16
D4 pop {r4,lr} ; opsize 16
EC 0F pop {r0,r1,r2,r3} ; opsize 16
FF end
---- Epilog start at index 5 ----
- 08 add sp, sp, #32 ; opsize 16
+ 04 add sp, sp, #16 ; opsize 16
A0 10 pop {r4,lr} ; opsize 32
04 add sp, sp, #16 ; opsize 16
FD end + nop ; opsize 16
-22 (-25.58%) : 160238.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTimeOffset]):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -8,49 +8,36 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 3, 3 ) struct (24) [sp+0x38] do-not-enreg[S] single-def double-align <System.Nullable`1[System.DateTimeOffset]>
+; V00 arg0 [V00,T01] ( 3, 3 ) struct (24) [sp+0x20] do-not-enreg[S] single-def double-align <System.Nullable`1[System.DateTimeOffset]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (12) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V04 tmp2 [V04,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V05 tmp3 [V05,T00] ( 3, 6 ) struct ( 4) [sp+0x2C] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V06 tmp4 [V06,T02] ( 2, 4 ) struct (24) [sp+0x10] do-not-enreg[S] double-align "argument with side effect" <System.Nullable`1[System.DateTimeOffset]>
+;* V03 tmp1 [V03,T02] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V04 tmp2 [V04,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V05 tmp3 [V05,T00] ( 3, 6 ) struct ( 4) [sp+0x14] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 48
+; Lcl frame size = 24
G_M32158_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r0,r1,r2,r3}
push {r4,lr}
- sub sp, 48
+ sub sp, 24
;; size=6 bbWeight=1 PerfScore 3.00
G_M32158_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add r0, sp, 16
- ; byrRegs +[r0]
- add r1, sp, 56
- ; byrRegs +[r1]
- movs r2, 24
- movw r12, LOW RELOC 0xD1FFAB1E
- movt r12, HIGH RELOC 0xD1FFAB1E
- add r12, pc
- ldr r12, [r12]
- blx r12 // CORINFO_HELP_MEMCPY
- ; byrRegs -[r0-r1]
- ; gcr arg pop 0
movs r3, 0
- strb r3, [sp+0x2C]
- ;; size=28 bbWeight=1 PerfScore 10.00
+ strb r3, [sp+0x14]
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M32158_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- strb r3, [sp+0x2D]
- ldrh r3, [sp+0x2C]
+ strb r3, [sp+0x15]
+ ldrh r3, [sp+0x14]
str r3, [sp+0x08]
- ldr r0, [sp+0x20]
+ ldr r0, [sp+0x30]
str r0, [sp]
- ldr r0, [sp+0x24]
+ ldr r0, [sp+0x34]
str r0, [sp+0x04]
- ldr r0, [sp+0x10]
- ldr r1, [sp+0x14]
- ldr r2, [sp+0x18]
- ldr r3, [sp+0x1C]
+ ldr r0, [sp+0x20]
+ ldr r1, [sp+0x24]
+ ldr r2, [sp+0x28]
+ ldr r3, [sp+0x2C]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
@@ -60,13 +47,13 @@ G_M32158_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
;; size=42 bbWeight=1 PerfScore 16.00
G_M32158_IG04: ; bbWeight=1, epilog, nogc, extend
- add sp, 48
+ add sp, 24
pop {r4,lr}
add sp, 16
bx lr
;; size=10 bbWeight=1 PerfScore 4.00
-; Total bytes of code 86, prolog size 6, PerfScore 33.00, instruction count 33, allocated bytes for code 86 (MethodHash=04148261) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTimeOffset]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 64, prolog size 6, PerfScore 25.00, instruction count 25, allocated bytes for code 64 (MethodHash=04148261) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTimeOffset]):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -78,19 +65,19 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 86 (0x000056)
+ Function Length : 32 (0x00020) Actual length = 64 (0x000040)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Condition : 14 (0xe) (always)
Epilog Start Index : 5 (0x05)
---- Unwind codes ----
- 0C add sp, sp, #48 ; opsize 16
+ 06 add sp, sp, #24 ; opsize 16
D4 pop {r4,lr} ; opsize 16
EC 0F pop {r0,r1,r2,r3} ; opsize 16
FF end
---- Epilog start at index 5 ----
- 0C add sp, sp, #48 ; opsize 16
+ 06 add sp, sp, #24 ; opsize 16
A0 10 pop {r4,lr} ; opsize 32
04 add sp, sp, #16 ; opsize 16
FD end + nop ; opsize 16
-22 (-25.58%) : 160240.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.Decimal]):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -8,49 +8,36 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 3, 3 ) struct (24) [sp+0x38] do-not-enreg[S] single-def double-align <System.Nullable`1[System.Decimal]>
+; V00 arg0 [V00,T01] ( 3, 3 ) struct (24) [sp+0x20] do-not-enreg[S] single-def double-align <System.Nullable`1[System.Decimal]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (12) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V04 tmp2 [V04,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V05 tmp3 [V05,T00] ( 3, 6 ) struct ( 4) [sp+0x2C] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V06 tmp4 [V06,T02] ( 2, 4 ) struct (24) [sp+0x10] do-not-enreg[S] double-align "argument with side effect" <System.Nullable`1[System.Decimal]>
+;* V03 tmp1 [V03,T02] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V04 tmp2 [V04,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V05 tmp3 [V05,T00] ( 3, 6 ) struct ( 4) [sp+0x14] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 48
+; Lcl frame size = 24
G_M12601_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r0,r1,r2,r3}
push {r4,lr}
- sub sp, 48
+ sub sp, 24
;; size=6 bbWeight=1 PerfScore 3.00
G_M12601_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add r0, sp, 16
- ; byrRegs +[r0]
- add r1, sp, 56
- ; byrRegs +[r1]
- movs r2, 24
- movw r12, LOW RELOC 0xD1FFAB1E
- movt r12, HIGH RELOC 0xD1FFAB1E
- add r12, pc
- ldr r12, [r12]
- blx r12 // CORINFO_HELP_MEMCPY
- ; byrRegs -[r0-r1]
- ; gcr arg pop 0
movs r3, 0
- strb r3, [sp+0x2C]
- ;; size=28 bbWeight=1 PerfScore 10.00
+ strb r3, [sp+0x14]
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M12601_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- strb r3, [sp+0x2D]
- ldrh r3, [sp+0x2C]
+ strb r3, [sp+0x15]
+ ldrh r3, [sp+0x14]
str r3, [sp+0x08]
- ldr r0, [sp+0x20]
+ ldr r0, [sp+0x30]
str r0, [sp]
- ldr r0, [sp+0x24]
+ ldr r0, [sp+0x34]
str r0, [sp+0x04]
- ldr r0, [sp+0x10]
- ldr r1, [sp+0x14]
- ldr r2, [sp+0x18]
- ldr r3, [sp+0x1C]
+ ldr r0, [sp+0x20]
+ ldr r1, [sp+0x24]
+ ldr r2, [sp+0x28]
+ ldr r3, [sp+0x2C]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
@@ -60,13 +47,13 @@ G_M12601_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
;; size=42 bbWeight=1 PerfScore 16.00
G_M12601_IG04: ; bbWeight=1, epilog, nogc, extend
- add sp, 48
+ add sp, 24
pop {r4,lr}
add sp, 16
bx lr
;; size=10 bbWeight=1 PerfScore 4.00
-; Total bytes of code 86, prolog size 6, PerfScore 33.00, instruction count 33, allocated bytes for code 86 (MethodHash=ac7acec6) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.Decimal]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 64, prolog size 6, PerfScore 25.00, instruction count 25, allocated bytes for code 64 (MethodHash=ac7acec6) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.Decimal]):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -78,19 +65,19 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 86 (0x000056)
+ Function Length : 32 (0x00020) Actual length = 64 (0x000040)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Condition : 14 (0xe) (always)
Epilog Start Index : 5 (0x05)
---- Unwind codes ----
- 0C add sp, sp, #48 ; opsize 16
+ 06 add sp, sp, #24 ; opsize 16
D4 pop {r4,lr} ; opsize 16
EC 0F pop {r0,r1,r2,r3} ; opsize 16
FF end
---- Epilog start at index 5 ----
- 0C add sp, sp, #48 ; opsize 16
+ 06 add sp, sp, #24 ; opsize 16
A0 10 pop {r4,lr} ; opsize 32
04 add sp, sp, #16 ; opsize 16
FD end + nop ; opsize 16
+4 (+3.12%) : 134448.dasm - System.Net.Sockets.UnixDomainSocketEndPoint:.cctor() (FullOpts)
@@ -15,13 +15,11 @@
;* V04 loc4 [V04 ] ( 0, 0 ) int -> zero-ref
; V05 loc5 [V05 ] ( 3, 3 ) byref -> [sp+0x04] must-init pinned
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T01] ( 2, 4 ) int -> r2 "Cast away GC"
-; V08 tmp2 [V08,T02] ( 2, 4 ) int -> r1 "Cast away GC"
+; V07 tmp1 [V07,T01] ( 2, 4 ) int -> r1 "Cast away GC"
+; V08 tmp2 [V08,T02] ( 2, 4 ) int -> r3 "Cast away GC"
; V09 tmp3 [V09,T03] ( 2, 4 ) int -> r2 "Cast away GC"
; V10 tmp4 [V10,T04] ( 2, 4 ) int -> r2 "argument with side effect"
-; V11 tmp5 [V11,T05] ( 2, 4 ) int -> r0 "argument with side effect"
-; V12 tmp6 [V12,T06] ( 2, 4 ) int -> r1 "argument with side effect"
-; V13 cse0 [V13,T00] ( 4, 4 ) byref -> r0 "CSE - aggressive"
+; V11 cse0 [V11,T00] ( 4, 4 ) byref -> r0 "CSE - aggressive"
;
; Lcl frame size = 20
@@ -44,26 +42,30 @@ G_M57672_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add r2, r0, 164
; byrRegs +[r2]
str r2, [sp+0x0C] // [V01 loc1]
- ldr r2, [sp+0x0C] // [V01 loc1]
- add r1, r0, 168
+ ldr r1, [sp+0x0C] // [V01 loc1]
; byrRegs +[r1]
- str r1, [sp+0x08] // [V03 loc3]
- ldr r1, [sp+0x08] // [V03 loc3]
- adds r0, 172
- str r0, [sp+0x04] // [V05 loc5]
- mov r0, r2
- ; byrRegs -[r0]
+ add r2, r0, 168
+ str r2, [sp+0x08] // [V03 loc3]
+ ldr r3, [sp+0x08] // [V03 loc3]
+ ; byrRegs +[r3]
+ add r2, r0, 172
+ str r2, [sp+0x04] // [V05 loc5]
ldr r2, [sp+0x04] // [V05 loc5]
+ mov r0, r1
+ ; byrRegs -[r0]
+ mov r1, r3
+ ; byrRegs -[r1]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
movw r3, LOW RELOC 0xD1FFAB1E
+ ; byrRegs -[r3]
movt r3, HIGH RELOC 0xD1FFAB1E
add r3, pc
ldr r3, [r3]
- ;; size=60 bbWeight=1 PerfScore 22.00
+ ;; size=64 bbWeight=1 PerfScore 23.00
G_M57672_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[r1-r2]
+ ; byrRegs -[r2]
blx r3 // <unknown method>
movs r3, 0
str r3, [sp+0x04] // [V05 loc5]
@@ -94,7 +96,7 @@ G_M57672_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
b SHORT G_M57672_IG06
;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 128, prolog size 18, PerfScore 43.00, instruction count 49, allocated bytes for code 128 (MethodHash=76e61eb7) for method System.Net.Sockets.UnixDomainSocketEndPoint:.cctor() (FullOpts)
+; Total bytes of code 132, prolog size 18, PerfScore 44.00, instruction count 50, allocated bytes for code 132 (MethodHash=76e61eb7) for method System.Net.Sockets.UnixDomainSocketEndPoint:.cctor() (FullOpts)
; ============================================================
Unwind Info:
@@ -106,7 +108,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 64 (0x00040) Actual length = 128 (0x000080)
+ Function Length : 66 (0x00042) Actual length = 132 (0x000084)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+30 (+6.52%) : 128331.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:LeastGenericProcedure(Microsoft.VisualBasic.CompilerServices.Symbols+Method,Microsoft.VisualBasic.CompilerServices.Symbols+Method,int,byref):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)
@@ -13,12 +13,12 @@
; V01 arg1 [V01,T03] ( 11, 15.50) ref -> r6 class-hnd single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
; V02 arg2 [V02,T13] ( 4, 6 ) int -> r8 single-def
; V03 arg3 [V03,T12] ( 6, 9 ) byref -> r7 single-def
-; V04 loc0 [V04,T28] ( 4, 2.50) ref -> r0 class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
+; V04 loc0 [V04,T26] ( 4, 2.50) ref -> r0 class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
; V05 loc1 [V05 ] ( 4, 6.50) ubyte -> [sp+0x2C] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V06 loc2 [V06 ] ( 4, 6.50) ubyte -> [sp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V07 loc3 [V07,T00] ( 17, 33.50) int -> r9
-; V08 loc4 [V08,T26] ( 3, 5 ) int -> [sp+0x24] spill-single-def
-; V09 loc5 [V09,T27] ( 3, 5 ) int -> [sp+0x20] spill-single-def
+; V08 loc4 [V08,T24] ( 3, 5 ) int -> [sp+0x24] spill-single-def
+; V09 loc5 [V09,T25] ( 3, 5 ) int -> [sp+0x20] spill-single-def
;* V10 loc6 [V10 ] ( 0, 0 ) int -> zero-ref
; V11 OutArgs [V11 ] ( 1, 1 ) struct (28) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V12 tmp1 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Reflection.ParameterInfo>
@@ -32,24 +32,22 @@
; V20 tmp9 [V20,T04] ( 3, 12 ) ref -> r0 "arr expr"
; V21 tmp10 [V21,T05] ( 3, 12 ) ref -> r1 "arr expr"
; V22 tmp11 [V22,T06] ( 3, 12 ) ref -> r2 "arr expr"
-; V23 tmp12 [V23,T07] ( 3, 12 ) ref -> r2 "arr expr"
+; V23 tmp12 [V23,T07] ( 3, 12 ) ref -> r12 "arr expr"
; V24 tmp13 [V24,T14] ( 2, 8 ) ref -> r0 "argument with side effect"
; V25 tmp14 [V25,T15] ( 2, 8 ) ref -> r1 "argument with side effect"
-; V26 tmp15 [V26,T16] ( 2, 8 ) ref -> r2 "argument with side effect"
-; V27 tmp16 [V27,T24] ( 2, 8 ) int -> r3 "argument with side effect"
+; V26 tmp15 [V26,T22] ( 2, 8 ) int -> r3 "argument with side effect"
+; V27 tmp16 [V27,T16] ( 2, 8 ) ref -> r2 "argument with side effect"
; V28 tmp17 [V28,T17] ( 2, 8 ) ref -> lr "argument with side effect"
-; V29 tmp18 [V29,T18] ( 2, 8 ) ref -> r12 "argument with side effect"
-; V30 tmp19 [V30,T08] ( 3, 12 ) ref -> r0 "arr expr"
-; V31 tmp20 [V31,T09] ( 3, 12 ) ref -> r1 "arr expr"
-; V32 tmp21 [V32,T10] ( 3, 12 ) ref -> r2 "arr expr"
-; V33 tmp22 [V33,T11] ( 3, 12 ) ref -> r2 "arr expr"
-; V34 tmp23 [V34,T19] ( 2, 8 ) ref -> r0 "argument with side effect"
-; V35 tmp24 [V35,T20] ( 2, 8 ) ref -> r1 "argument with side effect"
-; V36 tmp25 [V36,T21] ( 2, 8 ) ref -> r2 "argument with side effect"
-; V37 tmp26 [V37,T25] ( 2, 8 ) int -> r3 "argument with side effect"
-; V38 tmp27 [V38,T22] ( 2, 8 ) ref -> lr "argument with side effect"
-; V39 tmp28 [V39,T23] ( 2, 8 ) ref -> r12 "argument with side effect"
-; V40 cse0 [V40,T02] ( 10, 20 ) int -> r12 multi-def "CSE - aggressive"
+; V29 tmp18 [V29,T08] ( 3, 12 ) ref -> r0 "arr expr"
+; V30 tmp19 [V30,T09] ( 3, 12 ) ref -> r1 "arr expr"
+; V31 tmp20 [V31,T10] ( 3, 12 ) ref -> r2 "arr expr"
+; V32 tmp21 [V32,T11] ( 3, 12 ) ref -> r12 "arr expr"
+; V33 tmp22 [V33,T18] ( 2, 8 ) ref -> r0 "argument with side effect"
+; V34 tmp23 [V34,T19] ( 2, 8 ) ref -> r1 "argument with side effect"
+; V35 tmp24 [V35,T23] ( 2, 8 ) int -> r3 "argument with side effect"
+; V36 tmp25 [V36,T20] ( 2, 8 ) ref -> r2 "argument with side effect"
+; V37 tmp26 [V37,T21] ( 2, 8 ) ref -> lr "argument with side effect"
+; V38 cse0 [V38,T02] ( 10, 20 ) int -> lr multi-def "CSE - aggressive"
;
; Lcl frame size = 52
@@ -100,11 +98,11 @@ G_M27194_IG03: ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0080 {r
mov r9, 0
ldr r0, [r5+0x0C]
; gcrRegs +[r0]
- ldr r4, [r0+0x04]
- str r4, [sp+0x24]
+ ldr r10, [r0+0x04]
+ str r10, [sp+0x24]
ldr r0, [r6+0x0C]
- ldr lr, [r0+0x04]
- str lr, [sp+0x20]
+ ldr r4, [r0+0x04]
+ str r4, [sp+0x20]
b SHORT G_M27194_IG08
;; size=46 bbWeight=0.50 PerfScore 8.50
G_M27194_IG04: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0080 {r7}, byref, isz
@@ -112,7 +110,7 @@ G_M27194_IG04: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0080 {r7},
cmp r8, 1
beq SHORT G_M27194_IG05
cmp r8, 2
- bne SHORT G_M27194_IG06
+ bne G_M27194_IG06
ldr r0, [r5+0x0C]
; gcrRegs +[r0]
ldr r1, [r0+0x04]
@@ -121,71 +119,69 @@ G_M27194_IG04: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0080 {r7},
adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
- lsl r12, r9, 2
- ldr r0, [r0+r12]
+ lsl lr, r9, 2
+ ldr r0, [r0+lr]
; gcrRegs +[r0]
; byrRegs -[r0]
ldr r1, [r5+0x10]
; gcrRegs +[r1]
- ldr r2, [r1+0x04]
- cmp r9, r2
+ ldr r3, [r1+0x04]
+ cmp r9, r3
bhs G_M27194_IG15
adds r1, 8
; gcrRegs -[r1]
; byrRegs +[r1]
- ldr r1, [r1+r12]
+ ldr r1, [r1+lr]
; gcrRegs +[r1]
; byrRegs -[r1]
- mov r2, r5
- ; gcrRegs +[r2]
- ldrb r3, [r2+0x28]
+ ldrb r3, [r5+0x28]
ldr r2, [r6+0x0C]
- ldr lr, [r2+0x04]
- cmp r9, lr
+ ; gcrRegs +[r2]
+ ldr r12, [r2+0x04]
+ cmp r9, r12
bhs G_M27194_IG15
adds r2, 8
; gcrRegs -[r2]
; byrRegs +[r2]
- ldr lr, [r2+r12]
- ; gcrRegs +[lr]
- ldr r2, [r6+0x10]
+ ldr r2, [r2+lr]
; gcrRegs +[r2]
; byrRegs -[r2]
- ldr r4, [r2+0x04]
- cmp r9, r4
- bhs G_M27194_IG15
- adds r2, 8
- ; gcrRegs -[r2]
- ; byrRegs +[r2]
- ldr r12, [r2+r12]
+ ldr r12, [r6+0x10]
; gcrRegs +[r12]
+ ldr r10, [r12+0x04]
+ cmp r9, r10
+ bhs G_M27194_IG15
+ add r12, r12, 8
+ ; gcrRegs -[r12]
+ ; byrRegs +[r12]
+ ldr lr, [r12+lr]
+ ; gcrRegs +[lr]
str r6, [sp+0x08]
; gcr arg write
- movs r2, 0
- ; byrRegs -[r2]
- str r2, [sp+0x0C]
- add r2, sp, 44
- str r2, [sp+0x10]
- add r2, sp, 40
- str r2, [sp+0x14]
+ mov r12, 0
+ ; byrRegs -[r12]
+ str r12, [sp+0x0C]
+ addw r12, sp, 44
+ str r12, [sp+0x10]
+ addw r12, sp, 40
+ str r12, [sp+0x14]
str r7, [sp+0x18]
; byr arg write
+ str r2, [sp]
+ ; gcr arg write
+ str lr, [sp+0x04]
+ ; gcr arg write
mov r2, r5
- ; gcrRegs +[r2]
- str lr, [sp]
- ; gcr arg write
- str r12, [sp+0x04]
- ; gcr arg write
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
ldr lr, [r4]
; gcrRegs -[lr]
blx lr // <unknown method>
- ; gcrRegs -[r0-r2 r12]
+ ; gcrRegs -[r0-r2]
; gcr arg pop 0
b SHORT G_M27194_IG06
- ;; size=132 bbWeight=2 PerfScore 96.00
+ ;; size=148 bbWeight=2 PerfScore 94.00
G_M27194_IG05: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0080 {r7}, byref, isz
ldr r0, [r5+0x0C]
; gcrRegs +[r0]
@@ -195,70 +191,68 @@ G_M27194_IG05: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0080 {r7},
adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
- lsl r12, r9, 2
- ldr r0, [r0+r12]
+ lsl lr, r9, 2
+ ldr r0, [r0+lr]
; gcrRegs +[r0]
; byrRegs -[r0]
ldr r1, [r5+0x10]
; gcrRegs +[r1]
- ldr r2, [r1+0x04]
- cmp r9, r2
+ ldr r3, [r1+0x04]
+ cmp r9, r3
bhs SHORT G_M27194_IG15
adds r1, 8
; gcrRegs -[r1]
; byrRegs +[r1]
- ldr r1, [r1+r12]
+ ldr r1, [r1+lr]
; gcrRegs +[r1]
; byrRegs -[r1]
- mov r2, r5
- ; gcrRegs +[r2]
- ldrb r3, [r2+0x28]
+ ldrb r3, [r5+0x28]
ldr r2, [r6+0x0C]
- ldr lr, [r2+0x04]
- cmp r9, lr
+ ; gcrRegs +[r2]
+ ldr r12, [r2+0x04]
+ cmp r9, r12
bhs SHORT G_M27194_IG15
adds r2, 8
; gcrRegs -[r2]
; byrRegs +[r2]
- ldr lr, [r2+r12]
- ; gcrRegs +[lr]
- ldr r2, [r6+0x10]
+ ldr r2, [r2+lr]
; gcrRegs +[r2]
; byrRegs -[r2]
- ldr r4, [r2+0x04]
- cmp r9, r4
- bhs SHORT G_M27194_IG15
- adds r2, 8
- ; gcrRegs -[r2]
- ; byrRegs +[r2]
- ldr r12, [r2+r12]
+ ldr r12, [r6+0x10]
; gcrRegs +[r12]
+ ldr r10, [r12+0x04]
+ cmp r9, r10
+ bhs SHORT G_M27194_IG15
+ add r12, r12, 8
+ ; gcrRegs -[r12]
+ ; byrRegs +[r12]
+ ldr lr, [r12+lr]
+ ; gcrRegs +[lr]
str r6, [sp+0x08]
; gcr arg write
- movs r2, 0
- ; byrRegs -[r2]
- str r2, [sp+0x0C]
- add r2, sp, 44
...
+46 (+10.70%) : 61683.dasm - Microsoft.Diagnostics.Tracing.StackSources.ParallelLinuxPerfScriptStackSource:TryGetCompleteBuffer(Microsoft.Diagnostics.Tracing.Utilities.FastStream,uint,double,int,byref):ubyte:this (FullOpts)
@@ -9,45 +9,43 @@
; 0 inlinees with PGO data; 0 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T14] ( 4, 6.50) ref -> r7 this class-hnd single-def <Microsoft.Diagnostics.Tracing.StackSources.ParallelLinuxPerfScriptStackSource>
+; V00 this [V00,T13] ( 4, 6.50) ref -> r7 this class-hnd single-def <Microsoft.Diagnostics.Tracing.StackSources.ParallelLinuxPerfScriptStackSource>
; V01 arg1 [V01,T00] ( 16, 38 ) ref -> r5 class-hnd single-def <Microsoft.Diagnostics.Tracing.Utilities.FastStream>
-; V02 arg2 [V02,T16] ( 6, 5 ) int -> r8 single-def
-; V03 arg3 [V03,T17] ( 5, 4 ) double -> [sp+0x18] single-def
-; V04 arg4 [V04,T13] ( 5, 7 ) int -> r6 single-def
-; V05 arg5 [V05,T19] ( 6, 5 ) byref -> r9 single-def
-; V06 loc0 [V06,T21] ( 3, 3 ) int -> [sp+0x14]
-; V07 loc1 [V07,T04] ( 9, 23.50) int -> r10
-; V08 loc2 [V08,T08] ( 3, 12 ) ubyte -> [sp+0x10] spill-single-def
+; V02 arg2 [V02,T14] ( 6, 5 ) int -> [sp+0x24] single-def
+; V03 arg3 [V03,T15] ( 5, 4 ) double -> [sp+0x18] single-def
+; V04 arg4 [V04,T12] ( 5, 7 ) int -> r6 single-def
+; V05 arg5 [V05,T17] ( 6, 5 ) byref -> r9 single-def
+; V06 loc0 [V06,T19] ( 3, 3 ) int -> [sp+0x14]
+; V07 loc1 [V07,T05] ( 8, 19.50) int -> r10
+; V08 loc2 [V08,T10] ( 3, 12 ) ubyte -> [sp+0x10] spill-single-def
; V09 OutArgs [V09 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T09] ( 2, 16 ) ref -> [sp+0x0C] class-hnd spill-single-def "impAppendStmt" <Microsoft.Diagnostics.Tracing.StackSources.LinuxPerfScriptEventParser>
-; V11 tmp2 [V11,T20] ( 5, 4.50) int -> r10 "Inline stloc first use temp"
+; V10 tmp1 [V10,T08] ( 2, 16 ) ref -> [sp+0x08] class-hnd spill-single-def "impAppendStmt" <Microsoft.Diagnostics.Tracing.StackSources.LinuxPerfScriptEventParser>
+; V11 tmp2 [V11,T18] ( 5, 4.50) int -> r10 "Inline stloc first use temp"
; V12 tmp3 [V12,T06] ( 5, 18 ) int -> r3 "Inline stloc first use temp"
-; V13 tmp4 [V13,T05] ( 3, 20 ) int -> r1 "Inlining Arg"
-; V14 tmp5 [V14,T07] ( 5, 18 ) int -> r2 "Inline stloc first use temp"
-; V15 tmp6 [V15,T18] ( 3, 6 ) ref -> r0 "arr expr"
+; V13 tmp4 [V13,T04] ( 3, 20 ) int -> r1 "Inlining Arg"
+; V14 tmp5 [V14,T07] ( 5, 18 ) int -> r12 "Inline stloc first use temp"
+; V15 tmp6 [V15,T16] ( 3, 6 ) ref -> r0 "arr expr"
; V16 tmp7 [V16,T01] ( 3, 24 ) ref -> r0 "arr expr"
-; V17 tmp8 [V17,T02] ( 3, 24 ) ref -> r1 "arr expr"
-; V18 tmp9 [V18,T10] ( 2, 16 ) ref -> r0 "argument with side effect"
-; V19 tmp10 [V19,T12] ( 2, 16 ) int -> r1 "argument with side effect"
-; V20 tmp11 [V20,T11] ( 2, 16 ) ref -> r1 "argument with side effect"
-;* V21 tmp12 [V21,T15] ( 0, 0 ) int -> zero-ref "argument with side effect"
-; V22 cse0 [V22,T23] ( 3, 1.50) int -> r10 "CSE - moderate"
-; V23 rat0 [V23,T22] ( 3, 3 ) int -> r1 "ReplaceWithLclVar is creating a new local variable"
-; V24 rat1 [V24,T03] ( 3, 24 ) int -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V17 tmp8 [V17,T02] ( 3, 24 ) ref -> r0 "arr expr"
+; V18 tmp9 [V18,T09] ( 2, 16 ) int -> r0 "argument with side effect"
+; V19 cse0 [V19,T11] ( 3, 12 ) int -> [sp+0x0C] spill-single-def "CSE - aggressive"
+; V20 cse1 [V20,T21] ( 3, 1.50) int -> r10 "CSE - moderate"
+; V21 rat0 [V21,T20] ( 3, 3 ) int -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V22 rat1 [V22,T03] ( 3, 24 ) int -> r1 "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 36
+; Lcl frame size = 44
G_M40376_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 36
- add r11, sp, 64
+ sub sp, 44
+ add r11, sp, 72
mov r7, r0
; gcrRegs +[r7]
mov r5, r1
; gcrRegs +[r5]
mov r8, r2
mov r6, r3
- ldr r9, [sp+0x48] // [V05 arg5]
+ ldr r9, [sp+0x50] // [V05 arg5]
; byrRegs +[r9]
;; size=22 bbWeight=1 PerfScore 8.00
G_M40376_IG02: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9}, byref, isz
@@ -67,6 +65,7 @@ G_M40376_IG02: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9},
G_M40376_IG03: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9}, byref
mov r0, r5
; gcrRegs +[r0]
+ str r8, [sp+0x24]
mov r1, r8
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
@@ -75,13 +74,14 @@ G_M40376_IG03: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r
blx r3 // Microsoft.Diagnostics.Tracing.Utilities.FastStream:PeekHelper(uint):uint:this
; gcrRegs -[r0]
mov r10, r0
- ;; size=20 bbWeight=0.50 PerfScore 4.00
+ ldr r8, [sp+0x24] // [V02 arg2]
+ ;; size=28 bbWeight=0.50 PerfScore 5.00
G_M40376_IG04: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9}, byref, isz
ldr r0, [r5+0x10]
; gcrRegs +[r0]
ldr r1, [r0+0x04]
cmp r10, r1
- bhs G_M40376_IG21
+ bhs G_M40376_IG24
adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -96,7 +96,7 @@ G_M40376_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movs r0, 1
;; size=2 bbWeight=0.50 PerfScore 0.50
G_M40376_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add sp, 36
+ add sp, 44
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00
G_M40376_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9}, gcvars, byref, isz
@@ -109,7 +109,7 @@ G_M40376_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00A0 {r5 r7
asrs r3, r1, 31
cmp r10, r1
sbcs r0, r3
- bge SHORT G_M40376_IG15
+ bge SHORT G_M40376_IG19
;; size=20 bbWeight=0.50 PerfScore 4.00
G_M40376_IG08: ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9}, byref, isz
ldr r0, [r5+0x24]
@@ -135,7 +135,7 @@ G_M40376_IG10: ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9},
; gcrRegs +[r0]
ldr r1, [r0+0x04]
cmp r3, r1
- bhs SHORT G_M40376_IG21
+ bhs G_M40376_IG24
adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
@@ -148,71 +148,76 @@ G_M40376_IG10: ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9},
ldr r0, [r0]
ldr r2, [r7+r0]
; gcrRegs +[r2]
- str r2, [sp+0x0C] // [V10 tmp1]
+ str r2, [sp+0x08] // [V10 tmp1]
; GC ptr vars +{V10}
- add r1, r10, 1
- ldr r2, [r5+0x24]
+ add lr, r10, 1
+ str lr, [sp+0x0C] // [V19 cse0]
+ mov r1, lr
+ ldr r0, [r5+0x24]
+ add r12, r1, r0
+ ldr r0, [r5+0x1C]
+ cmp r12, r0
+ blo SHORT G_M40376_IG18
+ ;; size=54 bbWeight=4 PerfScore 84.00
+G_M40376_IG11: ; bbWeight=2, gcVars=00000100 {V10}, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9}, gcvars, byref
; gcrRegs -[r2]
- adds r2, r1, r2
- ldr lr, [r5+0x1C]
- cmp r2, lr
- blo SHORT G_M40376_IG12
- ;; size=46 bbWeight=4 PerfScore 76.00
-G_M40376_IG11: ; bbWeight=2, gcVars=00000200 {V10}, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9}, gcvars, byref
mov r0, r5
; gcrRegs +[r0]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
- ldr r2, [r4]
- blx r2 // Microsoft.Diagnostics.Tracing.Utilities.FastStream:PeekHelper(uint):uint:this
+ ldr r12, [r4]
+ blx r12 // Microsoft.Diagnostics.Tracing.Utilities.FastStream:PeekHelper(uint):uint:this
; gcrRegs -[r0]
- mov r2, r0
- ;; size=18 bbWeight=2 PerfScore 14.00
-G_M40376_IG12: ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9}, byref, isz
- ldr r0, [sp+0x0C]
+ mov r12, r0
+ str r8, [sp+0x24] // [V02 arg2]
+ ldr r2, [sp+0x08] // [V10 tmp1]
+ ; gcrRegs +[r2]
+ ;; size=26 bbWeight=2 PerfScore 18.00
+G_M40376_IG12: ; bbWeight=4, gcrefRegs=00A4 {r2 r5 r7}, byrefRegs=0200 {r9}, byref, isz
+ ldr r0, [r5+0x10]
+ ; gcrRegs +[r0]
+ ldr r1, [r0+0x04]
+ cmp r12, r1
+ bhs SHORT G_M40376_IG24
+ adds r0, 8
+ ; gcrRegs -[r0]
+ ; byrRegs +[r0]
+ ldrb r0, [r0+r12]
+ ; byrRegs -[r0]
+ mov r3, r0
+ mov r0, r2
; gcrRegs +[r0]
mov r1, r5
; gcrRegs +[r1]
- ldr r1, [r1+0x10]
- ldr lr, [r1+0x04]
- cmp r2, lr
- bhs SHORT G_M40376_IG21
- adds r1, 8
- ; gcrRegs -[r1]
- ; byrRegs +[r1]
- ldrb r1, [r1+r2]
- ; byrRegs -[r1]
- mov r3, r1
- mov r1, r5
- ; gcrRegs +[r1]
ldr r2, [sp+0x10] // [V08 loc2]
+ ; gcrRegs -[r2]
movw r4, LOW RELOC 0xD1FFAB1E
movt r4, HIGH RELOC 0xD1FFAB1E
add r4, pc
- ldr r12, [r0]
- ldr lr, [r4]
+ ldr r8, [r0]
+ ldr r12, [r4]
; GC ptr vars -{V10}
- blx lr // Microsoft.Diagnostics.Tracing.StackSources.LinuxPerfScriptEventParser:IsEndOfSample(Microsoft.Diagnostics.Tracing.Utilities.FastStream,ubyte,ubyte):ubyte:this
+ blx r12 // Microsoft.Diagnostics.Tracing.StackSources.LinuxPerfScriptEventParser:IsEndOfSample(Microsoft.Diagnostics.Tracing.Utilities.FastStream,ubyte,ubyte):ubyte:this
; gcrRegs -[r0-r1]
cmp r0, 0
- bne SHORT G_M40376_IG17
- ldr r4, [sp+0x10] // [V08 loc2]
- cmp r4, 10
+ bne SHORT G_M40376_IG20
+ ldr r10, [sp+0x10] // [V08 loc2]
+ cmp r10, 10
bne SHORT G_M40376_IG14
- ;; size=54 bbWeight=4 PerfScore 88.00
+ ;; size=56 bbWeight=4 PerfScore 84.00
G_M40376_IG13: ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9}, byref
ldr r4, [r9]
str r4, [sp+0x14] // [V06 loc0]
;; size=6 bbWeight=2 PerfScore 4.00
G_M40376_IG14: ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9}, byref, isz
- add r10, r10, 1
+ ldr r10, [sp+0x0C] // [V19 cse0]
movs r0, 0
mov r1, r6
asrs r2, r1, 31
cmp r10, r1
sbcs r0, r2
- blt SHORT G_M40376_IG08
+ blt SHORT G_M40376_IG17
;; size=16 bbWeight=4 PerfScore 28.00
G_M40376_IG15: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9}, byref, isz
movs r0, 0
@@ -222,25 +227,42 @@ G_M40376_IG15: ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r
vldr d4, [sp+0x18] // [V03 arg3]
vcmp d4, d0
vmrs APSR, FPSCR
- bhs SHORT G_M40376_IG19
+ bhs SHORT G_M40376_IG22
ldr r4, [sp+0x14] // [V06 loc0]
str r4, [r9]
movs r0, 0
;; size=36 bbWeight=0.50 PerfScore 5.50
G_M40376_IG16: ; bbWeight=0.50, epilog, nogc, extend
- add sp, 36
+ add sp, 44
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M40376_IG17: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0200 {r9}, gcvars, byref
...
libraries.pmi.linux.arm.checked.mch
-18 (-25.00%) : 179205.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -7,56 +7,47 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 3, 3 ) struct (16) [sp+0x28] do-not-enreg[S] single-def double-align <System.Nullable`1[ulong]>
+; V00 arg0 [V00,T00] ( 6, 6 ) struct (16) [sp+0x18] do-not-enreg[SA] multireg-arg single-def double-align <System.Nullable`1[ulong]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
; V02 OutArgs [V02 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V04 tmp2 [V04,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V05 tmp3 [V05,T01] ( 3, 6 ) struct ( 4) [sp+0x1C] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V06 tmp4 [V06,T00] ( 5, 10 ) struct (16) [sp+0x08] do-not-enreg[SFA] multireg-arg double-align "argument with side effect" <System.Nullable`1[ulong]>
+;* V03 tmp1 [V03,T02] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V04 tmp2 [V04,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V05 tmp3 [V05,T01] ( 3, 6 ) struct ( 4) [sp+0x0C] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 36
+; Lcl frame size = 20
G_M16550_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r0,r1,r2,r3}
push {lr}
- sub sp, 36
+ sub sp, 20
;; size=6 bbWeight=1 PerfScore 3.00
G_M16550_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r0, [sp+0x28]
- str r0, [sp+0x08]
- ldr r0, [sp+0x2C]
- str r0, [sp+0x0C]
- ldr r0, [sp+0x30]
- str r0, [sp+0x10]
- ldr r0, [sp+0x34]
- str r0, [sp+0x14]
movs r0, 0
- strb r0, [sp+0x1C]
- ;; size=22 bbWeight=1 PerfScore 10.00
+ strb r0, [sp+0x0C]
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M16550_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- strb r0, [sp+0x1D]
- ldr r0, [sp+0x08]
- ldr r1, [sp+0x0C]
- ldr r2, [sp+0x10]
- ldr r3, [sp+0x14]
- ldrh lr, [sp+0x1C]
- str lr, [sp]
+ strb r0, [sp+0x0D]
+ ldrh r0, [sp+0x0C]
+ str r0, [sp]
+ ldr r0, [sp+0x18]
+ ldr r1, [sp+0x1C]
+ ldr r2, [sp+0x20]
+ ldr r3, [sp+0x24]
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // System.Text.Json.Nodes.JsonValue:Create(System.Nullable`1[ulong],System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue
; gcrRegs +[r0]
; gcr arg pop 0
- ;; size=34 bbWeight=1 PerfScore 11.00
+ ;; size=32 bbWeight=1 PerfScore 11.00
G_M16550_IG04: ; bbWeight=1, epilog, nogc, extend
- add sp, 36
+ add sp, 20
pop lr
add sp, 16
bx lr
;; size=10 bbWeight=1 PerfScore 4.00
-; Total bytes of code 72, prolog size 6, PerfScore 28.00, instruction count 28, allocated bytes for code 72 (MethodHash=b260bf59) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 54, prolog size 6, PerfScore 20.00, instruction count 20, allocated bytes for code 54 (MethodHash=b260bf59) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -68,19 +59,19 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 36 (0x00024) Actual length = 72 (0x000048)
+ 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 : 6 (0x06)
---- Unwind codes ----
- 09 add sp, sp, #36 ; opsize 16
+ 05 add sp, sp, #20 ; opsize 16
ED 00 pop {lr} ; opsize 16
EC 0F pop {r0,r1,r2,r3} ; opsize 16
FF end
---- Epilog start at index 6 ----
- 09 add sp, sp, #36 ; opsize 16
+ 05 add sp, sp, #20 ; opsize 16
A0 00 pop {lr} ; opsize 32
04 add sp, sp, #16 ; opsize 16
FD end + nop ; opsize 16
-18 (-25.00%) : 179186.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[double]):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -7,56 +7,47 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 3, 3 ) struct (16) [sp+0x28] do-not-enreg[S] single-def double-align <System.Nullable`1[double]>
+; V00 arg0 [V00,T00] ( 6, 6 ) struct (16) [sp+0x18] do-not-enreg[SA] multireg-arg single-def double-align <System.Nullable`1[double]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
; V02 OutArgs [V02 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V04 tmp2 [V04,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V05 tmp3 [V05,T01] ( 3, 6 ) struct ( 4) [sp+0x1C] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V06 tmp4 [V06,T00] ( 5, 10 ) struct (16) [sp+0x08] do-not-enreg[SFA] multireg-arg double-align "argument with side effect" <System.Nullable`1[double]>
+;* V03 tmp1 [V03,T02] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V04 tmp2 [V04,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V05 tmp3 [V05,T01] ( 3, 6 ) struct ( 4) [sp+0x0C] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 36
+; Lcl frame size = 20
G_M42124_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r0,r1,r2,r3}
push {lr}
- sub sp, 36
+ sub sp, 20
;; size=6 bbWeight=1 PerfScore 3.00
G_M42124_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r0, [sp+0x28]
- str r0, [sp+0x08]
- ldr r0, [sp+0x2C]
- str r0, [sp+0x0C]
- ldr r0, [sp+0x30]
- str r0, [sp+0x10]
- ldr r0, [sp+0x34]
- str r0, [sp+0x14]
movs r0, 0
- strb r0, [sp+0x1C]
- ;; size=22 bbWeight=1 PerfScore 10.00
+ strb r0, [sp+0x0C]
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M42124_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- strb r0, [sp+0x1D]
- ldr r0, [sp+0x08]
- ldr r1, [sp+0x0C]
- ldr r2, [sp+0x10]
- ldr r3, [sp+0x14]
- ldrh lr, [sp+0x1C]
- str lr, [sp]
+ strb r0, [sp+0x0D]
+ ldrh r0, [sp+0x0C]
+ str r0, [sp]
+ ldr r0, [sp+0x18]
+ ldr r1, [sp+0x1C]
+ ldr r2, [sp+0x20]
+ ldr r3, [sp+0x24]
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // System.Text.Json.Nodes.JsonValue:Create(System.Nullable`1[double],System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue
; gcrRegs +[r0]
; gcr arg pop 0
- ;; size=34 bbWeight=1 PerfScore 11.00
+ ;; size=32 bbWeight=1 PerfScore 11.00
G_M42124_IG04: ; bbWeight=1, epilog, nogc, extend
- add sp, 36
+ add sp, 20
pop lr
add sp, 16
bx lr
;; size=10 bbWeight=1 PerfScore 4.00
-; Total bytes of code 72, prolog size 6, PerfScore 28.00, instruction count 28, allocated bytes for code 72 (MethodHash=91715b73) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[double]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 54, prolog size 6, PerfScore 20.00, instruction count 20, allocated bytes for code 54 (MethodHash=91715b73) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[double]):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -68,19 +59,19 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 36 (0x00024) Actual length = 72 (0x000048)
+ 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 : 6 (0x06)
---- Unwind codes ----
- 09 add sp, sp, #36 ; opsize 16
+ 05 add sp, sp, #20 ; opsize 16
ED 00 pop {lr} ; opsize 16
EC 0F pop {r0,r1,r2,r3} ; opsize 16
FF end
---- Epilog start at index 6 ----
- 09 add sp, sp, #36 ; opsize 16
+ 05 add sp, sp, #20 ; opsize 16
A0 00 pop {lr} ; opsize 32
04 add sp, sp, #16 ; opsize 16
FD end + nop ; opsize 16
-18 (-25.00%) : 179194.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -7,56 +7,47 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 3, 3 ) struct (16) [sp+0x28] do-not-enreg[S] single-def double-align <System.Nullable`1[long]>
+; V00 arg0 [V00,T00] ( 6, 6 ) struct (16) [sp+0x18] do-not-enreg[SA] multireg-arg single-def double-align <System.Nullable`1[long]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
; V02 OutArgs [V02 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V04 tmp2 [V04,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V05 tmp3 [V05,T01] ( 3, 6 ) struct ( 4) [sp+0x1C] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V06 tmp4 [V06,T00] ( 5, 10 ) struct (16) [sp+0x08] do-not-enreg[SFA] multireg-arg double-align "argument with side effect" <System.Nullable`1[long]>
+;* V03 tmp1 [V03,T02] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V04 tmp2 [V04,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V05 tmp3 [V05,T01] ( 3, 6 ) struct ( 4) [sp+0x0C] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 36
+; Lcl frame size = 20
G_M61747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r0,r1,r2,r3}
push {lr}
- sub sp, 36
+ sub sp, 20
;; size=6 bbWeight=1 PerfScore 3.00
G_M61747_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r0, [sp+0x28]
- str r0, [sp+0x08]
- ldr r0, [sp+0x2C]
- str r0, [sp+0x0C]
- ldr r0, [sp+0x30]
- str r0, [sp+0x10]
- ldr r0, [sp+0x34]
- str r0, [sp+0x14]
movs r0, 0
- strb r0, [sp+0x1C]
- ;; size=22 bbWeight=1 PerfScore 10.00
+ strb r0, [sp+0x0C]
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M61747_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- strb r0, [sp+0x1D]
- ldr r0, [sp+0x08]
- ldr r1, [sp+0x0C]
- ldr r2, [sp+0x10]
- ldr r3, [sp+0x14]
- ldrh lr, [sp+0x1C]
- str lr, [sp]
+ strb r0, [sp+0x0D]
+ ldrh r0, [sp+0x0C]
+ str r0, [sp]
+ ldr r0, [sp+0x18]
+ ldr r1, [sp+0x1C]
+ ldr r2, [sp+0x20]
+ ldr r3, [sp+0x24]
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // System.Text.Json.Nodes.JsonValue:Create(System.Nullable`1[long],System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue
; gcrRegs +[r0]
; gcr arg pop 0
- ;; size=34 bbWeight=1 PerfScore 11.00
+ ;; size=32 bbWeight=1 PerfScore 11.00
G_M61747_IG04: ; bbWeight=1, epilog, nogc, extend
- add sp, 36
+ add sp, 20
pop lr
add sp, 16
bx lr
;; size=10 bbWeight=1 PerfScore 4.00
-; Total bytes of code 72, prolog size 6, PerfScore 28.00, instruction count 28, allocated bytes for code 72 (MethodHash=5fc80ecc) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 54, prolog size 6, PerfScore 20.00, instruction count 20, allocated bytes for code 54 (MethodHash=5fc80ecc) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -68,19 +59,19 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 36 (0x00024) Actual length = 72 (0x000048)
+ 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 : 6 (0x06)
---- Unwind codes ----
- 09 add sp, sp, #36 ; opsize 16
+ 05 add sp, sp, #20 ; opsize 16
ED 00 pop {lr} ; opsize 16
EC 0F pop {r0,r1,r2,r3} ; opsize 16
FF end
---- Epilog start at index 6 ----
- 09 add sp, sp, #36 ; opsize 16
+ 05 add sp, sp, #20 ; opsize 16
A0 00 pop {lr} ; opsize 32
04 add sp, sp, #16 ; opsize 16
FD end + nop ; opsize 16
+16 (+8.51%) : 79904.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
@@ -8,30 +8,28 @@
; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 3 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V00 this [V00,T02] ( 3, 3 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Nullable`1[ubyte]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T03] ( 2, 4 ) ref -> r1 class-hnd single-def "dup spill" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def
-; V05 tmp3 [V05,T05] ( 4, 3.50) ref -> r1
-; V06 tmp4 [V06,T02] ( 5, 5 ) ref -> [sp+0x00] class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
-; V07 tmp5 [V07,T07] ( 3, 3 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V08 tmp6 [V08,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V09 tmp7 [V09,T10] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
-; V10 tmp8 [V10,T01] ( 3, 6 ) struct ( 4) [sp+0x04] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;* V11 tmp9 [V11,T08] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V12 tmp10 [V12,T04] ( 2, 4 ) ref -> r1 single-def "argument with side effect"
-;* V13 cse0 [V13,T11] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V14 cse1 [V14,T06] ( 4, 3 ) int -> r5 "CSE - aggressive"
+; V05 tmp3 [V05,T04] ( 4, 3.50) ref -> r1
+; V06 tmp4 [V06,T01] ( 5, 5 ) ref -> [sp+0x00] class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
+; V07 tmp5 [V07,T05] ( 3, 3 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+;* V08 tmp6 [V08,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V09 tmp7 [V09,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
+; V10 tmp8 [V10,T00] ( 3, 6 ) struct ( 4) [sp+0x04] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
+;* V11 cse0 [V11,T08] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M22152_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r11,lr}
+ push {r4,r11,lr}
+ sub sp, 12
add r11, sp, 16
mov r4, r0
; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M22152_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -41,9 +39,9 @@ G_M22152_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
bne SHORT G_M22152_IG08
;; size=18 bbWeight=1 PerfScore 6.00
G_M22152_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- movw r5, 0xd1ff
- movt r5, 0xd1ff
- ldr r1, [r5]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ ldr r1, [r0]
; gcrRegs +[r1]
cmp r1, 0
bne SHORT G_M22152_IG05
@@ -60,12 +58,14 @@ G_M22152_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs +[r1]
str r1, [sp]
; GC ptr vars +{V06}
- ldr r3, [r5-0x2C]
+ movw r0, 0xd1ff
+ ; gcrRegs -[r0]
+ movt r0, 0xd1ff
+ ldr r3, [r0]
; gcrRegs +[r3]
cmp r3, 0
beq SHORT G_M22152_IG09
adds r0, r1, 4
- ; gcrRegs -[r0]
; byrRegs +[r0]
mov r1, r3
movw r12, 0xd1ff
@@ -78,7 +78,8 @@ G_M22152_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r2, [sp]
; gcrRegs +[r2]
str r1, [r2+0x0C]
- mov r0, r5
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
mov r1, r2
; gcrRegs +[r1]
movw r12, 0xd1ff
@@ -87,18 +88,18 @@ G_M22152_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r1]
mov r1, r2
; gcrRegs +[r1]
- ;; size=72 bbWeight=0.50 PerfScore 12.50
+ ;; size=84 bbWeight=0.50 PerfScore 14.00
G_M22152_IG05: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r2]
; GC ptr vars -{V06}
- movs r0, 0
- strb r0, [sp+0x04]
+ movs r3, 0
+ strb r3, [sp+0x04]
;; size=6 bbWeight=1 PerfScore 2.00
G_M22152_IG06: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
- strb r0, [sp+0x05]
+ strb r3, [sp+0x05]
+ ldrh r3, [sp+0x04]
mov r0, r4
; gcrRegs +[r0]
- ldrh r3, [sp+0x04]
movs r2, 0
movw lr, 0xd1ff
movt lr, 0xd1ff
@@ -107,8 +108,9 @@ G_M22152_IG06: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b
; gcrRegs -[r1 r4]
;; size=26 bbWeight=1 PerfScore 8.00
G_M22152_IG07: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
+ add sp, 12
+ pop {r4,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M22152_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] +[r4]
movw r0, 0xd1ff
@@ -128,7 +130,7 @@ G_M22152_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 188, prolog size 8, PerfScore 37.50, instruction count 62, allocated bytes for code 188 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
+; Total bytes of code 204, prolog size 10, PerfScore 41.00, instruction count 67, allocated bytes for code 204 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -140,7 +142,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 94 (0x0005e) Actual length = 188 (0x0000bc)
+ Function Length : 102 (0x00066) Actual length = 204 (0x0000cc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -148,7 +150,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32
- FF end
+ 03 add sp, sp, #12 ; opsize 16
+ A8 10 pop {r4,r11,lr} ; opsize 32
FF end
+20 (+8.77%) : 208466.dasm - Microsoft.Build.Collections.ArrayDictionary
2[System.Numerics.Vector1[float],System.Nullable1[int]]:set_Item(System.Numerics.Vector1[float],System.Nullable`1[int]):this (FullOpts)@@ -8,25 +8,26 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 7, 12 ) ref -> r5 this class-hnd single-def <Microsoft.Build.Collections.ArrayDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]>
-; V01 arg1 [V01,T00] ( 10, 20 ) struct (16) [sp+0x40] do-not-enreg[SA] multireg-arg single-def double-align <System.Numerics.Vector`1[float]>
-; V02 arg2 [V02,T09] ( 2, 1 ) struct ( 8) [sp+0x50] do-not-enreg[S] single-def <System.Nullable`1[int]>
-; V03 loc0 [V03,T05] ( 2, 5 ) ref -> r6 class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.Numerics.Vector`1[float]]>
-; V04 loc1 [V04,T02] ( 8, 22 ) int -> r7
+; V00 this [V00,T03] ( 7, 12 ) ref -> r5 this class-hnd single-def <Microsoft.Build.Collections.ArrayDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]>
+; V01 arg1 [V01,T04] ( 10, 11 ) struct (16) [sp+0x50] do-not-enreg[SA] multireg-arg single-def double-align <System.Numerics.Vector`1[float]>
+; V02 arg2 [V02,T10] ( 2, 1 ) struct ( 8) [sp+0x60] do-not-enreg[S] single-def <System.Nullable`1[int]>
+; V03 loc0 [V03,T08] ( 2, 5 ) ref -> r6 class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.Numerics.Vector`1[float]]>
+; V04 loc1 [V04,T01] ( 8, 22 ) int -> r7
; V05 OutArgs [V05 ] ( 1, 1 ) struct (24) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T01] ( 3, 24 ) ref -> r0 "arr expr"
-;* V07 tmp2 [V07,T06] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V08 tmp3 [V08,T03] ( 2, 16 ) struct (16) [sp+0x18] do-not-enreg[S] double-align "argument with side effect" <System.Numerics.Vector`1[float]>
-;* V09 tmp4 [V09,T07] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SFA] multireg-arg double-align "argument with side effect" <System.Numerics.Vector`1[float]>
-; V10 tmp5 [V10,T08] ( 3, 3 ) ref -> r3 single-def "arr expr"
+; V06 tmp1 [V06,T00] ( 3, 24 ) ref -> r3 "arr expr"
+; V07 tmp2 [V07,T02] ( 2, 16 ) struct (16) [sp+0x18] do-not-enreg[S] double-align "argument with side effect" <System.Numerics.Vector`1[float]>
+; V08 tmp3 [V08,T09] ( 3, 3 ) ref -> r3 single-def "arr expr"
+; V09 cse0 [V09,T05] ( 4, 6 ) int -> r8 hoist multi-def "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 4, 6 ) int -> r9 hoist multi-def "CSE - aggressive"
+; V11 cse2 [V11,T07] ( 4, 6 ) int -> r10 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 44
G_M22793_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r2,r3}
- push {r4,r5,r6,r7,r11,lr}
- sub sp, 40
- add r11, sp, 56
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
+ sub sp, 44
+ add r11, sp, 72
mov r5, r0
; gcrRegs +[r5]
;; size=14 bbWeight=1 PerfScore 5.00
@@ -37,38 +38,39 @@ G_M22793_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
- movw r0, 0xd1ff
- movt r0, 0xd1ff
- ldr r6, [r0]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ ldr r6, [r3]
; gcrRegs +[r6]
movs r7, 0
- ldr r0, [r5+0x0C]
- cmp r0, 0
+ ldr r3, [r5+0x0C]
+ cmp r3, 0
ble SHORT G_M22793_IG04
- ;; size=38 bbWeight=1 PerfScore 13.00
+ ldr r8, [sp+0x50]
+ ldr r9, [sp+0x54]
+ ldr r10, [sp+0x58]
+ ;; size=50 bbWeight=1 PerfScore 16.00
G_M22793_IG03: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
- ldr r0, [r5+0x04]
- ; gcrRegs +[r0]
- ldr r3, [r0+0x04]
- cmp r7, r3
+ ldr r3, [r5+0x04]
+ ; gcrRegs +[r3]
+ ldr r2, [r3+0x04]
+ cmp r7, r2
bhs SHORT G_M22793_IG08
- lsls r3, r7, 4
- adds r3, 8
- adds r0, r0, r3
- ; gcrRegs -[r0]
- ; byrRegs +[r0]
- ldr r3, [r0]
- str r3, [sp+0x18]
- ldr r3, [r0+0x04]
- str r3, [sp+0x1C]
- ldr r3, [r0+0x08]
- str r3, [sp+0x20]
- ldr r3, [r0+0x0C]
- str r3, [sp+0x24]
- mov r0, r6
- ; gcrRegs +[r0]
- ; byrRegs -[r0]
+ lsls r2, r7, 4
+ adds r2, 8
+ adds r3, r3, r2
+ ; gcrRegs -[r3]
+ ; byrRegs +[r3]
+ ldr r2, [r3]
+ str r2, [sp+0x18]
+ ldr r2, [r3+0x04]
+ str r2, [sp+0x1C]
+ ldr r2, [r3+0x08]
+ str r2, [sp+0x20]
+ ldr r2, [r3+0x0C]
+ str r2, [sp+0x24]
ldr r3, [sp+0x18]
+ ; byrRegs -[r3]
str r3, [sp+0x08]
ldr r3, [sp+0x1C]
str r3, [sp+0x0C]
@@ -76,12 +78,13 @@ G_M22793_IG03: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
str r3, [sp+0x10]
ldr r3, [sp+0x24]
str r3, [sp+0x14]
- ldr r2, [sp+0x40]
- ldr r3, [sp+0x44]
- ldr r1, [sp+0x48]
- ldr lr, [sp+0x4C]
- str r1, [sp]
- str lr, [sp+0x04]
+ ldr r0, [sp+0x5C]
+ mov r2, r8
+ mov r3, r9
+ str r10, [sp]
+ str r0, [sp+0x04]
+ mov r0, r6
+ ; gcrRegs +[r0]
movw r4, 0xd1ff
movt r4, 0xd1ff
ldr r1, [r4]
@@ -93,19 +96,21 @@ G_M22793_IG03: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
ldr r3, [r5+0x0C]
cmp r7, r3
blt SHORT G_M22793_IG03
- ;; size=88 bbWeight=4 PerfScore 160.00
+ ;; size=84 bbWeight=4 PerfScore 156.00
G_M22793_IG04: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
; gcrRegs -[r6]
- ldr r3, [sp+0x50]
+ ldr r3, [sp+0x60]
str r3, [sp+0x08]
- ldr r3, [sp+0x54]
+ ldr r3, [sp+0x64]
str r3, [sp+0x0C]
- ldr r2, [sp+0x40]
- ldr r3, [sp+0x44]
- ldr r0, [sp+0x48]
- ldr r1, [sp+0x4C]
- str r0, [sp]
- str r1, [sp+0x04]
+ ldr r8, [sp+0x50]
+ ldr r9, [sp+0x54]
+ ldr r10, [sp+0x58]
+ ldr r0, [sp+0x5C]
+ mov r2, r8
+ mov r3, r9
+ str r10, [sp]
+ str r0, [sp+0x04]
mov r0, r5
; gcrRegs +[r0]
movw r1, 0xd1ff
@@ -113,10 +118,10 @@ G_M22793_IG04: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
ldr r1, [r1]
blx r1 // Microsoft.Build.Collections.ArrayDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Add(System.Numerics.Vector`1[float],System.Nullable`1[int]):this
; gcrRegs -[r0 r5]
- ;; size=34 bbWeight=0.50 PerfScore 7.50
+ ;; size=46 bbWeight=0.50 PerfScore 8.50
G_M22793_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add sp, 40
- pop {r4,r5,r6,r7,r11,lr}
+ add sp, 44
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
add sp, 8
bx lr
;; size=10 bbWeight=0.50 PerfScore 2.00
@@ -132,14 +137,14 @@ G_M22793_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5},
adds r3, r3, r2
; gcrRegs -[r3]
; byrRegs +[r3]
- ldr r2, [sp+0x50]
+ ldr r2, [sp+0x60]
str r2, [r3]
- ldr r2, [sp+0x54]
+ ldr r2, [sp+0x64]
str r2, [r3+0x04]
;; size=22 bbWeight=0.50 PerfScore 5.50
G_M22793_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add sp, 40
- pop {r4,r5,r6,r7,r11,lr}
+ add sp, 44
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
add sp, 8
bx lr
;; size=10 bbWeight=0.50 PerfScore 2.00
@@ -152,7 +157,7 @@ G_M22793_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 228, prolog size 12, PerfScore 195.00, instruction count 96, allocated bytes for code 228 (MethodHash=af7aa6f6) for method Microsoft.Build.Collections.ArrayDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:set_Item(System.Numerics.Vector`1[float],System.Nullable`1[int]):this (FullOpts)
+; Total bytes of code 248, prolog size 12, PerfScore 195.00, instruction count 100, allocated bytes for code 248 (MethodHash=af7aa6f6) for method Microsoft.Build.Collections.ArrayDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:set_Item(System.Numerics.Vector`1[float],System.Nullable`1[int]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -164,25 +169,27 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 114 (0x00072) Actual length = 228 (0x0000e4)
+ Function Length : 124 (0x0007c) Actual length = 248 (0x0000f8)
---- 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 : 6 (0x06)
+ Epilog Start Index : 5 (0x05)
---- Scope 1
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Condition : 14 (0xe) (always)
- Epilog Start Index : 6 (0x06)
+ Epilog Start Index : 5 (0x05)
---- Unwind codes ----
- 0A add sp, sp, #40 ; opsize 16
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ 0B add sp, sp, #44 ; opsize 16
+ DF pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32
EC 0C pop {r2,r3} ; opsize 16
FF end
- ---- Epilog start at index 6 ----
- 0A add sp, sp, #40 ; opsize 16
- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
+ ---- Epilog start at index 5 ----
+ 0B add sp, sp, #44 ; opsize 16
+ DF pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32
02 add sp, sp, #8 ; opsize 16
FD end + nop ; opsize 16
FF end
+ FF end
+ FF end
+38 (+18.45%) : 93353.dasm - System.Data.RBTree
1[System.Numerics.Vector1[float]]:Search(System.Numerics.Vector`1[float]):int:this (FullOpts)@@ -8,35 +8,36 @@
; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 8, 19 ) ref -> r4 this class-hnd single-def <System.Data.RBTree`1[System.Numerics.Vector`1[float]]>
-; V01 arg1 [V01,T00] ( 6, 18 ) struct (16) [sp+0x48] do-not-enreg[S] single-def double-align <System.Numerics.Vector`1[float]>
-; V02 loc0 [V02,T04] ( 8, 19 ) int -> r5
-; V03 loc1 [V03,T15] ( 3, 12 ) int -> r0
+; V00 this [V00,T02] ( 8, 19 ) ref -> r4 this class-hnd single-def <System.Data.RBTree`1[System.Numerics.Vector`1[float]]>
+; V01 arg1 [V01,T14] ( 6, 9 ) struct (16) [sp+0x58] do-not-enreg[SA] multireg-arg single-def double-align <System.Numerics.Vector`1[float]>
+; V02 loc0 [V02,T03] ( 8, 19 ) int -> r5
+; V03 loc1 [V03,T13] ( 3, 12 ) int -> r0
; V04 OutArgs [V04 ] ( 1, 1 ) struct (24) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref double-align "spilled call-like call argument" <System.Numerics.Vector`1[float]>
;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "field V05._00 (fldOffset=0x0)" P-INDEP
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "field V05._01 (fldOffset=0x8)" P-INDEP
-; V08 tmp4 [V08,T01] ( 3, 24 ) ref -> r0 "arr expr"
-; V09 tmp5 [V09,T02] ( 3, 24 ) ref -> r0 "arr expr"
-; V10 tmp6 [V10,T07] ( 2, 16 ) ref -> r0 "argument with side effect"
-;* V11 tmp7 [V11,T16] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SFA] multireg-arg double-align "argument with side effect" <System.Numerics.Vector`1[float]>
-; V12 tmp8 [V12,T08] ( 2, 16 ) struct (16) [sp+0x18] do-not-enreg[S] double-align "argument with side effect" <System.Numerics.Vector`1[float]>
+; V08 tmp4 [V08,T00] ( 3, 24 ) ref -> r3 "arr expr"
+; V09 tmp5 [V09,T01] ( 3, 24 ) ref -> r3 "arr expr"
+; V10 tmp6 [V10,T06] ( 2, 16 ) struct (16) [sp+0x20] do-not-enreg[S] double-align "argument with side effect" <System.Numerics.Vector`1[float]>
+; V11 tmp7 [V11,T09] ( 3, 12 ) ref -> r0 "arr expr"
+; V12 tmp8 [V12,T10] ( 3, 12 ) ref -> r0 "arr expr"
; V13 tmp9 [V13,T11] ( 3, 12 ) ref -> r0 "arr expr"
; V14 tmp10 [V14,T12] ( 3, 12 ) ref -> r0 "arr expr"
-; V15 tmp11 [V15,T13] ( 3, 12 ) ref -> r0 "arr expr"
-; V16 tmp12 [V16,T14] ( 3, 12 ) ref -> r0 "arr expr"
-; V17 cse0 [V17,T09] ( 4, 12 ) int -> r9 "CSE - aggressive"
-; V18 cse1 [V18,T10] ( 4, 12 ) int -> r7 "CSE - aggressive"
-; V19 cse2 [V19,T05] ( 5, 16 ) int -> r6 "CSE - aggressive"
-; V20 cse3 [V20,T06] ( 5, 16 ) int -> r8 "CSE - aggressive"
+; V15 cse0 [V15,T07] ( 4, 12 ) int -> [sp+0x1C] spill-single-def "CSE - aggressive"
+; V16 cse1 [V16,T08] ( 4, 12 ) int -> r10 "CSE - aggressive"
+; V17 cse2 [V17,T04] ( 5, 16 ) int -> r9 "CSE - aggressive"
+; V18 cse3 [V18,T15] ( 2, 5 ) int -> r6 hoist "CSE - aggressive"
+; V19 cse4 [V19,T16] ( 2, 5 ) int -> r7 hoist "CSE - aggressive"
+; V20 cse5 [V20,T17] ( 2, 5 ) int -> r8 hoist "CSE - aggressive"
+; V21 cse6 [V21,T05] ( 5, 16 ) int -> [sp+0x18] spill-single-def "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 52
G_M52206_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r2,r3}
- push {r4,r5,r6,r7,r8,r9,r11,lr}
- sub sp, 40
- add r11, sp, 64
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
+ sub sp, 52
+ add r11, sp, 80
mov r4, r0
; gcrRegs +[r4]
;; size=14 bbWeight=1 PerfScore 5.00
@@ -44,112 +45,119 @@ G_M52206_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
ldr r5, [r4+0x14]
cmp r5, 0
beq SHORT G_M52206_IG07
- ;; size=6 bbWeight=1 PerfScore 3.00
+ ldr r6, [sp+0x58]
+ ldr r7, [sp+0x5C]
+ ldr r8, [sp+0x60]
+ ;; size=14 bbWeight=1 PerfScore 6.00
G_M52206_IG03: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ldr r3, [r4+0x04]
+ ; gcrRegs +[r3]
+ asr r9, r5, 16
+ ldr r2, [r3+0x04]
+ cmp r9, r2
+ bhs SHORT G_M52206_IG09
+ adds r3, 8
+ ; gcrRegs -[r3]
+ ; byrRegs +[r3]
+ lsl r10, r9, 2
+ ldr r3, [r3+r10]
+ ; gcrRegs +[r3]
+ ; byrRegs -[r3]
+ ldr r3, [r3+0x04]
+ uxth r1, r5
+ str r1, [sp+0x18]
+ ldr r2, [r3+0x04]
+ cmp r1, r2
+ bhs SHORT G_M52206_IG09
+ movs r2, 48
+ mul r2, r1, r2
+ add lr, r2, 8
+ str lr, [sp+0x1C]
+ add r3, lr
+ ; gcrRegs -[r3]
+ ; byrRegs +[r3]
+ ldr r2, [r3+0x18]
+ str r2, [sp+0x20]
+ ldr r2, [r3+0x1C]
+ str r2, [sp+0x24]
+ ldr r2, [r3+0x20]
+ str r2, [sp+0x28]
+ ldr r2, [r3+0x24]
+ str r2, [sp+0x2C]
+ ldr r3, [sp+0x20]
+ ; byrRegs -[r3]
+ str r3, [sp+0x08]
+ ldr r3, [sp+0x24]
+ str r3, [sp+0x0C]
+ ldr r3, [sp+0x28]
+ str r3, [sp+0x10]
+ ldr r3, [sp+0x2C]
+ str r3, [sp+0x14]
+ ldr r0, [sp+0x64]
+ mov r2, r6
+ mov r3, r7
+ str r8, [sp]
+ str r0, [sp+0x04]
mov r0, r4
; gcrRegs +[r0]
- ldr r0, [r0+0x04]
- asrs r6, r5, 16
- ldr r3, [r0+0x04]
- cmp r6, r3
- bhs SHORT G_M52206_IG09
- adds r0, 8
- ; gcrRegs -[r0]
- ; byrRegs +[r0]
- lsls r7, r6, 2
- ldr r0, [r0+r7]
- ; gcrRegs +[r0]
- ; byrRegs -[r0]
- ldr r0, [r0+0x04]
- uxth r8, r5
- ldr r3, [r0+0x04]
- cmp r8, r3
- bhs SHORT G_M52206_IG09
- movs r3, 48
- mul r3, r8, r3
- add r9, r3, 8
- add r0, r9
- ; gcrRegs -[r0]
- ; byrRegs +[r0]
- ldr r3, [r0+0x18]
- str r3, [sp+0x18]
- ldr r3, [r0+0x1C]
- str r3, [sp+0x1C]
- ldr r3, [r0+0x20]
- str r3, [sp+0x20]
- ldr r3, [r0+0x24]
- str r3, [sp+0x24]
- mov r0, r4
- ; gcrRegs +[r0]
- ; byrRegs -[r0]
- ldr r2, [sp+0x48]
- ldr r3, [sp+0x4C]
- ldr r1, [sp+0x50]
- ldr lr, [sp+0x54]
- str r1, [sp]
- str lr, [sp+0x04]
- ldr r1, [sp+0x18]
- str r1, [sp+0x08]
- ldr r1, [sp+0x1C]
- str r1, [sp+0x0C]
- ldr r1, [sp+0x20]
- str r1, [sp+0x10]
- ldr r1, [sp+0x24]
- str r1, [sp+0x14]
- ldr r1, [r4]
- ldr r1, [r1+0x2C]
- ldr r1, [r1+0x10]
- blx r1 // <unknown method>
+ ldr r12, [r4]
+ ldr r12, [r12+0x2C]
+ ldr r12, [r12+0x10]
+ blx r12 // <unknown method>
; gcrRegs -[r0]
cmp r0, 0
beq SHORT G_M52206_IG07
cmp r0, 0
bge SHORT G_M52206_IG05
- ;; size=108 bbWeight=4 PerfScore 196.00
+ ;; size=118 bbWeight=4 PerfScore 196.00
G_M52206_IG04: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x04]
; gcrRegs +[r0]
ldr r3, [r0+0x04]
- cmp r6, r3
+ cmp r9, r3
bhs SHORT G_M52206_IG09
adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
- ldr r0, [r0+r7]
+ ldr r0, [r0+r10]
; gcrRegs +[r0]
; byrRegs -[r0]
ldr r0, [r0+0x04]
ldr r3, [r0+0x04]
- cmp r8, r3
+ ldr r10, [sp+0x18] // [V21 cse6]
+ cmp r10, r3
bhs SHORT G_M52206_IG09
- add r0, r9
+ ldr r10, [sp+0x1C] // [V15 cse0]
+ add r0, r10
; gcrRegs -[r0]
; byrRegs +[r0]
ldr r5, [r0+0x04]
b SHORT G_M52206_IG06
- ;; size=26 bbWeight=2 PerfScore 26.00
+ ;; size=36 bbWeight=2 PerfScore 30.00
G_M52206_IG05: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
ldr r0, [r4+0x04]
; gcrRegs +[r0]
ldr r3, [r0+0x04]
- cmp r6, r3
+ cmp r9, r3
bhs SHORT G_M52206_IG09
adds r0, 8
; gcrRegs -[r0]
; byrRegs +[r0]
- ldr r0, [r0+r7]
+ ldr r0, [r0+r10]
; gcrRegs +[r0]
; byrRegs -[r0]
ldr r0, [r0+0x04]
ldr r3, [r0+0x04]
- cmp r8, r3
+ ldr r10, [sp+0x18] // [V21 cse6]
+ cmp r10, r3
bhs SHORT G_M52206_IG09
- add r0, r9
+ ldr r10, [sp+0x1C] // [V15 cse0]
+ add r0, r10
; gcrRegs -[r0]
; byrRegs +[r0]
ldr r5, [r0+0x08]
- ;; size=24 bbWeight=2 PerfScore 24.00
+ ;; size=34 bbWeight=2 PerfScore 28.00
G_M52206_IG06: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r0]
cmp r5, 0
@@ -160,8 +168,8 @@ G_M52206_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov r0, r5
;; size=2 bbWeight=1 PerfScore 1.00
G_M52206_IG08: ; bbWeight=1, epilog, nogc, extend
- add sp, 40
- pop {r4,r5,r6,r7,r8,r9,r11,lr}
+ add sp, 52
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
add sp, 8
bx lr
...
libraries_tests.run.linux.arm.Release.mch
-46 (-25.00%) : 183663.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetAnalyzedNullability(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState):this (Tier1)
@@ -10,129 +10,106 @@
;
; V00 this [V00,T01] ( 4, 4 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker>
; V01 arg1 [V01,T03] ( 3, 3 ) ref -> r5 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V02 arg2 [V02 ] ( 5, 5 ) struct ( 8) [sp+0x60] do-not-enreg[XS] addr-exposed ld-addr-op single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
+; V02 arg2 [V02 ] ( 5, 5 ) struct ( 8) [sp+0x50] do-not-enreg[XS] addr-exposed ld-addr-op single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Nullable`1[ubyte]>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "non-inline candidate call" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
-; V06 tmp2 [V06 ] ( 2, 4 ) struct (12) [sp+0x3C] do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V07 tmp3 [V07,T00] ( 4, 8 ) struct (20) [sp+0x28] do-not-enreg[S] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
+; V06 tmp2 [V06 ] ( 2, 4 ) struct (12) [sp+0x2C] do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
+; V07 tmp3 [V07,T00] ( 4, 8 ) struct (20) [sp+0x18] do-not-enreg[S] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
;* V08 tmp4 [V08 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Nullable`1[ubyte]>
;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.hasValue (fldOffset=0x0)" P-INDEP
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.value (fldOffset=0x1)" P-INDEP
-; V11 tmp7 [V11,T09] ( 2, 2 ) ref -> r6 single-def "field V05.Type (fldOffset=0x0)" P-INDEP
-; V12 tmp8 [V12,T10] ( 2, 2 ) ubyte -> r7 single-def "field V05.State (fldOffset=0x4)" P-INDEP
-; V13 tmp9 [V13,T04] ( 2, 4 ) ref -> [sp+0x3C] do-not-enreg[H] hidden-struct-arg "field V06.DefaultType (fldOffset=0x0)" P-DEP
-; V14 tmp10 [V14,T05] ( 2, 4 ) ref -> [sp+0x40] do-not-enreg[H] hidden-struct-arg "field V06._extensions (fldOffset=0x4)" P-DEP
-; V15 tmp11 [V15,T07] ( 2, 4 ) ubyte -> [sp+0x44] do-not-enreg[H] hidden-struct-arg "field V06.DefaultNullableAnnotation (fldOffset=0x8)" P-DEP
-;* V16 tmp12 [V16,T12] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.hasValue (fldOffset=0x0)" P-INDEP
-;* V17 tmp13 [V17,T13] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.value (fldOffset=0x1)" P-INDEP
-; V18 tmp14 [V18,T02] ( 3, 6 ) struct ( 4) [sp+0x24] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;* V19 tmp15 [V19,T11] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V20 tmp16 [V20,T06] ( 2, 4 ) ref -> r5 single-def "argument with side effect"
-; V21 tmp17 [V21,T08] ( 2, 4 ) struct (20) [sp+0x10] do-not-enreg[S] must-init single-def "argument with side effect" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
+; V11 tmp7 [V11,T07] ( 2, 2 ) ref -> r6 single-def "field V05.Type (fldOffset=0x0)" P-INDEP
+; V12 tmp8 [V12,T08] ( 2, 2 ) ubyte -> r7 single-def "field V05.State (fldOffset=0x4)" P-INDEP
+; V13 tmp9 [V13,T04] ( 2, 4 ) ref -> [sp+0x2C] do-not-enreg[H] hidden-struct-arg "field V06.DefaultType (fldOffset=0x0)" P-DEP
+; V14 tmp10 [V14,T05] ( 2, 4 ) ref -> [sp+0x30] do-not-enreg[H] hidden-struct-arg "field V06._extensions (fldOffset=0x4)" P-DEP
+; V15 tmp11 [V15,T06] ( 2, 4 ) ubyte -> [sp+0x34] do-not-enreg[H] hidden-struct-arg "field V06.DefaultNullableAnnotation (fldOffset=0x8)" P-DEP
+;* V16 tmp12 [V16,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.hasValue (fldOffset=0x0)" P-INDEP
+;* V17 tmp13 [V17,T10] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.value (fldOffset=0x1)" P-INDEP
+; V18 tmp14 [V18,T02] ( 3, 6 ) struct ( 4) [sp+0x14] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
;
-; Lcl frame size = 72
+; Lcl frame size = 56
G_M63285_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r2,r3}
push {r4,r5,r6,r7,r11,lr}
- sub sp, 72
- add r11, sp, 88
- sub r4, r11, 72
- movs r5, 7
+ sub sp, 56
+ add r11, sp, 72
+ sub r4, r11, 48
movs r2, 0
movs r3, 0
stm r4!, {r2,r3}
- subs r5, 1
- bhi SHORT pc-6 (-3 instructions)
+ stm r4!, {r2,r3}
+ stm r4!, {r2,r3}
+ stm r4!, {r2,r3}
mov r4, r0
; gcrRegs +[r4]
mov r5, r1
; gcrRegs +[r5]
;; size=32 bbWeight=1 PerfScore 13.00
G_M63285_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- ldr r6, [sp+0x60]
+ ldr r6, [sp+0x50]
; gcrRegs +[r6]
- ldrb r7, [sp+0x64]
+ ldrb r7, [sp+0x54]
ldr r2, [r4+0x04]
; gcrRegs +[r2]
- add r1, sp, 60
- add r0, sp, 96
+ add r1, sp, 44
+ add r0, sp, 80
movs r3, 0
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // <unknown method>
; gcrRegs -[r2]
- str r6, [sp+0x28]
- strb r7, [sp+0x2C]
+ str r6, [sp+0x18]
+ strb r7, [sp+0x1C]
;; size=34 bbWeight=1 PerfScore 12.00
G_M63285_IG03: ; bbWeight=1, nogc, extend
- ldr r0, [sp+0x3C]
- str r0, [sp+0x30]
- ldr r0, [sp+0x40]
- str r0, [sp+0x34]
- ldr r0, [sp+0x44]
- str r0, [sp+0x38]
+ ldr r3, [sp+0x2C]
+ str r3, [sp+0x20]
+ ldr r3, [sp+0x30]
+ str r3, [sp+0x24]
+ ldr r3, [sp+0x34]
+ str r3, [sp+0x28]
;; size=12 bbWeight=1 PerfScore 6.00
G_M63285_IG04: ; bbWeight=1, extend
- add r0, sp, 16
- ; byrRegs +[r0]
- add r1, sp, 40
- ; byrRegs +[r1]
- ldr r2, [r1!+0x04]
- ; gcrRegs +[r2]
- str r2, [r0!+0x04]
- ldr r2, [r1!+0x04]
- ; gcrRegs -[r2]
- str r2, [r0!+0x04]
- ldr r2, [r1!+0x04]
- ; gcrRegs +[r2]
- str r2, [r0!+0x04]
- ldr r2, [r1!+0x04]
- str r2, [r0!+0x04]
- ldr r2, [r1!+0x04]
- ; gcrRegs -[r2]
- str r2, [r0!+0x04]
- movs r0, 0
- ; byrRegs -[r0]
- strb r0, [sp+0x24]
- ;; size=50 bbWeight=1 PerfScore 14.00
+ movs r3, 0
+ strb r3, [sp+0x14]
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M63285_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
; gcrRegs -[r6]
- ; byrRegs -[r1]
- strb r0, [sp+0x25]
- mov r0, r4
- ; gcrRegs +[r0]
- mov r1, r5
- ; gcrRegs +[r1]
- ldr r2, [sp+0x18]
+ strb r3, [sp+0x15]
+ ldrh r3, [sp+0x14]
+ str r3, [sp+0x0C]
+ ldr r2, [sp+0x20]
; gcrRegs +[r2]
str r2, [sp]
- ldr r2, [sp+0x1C]
+ ldr r2, [sp+0x24]
str r2, [sp+0x04]
- ldr r2, [sp+0x20]
+ ldr r2, [sp+0x28]
; gcrRegs -[r2]
str r2, [sp+0x08]
- ldr r2, [sp+0x10]
+ ldr r2, [sp+0x18]
; gcrRegs +[r2]
- ldr r3, [sp+0x14]
- ldrh lr, [sp+0x24]
- str lr, [sp+0x0C]
+ ldr r3, [sp+0x1C]
+ mov r1, r5
+ ; gcrRegs +[r1]
+ mov r0, r4
+ ; gcrRegs +[r0]
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // <unknown method>
; gcrRegs -[r0-r2 r4-r5]
- ;; size=46 bbWeight=1 PerfScore 17.00
+ ;; size=44 bbWeight=1 PerfScore 17.00
G_M63285_IG06: ; bbWeight=1, epilog, nogc, extend
- add sp, 72
+ add sp, 56
pop {r4,r5,r6,r7,r11,lr}
add sp, 8
bx lr
;; size=10 bbWeight=1 PerfScore 4.00
-; Total bytes of code 184, prolog size 28, PerfScore 66.00, instruction count 66, allocated bytes for code 184 (MethodHash=41b408ca) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:SetAnalyzedNullability(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState):this (Tier1)
+; Total bytes of code 138, prolog size 28, PerfScore 54.00, instruction count 54, allocated bytes for code 138 (MethodHash=41b408ca) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:SetAnalyzedNullability(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState):this (Tier1)
; ============================================================
Unwind Info:
@@ -144,19 +121,19 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 92 (0x0005c) Actual length = 184 (0x0000b8)
+ Function Length : 69 (0x00045) Actual length = 138 (0x00008a)
---- 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 : 6 (0x06)
---- Unwind codes ----
- 12 add sp, sp, #72 ; opsize 16
+ 0E add sp, sp, #56 ; opsize 16
A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
EC 0C pop {r2,r3} ; opsize 16
FF end
---- Epilog start at index 6 ----
- 12 add sp, sp, #72 ; opsize 16
+ 0E add sp, sp, #56 ; opsize 16
A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32
02 add sp, sp, #8 ; opsize 16
FD end + nop ; opsize 16
-24 (-18.18%) : 160849.dasm - Microsoft.CodeAnalysis.CSharp.AccessCheck:IsSymbolAccessible(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref,byref,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte (Instrumented Tier0)
@@ -5,102 +5,83 @@
; partially interruptible
; Final local variable assignments
;
-; V00 arg0 [V00 ] ( 1, 1 ) ref -> [sp+0x3C] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [sp+0x38] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [sp+0x34] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-; V03 arg3 [V03 ] ( 1, 1 ) byref -> [sp+0x30] do-not-enreg[]
-; V04 arg4 [V04 ] ( 1, 1 ) byref -> [sp+0x58] do-not-enreg[]
-; V05 arg5 [V05 ] ( 1, 1 ) ref -> [sp+0x5C] do-not-enreg[] class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]>
+; V00 arg0 [V00 ] ( 1, 1 ) ref -> [sp+0x2C] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [sp+0x28] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [sp+0x24] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V03 arg3 [V03 ] ( 1, 1 ) byref -> [sp+0x20] do-not-enreg[]
+; V04 arg4 [V04 ] ( 1, 1 ) byref -> [sp+0x40] do-not-enreg[]
+; V05 arg5 [V05 ] ( 1, 1 ) ref -> [sp+0x44] do-not-enreg[] class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (12) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07 ] ( 1, 1 ) ref -> [sp+0x2C] do-not-enreg[] must-init "handle histogram profile tmp"
-; V08 tmp2 [V08 ] ( 1, 1 ) ref -> [sp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp3 [V09 ] ( 1, 1 ) ref -> [sp+0x24] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp4 [V10 ] ( 1, 1 ) ref -> [sp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V11 tmp5 [V11 ] ( 1, 1 ) ref -> [sp+0x1C] do-not-enreg[] must-init "argument with side effect"
-; V12 tmp6 [V12 ] ( 1, 1 ) byref -> [sp+0x18] do-not-enreg[] must-init "argument with side effect"
-; V13 tmp7 [V13 ] ( 1, 1 ) ref -> [sp+0x14] do-not-enreg[] must-init "argument with side effect"
+; V07 tmp1 [V07 ] ( 1, 1 ) ref -> [sp+0x1C] do-not-enreg[] must-init "handle histogram profile tmp"
+; V08 tmp2 [V08 ] ( 1, 1 ) ref -> [sp+0x18] do-not-enreg[] must-init "argument with side effect"
+; V09 tmp3 [V09 ] ( 1, 1 ) ref -> [sp+0x14] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M63673_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r10,r11,lr}
- sub sp, 64
- add r11, sp, 80
- sub r6, r11, 60
+ push {r4,r10,r11,lr}
+ sub sp, 48
+ add r11, sp, 56
movs r4, 0
- movs r5, 0
- stm r6!, {r4,r5}
- stm r6!, {r4,r5}
- stm r6!, {r4,r5}
- str r4, [r6]
- str r0, [sp+0x3C] // [V00 arg0]
- str r1, [sp+0x38] // [V01 arg1]
- str r2, [sp+0x34] // [V02 arg2]
- str r3, [sp+0x30] // [V03 arg3]
- ;; size=34 bbWeight=1 PerfScore 14.00
+ str r4, [sp+0x1C] // [V07 tmp1]
+ str r4, [sp+0x18] // [V08 tmp2]
+ str r4, [sp+0x14] // [V09 tmp3]
+ str r0, [sp+0x2C] // [V00 arg0]
+ str r1, [sp+0x28] // [V01 arg1]
+ str r2, [sp+0x24] // [V02 arg2]
+ str r3, [sp+0x20] // [V03 arg3]
+ ;; size=26 bbWeight=1 PerfScore 11.00
G_M63673_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r0, [sp+0x3C]
+ ldr r0, [sp+0x28]
; gcrRegs +[r0]
- str r0, [sp+0x14] // [V13 tmp7]
- ldr r0, [sp+0x38] // [V01 arg1]
- str r0, [sp+0x20] // [V10 tmp4]
- ldr r0, [sp+0x34] // [V02 arg2]
- str r0, [sp+0x1C] // [V11 tmp5]
- ldr r0, [sp+0x30] // [V03 arg3]
- ; gcrRegs -[r0]
- ; byrRegs +[r0]
- str r0, [sp+0x18] // [V12 tmp6]
- ldr r0, [sp+0x38] // [V01 arg1]
- ; gcrRegs +[r0]
- ; byrRegs -[r0]
- str r0, [sp+0x2C] // [V07 tmp1]
- ldr r0, [sp+0x2C] // [V07 tmp1]
+ str r0, [sp+0x1C] // [V07 tmp1]
+ ldr r0, [sp+0x1C] // [V07 tmp1]
movw r1, 0xd1ff
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[r0]
- ldr r0, [sp+0x2C] // [V07 tmp1]
+ ldr r0, [sp+0x1C] // [V07 tmp1]
; gcrRegs +[r0]
- str r0, [sp+0x28] // [V08 tmp2]
- ldr r0, [sp+0x28] // [V08 tmp2]
- ldr r3, [sp+0x28] // [V08 tmp2]
+ str r0, [sp+0x18] // [V08 tmp2]
+ ldr r0, [sp+0x18] // [V08 tmp2]
+ ldr r3, [sp+0x18] // [V08 tmp2]
; gcrRegs +[r3]
ldr r3, [r3]
; gcrRegs -[r3]
ldr r3, [r3+0x34]
ldr r3, [r3+0x14]
blx r3 // <unknown method>
- str r0, [sp+0x24] // [V09 tmp3]
- ldr r1, [sp+0x58] // [V04 arg4]
+ str r0, [sp+0x14] // [V09 tmp3]
+ ldr r1, [sp+0x40] // [V04 arg4]
; byrRegs +[r1]
str r1, [sp+0x04] // [V06 OutArgs+0x04]
- ldr r1, [sp+0x5C] // [V05 arg5]
+ ldr r1, [sp+0x44] // [V05 arg5]
; gcrRegs +[r1]
; byrRegs -[r1]
str r1, [sp+0x08] // [V06 OutArgs+0x08]
- ldr r1, [sp+0x24] // [V09 tmp3]
+ ldr r1, [sp+0x14] // [V09 tmp3]
str r1, [sp] // [V06 OutArgs]
- ldr r1, [sp+0x20] // [V10 tmp4]
- ldr r2, [sp+0x1C] // [V11 tmp5]
+ ldr r1, [sp+0x28] // [V01 arg1]
+ ldr r2, [sp+0x24] // [V02 arg2]
; gcrRegs +[r2]
- ldr r3, [sp+0x18] // [V12 tmp6]
+ ldr r3, [sp+0x20] // [V03 arg3]
; byrRegs +[r3]
- ldr r0, [sp+0x14] // [V13 tmp7]
+ ldr r0, [sp+0x2C] // [V00 arg0]
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // <unknown method>
; gcrRegs -[r0-r2]
; byrRegs -[r3]
- ;; size=92 bbWeight=1 PerfScore 39.00
+ ;; size=76 bbWeight=1 PerfScore 31.00
G_M63673_IG03: ; bbWeight=1, epilog, nogc, extend
- add sp, 64
- pop {r4,r5,r6,r10,r11,pc}
+ add sp, 48
+ pop {r4,r10,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 132, prolog size 26, PerfScore 55.00, instruction count 55, allocated bytes for code 132 (MethodHash=f3140746) for method Microsoft.CodeAnalysis.CSharp.AccessCheck:IsSymbolAccessible(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref,byref,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte (Instrumented Tier0)
+; Total bytes of code 108, prolog size 18, PerfScore 44.00, instruction count 44, allocated bytes for code 108 (MethodHash=f3140746) for method Microsoft.CodeAnalysis.CSharp.AccessCheck:IsSymbolAccessible(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref,byref,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte (Instrumented Tier0)
; ============================================================
Unwind Info:
@@ -112,11 +93,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 66 (0x00042) Actual length = 132 (0x000084)
+ Function Length : 54 (0x00036) Actual length = 108 (0x00006c)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 10 add sp, sp, #64 ; opsize 16
- AC 70 pop {r4,r5,r6,r10,r11,lr} ; opsize 32
+ 0C add sp, sp, #48 ; opsize 16
+ AC 10 pop {r4,r10,r11,lr} ; opsize 32
FF end
-24 (-18.18%) : 24271.dasm - Microsoft.CodeAnalysis.CSharp.AccessCheck:IsSymbolAccessible(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref,byref,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte (Instrumented Tier0)
@@ -5,102 +5,83 @@
; partially interruptible
; Final local variable assignments
;
-; V00 arg0 [V00 ] ( 1, 1 ) ref -> [sp+0x3C] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [sp+0x38] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [sp+0x34] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-; V03 arg3 [V03 ] ( 1, 1 ) byref -> [sp+0x30] do-not-enreg[]
-; V04 arg4 [V04 ] ( 1, 1 ) byref -> [sp+0x58] do-not-enreg[]
-; V05 arg5 [V05 ] ( 1, 1 ) ref -> [sp+0x5C] do-not-enreg[] class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]>
+; V00 arg0 [V00 ] ( 1, 1 ) ref -> [sp+0x2C] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [sp+0x28] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [sp+0x24] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V03 arg3 [V03 ] ( 1, 1 ) byref -> [sp+0x20] do-not-enreg[]
+; V04 arg4 [V04 ] ( 1, 1 ) byref -> [sp+0x40] do-not-enreg[]
+; V05 arg5 [V05 ] ( 1, 1 ) ref -> [sp+0x44] do-not-enreg[] class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (12) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07 ] ( 1, 1 ) ref -> [sp+0x2C] do-not-enreg[] must-init "handle histogram profile tmp"
-; V08 tmp2 [V08 ] ( 1, 1 ) ref -> [sp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp3 [V09 ] ( 1, 1 ) ref -> [sp+0x24] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp4 [V10 ] ( 1, 1 ) ref -> [sp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V11 tmp5 [V11 ] ( 1, 1 ) ref -> [sp+0x1C] do-not-enreg[] must-init "argument with side effect"
-; V12 tmp6 [V12 ] ( 1, 1 ) byref -> [sp+0x18] do-not-enreg[] must-init "argument with side effect"
-; V13 tmp7 [V13 ] ( 1, 1 ) ref -> [sp+0x14] do-not-enreg[] must-init "argument with side effect"
+; V07 tmp1 [V07 ] ( 1, 1 ) ref -> [sp+0x1C] do-not-enreg[] must-init "handle histogram profile tmp"
+; V08 tmp2 [V08 ] ( 1, 1 ) ref -> [sp+0x18] do-not-enreg[] must-init "argument with side effect"
+; V09 tmp3 [V09 ] ( 1, 1 ) ref -> [sp+0x14] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M63673_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r10,r11,lr}
- sub sp, 64
- add r11, sp, 80
- sub r6, r11, 60
+ push {r4,r10,r11,lr}
+ sub sp, 48
+ add r11, sp, 56
movs r4, 0
- movs r5, 0
- stm r6!, {r4,r5}
- stm r6!, {r4,r5}
- stm r6!, {r4,r5}
- str r4, [r6]
- str r0, [sp+0x3C] // [V00 arg0]
- str r1, [sp+0x38] // [V01 arg1]
- str r2, [sp+0x34] // [V02 arg2]
- str r3, [sp+0x30] // [V03 arg3]
- ;; size=34 bbWeight=1 PerfScore 14.00
+ str r4, [sp+0x1C] // [V07 tmp1]
+ str r4, [sp+0x18] // [V08 tmp2]
+ str r4, [sp+0x14] // [V09 tmp3]
+ str r0, [sp+0x2C] // [V00 arg0]
+ str r1, [sp+0x28] // [V01 arg1]
+ str r2, [sp+0x24] // [V02 arg2]
+ str r3, [sp+0x20] // [V03 arg3]
+ ;; size=26 bbWeight=1 PerfScore 11.00
G_M63673_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r0, [sp+0x3C]
+ ldr r0, [sp+0x28]
; gcrRegs +[r0]
- str r0, [sp+0x14] // [V13 tmp7]
- ldr r0, [sp+0x38] // [V01 arg1]
- str r0, [sp+0x20] // [V10 tmp4]
- ldr r0, [sp+0x34] // [V02 arg2]
- str r0, [sp+0x1C] // [V11 tmp5]
- ldr r0, [sp+0x30] // [V03 arg3]
- ; gcrRegs -[r0]
- ; byrRegs +[r0]
- str r0, [sp+0x18] // [V12 tmp6]
- ldr r0, [sp+0x38] // [V01 arg1]
- ; gcrRegs +[r0]
- ; byrRegs -[r0]
- str r0, [sp+0x2C] // [V07 tmp1]
- ldr r0, [sp+0x2C] // [V07 tmp1]
+ str r0, [sp+0x1C] // [V07 tmp1]
+ ldr r0, [sp+0x1C] // [V07 tmp1]
movw r1, 0xd1ff
movt r1, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[r0]
- ldr r0, [sp+0x2C] // [V07 tmp1]
+ ldr r0, [sp+0x1C] // [V07 tmp1]
; gcrRegs +[r0]
- str r0, [sp+0x28] // [V08 tmp2]
- ldr r0, [sp+0x28] // [V08 tmp2]
- ldr r3, [sp+0x28] // [V08 tmp2]
+ str r0, [sp+0x18] // [V08 tmp2]
+ ldr r0, [sp+0x18] // [V08 tmp2]
+ ldr r3, [sp+0x18] // [V08 tmp2]
; gcrRegs +[r3]
ldr r3, [r3]
; gcrRegs -[r3]
ldr r3, [r3+0x34]
ldr r3, [r3+0x14]
blx r3 // <unknown method>
- str r0, [sp+0x24] // [V09 tmp3]
- ldr r1, [sp+0x58] // [V04 arg4]
+ str r0, [sp+0x14] // [V09 tmp3]
+ ldr r1, [sp+0x40] // [V04 arg4]
; byrRegs +[r1]
str r1, [sp+0x04] // [V06 OutArgs+0x04]
- ldr r1, [sp+0x5C] // [V05 arg5]
+ ldr r1, [sp+0x44] // [V05 arg5]
; gcrRegs +[r1]
; byrRegs -[r1]
str r1, [sp+0x08] // [V06 OutArgs+0x08]
- ldr r1, [sp+0x24] // [V09 tmp3]
+ ldr r1, [sp+0x14] // [V09 tmp3]
str r1, [sp] // [V06 OutArgs]
- ldr r1, [sp+0x20] // [V10 tmp4]
- ldr r2, [sp+0x1C] // [V11 tmp5]
+ ldr r1, [sp+0x28] // [V01 arg1]
+ ldr r2, [sp+0x24] // [V02 arg2]
; gcrRegs +[r2]
- ldr r3, [sp+0x18] // [V12 tmp6]
+ ldr r3, [sp+0x20] // [V03 arg3]
; byrRegs +[r3]
- ldr r0, [sp+0x14] // [V13 tmp7]
+ ldr r0, [sp+0x2C] // [V00 arg0]
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // <unknown method>
; gcrRegs -[r0-r2]
; byrRegs -[r3]
- ;; size=92 bbWeight=1 PerfScore 39.00
+ ;; size=76 bbWeight=1 PerfScore 31.00
G_M63673_IG03: ; bbWeight=1, epilog, nogc, extend
- add sp, 64
- pop {r4,r5,r6,r10,r11,pc}
+ add sp, 48
+ pop {r4,r10,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 132, prolog size 26, PerfScore 55.00, instruction count 55, allocated bytes for code 132 (MethodHash=f3140746) for method Microsoft.CodeAnalysis.CSharp.AccessCheck:IsSymbolAccessible(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref,byref,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte (Instrumented Tier0)
+; Total bytes of code 108, prolog size 18, PerfScore 44.00, instruction count 44, allocated bytes for code 108 (MethodHash=f3140746) for method Microsoft.CodeAnalysis.CSharp.AccessCheck:IsSymbolAccessible(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref,byref,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte (Instrumented Tier0)
; ============================================================
Unwind Info:
@@ -112,11 +93,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 66 (0x00042) Actual length = 132 (0x000084)
+ Function Length : 54 (0x00036) Actual length = 108 (0x00006c)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 10 add sp, sp, #64 ; opsize 16
- AC 70 pop {r4,r5,r6,r10,r11,lr} ; opsize 32
+ 0C add sp, sp, #48 ; opsize 16
+ AC 10 pop {r4,r10,r11,lr} ; opsize 32
FF end
+4 (+4.76%) : 473635.dasm - System.Reflection.MethodInfo:CreateDelegateSystem.__Canon:System.__Canon:this (Instrumented Tier1)
@@ -8,30 +8,29 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 5, 5 ) ref -> r4 this class-hnd single-def <System.Reflection.MethodInfo>
-; V01 TypeCtx [V01,T01] ( 4, 4 ) int -> r1 single-def
-; V02 arg1 [V02,T02] ( 3, 3 ) ref -> r5 class-hnd single-def <System.Object>
+; V01 TypeCtx [V01,T01] ( 4, 4 ) int -> r5 single-def
+; V02 arg1 [V02,T02] ( 3, 3 ) ref -> r6 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref single-def "handle histogram profile tmp"
-;* V05 tmp2 [V05,T07] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+;* V05 tmp2 [V05,T06] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V06 tmp3 [V06,T03] ( 2, 4 ) ref -> r1 single-def "argument with side effect"
; V07 tmp4 [V07,T04] ( 2, 4 ) ref -> r1 single-def "argument with side effect"
-; V08 tmp5 [V08,T05] ( 2, 4 ) int -> r7 "argument with side effect"
-; V09 cse0 [V09,T06] ( 3, 3 ) int -> r6 "CSE - aggressive"
+; V08 cse0 [V08,T05] ( 3, 3 ) int -> r5 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M26839_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r6,r7,r11,lr}
+ push {r4,r5,r6,r11,lr}
+ sub sp, 12
add r11, sp, 24
str r1, [r11-0x14]
mov r4, r0
; gcrRegs +[r4]
- mov r5, r2
- ; gcrRegs +[r5]
- ;; size=16 bbWeight=1 PerfScore 5.00
-G_M26839_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- ldr r6, [r1+0x20]
- ldr r7, [r6]
+ mov r5, r1
+ mov r6, r2
+ ; gcrRegs +[r6]
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M26839_IG02: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref
mov r0, r4
; gcrRegs +[r0]
movw r1, 0xd1ff
@@ -40,7 +39,8 @@ G_M26839_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[r0]
- ldr r0, [r6]
+ ldr r5, [r5+0x20]
+ ldr r0, [r5]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
@@ -48,27 +48,28 @@ G_M26839_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
mov r1, r0
; gcrRegs +[r1]
mov r0, r4
- mov r2, r5
+ mov r2, r6
; gcrRegs +[r2]
ldr r3, [r4]
ldr r3, [r3+0x40]
ldr r3, [r3+0x0C]
blx r3 // <unknown method>
- ; gcrRegs -[r1-r2 r4-r5]
+ ; gcrRegs -[r1-r2 r4 r6]
mov r1, r0
; gcrRegs +[r1]
- mov r0, r7
+ ldr r0, [r5]
; gcrRegs -[r0]
movw r3, 0xd1ff
movt r3, 0xd1ff
blx r3 // CORINFO_HELP_CHKCASTANY
; gcrRegs -[r1] +[r0]
- ;; size=64 bbWeight=1 PerfScore 24.00
+ ;; size=62 bbWeight=1 PerfScore 23.00
G_M26839_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r4,r5,r6,r7,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
+ add sp, 12
+ pop {r4,r5,r6,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 84, prolog size 12, PerfScore 30.00, instruction count 30, allocated bytes for code 84 (MethodHash=fd4b9728) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon](System.Object):System.__Canon:this (Instrumented Tier1)
+; Total bytes of code 88, prolog size 14, PerfScore 32.00, instruction count 32, allocated bytes for code 88 (MethodHash=fd4b9728) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon](System.Object):System.__Canon:this (Instrumented Tier1)
; ============================================================
Unwind Info:
@@ -80,11 +81,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 42 (0x0002a) Actual length = 84 (0x000054)
+ Function Length : 44 (0x0002c) Actual length = 88 (0x000058)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 FC pop {r2,r3,r4,r5,r6,r7,r11,lr} ; opsize 32
- FF end
+ 03 add sp, sp, #12 ; opsize 16
+ A8 70 pop {r4,r5,r6,r11,lr} ; opsize 32
FF end
+28 (+4.84%) : 126311.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:Populate(System.String,int,int):System.Canon[]:this (Tier1)
@@ -9,7 +9,7 @@
; 4 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 4 ) ref -> r5 this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V00 this [V00,T02] ( 6, 4 ) ref -> [r11-0x48] this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
; V01 arg1 [V01,T00] ( 8, 5.94) ref -> r4 class-hnd single-def <System.String>
; V02 arg2 [V02,T03] ( 6, 4 ) int -> r6 single-def
; V03 arg3 [V03,T04] ( 6, 4 ) int -> r7 single-def
@@ -23,8 +23,8 @@
; V11 loc7 [V11 ] ( 3, 0 ) byref -> [r11-0x2C] must-init pinned
; V12 loc8 [V12,T15] ( 2, 2 ) int -> r3
; V13 OutArgs [V13 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T02] ( 7, 6 ) int -> [r11-0x30] spill-single-def
-; V15 tmp2 [V15,T05] ( 3, 6 ) ref -> [r11-0x48] class-hnd exact spill-single-def "spilling ret_expr" <System.Text.UTF8Encoding+UTF8EncodingSealed>
+; V14 tmp1 [V14,T01] ( 7, 6 ) int -> [r11-0x30] spill-single-def
+; V15 tmp2 [V15,T05] ( 3, 6 ) ref -> [r11-0x4C] class-hnd exact spill-single-def "spilling ret_expr" <System.Text.UTF8Encoding+UTF8EncodingSealed>
; V16 tmp3 [V16,T09] ( 6, 4 ) int -> [r11-0x34] spill-single-def "guarded devirt return temp"
;* V17 tmp4 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Text.UTF8Encoding+UTF8EncodingSealed>
;* V18 tmp5 [V18,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -44,15 +44,12 @@
; V32 tmp19 [V32,T12] ( 2, 4 ) int -> r0 "argument with side effect"
; V33 tmp20 [V33,T19] ( 3, 0 ) ref -> r0 single-def "arr expr"
; V34 tmp21 [V34,T20] ( 2, 0 ) int -> r3 "Cast away GC"
-;* V35 tmp22 [V35,T24] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V36 tmp23 [V36,T21] ( 2, 0 ) int -> r1 "argument with side effect"
-; V37 tmp24 [V37,T22] ( 2, 0 ) int -> r2 "argument with side effect"
-; V38 tmp25 [V38,T23] ( 2, 0 ) int -> r3 "argument with side effect"
-; V39 GsCookie [V39 ] ( 1, 1 ) int -> [r11-0x4C] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V40 cse0 [V40,T14] ( 3, 2.88) int -> r8 "CSE - moderate"
-; V41 rat0 [V41,T13] ( 3, 3 ) int -> lr "field V30.lo (fldOffset=0x0)" P-INDEP
-; V42 rat1 [V42,T16] ( 2, 2 ) int -> r0 "field V30.hi (fldOffset=0x4)" P-INDEP
-; V43 rat2 [V43,T06] ( 3, 6 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V35 tmp22 [V35,T21] ( 2, 0 ) int -> r3 "argument with side effect"
+; V36 GsCookie [V36 ] ( 1, 1 ) int -> [r11-0x50] do-not-enreg[X] addr-exposed "GSSecurityCookie"
+; V37 cse0 [V37,T14] ( 3, 2.88) int -> r8 "CSE - moderate"
+; V38 rat0 [V38,T13] ( 3, 3 ) int -> lr "field V30.lo (fldOffset=0x0)" P-INDEP
+; V39 rat1 [V39,T16] ( 2, 2 ) int -> r0 "field V30.hi (fldOffset=0x4)" P-INDEP
+; V40 rat2 [V40,T06] ( 3, 6 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 68
@@ -67,57 +64,56 @@ G_M22299_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str r4, [r9+0x34] // [V11 loc7]
movw r4, 0xd1ff
movt r4, 0xd1ff
- str r4, [r9+0x14] // [V39 GsCookie]
- mov r5, r0
- ; gcrRegs +[r5]
+ str r4, [r9+0x10] // [V36 GsCookie]
+ str r0, [r9+0x18] // [V00 this]
+ ; GC ptr vars +{V00}
mov r4, r1
; gcrRegs +[r4]
mov r6, r2
mov r7, r3
- ;; size=46 bbWeight=1 PerfScore 15.00
-G_M22299_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ ;; size=48 bbWeight=1 PerfScore 15.00
+G_M22299_IG02: ; bbWeight=1, gcVars=00000004 {V00}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
cmp r4, 0
- beq G_M22299_IG18
+ beq G_M22299_IG14
;; size=6 bbWeight=1 PerfScore 2.00
-G_M22299_IG03: ; bbWeight=0.94, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M22299_IG03: ; bbWeight=0.94, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r8, [r4+0x04]
cmp r8, 0
- beq G_M22299_IG18
+ beq G_M22299_IG13
;; size=12 bbWeight=0.94 PerfScore 2.81
-G_M22299_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M22299_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r7, 1
- beq G_M22299_IG17
+ beq G_M22299_IG19
;; size=6 bbWeight=1 PerfScore 2.00
-G_M22299_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M22299_IG05: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
add r2, r4, 8
; byrRegs +[r2]
str r2, [r9+0x38] // [V07 loc3]
ldr lr, [r9+0x38] // [V07 loc3]
; byrRegs +[lr]
- mov r1, lr
- str r1, [r9+0x30] // [V14 tmp1]
+ str lr, [r9+0x30] // [V14 tmp1]
movw r2, 0xd1ff
; byrRegs -[r2]
movt r2, 0xd1ff
- ldr lr, [r2]
- ; gcrRegs +[lr]
- ; byrRegs -[lr]
- str lr, [r9+0x18] // [V15 tmp2]
+ ldr r12, [r2]
+ ; gcrRegs +[r12]
+ str r12, [r9+0x14] // [V15 tmp2]
; GC ptr vars +{V15}
- ldrsb r2, [lr]
- cmp r1, 0
- beq G_M22299_IG13
+ ldrsb r2, [r12]
+ cmp lr, 0
+ beq G_M22299_IG15
addw r2, r9, 32 // [V26 tmp13]
addw r3, r9, 28 // [V27 tmp14]
- mov r0, r1
+ mov r0, lr
mov r1, r8
- movw r12, 0xd1ff
- movt r12, 0xd1ff
- ldr r12, [r12]
- blx r12 // <unknown method>
- ; gcrRegs -[lr]
- ldr r1, [r9+0x30] // [V14 tmp1]
- subs r0, r0, r1
+ movw r5, 0xd1ff
+ movt r5, 0xd1ff
+ ldr r5, [r5]
+ blx r5 // <unknown method>
+ ; gcrRegs -[r12]
+ ; byrRegs -[lr]
+ ldr r5, [r9+0x30] // [V14 tmp1]
+ subs r0, r0, r5
movs r1, 2
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -133,13 +129,13 @@ G_M22299_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
movs r1, 0
cmp lr, 0x80000000
sbcs r0, r1
- bhs SHORT G_M22299_IG14
+ bhs SHORT G_M22299_IG16
str lr, [r9+0x28] // [V21 tmp8]
cmp r3, r8
beq SHORT G_M22299_IG06
- ldr r0, [r9+0x18]
+ ldr r0, [r9+0x14]
; gcrRegs +[r0]
- ldr r1, [r9+0x30] // [V14 tmp1]
+ mov r1, r5
mov r2, r8
movw r12, 0xd1ff
movt r12, 0xd1ff
@@ -151,13 +147,13 @@ G_M22299_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
add lr, r0
cmp lr, 0
str lr, [r9+0x28] // [V21 tmp8]
- blt SHORT G_M22299_IG14
- ;; size=170 bbWeight=1 PerfScore 53.00
-G_M22299_IG06: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+ blt SHORT G_M22299_IG16
+ ;; size=166 bbWeight=1 PerfScore 52.00
+G_M22299_IG06: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr lr, [r9+0x28] // [V21 tmp8]
str lr, [r9+0x2C] // [V16 tmp3]
cmp lr, 0x400
- bgt SHORT G_M22299_IG15
+ bgt SHORT G_M22299_IG17
mov r3, lr
tst r3, r3
beq SHORT G_M22299_IG09
@@ -168,7 +164,7 @@ G_M22299_IG06: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
bvc SHORT G_M22299_IG07
movs r3, 0
;; size=36 bbWeight=1 PerfScore 13.00
-G_M22299_IG07: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M22299_IG07: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
ldr r0, [sp]
sub r0, sp, 0x1000
cmp r0, r3
@@ -176,19 +172,19 @@ G_M22299_IG07: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
mov sp, r0
b SHORT G_M22299_IG07
;; size=14 bbWeight=1 PerfScore 6.00
-G_M22299_IG08: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+G_M22299_IG08: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
mov sp, r3
ldr r0, [sp]
sub sp, sp, 16
add r3, sp, 16
;; size=10 bbWeight=1 PerfScore 4.00
-G_M22299_IG09: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+G_M22299_IG09: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
str lr, [sp] // [V13 OutArgs]
str r6, [sp+0x04] // [V13 OutArgs+0x04]
str r7, [sp+0x08] // [V13 OutArgs+0x08]
- mov r0, r5
+ ldr r0, [r9+0x18] // [V00 this]
; gcrRegs +[r0]
- ldr r1, [r9+0x30] // [V14 tmp1]
+ mov r1, r5
mov r2, r8
movw lr, 0xd1ff
movt lr, 0xd1ff
@@ -196,14 +192,14 @@ G_M22299_IG09: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
blx lr // <unknown method>
str r0, [r9+0x3C] // [V04 loc0]
;; size=34 bbWeight=1 PerfScore 11.00
-G_M22299_IG10: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+G_M22299_IG10: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; gcrRegs -[r0]
movs r1, 0
str r1, [r9+0x38] // [V07 loc3]
;; size=6 bbWeight=1 PerfScore 2.00
-G_M22299_IG11: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M22299_IG11: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
addw r1, r9, 60 // [V04 loc0]
- mov r0, r5
+ ldr r0, [r9+0x18] // [V00 this]
; gcrRegs +[r0]
mov r2, r4
; gcrRegs +[r2]
@@ -211,28 +207,43 @@ G_M22299_IG11: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
+ ; GC ptr vars -{V00}
blx lr // <unknown method>
- ; gcrRegs -[r0 r2 r4-r5]
+ ; gcrRegs -[r0 r2 r4]
ldr r0, [r9+0x3C] // [V04 loc0]
; gcrRegs +[r0]
movw r12, 0xd1ff
movt r12, 0xd1ff
- ldr lr, [r9+0x14] // [V39 GsCookie]
+ ldr lr, [r9+0x10] // [V36 GsCookie]
cmp r12, lr
beq SHORT G_M22299_IG12
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_FAIL_FAST
; gcrRegs -[r0]
- ;; size=54 bbWeight=1 PerfScore 17.00
+ ;; size=56 bbWeight=1 PerfScore 17.00
G_M22299_IG12: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs +[r0]
mov sp, r9
add sp, 68
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=8 bbWeight=1 PerfScore 3.00
-G_M22299_IG13: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0]
+G_M22299_IG13: ; bbWeight=0.47, gcVars=00000004 {V00}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r0] +[r4]
+ ; GC ptr vars +{V00 V02}
+ ldr r5, [r9+0x18] // [V00 this]
+ ; gcrRegs +[r5]
+ b SHORT G_M22299_IG20
+ ;; size=6 bbWeight=0.47 PerfScore 0.94
...
+6 (+6.67%) : 500844.dasm - System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (Tier1)
@@ -16,12 +16,12 @@
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.XmlBaseWriter+NamespaceManager+Namespace>
;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Xml.XmlBaseWriter+NamespaceManager+Namespace>
; V07 cse0 [V07,T02] ( 5, 5 ) ref -> r2 "CSE - aggressive"
-; V08 cse1 [V08,T04] ( 3, 3 ) ref -> r1 "CSE - aggressive"
+; V08 cse1 [V08,T04] ( 3, 3 ) ref -> [sp+0x04] spill-single-def "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M35133_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,lr}
+ push {r2,r3,r4,lr}
mov r4, r0
; gcrRegs +[r4]
;; size=4 bbWeight=1 PerfScore 2.00
@@ -51,31 +51,36 @@ G_M35133_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
; gcrRegs +[r1]
movs r0, 0
strh r0, [r1+0x14]
+ movw r3, 0xd1ff
+ movt r3, 0xd1ff
+ str r3, [sp+0x04]
+ ; GC ptr vars +{V08}
adds r0, r1, 4
; byrRegs +[r0]
- movw r1, 0xd1ff
- ; gcrRegs -[r1]
- movt r1, 0xd1ff
+ mov r1, r3
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[r4] +[r1]
+ ; gcrRegs -[r1 r4]
; byrRegs -[r0]
add r0, r2, 8
; byrRegs +[r0]
+ ldr r1, [sp+0x04] // [V08 cse1]
+ ; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
+ ; GC ptr vars -{V08}
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
movs r3, 0
str r3, [r2+0x0C]
- ;; size=84 bbWeight=1 PerfScore 28.00
+ ;; size=90 bbWeight=1 PerfScore 31.00
G_M35133_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r4,pc}
+ pop {r2,r3,r4,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 90, prolog size 2, PerfScore 31.00, instruction count 31, allocated bytes for code 90 (MethodHash=d42076c2) for method System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (Tier1)
+; Total bytes of code 96, prolog size 2, PerfScore 34.00, instruction count 34, allocated bytes for code 96 (MethodHash=d42076c2) for method System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (Tier1)
; ============================================================
Unwind Info:
@@ -87,12 +92,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 45 (0x0002d) Actual length = 90 (0x00005a)
+ Function Length : 48 (0x00030) Actual length = 96 (0x000060)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- D4 pop {r4,lr} ; opsize 16
- FF end
+ ED 1C pop {r2,r3,r4,lr} ; opsize 16
FF end
FF end
librariestestsnotieredcompilation.run.linux.arm.Release.mch
-42 (-13.91%) : 42548.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithVersion(Microsoft.CodeAnalysis.VersionStamp):Microsoft.CodeAnalysis.ProjectInfo:this (FullOpts)
@@ -9,18 +9,18 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 4 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.ProjectInfo>
-; V01 arg1 [V01,T05] ( 3, 3 ) struct (16) [sp+0x110] do-not-enreg[S] single-def double-align <Microsoft.CodeAnalysis.VersionStamp>
+; V01 arg1 [V01,T05] ( 3, 3 ) struct (16) [sp+0xD8] do-not-enreg[S] single-def double-align <Microsoft.CodeAnalysis.VersionStamp>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.Optional`1[System.String]>
;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOutputInfo]>
;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <Microsoft.CodeAnalysis.Optional`1[ubyte]>
-; V05 loc3 [V05,T12] ( 2, 2 ) struct (20) [sp+0xE4] do-not-enreg[S] ld-addr-op <Microsoft.CodeAnalysis.Optional`1[System.Guid]>
+; V05 loc3 [V05,T09] ( 2, 2 ) struct (20) [sp+0xAC] do-not-enreg[S] ld-addr-op <Microsoft.CodeAnalysis.Optional`1[System.Guid]>
;* V06 loc4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOptions]>
;* V07 loc5 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.ParseOptions]>
;* V08 loc6 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.Optional`1[System.Type]>
; V09 OutArgs [V09 ] ( 1, 1 ) struct (100) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T09] ( 2, 4 ) struct (24) [sp+0xC8] do-not-enreg[SF] ld-addr-op double-align "NewObj constructor temp" <System.Nullable`1[Microsoft.CodeAnalysis.VersionStamp]>
+; V10 tmp1 [V10,T08] ( 2, 4 ) struct (24) [sp+0x90] do-not-enreg[SF] ld-addr-op double-align "NewObj constructor temp" <System.Nullable`1[Microsoft.CodeAnalysis.VersionStamp]>
; V11 tmp2 [V11,T06] ( 2, 4 ) ref -> r5 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.ProjectInfo+ProjectAttributes>
-; V12 tmp3 [V12,T01] ( 3, 6 ) struct (24) [sp+0xB0] do-not-enreg[S] double-align "impAppendStmt" <System.Nullable`1[Microsoft.CodeAnalysis.VersionStamp]>
+; V12 tmp3 [V12,T01] ( 3, 6 ) struct (24) [sp+0x78] do-not-enreg[S] double-align "impAppendStmt" <System.Nullable`1[Microsoft.CodeAnalysis.VersionStamp]>
;* V13 tmp4 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.Optional`1[System.String]>
;* V14 tmp5 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.Optional`1[System.String]>
;* V15 tmp6 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.Optional`1[System.String]>
@@ -42,176 +42,147 @@
;* V31 tmp22 [V31 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V06._hasValue (fldOffset=0x4)" P-INDEP
;* V32 tmp23 [V32 ] ( 0, 0 ) ref -> zero-ref single-def "field V07._value (fldOffset=0x0)" P-INDEP
;* V33 tmp24 [V33 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V07._hasValue (fldOffset=0x4)" P-INDEP
-;* V34 tmp25 [V34,T16] ( 0, 0 ) ref -> zero-ref single-def "field V08._value (fldOffset=0x0)" P-INDEP
-;* V35 tmp26 [V35,T24] ( 0, 0 ) ubyte -> zero-ref single-def "field V08._hasValue (fldOffset=0x4)" P-INDEP
-;* V36 tmp27 [V36,T17] ( 0, 0 ) ref -> zero-ref single-def "field V13._value (fldOffset=0x0)" P-INDEP
-;* V37 tmp28 [V37,T25] ( 0, 0 ) ubyte -> zero-ref single-def "field V13._hasValue (fldOffset=0x4)" P-INDEP
-;* V38 tmp29 [V38,T18] ( 0, 0 ) ref -> zero-ref single-def "field V14._value (fldOffset=0x0)" P-INDEP
-;* V39 tmp30 [V39,T26] ( 0, 0 ) ubyte -> zero-ref single-def "field V14._hasValue (fldOffset=0x4)" P-INDEP
-;* V40 tmp31 [V40,T19] ( 0, 0 ) ref -> zero-ref single-def "field V15._value (fldOffset=0x0)" P-INDEP
-;* V41 tmp32 [V41,T27] ( 0, 0 ) ubyte -> zero-ref single-def "field V15._hasValue (fldOffset=0x4)" P-INDEP
-;* V42 tmp33 [V42,T28] ( 0, 0 ) ubyte -> zero-ref single-def "field V16._hasValue (fldOffset=0x0)" P-INDEP
-;* V43 tmp34 [V43,T20] ( 0, 0 ) ref -> zero-ref single-def "field V16._value (fldOffset=0x4)" P-INDEP
-;* V44 tmp35 [V44,T21] ( 0, 0 ) ref -> zero-ref single-def "field V17._value (fldOffset=0x0)" P-INDEP
-;* V45 tmp36 [V45,T29] ( 0, 0 ) ubyte -> zero-ref single-def "field V17._hasValue (fldOffset=0x4)" P-INDEP
-;* V46 tmp37 [V46,T30] ( 0, 0 ) ubyte -> zero-ref single-def "field V18._hasValue (fldOffset=0x0)" P-INDEP
-;* V47 tmp38 [V47,T31] ( 0, 0 ) ubyte -> zero-ref single-def "field V18._value (fldOffset=0x1)" P-INDEP
-;* V48 tmp39 [V48,T32] ( 0, 0 ) ubyte -> zero-ref single-def "field V19._hasValue (fldOffset=0x0)" P-INDEP
-;* V49 tmp40 [V49,T33] ( 0, 0 ) ubyte -> zero-ref single-def "field V19._value (fldOffset=0x1)" P-INDEP
-;* V50 tmp41 [V50,T34] ( 0, 0 ) ubyte -> zero-ref single-def "field V20._hasValue (fldOffset=0x0)" P-INDEP
-;* V51 tmp42 [V51,T35] ( 0, 0 ) ubyte -> zero-ref single-def "field V20._value (fldOffset=0x1)" P-INDEP
-;* V52 tmp43 [V52,T22] ( 0, 0 ) ref -> zero-ref single-def "field V22._value (fldOffset=0x0)" P-INDEP
-;* V53 tmp44 [V53,T36] ( 0, 0 ) ubyte -> zero-ref single-def "field V22._hasValue (fldOffset=0x4)" P-INDEP
-;* V54 tmp45 [V54,T23] ( 0, 0 ) ref -> zero-ref single-def "field V23._value (fldOffset=0x0)" P-INDEP
-;* V55 tmp46 [V55,T37] ( 0, 0 ) ubyte -> zero-ref single-def "field V23._hasValue (fldOffset=0x4)" P-INDEP
+;* V34 tmp25 [V34,T10] ( 0, 0 ) ref -> zero-ref single-def "field V08._value (fldOffset=0x0)" P-INDEP
+;* V35 tmp26 [V35,T18] ( 0, 0 ) ubyte -> zero-ref single-def "field V08._hasValue (fldOffset=0x4)" P-INDEP
+;* V36 tmp27 [V36,T11] ( 0, 0 ) ref -> zero-ref single-def "field V13._value (fldOffset=0x0)" P-INDEP
+;* V37 tmp28 [V37,T19] ( 0, 0 ) ubyte -> zero-ref single-def "field V13._hasValue (fldOffset=0x4)" P-INDEP
+;* V38 tmp29 [V38,T12] ( 0, 0 ) ref -> zero-ref single-def "field V14._value (fldOffset=0x0)" P-INDEP
+;* V39 tmp30 [V39,T20] ( 0, 0 ) ubyte -> zero-ref single-def "field V14._hasValue (fldOffset=0x4)" P-INDEP
+;* V40 tmp31 [V40,T13] ( 0, 0 ) ref -> zero-ref single-def "field V15._value (fldOffset=0x0)" P-INDEP
+;* V41 tmp32 [V41,T21] ( 0, 0 ) ubyte -> zero-ref single-def "field V15._hasValue (fldOffset=0x4)" P-INDEP
+;* V42 tmp33 [V42,T22] ( 0, 0 ) ubyte -> zero-ref single-def "field V16._hasValue (fldOffset=0x0)" P-INDEP
+;* V43 tmp34 [V43,T14] ( 0, 0 ) ref -> zero-ref single-def "field V16._value (fldOffset=0x4)" P-INDEP
+;* V44 tmp35 [V44,T15] ( 0, 0 ) ref -> zero-ref single-def "field V17._value (fldOffset=0x0)" P-INDEP
+;* V45 tmp36 [V45,T23] ( 0, 0 ) ubyte -> zero-ref single-def "field V17._hasValue (fldOffset=0x4)" P-INDEP
+;* V46 tmp37 [V46,T24] ( 0, 0 ) ubyte -> zero-ref single-def "field V18._hasValue (fldOffset=0x0)" P-INDEP
+;* V47 tmp38 [V47,T25] ( 0, 0 ) ubyte -> zero-ref single-def "field V18._value (fldOffset=0x1)" P-INDEP
+;* V48 tmp39 [V48,T26] ( 0, 0 ) ubyte -> zero-ref single-def "field V19._hasValue (fldOffset=0x0)" P-INDEP
+;* V49 tmp40 [V49,T27] ( 0, 0 ) ubyte -> zero-ref single-def "field V19._value (fldOffset=0x1)" P-INDEP
+;* V50 tmp41 [V50,T28] ( 0, 0 ) ubyte -> zero-ref single-def "field V20._hasValue (fldOffset=0x0)" P-INDEP
+;* V51 tmp42 [V51,T29] ( 0, 0 ) ubyte -> zero-ref single-def "field V20._value (fldOffset=0x1)" P-INDEP
+;* V52 tmp43 [V52,T16] ( 0, 0 ) ref -> zero-ref single-def "field V22._value (fldOffset=0x0)" P-INDEP
+;* V53 tmp44 [V53,T30] ( 0, 0 ) ubyte -> zero-ref single-def "field V22._hasValue (fldOffset=0x4)" P-INDEP
+;* V54 tmp45 [V54,T17] ( 0, 0 ) ref -> zero-ref single-def "field V23._value (fldOffset=0x0)" P-INDEP
+;* V55 tmp46 [V55,T31] ( 0, 0 ) ubyte -> zero-ref single-def "field V23._hasValue (fldOffset=0x4)" P-INDEP
;* V56 tmp47 [V56 ] ( 0, 0 ) ubyte -> zero-ref "V10.[000..001)"
-; V57 tmp48 [V57,T02] ( 3, 6 ) struct ( 4) [sp+0xAC] do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Optional`1[ubyte]>
-; V58 tmp49 [V58,T03] ( 3, 6 ) struct ( 4) [sp+0xA8] do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Optional`1[ubyte]>
-; V59 tmp50 [V59,T04] ( 3, 6 ) struct ( 4) [sp+0xA4] do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Optional`1[ubyte]>
-; V60 tmp51 [V60,T08] ( 2, 4 ) ref -> r5 single-def "argument with side effect"
-; V61 tmp52 [V61,T10] ( 2, 4 ) struct (24) [sp+0x88] do-not-enreg[S] double-align "argument with side effect" <System.Nullable`1[Microsoft.CodeAnalysis.VersionStamp]>
-;* V62 tmp53 [V62 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SF] "argument with side effect" <Microsoft.CodeAnalysis.Optional`1[System.String]>
-; V63 tmp54 [V63,T13] ( 1, 2 ) struct ( 8) [sp+0x80] do-not-enreg[SF] must-init "argument with side effect" <Microsoft.CodeAnalysis.Optional`1[System.String]>
-; V64 tmp55 [V64,T14] ( 1, 2 ) struct ( 8) [sp+0x78] do-not-enreg[SF] must-init "argument with side effect" <Microsoft.CodeAnalysis.Optional`1[System.String]>
-; V65 tmp56 [V65,T15] ( 1, 2 ) struct ( 8) [sp+0x70] do-not-enreg[SF] must-init "argument with side effect" <Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOutputInfo]>
-; V66 tmp57 [V66,T11] ( 2, 4 ) struct ( 8) [sp+0x68] do-not-enreg[SF] must-init "argument with side effect" <Microsoft.CodeAnalysis.Optional`1[System.String]>
+; V57 tmp48 [V57,T02] ( 3, 6 ) struct ( 4) [sp+0x74] do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Optional`1[ubyte]>
+; V58 tmp49 [V58,T03] ( 3, 6 ) struct ( 4) [sp+0x70] do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Optional`1[ubyte]>
+; V59 tmp50 [V59,T04] ( 3, 6 ) struct ( 4) [sp+0x6C] do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Optional`1[ubyte]>
;
-; Lcl frame size = 252
+; Lcl frame size = 196
G_M65141_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r2,r3}
push {r4,r5,r10,r11,lr}
- sub sp, 252
- add r11, sp, 264
- sub r3, r11, 160
- movs r1, 0
- movs r2, 0
- stm r3!, {r1,r2}
- stm r3!, {r1,r2}
- stm r3!, {r1,r2}
- stm r3!, {r1,r2}
+ sub sp, 196
+ add r11, sp, 208
mov r4, r0
; gcrRegs +[r4]
- ;; size=30 bbWeight=1 PerfScore 12.00
+ ;; size=14 bbWeight=1 PerfScore 5.00
G_M65141_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
ldr r5, [r4+0x04]
; gcrRegs +[r5]
- ldr r2, [sp+0x110]
- str r2, [sp+0xD0]
- ldr r2, [sp+0x114]
- str r2, [sp+0xD4]
- ldr r2, [sp+0x118]
- str r2, [sp+0xD8]
- ldr r2, [sp+0x11C]
- str r2, [sp+0xDC]
- add r0, sp, 176
+ ldr r2, [sp+0xD8]
+ str r2, [sp+0x98]
+ ldr r2, [sp+0xDC]
+ str r2, [sp+0x9C]
+ ldr r2, [sp+0xE0]
+ str r2, [sp+0xA0]
+ ldr r2, [sp+0xE4]
+ str r2, [sp+0xA4]
+ add r0, sp, 120
; byrRegs +[r0]
- add r1, sp, 200
+ add r1, sp, 144
; byrRegs +[r1]
movs r2, 24
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_MEMCPY
; byrRegs -[r0-r1]
- movs r2, 1
- strb r2, [sp+0xB0]
- movs r2, 0
- str r2, [sp+0xE4]
- str r2, [sp+0xE8]
- str r2, [sp+0xEC]
- str r2, [sp+0xF0]
- str r2, [sp+0xF4]
- add r0, sp, 136
- ; byrRegs +[r0]
- add r1, sp, 176
- ; byrRegs +[r1]
- movs r2, 24
- movw r12, 0xd1ff
- movt r12, 0xd1ff
- blx r12 // CORINFO_HELP_MEMCPY
- ; byrRegs -[r0-r1]
- movs r0, 0
- str r0, [sp+0x10]
- ;; size=72 bbWeight=1 PerfScore 31.00
+ movs r3, 1
+ strb r3, [sp+0x78]
+ movs r3, 0
+ str r3, [sp+0xAC]
+ str r3, [sp+0xB0]
+ str r3, [sp+0xB4]
+ str r3, [sp+0xB8]
+ str r3, [sp+0xBC]
+ ;; size=52 bbWeight=1 PerfScore 23.00
G_M65141_IG03: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- str r0, [sp+0x14]
+ str r3, [sp+0x10]
;; size=2 bbWeight=1 PerfScore 1.00
G_M65141_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- str r0, [sp+0x18]
+ str r3, [sp+0x14]
;; size=2 bbWeight=1 PerfScore 1.00
G_M65141_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- strb r0, [sp+0xAC]
- ;; size=4 bbWeight=1 PerfScore 1.00
+ str r3, [sp+0x18]
+ ;; size=2 bbWeight=1 PerfScore 1.00
G_M65141_IG06: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- strb r0, [sp+0xAD]
- ;; size=4 bbWeight=1 PerfScore 1.00
+ movs r2, 0
+ str r3, [sp+0x1C]
+ strb r2, [sp+0x20]
+ ;; size=8 bbWeight=1 PerfScore 3.00
G_M65141_IG07: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- strb r0, [sp+0xA8]
- ;; size=4 bbWeight=1 PerfScore 1.00
+ str r3, [sp+0x24]
+ strb r2, [sp+0x28]
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M65141_IG08: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- strb r0, [sp+0xA9]
- ;; size=4 bbWeight=1 PerfScore 1.00
+ str r3, [sp+0x2C]
+ strb r2, [sp+0x30]
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M65141_IG09: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- strb r0, [sp+0xA4]
- ;; size=4 bbWeight=1 PerfScore 1.00
+ strb r3, [sp+0x34]
+ str r2, [sp+0x38]
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M65141_IG10: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- strb r0, [sp+0xA5]
- ldr r0, [sp+0xE4]
- str r0, [sp+0x50]
- ldr r0, [sp+0xE8]
- str r0, [sp+0x54]
- ldr r0, [sp+0xEC]
- str r0, [sp+0x58]
- ldr r0, [sp+0xF0]
- str r0, [sp+0x5C]
- ldr r0, [sp+0xF4]
- str r0, [sp+0x60]
+ str r3, [sp+0x3C]
+ strb r2, [sp+0x40]
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M65141_IG11: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ strb r3, [sp+0x74]
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M65141_IG12: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ strb r3, [sp+0x75]
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M65141_IG13: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ strb r3, [sp+0x70]
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M65141_IG14: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ strb r3, [sp+0x71]
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M65141_IG15: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ strb r3, [sp+0x6C]
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M65141_IG16: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ strb r3, [sp+0x6D]
+ ldr r3, [sp+0xAC]
+ str r3, [sp+0x50]
+ ldr r3, [sp+0xB0]
+ str r3, [sp+0x54]
+ ldr r3, [sp+0xB4]
+ str r3, [sp+0x58]
+ ldr r3, [sp+0xB8]
+ str r3, [sp+0x5C]
+ ldr r3, [sp+0xBC]
+ str r3, [sp+0x60]
+ ldrh r3, [sp+0x70]
+ str r3, [sp+0x48]
+ ldrh r3, [sp+0x6C]
+ str r3, [sp+0x4C]
...
-42 (-13.91%) : 48424.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithVersion(Microsoft.CodeAnalysis.VersionStamp):Microsoft.CodeAnalysis.ProjectInfo:this (FullOpts)
@@ -9,18 +9,18 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 4 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.ProjectInfo>
-; V01 arg1 [V01,T05] ( 3, 3 ) struct (16) [sp+0x110] do-not-enreg[S] single-def double-align <Microsoft.CodeAnalysis.VersionStamp>
+; V01 arg1 [V01,T05] ( 3, 3 ) struct (16) [sp+0xD8] do-not-enreg[S] single-def double-align <Microsoft.CodeAnalysis.VersionStamp>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.Optional`1[System.String]>
;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOutputInfo]>
;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <Microsoft.CodeAnalysis.Optional`1[ubyte]>
-; V05 loc3 [V05,T12] ( 2, 2 ) struct (20) [sp+0xE4] do-not-enreg[S] ld-addr-op <Microsoft.CodeAnalysis.Optional`1[System.Guid]>
+; V05 loc3 [V05,T09] ( 2, 2 ) struct (20) [sp+0xAC] do-not-enreg[S] ld-addr-op <Microsoft.CodeAnalysis.Optional`1[System.Guid]>
;* V06 loc4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOptions]>
;* V07 loc5 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.ParseOptions]>
;* V08 loc6 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.Optional`1[System.Type]>
; V09 OutArgs [V09 ] ( 1, 1 ) struct (100) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T09] ( 2, 4 ) struct (24) [sp+0xC8] do-not-enreg[SF] ld-addr-op double-align "NewObj constructor temp" <System.Nullable`1[Microsoft.CodeAnalysis.VersionStamp]>
+; V10 tmp1 [V10,T08] ( 2, 4 ) struct (24) [sp+0x90] do-not-enreg[SF] ld-addr-op double-align "NewObj constructor temp" <System.Nullable`1[Microsoft.CodeAnalysis.VersionStamp]>
; V11 tmp2 [V11,T06] ( 2, 4 ) ref -> r5 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.ProjectInfo+ProjectAttributes>
-; V12 tmp3 [V12,T01] ( 3, 6 ) struct (24) [sp+0xB0] do-not-enreg[S] double-align "impAppendStmt" <System.Nullable`1[Microsoft.CodeAnalysis.VersionStamp]>
+; V12 tmp3 [V12,T01] ( 3, 6 ) struct (24) [sp+0x78] do-not-enreg[S] double-align "impAppendStmt" <System.Nullable`1[Microsoft.CodeAnalysis.VersionStamp]>
;* V13 tmp4 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.Optional`1[System.String]>
;* V14 tmp5 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.Optional`1[System.String]>
;* V15 tmp6 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.Optional`1[System.String]>
@@ -42,176 +42,147 @@
;* V31 tmp22 [V31 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V06._hasValue (fldOffset=0x4)" P-INDEP
;* V32 tmp23 [V32 ] ( 0, 0 ) ref -> zero-ref single-def "field V07._value (fldOffset=0x0)" P-INDEP
;* V33 tmp24 [V33 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V07._hasValue (fldOffset=0x4)" P-INDEP
-;* V34 tmp25 [V34,T16] ( 0, 0 ) ref -> zero-ref single-def "field V08._value (fldOffset=0x0)" P-INDEP
-;* V35 tmp26 [V35,T24] ( 0, 0 ) ubyte -> zero-ref single-def "field V08._hasValue (fldOffset=0x4)" P-INDEP
-;* V36 tmp27 [V36,T17] ( 0, 0 ) ref -> zero-ref single-def "field V13._value (fldOffset=0x0)" P-INDEP
-;* V37 tmp28 [V37,T25] ( 0, 0 ) ubyte -> zero-ref single-def "field V13._hasValue (fldOffset=0x4)" P-INDEP
-;* V38 tmp29 [V38,T18] ( 0, 0 ) ref -> zero-ref single-def "field V14._value (fldOffset=0x0)" P-INDEP
-;* V39 tmp30 [V39,T26] ( 0, 0 ) ubyte -> zero-ref single-def "field V14._hasValue (fldOffset=0x4)" P-INDEP
-;* V40 tmp31 [V40,T19] ( 0, 0 ) ref -> zero-ref single-def "field V15._value (fldOffset=0x0)" P-INDEP
-;* V41 tmp32 [V41,T27] ( 0, 0 ) ubyte -> zero-ref single-def "field V15._hasValue (fldOffset=0x4)" P-INDEP
-;* V42 tmp33 [V42,T28] ( 0, 0 ) ubyte -> zero-ref single-def "field V16._hasValue (fldOffset=0x0)" P-INDEP
-;* V43 tmp34 [V43,T20] ( 0, 0 ) ref -> zero-ref single-def "field V16._value (fldOffset=0x4)" P-INDEP
-;* V44 tmp35 [V44,T21] ( 0, 0 ) ref -> zero-ref single-def "field V17._value (fldOffset=0x0)" P-INDEP
-;* V45 tmp36 [V45,T29] ( 0, 0 ) ubyte -> zero-ref single-def "field V17._hasValue (fldOffset=0x4)" P-INDEP
-;* V46 tmp37 [V46,T30] ( 0, 0 ) ubyte -> zero-ref single-def "field V18._hasValue (fldOffset=0x0)" P-INDEP
-;* V47 tmp38 [V47,T31] ( 0, 0 ) ubyte -> zero-ref single-def "field V18._value (fldOffset=0x1)" P-INDEP
-;* V48 tmp39 [V48,T32] ( 0, 0 ) ubyte -> zero-ref single-def "field V19._hasValue (fldOffset=0x0)" P-INDEP
-;* V49 tmp40 [V49,T33] ( 0, 0 ) ubyte -> zero-ref single-def "field V19._value (fldOffset=0x1)" P-INDEP
-;* V50 tmp41 [V50,T34] ( 0, 0 ) ubyte -> zero-ref single-def "field V20._hasValue (fldOffset=0x0)" P-INDEP
-;* V51 tmp42 [V51,T35] ( 0, 0 ) ubyte -> zero-ref single-def "field V20._value (fldOffset=0x1)" P-INDEP
-;* V52 tmp43 [V52,T22] ( 0, 0 ) ref -> zero-ref single-def "field V22._value (fldOffset=0x0)" P-INDEP
-;* V53 tmp44 [V53,T36] ( 0, 0 ) ubyte -> zero-ref single-def "field V22._hasValue (fldOffset=0x4)" P-INDEP
-;* V54 tmp45 [V54,T23] ( 0, 0 ) ref -> zero-ref single-def "field V23._value (fldOffset=0x0)" P-INDEP
-;* V55 tmp46 [V55,T37] ( 0, 0 ) ubyte -> zero-ref single-def "field V23._hasValue (fldOffset=0x4)" P-INDEP
+;* V34 tmp25 [V34,T10] ( 0, 0 ) ref -> zero-ref single-def "field V08._value (fldOffset=0x0)" P-INDEP
+;* V35 tmp26 [V35,T18] ( 0, 0 ) ubyte -> zero-ref single-def "field V08._hasValue (fldOffset=0x4)" P-INDEP
+;* V36 tmp27 [V36,T11] ( 0, 0 ) ref -> zero-ref single-def "field V13._value (fldOffset=0x0)" P-INDEP
+;* V37 tmp28 [V37,T19] ( 0, 0 ) ubyte -> zero-ref single-def "field V13._hasValue (fldOffset=0x4)" P-INDEP
+;* V38 tmp29 [V38,T12] ( 0, 0 ) ref -> zero-ref single-def "field V14._value (fldOffset=0x0)" P-INDEP
+;* V39 tmp30 [V39,T20] ( 0, 0 ) ubyte -> zero-ref single-def "field V14._hasValue (fldOffset=0x4)" P-INDEP
+;* V40 tmp31 [V40,T13] ( 0, 0 ) ref -> zero-ref single-def "field V15._value (fldOffset=0x0)" P-INDEP
+;* V41 tmp32 [V41,T21] ( 0, 0 ) ubyte -> zero-ref single-def "field V15._hasValue (fldOffset=0x4)" P-INDEP
+;* V42 tmp33 [V42,T22] ( 0, 0 ) ubyte -> zero-ref single-def "field V16._hasValue (fldOffset=0x0)" P-INDEP
+;* V43 tmp34 [V43,T14] ( 0, 0 ) ref -> zero-ref single-def "field V16._value (fldOffset=0x4)" P-INDEP
+;* V44 tmp35 [V44,T15] ( 0, 0 ) ref -> zero-ref single-def "field V17._value (fldOffset=0x0)" P-INDEP
+;* V45 tmp36 [V45,T23] ( 0, 0 ) ubyte -> zero-ref single-def "field V17._hasValue (fldOffset=0x4)" P-INDEP
+;* V46 tmp37 [V46,T24] ( 0, 0 ) ubyte -> zero-ref single-def "field V18._hasValue (fldOffset=0x0)" P-INDEP
+;* V47 tmp38 [V47,T25] ( 0, 0 ) ubyte -> zero-ref single-def "field V18._value (fldOffset=0x1)" P-INDEP
+;* V48 tmp39 [V48,T26] ( 0, 0 ) ubyte -> zero-ref single-def "field V19._hasValue (fldOffset=0x0)" P-INDEP
+;* V49 tmp40 [V49,T27] ( 0, 0 ) ubyte -> zero-ref single-def "field V19._value (fldOffset=0x1)" P-INDEP
+;* V50 tmp41 [V50,T28] ( 0, 0 ) ubyte -> zero-ref single-def "field V20._hasValue (fldOffset=0x0)" P-INDEP
+;* V51 tmp42 [V51,T29] ( 0, 0 ) ubyte -> zero-ref single-def "field V20._value (fldOffset=0x1)" P-INDEP
+;* V52 tmp43 [V52,T16] ( 0, 0 ) ref -> zero-ref single-def "field V22._value (fldOffset=0x0)" P-INDEP
+;* V53 tmp44 [V53,T30] ( 0, 0 ) ubyte -> zero-ref single-def "field V22._hasValue (fldOffset=0x4)" P-INDEP
+;* V54 tmp45 [V54,T17] ( 0, 0 ) ref -> zero-ref single-def "field V23._value (fldOffset=0x0)" P-INDEP
+;* V55 tmp46 [V55,T31] ( 0, 0 ) ubyte -> zero-ref single-def "field V23._hasValue (fldOffset=0x4)" P-INDEP
;* V56 tmp47 [V56 ] ( 0, 0 ) ubyte -> zero-ref "V10.[000..001)"
-; V57 tmp48 [V57,T02] ( 3, 6 ) struct ( 4) [sp+0xAC] do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Optional`1[ubyte]>
-; V58 tmp49 [V58,T03] ( 3, 6 ) struct ( 4) [sp+0xA8] do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Optional`1[ubyte]>
-; V59 tmp50 [V59,T04] ( 3, 6 ) struct ( 4) [sp+0xA4] do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Optional`1[ubyte]>
-; V60 tmp51 [V60,T08] ( 2, 4 ) ref -> r5 single-def "argument with side effect"
-; V61 tmp52 [V61,T10] ( 2, 4 ) struct (24) [sp+0x88] do-not-enreg[S] double-align "argument with side effect" <System.Nullable`1[Microsoft.CodeAnalysis.VersionStamp]>
-;* V62 tmp53 [V62 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SF] "argument with side effect" <Microsoft.CodeAnalysis.Optional`1[System.String]>
-; V63 tmp54 [V63,T13] ( 1, 2 ) struct ( 8) [sp+0x80] do-not-enreg[SF] must-init "argument with side effect" <Microsoft.CodeAnalysis.Optional`1[System.String]>
-; V64 tmp55 [V64,T14] ( 1, 2 ) struct ( 8) [sp+0x78] do-not-enreg[SF] must-init "argument with side effect" <Microsoft.CodeAnalysis.Optional`1[System.String]>
-; V65 tmp56 [V65,T15] ( 1, 2 ) struct ( 8) [sp+0x70] do-not-enreg[SF] must-init "argument with side effect" <Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOutputInfo]>
-; V66 tmp57 [V66,T11] ( 2, 4 ) struct ( 8) [sp+0x68] do-not-enreg[SF] must-init "argument with side effect" <Microsoft.CodeAnalysis.Optional`1[System.String]>
+; V57 tmp48 [V57,T02] ( 3, 6 ) struct ( 4) [sp+0x74] do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Optional`1[ubyte]>
+; V58 tmp49 [V58,T03] ( 3, 6 ) struct ( 4) [sp+0x70] do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Optional`1[ubyte]>
+; V59 tmp50 [V59,T04] ( 3, 6 ) struct ( 4) [sp+0x6C] do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Optional`1[ubyte]>
;
-; Lcl frame size = 252
+; Lcl frame size = 196
G_M65141_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r2,r3}
push {r4,r5,r10,r11,lr}
- sub sp, 252
- add r11, sp, 264
- sub r3, r11, 160
- movs r1, 0
- movs r2, 0
- stm r3!, {r1,r2}
- stm r3!, {r1,r2}
- stm r3!, {r1,r2}
- stm r3!, {r1,r2}
+ sub sp, 196
+ add r11, sp, 208
mov r4, r0
; gcrRegs +[r4]
- ;; size=30 bbWeight=1 PerfScore 12.00
+ ;; size=14 bbWeight=1 PerfScore 5.00
G_M65141_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
ldr r5, [r4+0x04]
; gcrRegs +[r5]
- ldr r2, [sp+0x110]
- str r2, [sp+0xD0]
- ldr r2, [sp+0x114]
- str r2, [sp+0xD4]
- ldr r2, [sp+0x118]
- str r2, [sp+0xD8]
- ldr r2, [sp+0x11C]
- str r2, [sp+0xDC]
- add r0, sp, 176
+ ldr r2, [sp+0xD8]
+ str r2, [sp+0x98]
+ ldr r2, [sp+0xDC]
+ str r2, [sp+0x9C]
+ ldr r2, [sp+0xE0]
+ str r2, [sp+0xA0]
+ ldr r2, [sp+0xE4]
+ str r2, [sp+0xA4]
+ add r0, sp, 120
; byrRegs +[r0]
- add r1, sp, 200
+ add r1, sp, 144
; byrRegs +[r1]
movs r2, 24
movw r12, 0xd1ff
movt r12, 0xd1ff
blx r12 // CORINFO_HELP_MEMCPY
; byrRegs -[r0-r1]
- movs r2, 1
- strb r2, [sp+0xB0]
- movs r2, 0
- str r2, [sp+0xE4]
- str r2, [sp+0xE8]
- str r2, [sp+0xEC]
- str r2, [sp+0xF0]
- str r2, [sp+0xF4]
- add r0, sp, 136
- ; byrRegs +[r0]
- add r1, sp, 176
- ; byrRegs +[r1]
- movs r2, 24
- movw r12, 0xd1ff
- movt r12, 0xd1ff
- blx r12 // CORINFO_HELP_MEMCPY
- ; byrRegs -[r0-r1]
- movs r0, 0
- str r0, [sp+0x10]
- ;; size=72 bbWeight=1 PerfScore 31.00
+ movs r3, 1
+ strb r3, [sp+0x78]
+ movs r3, 0
+ str r3, [sp+0xAC]
+ str r3, [sp+0xB0]
+ str r3, [sp+0xB4]
+ str r3, [sp+0xB8]
+ str r3, [sp+0xBC]
+ ;; size=52 bbWeight=1 PerfScore 23.00
G_M65141_IG03: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- str r0, [sp+0x14]
+ str r3, [sp+0x10]
;; size=2 bbWeight=1 PerfScore 1.00
G_M65141_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- str r0, [sp+0x18]
+ str r3, [sp+0x14]
;; size=2 bbWeight=1 PerfScore 1.00
G_M65141_IG05: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- strb r0, [sp+0xAC]
- ;; size=4 bbWeight=1 PerfScore 1.00
+ str r3, [sp+0x18]
+ ;; size=2 bbWeight=1 PerfScore 1.00
G_M65141_IG06: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- strb r0, [sp+0xAD]
- ;; size=4 bbWeight=1 PerfScore 1.00
+ movs r2, 0
+ str r3, [sp+0x1C]
+ strb r2, [sp+0x20]
+ ;; size=8 bbWeight=1 PerfScore 3.00
G_M65141_IG07: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- strb r0, [sp+0xA8]
- ;; size=4 bbWeight=1 PerfScore 1.00
+ str r3, [sp+0x24]
+ strb r2, [sp+0x28]
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M65141_IG08: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- strb r0, [sp+0xA9]
- ;; size=4 bbWeight=1 PerfScore 1.00
+ str r3, [sp+0x2C]
+ strb r2, [sp+0x30]
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M65141_IG09: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- strb r0, [sp+0xA4]
- ;; size=4 bbWeight=1 PerfScore 1.00
+ strb r3, [sp+0x34]
+ str r2, [sp+0x38]
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M65141_IG10: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
- strb r0, [sp+0xA5]
- ldr r0, [sp+0xE4]
- str r0, [sp+0x50]
- ldr r0, [sp+0xE8]
- str r0, [sp+0x54]
- ldr r0, [sp+0xEC]
- str r0, [sp+0x58]
- ldr r0, [sp+0xF0]
- str r0, [sp+0x5C]
- ldr r0, [sp+0xF4]
- str r0, [sp+0x60]
+ str r3, [sp+0x3C]
+ strb r2, [sp+0x40]
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M65141_IG11: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ strb r3, [sp+0x74]
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M65141_IG12: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ strb r3, [sp+0x75]
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M65141_IG13: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ strb r3, [sp+0x70]
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M65141_IG14: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ strb r3, [sp+0x71]
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M65141_IG15: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ strb r3, [sp+0x6C]
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M65141_IG16: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ strb r3, [sp+0x6D]
+ ldr r3, [sp+0xAC]
+ str r3, [sp+0x50]
+ ldr r3, [sp+0xB0]
+ str r3, [sp+0x54]
+ ldr r3, [sp+0xB4]
+ str r3, [sp+0x58]
+ ldr r3, [sp+0xB8]
+ str r3, [sp+0x5C]
+ ldr r3, [sp+0xBC]
+ str r3, [sp+0x60]
+ ldrh r3, [sp+0x70]
+ str r3, [sp+0x48]
+ ldrh r3, [sp+0x6C]
+ str r3, [sp+0x4C]
...
-46 (-13.14%) : 54718.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>cDisplayClass167_0:
@@ -10,67 +10,64 @@
;
; V00 this [V00,T00] ( 10, 10 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass167_0>
; V01 RetBuf [V01,T02] ( 4, 4 ) byref -> r5 single-def
-; V02 arg1 [V02,T08] ( 4, 3.50) struct (12) [sp+0x88] do-not-enreg[SF] ld-addr-op single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
+; V02 arg1 [V02,T08] ( 4, 3.50) struct (12) [sp+0x78] do-not-enreg[SF] ld-addr-op single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
;* V03 loc0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V04 loc1 [V04,T09] ( 6, 5 ) ref -> r7 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
-; V05 loc2 [V05,T25] ( 2, 1.50) int -> r1 single-def
+; V05 loc2 [V05,T22] ( 2, 1.50) int -> r1 single-def
;* V06 loc3 [V06 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]>
; V07 OutArgs [V07 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T18] ( 3, 3 ) ref -> r8 single-def
+; V08 tmp1 [V08,T15] ( 3, 3 ) ref -> r8 single-def
;* V09 tmp2 [V09 ] ( 0, 0 ) struct ( 4) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult]>
;* V10 tmp3 [V10 ] ( 0, 0 ) ref -> zero-ref
;* V11 tmp4 [V11 ] ( 0, 0 ) struct ( 4) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult]>
;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 4) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]>
-; V13 tmp6 [V13 ] ( 1, 2 ) struct ( 8) [sp+0x58] do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" <System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte]>
+; V13 tmp6 [V13 ] ( 1, 2 ) struct ( 8) [sp+0x48] do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" <System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte]>
; V14 tmp7 [V14,T03] ( 4, 6 ) ref -> r3 class-hnd single-def "dup spill" <System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]>
;* V15 tmp8 [V15 ] ( 0, 0 ) ref -> zero-ref single-def
; V16 tmp9 [V16,T10] ( 6, 4.50) ref -> r6 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V17 tmp10 [V17,T04] ( 4, 6 ) ref -> r0 class-hnd single-def "dup spill" <<unknown class>>
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref single-def
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V20 tmp13 [V20 ] ( 4, 4 ) struct ( 8) [sp+0x50] do-not-enreg[XS] must-init addr-exposed "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
+; V20 tmp13 [V20 ] ( 4, 4 ) struct ( 8) [sp+0x40] do-not-enreg[XS] must-init addr-exposed "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
; V21 tmp14 [V21,T05] ( 3, 6 ) ref -> r7 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.NullableWalker>
; V22 tmp15 [V22,T11] ( 2, 4 ) ref -> r8 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpressionBase>
-; V23 tmp16 [V23 ] ( 4, 8 ) struct ( 8) [sp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
+; V23 tmp16 [V23 ] ( 4, 8 ) struct ( 8) [sp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
;* V24 tmp17 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "non-inline candidate call" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
;* V25 tmp18 [V25 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[ubyte]>
-; V26 tmp19 [V26 ] ( 2, 4 ) struct (12) [sp+0x3C] do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V27 tmp20 [V27,T01] ( 4, 8 ) struct (20) [sp+0x28] do-not-enreg[S] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
+; V26 tmp19 [V26 ] ( 2, 4 ) struct (12) [sp+0x2C] do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
+; V27 tmp20 [V27,T01] ( 4, 8 ) struct (20) [sp+0x18] do-not-enreg[S] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
;* V28 tmp21 [V28 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Nullable`1[ubyte]>
;* V29 tmp22 [V29 ] ( 0, 0 ) ref -> zero-ref single-def "field V06.array (fldOffset=0x0)" P-INDEP
-; V30 tmp23 [V30,T20] ( 2, 2 ) ref -> r9 single-def "field V09.array (fldOffset=0x0)" P-INDEP
+; V30 tmp23 [V30,T17] ( 2, 2 ) ref -> r9 single-def "field V09.array (fldOffset=0x0)" P-INDEP
;* V31 tmp24 [V31 ] ( 0, 0 ) ref -> zero-ref "field V11.array (fldOffset=0x0)" P-INDEP
-; V32 tmp25 [V32,T19] ( 3, 2 ) ref -> r3 single-def "field V12.array (fldOffset=0x0)" P-INDEP
-; V33 tmp26 [V33,T23] ( 1, 2 ) ref -> [sp+0x58] do-not-enreg[H] hidden-struct-arg "field V13.Item1 (fldOffset=0x0)" P-DEP
-; V34 tmp27 [V34,T24] ( 1, 2 ) ubyte -> [sp+0x5C] do-not-enreg[H] hidden-struct-arg "field V13.Item2 (fldOffset=0x4)" P-DEP
-; V35 tmp28 [V35 ] ( 3, 3 ) ref -> [sp+0x50] do-not-enreg[X] addr-exposed "field V20.Type (fldOffset=0x0)" P-DEP
-; V36 tmp29 [V36 ] ( 3, 3 ) ubyte -> [sp+0x54] do-not-enreg[X] addr-exposed "field V20.State (fldOffset=0x4)" P-DEP
-; V37 tmp30 [V37 ] ( 3, 5 ) ref -> [sp+0x48] do-not-enreg[X] addr-exposed "field V23.Type (fldOffset=0x0)" P-DEP
-; V38 tmp31 [V38 ] ( 3, 5 ) ubyte -> [sp+0x4C] do-not-enreg[X] addr-exposed "field V23.State (fldOffset=0x4)" P-DEP
-; V39 tmp32 [V39,T21] ( 2, 2 ) ref -> r4 single-def "field V24.Type (fldOffset=0x0)" P-INDEP
-; V40 tmp33 [V40,T22] ( 2, 2 ) ubyte -> r6 single-def "field V24.State (fldOffset=0x4)" P-INDEP
+; V32 tmp25 [V32,T16] ( 3, 2 ) ref -> r3 single-def "field V12.array (fldOffset=0x0)" P-INDEP
+; V33 tmp26 [V33,T20] ( 1, 2 ) ref -> [sp+0x48] do-not-enreg[H] hidden-struct-arg "field V13.Item1 (fldOffset=0x0)" P-DEP
+; V34 tmp27 [V34,T21] ( 1, 2 ) ubyte -> [sp+0x4C] do-not-enreg[H] hidden-struct-arg "field V13.Item2 (fldOffset=0x4)" P-DEP
+; V35 tmp28 [V35 ] ( 3, 3 ) ref -> [sp+0x40] do-not-enreg[X] addr-exposed "field V20.Type (fldOffset=0x0)" P-DEP
+; V36 tmp29 [V36 ] ( 3, 3 ) ubyte -> [sp+0x44] do-not-enreg[X] addr-exposed "field V20.State (fldOffset=0x4)" P-DEP
+; V37 tmp30 [V37 ] ( 3, 5 ) ref -> [sp+0x38] do-not-enreg[X] addr-exposed "field V23.Type (fldOffset=0x0)" P-DEP
+; V38 tmp31 [V38 ] ( 3, 5 ) ubyte -> [sp+0x3C] do-not-enreg[X] addr-exposed "field V23.State (fldOffset=0x4)" P-DEP
+; V39 tmp32 [V39,T18] ( 2, 2 ) ref -> r4 single-def "field V24.Type (fldOffset=0x0)" P-INDEP
+; V40 tmp33 [V40,T19] ( 2, 2 ) ubyte -> r6 single-def "field V24.State (fldOffset=0x4)" P-INDEP
;* V41 tmp34 [V41 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V25.hasValue (fldOffset=0x0)" P-INDEP
;* V42 tmp35 [V42 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V25.value (fldOffset=0x1)" P-INDEP
-; V43 tmp36 [V43,T12] ( 2, 4 ) ref -> [sp+0x3C] do-not-enreg[H] hidden-struct-arg "field V26.DefaultType (fldOffset=0x0)" P-DEP
-; V44 tmp37 [V44,T13] ( 2, 4 ) ref -> [sp+0x40] do-not-enreg[H] hidden-struct-arg "field V26._extensions (fldOffset=0x4)" P-DEP
-; V45 tmp38 [V45,T16] ( 2, 4 ) ubyte -> [sp+0x44] do-not-enreg[H] hidden-struct-arg "field V26.DefaultNullableAnnotation (fldOffset=0x8)" P-DEP
-;* V46 tmp39 [V46,T26] ( 0, 0 ) ubyte -> zero-ref single-def "field V28.hasValue (fldOffset=0x0)" P-INDEP
-;* V47 tmp40 [V47,T27] ( 0, 0 ) ubyte -> zero-ref single-def "field V28.value (fldOffset=0x1)" P-INDEP
-; V48 tmp41 [V48,T07] ( 3, 6 ) struct ( 4) [sp+0x24] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-; V49 tmp42 [V49,T14] ( 2, 4 ) ref -> r7 single-def "argument with side effect"
-; V50 tmp43 [V50,T15] ( 2, 4 ) ref -> r8 single-def "argument with side effect"
-; V51 tmp44 [V51,T17] ( 2, 4 ) struct (20) [sp+0x10] do-not-enreg[S] must-init single-def "argument with side effect" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
-; V52 rat0 [V52,T06] ( 3, 6 ) ref -> r3 "delegate invoke call"
+; V43 tmp36 [V43,T12] ( 2, 4 ) ref -> [sp+0x2C] do-not-enreg[H] hidden-struct-arg "field V26.DefaultType (fldOffset=0x0)" P-DEP
+; V44 tmp37 [V44,T13] ( 2, 4 ) ref -> [sp+0x30] do-not-enreg[H] hidden-struct-arg "field V26._extensions (fldOffset=0x4)" P-DEP
+; V45 tmp38 [V45,T14] ( 2, 4 ) ubyte -> [sp+0x34] do-not-enreg[H] hidden-struct-arg "field V26.DefaultNullableAnnotation (fldOffset=0x8)" P-DEP
+;* V46 tmp39 [V46,T23] ( 0, 0 ) ubyte -> zero-ref single-def "field V28.hasValue (fldOffset=0x0)" P-INDEP
+;* V47 tmp40 [V47,T24] ( 0, 0 ) ubyte -> zero-ref single-def "field V28.value (fldOffset=0x1)" P-INDEP
+; V48 tmp41 [V48,T07] ( 3, 6 ) struct ( 4) [sp+0x14] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
+; V49 rat0 [V49,T06] ( 3, 6 ) ref -> r3 "delegate invoke call"
;
-; Lcl frame size = 100
+; Lcl frame size = 84
G_M54131_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r2,r3}
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 100
- add r11, sp, 128
- sub r4, r11, 112
- movs r5, 10
+ sub sp, 84
+ add r11, sp, 112
+ sub r4, r11, 88
+ movs r5, 7
movs r2, 0
movs r3, 0
stm r4!, {r2,r3}
@@ -82,7 +79,7 @@ G_M54131_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; byrRegs +[r5]
;; size=32 bbWeight=1 PerfScore 13.00
G_M54131_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
- ldr r0, [sp+0x8C]
+ ldr r0, [sp+0x7C]
; gcrRegs +[r0]
cmp r0, 0
bne SHORT G_M54131_IG04
@@ -94,7 +91,7 @@ G_M54131_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5},
;; size=4 bbWeight=0.50 PerfScore 1.00
G_M54131_IG04: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0020 {r5}, byref
; gcrRegs +[r0]
- ldr r1, [sp+0x88]
+ ldr r1, [sp+0x78]
; gcrRegs +[r1]
ldr r3, [r0]
ldr r3, [r3+0x2C]
@@ -142,7 +139,7 @@ G_M54131_IG07: ; bbWeight=0.50, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefReg
G_M54131_IG08: ; bbWeight=1, gcrefRegs=03D8 {r3 r4 r6 r7 r8 r9}, byrefRegs=0020 {r5}, byref, isz
; gcrRegs -[r0]
str r7, [sp]
- add r1, sp, 88
+ add r1, sp, 72
mov r2, r9
; gcrRegs +[r2]
ldr r0, [r8+0x04]
@@ -184,7 +181,7 @@ G_M54131_IG10: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5},
ldr r8, [r4+0x04]
; gcrRegs +[r8]
ldrb r2, [r4+0x18]
- add r0, sp, 80
+ add r0, sp, 64
mov r1, r6
; gcrRegs +[r1]
movw r3, 0xd1ff
@@ -194,86 +191,66 @@ G_M54131_IG10: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5},
; gcrRegs -[r1 r4 r6]
;; size=24 bbWeight=1 PerfScore 9.00
G_M54131_IG11: ; bbWeight=1, nogc, extend
- ldr r2, [sp+0x50]
- str r2, [sp+0x48]
- ldr r2, [sp+0x54]
- str r2, [sp+0x4C]
+ ldr r2, [sp+0x40]
+ str r2, [sp+0x38]
+ ldr r2, [sp+0x44]
+ str r2, [sp+0x3C]
;; size=8 bbWeight=1 PerfScore 4.00
G_M54131_IG12: ; bbWeight=1, extend
- ldr r4, [sp+0x48]
+ ldr r4, [sp+0x38]
; gcrRegs +[r4]
- ldrb r6, [sp+0x4C]
+ ldrb r6, [sp+0x3C]
ldr r2, [r7+0x04]
; gcrRegs +[r2]
- add r1, sp, 60
- add r0, sp, 72
+ add r1, sp, 44
+ add r0, sp, 56
movs r3, 0
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // <unknown method>
; gcrRegs -[r2]
- str r4, [sp+0x28]
- strb r6, [sp+0x2C]
+ str r4, [sp+0x18]
+ strb r6, [sp+0x1C]
;; size=34 bbWeight=1 PerfScore 12.00
G_M54131_IG13: ; bbWeight=1, nogc, extend
- ldr r0, [sp+0x3C]
- str r0, [sp+0x30]
- ldr r0, [sp+0x40]
- str r0, [sp+0x34]
- ldr r0, [sp+0x44]
- str r0, [sp+0x38]
+ ldr r3, [sp+0x2C]
+ str r3, [sp+0x20]
+ ldr r3, [sp+0x30]
+ str r3, [sp+0x24]
+ ldr r3, [sp+0x34]
+ str r3, [sp+0x28]
;; size=12 bbWeight=1 PerfScore 6.00
G_M54131_IG14: ; bbWeight=1, extend
- add r0, sp, 16
- ; byrRegs +[r0]
- add r1, sp, 40
- ; byrRegs +[r1]
- ldr r2, [r1!+0x04]
- ; gcrRegs +[r2]
- str r2, [r0!+0x04]
- ldr r2, [r1!+0x04]
- ; gcrRegs -[r2]
- str r2, [r0!+0x04]
- ldr r2, [r1!+0x04]
- ; gcrRegs +[r2]
- str r2, [r0!+0x04]
- ldr r2, [r1!+0x04]
- str r2, [r0!+0x04]
- ldr r2, [r1!+0x04]
- ; gcrRegs -[r2]
- str r2, [r0!+0x04]
- movs r0, 0
- ; byrRegs -[r0]
- strb r0, [sp+0x24]
- ;; size=50 bbWeight=1 PerfScore 14.00
+ movs r3, 0
+ strb r3, [sp+0x14]
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M54131_IG15: ; bbWeight=1, gcrefRegs=0180 {r7 r8}, byrefRegs=0020 {r5}, byref
; gcrRegs -[r4]
- ; byrRegs -[r1]
- strb r0, [sp+0x25]
- mov r0, r7
- ; gcrRegs +[r0]
- mov r1, r8
- ; gcrRegs +[r1]
- ldr r2, [sp+0x18]
+ strb r3, [sp+0x15]
+ ldrh r3, [sp+0x14]
+ str r3, [sp+0x0C]
+ ldr r2, [sp+0x20]
; gcrRegs +[r2]
str r2, [sp]
- ldr r2, [sp+0x1C]
+ ldr r2, [sp+0x24]
str r2, [sp+0x04]
- ldr r2, [sp+0x20]
+ ldr r2, [sp+0x28]
; gcrRegs -[r2]
str r2, [sp+0x08]
- ldr r2, [sp+0x10]
+ ldr r2, [sp+0x18]
; gcrRegs +[r2]
- ldr r3, [sp+0x14]
- ldrh lr, [sp+0x24]
- str lr, [sp+0x0C]
+ ldr r3, [sp+0x1C]
+ mov r1, r8
+ ; gcrRegs +[r1]
+ mov r0, r7
+ ; gcrRegs +[r0]
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // <unknown method>
; gcrRegs -[r0-r2 r7-r8]
- ldr r1, [sp+0x50]
+ ldr r1, [sp+0x40]
...
+16 (+10.96%) : 45767.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
@@ -8,33 +8,31 @@
; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 3 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V00 this [V00,T02] ( 3, 3 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Nullable`1[ubyte]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T03] ( 2, 4 ) ref -> r1 class-hnd single-def "dup spill" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def
-; V05 tmp3 [V05,T05] ( 4, 3.50) ref -> r1
-; V06 tmp4 [V06,T02] ( 5, 5 ) ref -> [sp+0x00] class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
-; V07 tmp5 [V07,T07] ( 3, 3 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V08 tmp6 [V08,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V09 tmp7 [V09,T10] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
-; V10 tmp8 [V10,T01] ( 3, 6 ) struct ( 4) [sp+0x04] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;* V11 tmp9 [V11,T08] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V12 tmp10 [V12,T04] ( 2, 4 ) ref -> r1 single-def "argument with side effect"
-; V13 cse0 [V13,T06] ( 4, 3 ) int -> r5 "CSE - aggressive"
+; V05 tmp3 [V05,T04] ( 4, 3.50) ref -> r1
+; V06 tmp4 [V06,T01] ( 5, 5 ) ref -> [sp+0x00] class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
+; V07 tmp5 [V07,T05] ( 3, 3 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+;* V08 tmp6 [V08,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V09 tmp7 [V09,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
+; V10 tmp8 [V10,T00] ( 3, 6 ) struct ( 4) [sp+0x04] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M22152_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r11,lr}
+ push {r4,r11,lr}
+ sub sp, 12
add r11, sp, 16
mov r4, r0
; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M22152_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- movw r5, 0xd1ff
- movt r5, 0xd1ff
- ldr r1, [r5]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ ldr r1, [r0]
; gcrRegs +[r1]
cmp r1, 0
bne SHORT G_M22152_IG04
@@ -51,12 +49,14 @@ G_M22152_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs +[r1]
str r1, [sp]
; GC ptr vars +{V06}
- ldr r3, [r5-0x2C]
+ movw r0, 0xd1ff
+ ; gcrRegs -[r0]
+ movt r0, 0xd1ff
+ ldr r3, [r0]
; gcrRegs +[r3]
cmp r3, 0
beq SHORT G_M22152_IG07
adds r0, r1, 4
- ; gcrRegs -[r0]
; byrRegs +[r0]
mov r1, r3
movw r12, 0xd1ff
@@ -69,7 +69,8 @@ G_M22152_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r2, [sp]
; gcrRegs +[r2]
str r1, [r2+0x0C]
- mov r0, r5
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
mov r1, r2
; gcrRegs +[r1]
movw r12, 0xd1ff
@@ -78,18 +79,18 @@ G_M22152_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r1]
mov r1, r2
; gcrRegs +[r1]
- ;; size=72 bbWeight=0.50 PerfScore 12.50
+ ;; size=84 bbWeight=0.50 PerfScore 14.00
G_M22152_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r2]
; GC ptr vars -{V06}
- movs r0, 0
- strb r0, [sp+0x04]
+ movs r3, 0
+ strb r3, [sp+0x04]
;; size=6 bbWeight=1 PerfScore 2.00
G_M22152_IG05: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
- strb r0, [sp+0x05]
+ strb r3, [sp+0x05]
+ ldrh r3, [sp+0x04]
mov r0, r4
; gcrRegs +[r0]
- ldrh r3, [sp+0x04]
movs r2, 0
movw lr, 0xd1ff
movt lr, 0xd1ff
@@ -98,8 +99,9 @@ G_M22152_IG05: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b
; gcrRegs -[r1 r4]
;; size=26 bbWeight=1 PerfScore 8.00
G_M22152_IG06: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
+ add sp, 12
+ pop {r4,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M22152_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0]
movw r3, 0xd1ff
@@ -109,7 +111,7 @@ G_M22152_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 146, prolog size 8, PerfScore 31.50, instruction count 49, allocated bytes for code 146 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
+; Total bytes of code 162, prolog size 10, PerfScore 35.00, instruction count 54, allocated bytes for code 162 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -121,7 +123,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 73 (0x00049) Actual length = 146 (0x000092)
+ Function Length : 81 (0x00051) Actual length = 162 (0x0000a2)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -129,7 +131,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32
- FF end
+ 03 add sp, sp, #12 ; opsize 16
+ A8 10 pop {r4,r11,lr} ; opsize 32
FF end
+16 (+10.96%) : 52475.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
@@ -8,33 +8,31 @@
; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 3 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V00 this [V00,T02] ( 3, 3 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Nullable`1[ubyte]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T03] ( 2, 4 ) ref -> r1 class-hnd single-def "dup spill" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def
-; V05 tmp3 [V05,T05] ( 4, 3.50) ref -> r1
-; V06 tmp4 [V06,T02] ( 5, 5 ) ref -> [sp+0x00] class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
-; V07 tmp5 [V07,T07] ( 3, 3 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V08 tmp6 [V08,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V09 tmp7 [V09,T10] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
-; V10 tmp8 [V10,T01] ( 3, 6 ) struct ( 4) [sp+0x04] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;* V11 tmp9 [V11,T08] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V12 tmp10 [V12,T04] ( 2, 4 ) ref -> r1 single-def "argument with side effect"
-; V13 cse0 [V13,T06] ( 4, 3 ) int -> r5 "CSE - aggressive"
+; V05 tmp3 [V05,T04] ( 4, 3.50) ref -> r1
+; V06 tmp4 [V06,T01] ( 5, 5 ) ref -> [sp+0x00] class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
+; V07 tmp5 [V07,T05] ( 3, 3 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+;* V08 tmp6 [V08,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V09 tmp7 [V09,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
+; V10 tmp8 [V10,T00] ( 3, 6 ) struct ( 4) [sp+0x04] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M22152_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r11,lr}
+ push {r4,r11,lr}
+ sub sp, 12
add r11, sp, 16
mov r4, r0
; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M22152_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- movw r5, 0xd1ff
- movt r5, 0xd1ff
- ldr r1, [r5]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ ldr r1, [r0]
; gcrRegs +[r1]
cmp r1, 0
bne SHORT G_M22152_IG04
@@ -51,12 +49,14 @@ G_M22152_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs +[r1]
str r1, [sp]
; GC ptr vars +{V06}
- ldr r3, [r5-0x2C]
+ movw r0, 0xd1ff
+ ; gcrRegs -[r0]
+ movt r0, 0xd1ff
+ ldr r3, [r0]
; gcrRegs +[r3]
cmp r3, 0
beq SHORT G_M22152_IG07
adds r0, r1, 4
- ; gcrRegs -[r0]
; byrRegs +[r0]
mov r1, r3
movw r12, 0xd1ff
@@ -69,7 +69,8 @@ G_M22152_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r2, [sp]
; gcrRegs +[r2]
str r1, [r2+0x0C]
- mov r0, r5
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
mov r1, r2
; gcrRegs +[r1]
movw r12, 0xd1ff
@@ -78,18 +79,18 @@ G_M22152_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r1]
mov r1, r2
; gcrRegs +[r1]
- ;; size=72 bbWeight=0.50 PerfScore 12.50
+ ;; size=84 bbWeight=0.50 PerfScore 14.00
G_M22152_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r2]
; GC ptr vars -{V06}
- movs r0, 0
- strb r0, [sp+0x04]
+ movs r3, 0
+ strb r3, [sp+0x04]
;; size=6 bbWeight=1 PerfScore 2.00
G_M22152_IG05: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
- strb r0, [sp+0x05]
+ strb r3, [sp+0x05]
+ ldrh r3, [sp+0x04]
mov r0, r4
; gcrRegs +[r0]
- ldrh r3, [sp+0x04]
movs r2, 0
movw lr, 0xd1ff
movt lr, 0xd1ff
@@ -98,8 +99,9 @@ G_M22152_IG05: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b
; gcrRegs -[r1 r4]
;; size=26 bbWeight=1 PerfScore 8.00
G_M22152_IG06: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
+ add sp, 12
+ pop {r4,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M22152_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0]
movw r3, 0xd1ff
@@ -109,7 +111,7 @@ G_M22152_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 146, prolog size 8, PerfScore 31.50, instruction count 49, allocated bytes for code 146 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
+; Total bytes of code 162, prolog size 10, PerfScore 35.00, instruction count 54, allocated bytes for code 162 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -121,7 +123,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 73 (0x00049) Actual length = 146 (0x000092)
+ Function Length : 81 (0x00051) Actual length = 162 (0x0000a2)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -129,7 +131,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32
- FF end
+ 03 add sp, sp, #12 ; opsize 16
+ A8 10 pop {r4,r11,lr} ; opsize 32
FF end
+16 (+10.96%) : 5392.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
@@ -8,33 +8,31 @@
; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 3 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V00 this [V00,T02] ( 3, 3 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Nullable`1[ubyte]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T03] ( 2, 4 ) ref -> r1 class-hnd single-def "dup spill" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def
-; V05 tmp3 [V05,T05] ( 4, 3.50) ref -> r1
-; V06 tmp4 [V06,T02] ( 5, 5 ) ref -> [sp+0x00] class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
-; V07 tmp5 [V07,T07] ( 3, 3 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V08 tmp6 [V08,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V09 tmp7 [V09,T10] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
-; V10 tmp8 [V10,T01] ( 3, 6 ) struct ( 4) [sp+0x04] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;* V11 tmp9 [V11,T08] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V12 tmp10 [V12,T04] ( 2, 4 ) ref -> r1 single-def "argument with side effect"
-; V13 cse0 [V13,T06] ( 4, 3 ) int -> r5 "CSE - aggressive"
+; V05 tmp3 [V05,T04] ( 4, 3.50) ref -> r1
+; V06 tmp4 [V06,T01] ( 5, 5 ) ref -> [sp+0x00] class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
+; V07 tmp5 [V07,T05] ( 3, 3 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+;* V08 tmp6 [V08,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V09 tmp7 [V09,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
+; V10 tmp8 [V10,T00] ( 3, 6 ) struct ( 4) [sp+0x04] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M22152_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r11,lr}
+ push {r4,r11,lr}
+ sub sp, 12
add r11, sp, 16
mov r4, r0
; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M22152_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- movw r5, 0xd1ff
- movt r5, 0xd1ff
- ldr r1, [r5]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ ldr r1, [r0]
; gcrRegs +[r1]
cmp r1, 0
bne SHORT G_M22152_IG04
@@ -51,12 +49,14 @@ G_M22152_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs +[r1]
str r1, [sp]
; GC ptr vars +{V06}
- ldr r3, [r5-0x2C]
+ movw r0, 0xd1ff
+ ; gcrRegs -[r0]
+ movt r0, 0xd1ff
+ ldr r3, [r0]
; gcrRegs +[r3]
cmp r3, 0
beq SHORT G_M22152_IG07
adds r0, r1, 4
- ; gcrRegs -[r0]
; byrRegs +[r0]
mov r1, r3
movw r12, 0xd1ff
@@ -69,7 +69,8 @@ G_M22152_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r2, [sp]
; gcrRegs +[r2]
str r1, [r2+0x0C]
- mov r0, r5
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
mov r1, r2
; gcrRegs +[r1]
movw r12, 0xd1ff
@@ -78,18 +79,18 @@ G_M22152_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r1]
mov r1, r2
; gcrRegs +[r1]
- ;; size=72 bbWeight=0.50 PerfScore 12.50
+ ;; size=84 bbWeight=0.50 PerfScore 14.00
G_M22152_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r2]
; GC ptr vars -{V06}
- movs r0, 0
- strb r0, [sp+0x04]
+ movs r3, 0
+ strb r3, [sp+0x04]
;; size=6 bbWeight=1 PerfScore 2.00
G_M22152_IG05: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
- strb r0, [sp+0x05]
+ strb r3, [sp+0x05]
+ ldrh r3, [sp+0x04]
mov r0, r4
; gcrRegs +[r0]
- ldrh r3, [sp+0x04]
movs r2, 0
movw lr, 0xd1ff
movt lr, 0xd1ff
@@ -98,8 +99,9 @@ G_M22152_IG05: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b
; gcrRegs -[r1 r4]
;; size=26 bbWeight=1 PerfScore 8.00
G_M22152_IG06: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
+ add sp, 12
+ pop {r4,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M22152_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0]
movw r3, 0xd1ff
@@ -109,7 +111,7 @@ G_M22152_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 146, prolog size 8, PerfScore 31.50, instruction count 49, allocated bytes for code 146 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
+; Total bytes of code 162, prolog size 10, PerfScore 35.00, instruction count 54, allocated bytes for code 162 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -121,7 +123,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 73 (0x00049) Actual length = 146 (0x000092)
+ Function Length : 81 (0x00051) Actual length = 162 (0x0000a2)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -129,7 +131,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32
- FF end
+ 03 add sp, sp, #12 ; opsize 16
+ A8 10 pop {r4,r11,lr} ; opsize 32
FF end
realworld.run.linux.arm.checked.mch
-46 (-20.00%) : 30725.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:
@@ -11,41 +11,38 @@
; V00 this [V00,T00] ( 6, 6 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker>
; V01 arg1 [V01,T03] ( 4, 4 ) ref -> r6 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundDelegateCreationExpression>
; V02 arg2 [V02,T05] ( 3, 3 ) ref -> r7 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
-; V03 arg3 [V03,T01] ( 5, 5 ) ref -> r5 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundMethodGroup>
+; V03 arg3 [V03,T02] ( 5, 5 ) ref -> r5 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundMethodGroup>
;* V04 loc0 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06 ] ( 3, 6 ) struct ( 8) [sp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
+; V06 tmp1 [V06 ] ( 3, 6 ) struct ( 8) [sp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "non-inline candidate call" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[ubyte]>
-; V09 tmp4 [V09 ] ( 2, 4 ) struct (12) [sp+0x3C] do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V10 tmp5 [V10,T02] ( 4, 8 ) struct (20) [sp+0x28] do-not-enreg[S] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
+; V09 tmp4 [V09 ] ( 2, 4 ) struct (12) [sp+0x2C] do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
+; V10 tmp5 [V10,T01] ( 4, 8 ) struct (20) [sp+0x18] do-not-enreg[S] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
;* V11 tmp6 [V11 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Nullable`1[ubyte]>
;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref single-def "field V04.Type (fldOffset=0x0)" P-INDEP
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.State (fldOffset=0x4)" P-INDEP
-; V14 tmp9 [V14 ] ( 2, 3 ) ref -> [sp+0x48] do-not-enreg[X] addr-exposed "field V06.Type (fldOffset=0x0)" P-DEP
-; V15 tmp10 [V15 ] ( 2, 3 ) ubyte -> [sp+0x4C] do-not-enreg[X] addr-exposed "field V06.State (fldOffset=0x4)" P-DEP
-; V16 tmp11 [V16,T10] ( 2, 2 ) ref -> r8 single-def "field V07.Type (fldOffset=0x0)" P-INDEP
-; V17 tmp12 [V17,T11] ( 2, 2 ) ubyte -> r9 single-def "field V07.State (fldOffset=0x4)" P-INDEP
+; V14 tmp9 [V14 ] ( 2, 3 ) ref -> [sp+0x38] do-not-enreg[X] addr-exposed "field V06.Type (fldOffset=0x0)" P-DEP
+; V15 tmp10 [V15 ] ( 2, 3 ) ubyte -> [sp+0x3C] do-not-enreg[X] addr-exposed "field V06.State (fldOffset=0x4)" P-DEP
+; V16 tmp11 [V16,T09] ( 2, 2 ) ref -> r8 single-def "field V07.Type (fldOffset=0x0)" P-INDEP
+; V17 tmp12 [V17,T10] ( 2, 2 ) ubyte -> r9 single-def "field V07.State (fldOffset=0x4)" P-INDEP
;* V18 tmp13 [V18 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.hasValue (fldOffset=0x0)" P-INDEP
;* V19 tmp14 [V19 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.value (fldOffset=0x1)" P-INDEP
-; V20 tmp15 [V20,T06] ( 2, 4 ) ref -> [sp+0x3C] do-not-enreg[H] hidden-struct-arg "field V09.DefaultType (fldOffset=0x0)" P-DEP
-; V21 tmp16 [V21,T07] ( 2, 4 ) ref -> [sp+0x40] do-not-enreg[H] hidden-struct-arg "field V09._extensions (fldOffset=0x4)" P-DEP
-; V22 tmp17 [V22,T08] ( 2, 4 ) ubyte -> [sp+0x44] do-not-enreg[H] hidden-struct-arg "field V09.NullableAnnotation (fldOffset=0x8)" P-DEP
-;* V23 tmp18 [V23,T14] ( 0, 0 ) ubyte -> zero-ref single-def "field V11.hasValue (fldOffset=0x0)" P-INDEP
-;* V24 tmp19 [V24,T15] ( 0, 0 ) ubyte -> zero-ref single-def "field V11.value (fldOffset=0x1)" P-INDEP
-; V25 tmp20 [V25,T04] ( 3, 6 ) struct ( 4) [sp+0x24] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;* V26 tmp21 [V26,T12] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V27 tmp22 [V27,T13] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V28 tmp23 [V28,T09] ( 2, 4 ) struct (20) [sp+0x10] do-not-enreg[S] must-init single-def "argument with side effect" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
+; V20 tmp15 [V20,T06] ( 2, 4 ) ref -> [sp+0x2C] do-not-enreg[H] hidden-struct-arg "field V09.DefaultType (fldOffset=0x0)" P-DEP
+; V21 tmp16 [V21,T07] ( 2, 4 ) ref -> [sp+0x30] do-not-enreg[H] hidden-struct-arg "field V09._extensions (fldOffset=0x4)" P-DEP
+; V22 tmp17 [V22,T08] ( 2, 4 ) ubyte -> [sp+0x34] do-not-enreg[H] hidden-struct-arg "field V09.NullableAnnotation (fldOffset=0x8)" P-DEP
+;* V23 tmp18 [V23,T11] ( 0, 0 ) ubyte -> zero-ref single-def "field V11.hasValue (fldOffset=0x0)" P-INDEP
+;* V24 tmp19 [V24,T12] ( 0, 0 ) ubyte -> zero-ref single-def "field V11.value (fldOffset=0x1)" P-INDEP
+; V25 tmp20 [V25,T04] ( 3, 6 ) struct ( 4) [sp+0x14] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
;
-; Lcl frame size = 80
+; Lcl frame size = 64
G_M59414_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r8,r9,r11,lr}
- sub sp, 80
- add r11, sp, 104
- sub r6, r11, 88
- movs r7, 8
+ sub sp, 64
+ add r11, sp, 88
+ sub r6, r11, 64
+ movs r7, 5
movs r4, 0
movs r5, 0
stm r6!, {r4,r5}
@@ -71,13 +68,13 @@ G_M59414_IG02: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000
ldr r2, [r0]
blx r3 // Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitMethodGroup(Microsoft.CodeAnalysis.CSharp.BoundMethodGroup):Microsoft.CodeAnalysis.CSharp.BoundNode:this
; gcrRegs -[r1]
- ldr r8, [sp+0x48]
+ ldr r8, [sp+0x38]
; gcrRegs +[r8]
- ldrb r9, [sp+0x4C]
+ ldrb r9, [sp+0x3C]
ldr r2, [r4+0x04]
; gcrRegs +[r2]
- add r1, sp, 60
- add r0, sp, 72
+ add r1, sp, 44
+ add r0, sp, 56
; gcrRegs -[r0]
movs r3, 0
movw lr, 0xd1ff
@@ -85,61 +82,41 @@ G_M59414_IG02: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000
ldr lr, [lr]
blx lr // <unknown method>
; gcrRegs -[r2]
- str r8, [sp+0x28]
- strb r9, [sp+0x2C]
+ str r8, [sp+0x18]
+ strb r9, [sp+0x1C]
;; size=56 bbWeight=1 PerfScore 19.00
G_M59414_IG03: ; bbWeight=1, nogc, extend
- ldr r0, [sp+0x3C]
- str r0, [sp+0x30]
- ldr r0, [sp+0x40]
- str r0, [sp+0x34]
- ldr r0, [sp+0x44]
- str r0, [sp+0x38]
+ ldr r3, [sp+0x2C]
+ str r3, [sp+0x20]
+ ldr r3, [sp+0x30]
+ str r3, [sp+0x24]
+ ldr r3, [sp+0x34]
+ str r3, [sp+0x28]
;; size=12 bbWeight=1 PerfScore 6.00
G_M59414_IG04: ; bbWeight=1, extend
- add r0, sp, 16
- ; byrRegs +[r0]
- add r1, sp, 40
- ; byrRegs +[r1]
- ldr r2, [r1!+0x04]
- ; gcrRegs +[r2]
- str r2, [r0!+0x04]
- ldr r2, [r1!+0x04]
- ; gcrRegs -[r2]
- str r2, [r0!+0x04]
- ldr r2, [r1!+0x04]
- ; gcrRegs +[r2]
- str r2, [r0!+0x04]
- ldr r2, [r1!+0x04]
- str r2, [r0!+0x04]
- ldr r2, [r1!+0x04]
- ; gcrRegs -[r2]
- str r2, [r0!+0x04]
- movs r0, 0
- ; byrRegs -[r0]
- strb r0, [sp+0x24]
- ;; size=50 bbWeight=1 PerfScore 14.00
+ movs r3, 0
+ strb r3, [sp+0x14]
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M59414_IG05: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref
; gcrRegs -[r8]
- ; byrRegs -[r1]
- strb r0, [sp+0x25]
- mov r0, r4
- ; gcrRegs +[r0]
- mov r1, r5
- ; gcrRegs +[r1]
- ldr r2, [sp+0x18]
+ strb r3, [sp+0x15]
+ ldrh r3, [sp+0x14]
+ str r3, [sp+0x0C]
+ ldr r2, [sp+0x20]
; gcrRegs +[r2]
str r2, [sp]
- ldr r2, [sp+0x1C]
+ ldr r2, [sp+0x24]
str r2, [sp+0x04]
- ldr r2, [sp+0x20]
+ ldr r2, [sp+0x28]
; gcrRegs -[r2]
str r2, [sp+0x08]
- ldr r2, [sp+0x10]
+ ldr r2, [sp+0x18]
; gcrRegs +[r2]
- ldr r3, [sp+0x14]
- ldrh lr, [sp+0x24]
- str lr, [sp+0x0C]
+ ldr r3, [sp+0x1C]
+ mov r1, r5
+ ; gcrRegs +[r1]
+ mov r0, r4
+ ; gcrRegs +[r0]
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
@@ -160,13 +137,13 @@ G_M59414_IG05: ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000
ldr lr, [lr]
blx lr // Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitDelegateCreationExpression>g__analyzeMethodGroupConversion|278_3(Microsoft.CodeAnalysis.CSharp.BoundDelegateCreationExpression,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundMethodGroup,ubyte):System.Action`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this
; gcrRegs -[r1-r7]
- ;; size=72 bbWeight=1 PerfScore 27.00
+ ;; size=70 bbWeight=1 PerfScore 27.00
G_M59414_IG06: ; bbWeight=1, epilog, nogc, extend
- add sp, 80
+ add sp, 64
pop {r4,r5,r6,r7,r8,r9,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 230, prolog size 26, PerfScore 82.00, instruction count 82, allocated bytes for code 230 (MethodHash=5db917e9) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitDelegateCreationExpression>g__visitMethodGroupArgument|278_2(Microsoft.CodeAnalysis.CSharp.BoundDelegateCreationExpression,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundMethodGroup):System.Action`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
+; Total bytes of code 184, prolog size 26, PerfScore 70.00, instruction count 70, allocated bytes for code 184 (MethodHash=5db917e9) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitDelegateCreationExpression>g__visitMethodGroupArgument|278_2(Microsoft.CodeAnalysis.CSharp.BoundDelegateCreationExpression,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundMethodGroup):System.Action`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -178,11 +155,11 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 115 (0x00073) Actual length = 230 (0x0000e6)
+ Function Length : 92 (0x0005c) Actual length = 184 (0x0000b8)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 14 add sp, sp, #80 ; opsize 16
+ 10 add sp, sp, #64 ; opsize 16
AB F0 pop {r4,r5,r6,r7,r8,r9,r11,lr} ; opsize 32
FF end
-42 (-17.80%) : 14165.dasm - (dynamicClass):ILSTUBCallTailCallTarget(int,byref,int) (FullOpts)
@@ -8,41 +8,36 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 14, 14 ) int -> r0 single-def
-; V01 arg1 [V01,T06] ( 3, 3 ) byref -> r4 single-def
-; V02 arg2 [V02,T03] ( 4, 4 ) int -> r2 single-def
+; V01 arg1 [V01,T05] ( 3, 3 ) byref -> r4 single-def
+; V02 arg2 [V02,T02] ( 4, 4 ) int -> r2 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (28) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T15] ( 2, 4 ) int -> r1 "impAppendStmt"
-; V06 tmp2 [V06,T07] ( 2, 4 ) ref -> r2 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V07 tmp3 [V07,T08] ( 2, 4 ) ref -> r3 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V08 tmp4 [V08,T09] ( 2, 4 ) ref -> lr class-hnd single-def "impAppendStmt" <<unknown class>>
+; V05 tmp1 [V05,T11] ( 2, 4 ) int -> lr "impAppendStmt"
+; V06 tmp2 [V06,T06] ( 2, 4 ) ref -> r1 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V07 tmp3 [V07,T07] ( 2, 4 ) ref -> r2 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V08 tmp4 [V08,T08] ( 2, 4 ) ref -> r3 class-hnd single-def "impAppendStmt" <<unknown class>>
;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref double-align "impAppendStmt" <FSharp.Compiler.Text.Range>
;* V10 tmp6 [V10 ] ( 0, 0 ) struct ( 4) zero-ref "impAppendStmt" <FSharp.Compiler.ParseHelpers+LexerStringKind>
-; V11 tmp7 [V11,T10] ( 2, 4 ) ref -> r7 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V12 tmp8 [V12,T11] ( 2, 4 ) ref -> r8 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V13 tmp9 [V13,T17] ( 3, 3 ) long -> [sp+0x48] do-not-enreg[F] "field V09.code1 (fldOffset=0x0)" P-INDEP
-; V14 tmp10 [V14,T18] ( 3, 3 ) long -> [sp+0x40] do-not-enreg[F] "field V09.code2 (fldOffset=0x8)" P-INDEP
-; V15 tmp11 [V15,T19] ( 2, 2 ) ubyte -> r12 "field V10.IsByteString@ (fldOffset=0x0)" P-INDEP
-; V16 tmp12 [V16,T20] ( 2, 2 ) ubyte -> r5 "field V10.IsInterpolated@ (fldOffset=0x1)" P-INDEP
-; V17 tmp13 [V17,T21] ( 2, 2 ) ubyte -> r6 "field V10.IsInterpolatedFirst@ (fldOffset=0x2)" P-INDEP
-; V18 tmp14 [V18,T02] ( 4, 8 ) struct ( 4) [sp+0x3C] do-not-enreg[SF] "by-value struct argument" <FSharp.Compiler.ParseHelpers+LexerStringKind>
-; V19 tmp15 [V19,T16] ( 2, 4 ) int -> r0 "argument with side effect"
-; V20 tmp16 [V20,T12] ( 2, 4 ) ref -> r1 single-def "argument with side effect"
-; V21 tmp17 [V21,T13] ( 2, 4 ) ref -> r2 single-def "argument with side effect"
-; V22 tmp18 [V22,T14] ( 2, 4 ) ref -> r3 single-def "argument with side effect"
-; V23 tmp19 [V23,T01] ( 5, 10 ) struct (16) [sp+0x28] do-not-enreg[SF] double-align "argument with side effect" <FSharp.Compiler.Text.Range>
-; V24 rat0 [V24,T04] ( 3, 6 ) int -> r12 "ReplaceWithLclVar is creating a new local variable"
-; V25 rat1 [V25,T05] ( 3, 6 ) int -> r12 "ReplaceWithLclVar is creating a new local variable"
-; TEMP_01 ref -> [r11-0x44]
+; V11 tmp7 [V11,T09] ( 2, 4 ) ref -> r7 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V12 tmp8 [V12,T10] ( 2, 4 ) ref -> r8 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V13 tmp9 [V13,T12] ( 3, 3 ) long -> [sp+0x38] do-not-enreg[F] "field V09.code1 (fldOffset=0x0)" P-INDEP
+; V14 tmp10 [V14,T13] ( 3, 3 ) long -> [sp+0x30] do-not-enreg[F] "field V09.code2 (fldOffset=0x8)" P-INDEP
+; V15 tmp11 [V15,T14] ( 2, 2 ) ubyte -> r12 "field V10.IsByteString@ (fldOffset=0x0)" P-INDEP
+; V16 tmp12 [V16,T15] ( 2, 2 ) ubyte -> r5 "field V10.IsInterpolated@ (fldOffset=0x1)" P-INDEP
+; V17 tmp13 [V17,T16] ( 2, 2 ) ubyte -> [sp+0x2C] spill-single-def "field V10.IsInterpolatedFirst@ (fldOffset=0x2)" P-INDEP
+; V18 tmp14 [V18,T01] ( 4, 8 ) struct ( 4) [sp+0x28] do-not-enreg[SF] "by-value struct argument" <FSharp.Compiler.ParseHelpers+LexerStringKind>
+; V19 rat0 [V19,T03] ( 3, 6 ) int -> r12 "ReplaceWithLclVar is creating a new local variable"
+; V20 rat1 [V20,T04] ( 3, 6 ) int -> r12 "ReplaceWithLclVar is creating a new local variable"
+; TEMP_01 ref -> [r11-0x3C]
;
-; Lcl frame size = 80
+; Lcl frame size = 68
G_M50245_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r9,r11,lr}
- sub sp, 80
- add r11, sp, 104
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
+ sub sp, 68
+ add r11, sp, 96
movs r3, 0
- str r3, [sp+0x24]
+ str r3, [sp+0x24] // [TEMP_01]
mov r4, r1
; byrRegs +[r4]
;; size=16 bbWeight=1 PerfScore 6.00
@@ -52,70 +47,59 @@ G_M50245_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre
movw r1, LOW ADDRESS G_M50245_IG03
movt r1, HIGH ADDRESS G_M50245_IG03
str r1, [r2]
- ldrb r1, [r0+0x0C]
- ldr r2, [r0+0x10]
+ ldrb lr, [r0+0x0C]
+ ldr r1, [r0+0x10]
+ ; gcrRegs +[r1]
+ ldr r2, [r0+0x14]
; gcrRegs +[r2]
- ldr r3, [r0+0x14]
+ ldr r3, [r0+0x18]
; gcrRegs +[r3]
- ldr lr, [r0+0x18]
- ; gcrRegs +[lr]
add r12, r0, 32
ldr r5, [r12]
ldr r12, [r12+0x04]
- str r5, [sp+0x48]
- str r12, [sp+0x4C]
+ str r5, [sp+0x38]
+ str r12, [sp+0x3C]
add r12, r0, 40
ldr r5, [r12]
ldr r12, [r12+0x04]
- str r5, [sp+0x40]
- str r12, [sp+0x44]
+ str r5, [sp+0x30]
+ str r12, [sp+0x34]
ldrb r12, [r0+0x30]
ldrb r5, [r0+0x31]
ldrb r6, [r0+0x32]
+ strb r6, [sp+0x2C] // [V17 tmp13]
ldr r7, [r0+0x34]
; gcrRegs +[r7]
ldr r8, [r0+0x38]
; gcrRegs +[r8]
mov r9, 2
str r9, [r0]
- mov r0, r1
- mov r1, r2
- ; gcrRegs +[r1]
- mov r2, r3
- mov r3, lr
- ldr lr, [sp+0x48]
- ; gcrRegs -[lr]
- ldr r9, [sp+0x4C]
- str lr, [sp+0x28]
- str r9, [sp+0x2C]
- ldr lr, [sp+0x40]
- ldr r9, [sp+0x44]
- str lr, [sp+0x30]
- str r9, [sp+0x34]
- strb r12, [sp+0x3C]
- strb r5, [sp+0x3D]
- strb r6, [sp+0x3E]
- str r7, [sp+0x14]
- str r8, [sp+0x18]
- ldr lr, [sp+0x28]
- str lr, [sp]
- ldr lr, [sp+0x2C]
- str lr, [sp+0x04]
- ldr lr, [sp+0x30]
- str lr, [sp+0x08]
- ldr lr, [sp+0x34]
- str lr, [sp+0x0C]
- ldr lr, [sp+0x3C]
- str lr, [sp+0x10]
+ ldr r0, [sp+0x38] // [V13 tmp9]
+ ldr r9, [sp+0x3C] // [V13 tmp9+0x04]
+ ldr r10, [sp+0x30] // [V14 tmp10]
+ ldr r6, [sp+0x34] // [V14 tmp10+0x04]
+ str r0, [sp] // [V04 OutArgs]
+ str r9, [sp+0x04] // [V04 OutArgs+0x04]
+ str r10, [sp+0x08] // [V04 OutArgs+0x08]
+ str r6, [sp+0x0C] // [V04 OutArgs+0x0c]
+ strb r12, [sp+0x28] // [V18 tmp14]
+ strb r5, [sp+0x29] // [V18 tmp14+0x01]
+ ldrb r6, [sp+0x2C] // [V17 tmp13]
+ strb r6, [sp+0x2A] // [V18 tmp14+0x02]
+ str r7, [sp+0x14] // [V04 OutArgs+0x14]
+ str r8, [sp+0x18] // [V04 OutArgs+0x18]
+ ldr r0, [sp+0x28] // [V18 tmp14]
+ str r0, [sp+0x10] // [V04 OutArgs+0x10]
+ mov r0, lr
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // <unknown method>
; gcrRegs -[r1-r3 r7-r8] +[r0]
- ;; size=198 bbWeight=1 PerfScore 57.00
+ ;; size=156 bbWeight=1 PerfScore 48.00
G_M50245_IG03: ; bbWeight=1, extend
- str r0, [sp+0x24]
- ldr r1, [sp+0x24]
+ str r0, [sp+0x24] // [TEMP_01]
+ ldr r1, [sp+0x24] // [TEMP_01]
; gcrRegs +[r1]
mov r0, r4
; gcrRegs -[r0]
@@ -127,11 +111,11 @@ G_M50245_IG03: ; bbWeight=1, extend
; byrRegs -[r0 r4]
;; size=16 bbWeight=1 PerfScore 6.00
G_M50245_IG04: ; bbWeight=1, epilog, nogc, extend
- add sp, 80
- pop {r4,r5,r6,r7,r8,r9,r11,pc}
+ add sp, 68
+ pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 236, prolog size 14, PerfScore 71.00, instruction count 71, allocated bytes for code 236 (MethodHash=c0f83bba) for method (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
+; Total bytes of code 194, prolog size 14, PerfScore 62.00, instruction count 62, allocated bytes for code 194 (MethodHash=c0f83bba) for method (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
; ============================================================
Unwind Info:
@@ -143,11 +127,12 @@ Unwind Info:
E bit : 1
X bit : 0
Vers : 0
- Function Length : 118 (0x00076) Actual length = 236 (0x0000ec)
+ Function Length : 97 (0x00061) Actual length = 194 (0x0000c2)
--- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
- 14 add sp, sp, #80 ; opsize 16
- AB F0 pop {r4,r5,r6,r7,r8,r9,r11,lr} ; opsize 32
+ 11 add sp, sp, #68 ; opsize 16
+ DF pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} ; opsize 32
+ FF end
FF end
-46 (-12.78%) : 29395.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>cDisplayClass167_0:
@@ -10,70 +10,67 @@
;
; V00 this [V00,T00] ( 11, 11 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass167_0>
; V01 RetBuf [V01,T02] ( 4, 4 ) byref -> r5 single-def
-; V02 arg1 [V02,T09] ( 4, 3.50) struct (12) [sp+0x88] do-not-enreg[SF] ld-addr-op single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
+; V02 arg1 [V02,T09] ( 4, 3.50) struct (12) [sp+0x78] do-not-enreg[SF] ld-addr-op single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
;* V03 loc0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V04 loc1 [V04,T10] ( 6, 5 ) ref -> r7 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
-; V05 loc2 [V05,T26] ( 2, 1.50) int -> r1 single-def
+; V05 loc2 [V05,T23] ( 2, 1.50) int -> r1 single-def
;* V06 loc3 [V06 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]>
; V07 OutArgs [V07 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 4) zero-ref "location for address-of(RValue)" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V09 tmp2 [V09,T19] ( 3, 3 ) ref -> r8 single-def
+; V09 tmp2 [V09,T16] ( 3, 3 ) ref -> r8 single-def
;* V10 tmp3 [V10 ] ( 0, 0 ) struct ( 4) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult]>
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref
;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 4) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult]>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct ( 4) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]>
-; V14 tmp7 [V14 ] ( 1, 2 ) struct ( 8) [sp+0x58] do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" <System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte]>
+; V14 tmp7 [V14 ] ( 1, 2 ) struct ( 8) [sp+0x48] do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" <System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte]>
; V15 tmp8 [V15,T03] ( 4, 6 ) ref -> r3 class-hnd single-def "dup spill" <System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]>
;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref single-def
; V17 tmp10 [V17,T11] ( 6, 4.50) ref -> r6 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V18 tmp11 [V18,T04] ( 4, 6 ) ref -> r0 class-hnd single-def "dup spill" <<unknown class>>
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref single-def
;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp14 [V21 ] ( 4, 4 ) struct ( 8) [sp+0x50] do-not-enreg[XS] must-init addr-exposed "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
+; V21 tmp14 [V21 ] ( 4, 4 ) struct ( 8) [sp+0x40] do-not-enreg[XS] must-init addr-exposed "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
; V22 tmp15 [V22,T05] ( 3, 6 ) ref -> r7 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.NullableWalker>
; V23 tmp16 [V23,T12] ( 2, 4 ) ref -> r8 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpressionBase>
-; V24 tmp17 [V24 ] ( 4, 8 ) struct ( 8) [sp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
+; V24 tmp17 [V24 ] ( 4, 8 ) struct ( 8) [sp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
;* V25 tmp18 [V25 ] ( 0, 0 ) struct ( 8) zero-ref "non-inline candidate call" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
;* V26 tmp19 [V26 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[ubyte]>
-; V27 tmp20 [V27 ] ( 2, 4 ) struct (12) [sp+0x3C] do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V28 tmp21 [V28,T01] ( 4, 8 ) struct (20) [sp+0x28] do-not-enreg[S] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
+; V27 tmp20 [V27 ] ( 2, 4 ) struct (12) [sp+0x2C] do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
+; V28 tmp21 [V28,T01] ( 4, 8 ) struct (20) [sp+0x18] do-not-enreg[S] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
;* V29 tmp22 [V29 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Nullable`1[ubyte]>
;* V30 tmp23 [V30 ] ( 0, 0 ) ref -> zero-ref single-def "field V06.array (fldOffset=0x0)" P-INDEP
;* V31 tmp24 [V31 ] ( 0, 0 ) ref -> zero-ref "field V08.array (fldOffset=0x0)" P-INDEP
-; V32 tmp25 [V32,T21] ( 2, 2 ) ref -> r9 single-def "field V10.array (fldOffset=0x0)" P-INDEP
+; V32 tmp25 [V32,T18] ( 2, 2 ) ref -> r9 single-def "field V10.array (fldOffset=0x0)" P-INDEP
;* V33 tmp26 [V33 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
-; V34 tmp27 [V34,T20] ( 3, 2 ) ref -> r3 single-def "field V13.array (fldOffset=0x0)" P-INDEP
-; V35 tmp28 [V35,T24] ( 1, 2 ) ref -> [sp+0x58] do-not-enreg[H] hidden-struct-arg "field V14.Item1 (fldOffset=0x0)" P-DEP
-; V36 tmp29 [V36,T25] ( 1, 2 ) ubyte -> [sp+0x5C] do-not-enreg[H] hidden-struct-arg "field V14.Item2 (fldOffset=0x4)" P-DEP
-; V37 tmp30 [V37 ] ( 3, 3 ) ref -> [sp+0x50] do-not-enreg[X] addr-exposed "field V21.Type (fldOffset=0x0)" P-DEP
-; V38 tmp31 [V38 ] ( 3, 3 ) ubyte -> [sp+0x54] do-not-enreg[X] addr-exposed "field V21.State (fldOffset=0x4)" P-DEP
-; V39 tmp32 [V39 ] ( 3, 5 ) ref -> [sp+0x48] do-not-enreg[X] addr-exposed "field V24.Type (fldOffset=0x0)" P-DEP
-; V40 tmp33 [V40 ] ( 3, 5 ) ubyte -> [sp+0x4C] do-not-enreg[X] addr-exposed "field V24.State (fldOffset=0x4)" P-DEP
-; V41 tmp34 [V41,T22] ( 2, 2 ) ref -> r4 single-def "field V25.Type (fldOffset=0x0)" P-INDEP
-; V42 tmp35 [V42,T23] ( 2, 2 ) ubyte -> r6 single-def "field V25.State (fldOffset=0x4)" P-INDEP
+; V34 tmp27 [V34,T17] ( 3, 2 ) ref -> r3 single-def "field V13.array (fldOffset=0x0)" P-INDEP
+; V35 tmp28 [V35,T21] ( 1, 2 ) ref -> [sp+0x48] do-not-enreg[H] hidden-struct-arg "field V14.Item1 (fldOffset=0x0)" P-DEP
+; V36 tmp29 [V36,T22] ( 1, 2 ) ubyte -> [sp+0x4C] do-not-enreg[H] hidden-struct-arg "field V14.Item2 (fldOffset=0x4)" P-DEP
+; V37 tmp30 [V37 ] ( 3, 3 ) ref -> [sp+0x40] do-not-enreg[X] addr-exposed "field V21.Type (fldOffset=0x0)" P-DEP
+; V38 tmp31 [V38 ] ( 3, 3 ) ubyte -> [sp+0x44] do-not-enreg[X] addr-exposed "field V21.State (fldOffset=0x4)" P-DEP
+; V39 tmp32 [V39 ] ( 3, 5 ) ref -> [sp+0x38] do-not-enreg[X] addr-exposed "field V24.Type (fldOffset=0x0)" P-DEP
+; V40 tmp33 [V40 ] ( 3, 5 ) ubyte -> [sp+0x3C] do-not-enreg[X] addr-exposed "field V24.State (fldOffset=0x4)" P-DEP
+; V41 tmp34 [V41,T19] ( 2, 2 ) ref -> r4 single-def "field V25.Type (fldOffset=0x0)" P-INDEP
+; V42 tmp35 [V42,T20] ( 2, 2 ) ubyte -> r6 single-def "field V25.State (fldOffset=0x4)" P-INDEP
;* V43 tmp36 [V43 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V26.hasValue (fldOffset=0x0)" P-INDEP
;* V44 tmp37 [V44 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V26.value (fldOffset=0x1)" P-INDEP
-; V45 tmp38 [V45,T13] ( 2, 4 ) ref -> [sp+0x3C] do-not-enreg[H] hidden-struct-arg "field V27.DefaultType (fldOffset=0x0)" P-DEP
-; V46 tmp39 [V46,T14] ( 2, 4 ) ref -> [sp+0x40] do-not-enreg[H] hidden-struct-arg "field V27._extensions (fldOffset=0x4)" P-DEP
-; V47 tmp40 [V47,T17] ( 2, 4 ) ubyte -> [sp+0x44] do-not-enreg[H] hidden-struct-arg "field V27.NullableAnnotation (fldOffset=0x8)" P-DEP
-;* V48 tmp41 [V48,T27] ( 0, 0 ) ubyte -> zero-ref single-def "field V29.hasValue (fldOffset=0x0)" P-INDEP
-;* V49 tmp42 [V49,T28] ( 0, 0 ) ubyte -> zero-ref single-def "field V29.value (fldOffset=0x1)" P-INDEP
+; V45 tmp38 [V45,T13] ( 2, 4 ) ref -> [sp+0x2C] do-not-enreg[H] hidden-struct-arg "field V27.DefaultType (fldOffset=0x0)" P-DEP
+; V46 tmp39 [V46,T14] ( 2, 4 ) ref -> [sp+0x30] do-not-enreg[H] hidden-struct-arg "field V27._extensions (fldOffset=0x4)" P-DEP
+; V47 tmp40 [V47,T15] ( 2, 4 ) ubyte -> [sp+0x34] do-not-enreg[H] hidden-struct-arg "field V27.NullableAnnotation (fldOffset=0x8)" P-DEP
+;* V48 tmp41 [V48,T24] ( 0, 0 ) ubyte -> zero-ref single-def "field V29.hasValue (fldOffset=0x0)" P-INDEP
+;* V49 tmp42 [V49,T25] ( 0, 0 ) ubyte -> zero-ref single-def "field V29.value (fldOffset=0x1)" P-INDEP
; V50 tmp43 [V50,T06] ( 3, 6 ) ref -> r0 single-def "argument with side effect"
-; V51 tmp44 [V51,T08] ( 3, 6 ) struct ( 4) [sp+0x24] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-; V52 tmp45 [V52,T15] ( 2, 4 ) ref -> r7 single-def "argument with side effect"
-; V53 tmp46 [V53,T16] ( 2, 4 ) ref -> r8 single-def "argument with side effect"
-; V54 tmp47 [V54,T18] ( 2, 4 ) struct (20) [sp+0x10] do-not-enreg[S] must-init single-def "argument with side effect" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
-; V55 rat0 [V55,T07] ( 3, 6 ) ref -> r3 "delegate invoke call"
+; V51 tmp44 [V51,T08] ( 3, 6 ) struct ( 4) [sp+0x14] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
+; V52 rat0 [V52,T07] ( 3, 6 ) ref -> r3 "delegate invoke call"
;
-; Lcl frame size = 100
+; Lcl frame size = 84
G_M54131_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r2,r3}
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 100
- add r11, sp, 128
- sub r4, r11, 112
- movs r5, 10
+ sub sp, 84
+ add r11, sp, 112
+ sub r4, r11, 88
+ movs r5, 7
movs r2, 0
movs r3, 0
stm r4!, {r2,r3}
@@ -91,7 +88,7 @@ G_M54131_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, by
ldr r3, [r3+0x30]
ldr r3, [r3+0x1C]
blx r3 // <unknown method>
- ldr r0, [sp+0x8C]
+ ldr r0, [sp+0x7C]
cmp r0, 0
bne SHORT G_M54131_IG04
;; size=16 bbWeight=1 PerfScore 8.00
@@ -102,7 +99,7 @@ G_M54131_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5},
;; size=4 bbWeight=0.50 PerfScore 1.00
G_M54131_IG04: ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0020 {r5}, byref
; gcrRegs +[r0]
- ldr r1, [sp+0x88]
+ ldr r1, [sp+0x78]
; gcrRegs +[r1]
ldr r3, [r0]
ldr r3, [r3+0x2C]
@@ -150,7 +147,7 @@ G_M54131_IG07: ; bbWeight=0.50, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefReg
G_M54131_IG08: ; bbWeight=1, gcrefRegs=03D8 {r3 r4 r6 r7 r8 r9}, byrefRegs=0020 {r5}, byref, isz
; gcrRegs -[r0]
str r7, [sp]
- add r1, sp, 88
+ add r1, sp, 72
mov r2, r9
; gcrRegs +[r2]
ldr r0, [r8+0x04]
@@ -192,7 +189,7 @@ G_M54131_IG10: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5},
ldr r8, [r4+0x04]
; gcrRegs +[r8]
ldrb r2, [r4+0x18]
- add r0, sp, 80
+ add r0, sp, 64
mov r1, r6
; gcrRegs +[r1]
movw r3, 0xd1ff
@@ -202,86 +199,66 @@ G_M54131_IG10: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5},
; gcrRegs -[r1 r4 r6]
;; size=24 bbWeight=1 PerfScore 9.00
G_M54131_IG11: ; bbWeight=1, nogc, extend
- ldr r2, [sp+0x50]
- str r2, [sp+0x48]
- ldr r2, [sp+0x54]
- str r2, [sp+0x4C]
+ ldr r2, [sp+0x40]
+ str r2, [sp+0x38]
+ ldr r2, [sp+0x44]
+ str r2, [sp+0x3C]
;; size=8 bbWeight=1 PerfScore 4.00
G_M54131_IG12: ; bbWeight=1, extend
- ldr r4, [sp+0x48]
+ ldr r4, [sp+0x38]
; gcrRegs +[r4]
- ldrb r6, [sp+0x4C]
+ ldrb r6, [sp+0x3C]
ldr r2, [r7+0x04]
; gcrRegs +[r2]
- add r1, sp, 60
- add r0, sp, 72
+ add r1, sp, 44
+ add r0, sp, 56
movs r3, 0
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // <unknown method>
; gcrRegs -[r2]
- str r4, [sp+0x28]
- strb r6, [sp+0x2C]
+ str r4, [sp+0x18]
+ strb r6, [sp+0x1C]
;; size=34 bbWeight=1 PerfScore 12.00
G_M54131_IG13: ; bbWeight=1, nogc, extend
- ldr r0, [sp+0x3C]
- str r0, [sp+0x30]
- ldr r0, [sp+0x40]
- str r0, [sp+0x34]
- ldr r0, [sp+0x44]
- str r0, [sp+0x38]
+ ldr r3, [sp+0x2C]
+ str r3, [sp+0x20]
+ ldr r3, [sp+0x30]
+ str r3, [sp+0x24]
+ ldr r3, [sp+0x34]
+ str r3, [sp+0x28]
;; size=12 bbWeight=1 PerfScore 6.00
G_M54131_IG14: ; bbWeight=1, extend
- add r0, sp, 16
- ; byrRegs +[r0]
- add r1, sp, 40
- ; byrRegs +[r1]
- ldr r2, [r1!+0x04]
- ; gcrRegs +[r2]
- str r2, [r0!+0x04]
- ldr r2, [r1!+0x04]
- ; gcrRegs -[r2]
- str r2, [r0!+0x04]
- ldr r2, [r1!+0x04]
- ; gcrRegs +[r2]
- str r2, [r0!+0x04]
- ldr r2, [r1!+0x04]
- str r2, [r0!+0x04]
- ldr r2, [r1!+0x04]
- ; gcrRegs -[r2]
- str r2, [r0!+0x04]
- movs r0, 0
- ; byrRegs -[r0]
- strb r0, [sp+0x24]
- ;; size=50 bbWeight=1 PerfScore 14.00
+ movs r3, 0
+ strb r3, [sp+0x14]
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M54131_IG15: ; bbWeight=1, gcrefRegs=0180 {r7 r8}, byrefRegs=0020 {r5}, byref
; gcrRegs -[r4]
- ; byrRegs -[r1]
- strb r0, [sp+0x25]
- mov r0, r7
- ; gcrRegs +[r0]
- mov r1, r8
- ; gcrRegs +[r1]
- ldr r2, [sp+0x18]
+ strb r3, [sp+0x15]
+ ldrh r3, [sp+0x14]
+ str r3, [sp+0x0C]
+ ldr r2, [sp+0x20]
; gcrRegs +[r2]
str r2, [sp]
- ldr r2, [sp+0x1C]
+ ldr r2, [sp+0x24]
str r2, [sp+0x04]
- ldr r2, [sp+0x20]
+ ldr r2, [sp+0x28]
; gcrRegs -[r2]
str r2, [sp+0x08]
- ldr r2, [sp+0x10]
+ ldr r2, [sp+0x18]
; gcrRegs +[r2]
- ldr r3, [sp+0x14]
- ldrh lr, [sp+0x24]
- str lr, [sp+0x0C]
+ ldr r3, [sp+0x1C]
+ mov r1, r8
+ ; gcrRegs +[r1]
+ mov r0, r7
+ ; gcrRegs +[r0]
movw lr, 0xd1ff
movt lr, 0xd1ff
ldr lr, [lr]
blx lr // <unknown method>
...
+2 (+2.33%) : 3539.dasm - System.Text.Decoder:GetChars(System.ReadOnlySpan
1[ubyte],System.Span1[ushort],ubyte):int:this (FullOpts)@@ -11,28 +11,25 @@
; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.Text.Decoder>
; V01 arg1 [V01,T01] ( 4, 4 ) struct ( 8) [sp+0x1C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
; V02 arg2 [V02,T02] ( 4, 4 ) struct ( 8) [sp+0x24] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ushort]>
-; V03 arg3 [V03,T15] ( 1, 1 ) ubyte -> [sp+0x2C] single-def
+; V03 arg3 [V03,T12] ( 1, 1 ) ubyte -> [sp+0x2C] single-def
;* V04 loc0 [V04 ] ( 0, 0 ) int -> zero-ref
; V05 loc1 [V05 ] ( 1, 1 ) byref -> [sp+0x0C] must-init pinned single-def
;* V06 loc2 [V06 ] ( 0, 0 ) int -> zero-ref
; V07 loc3 [V07 ] ( 1, 1 ) byref -> [sp+0x08] must-init pinned single-def
; V08 OutArgs [V08 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T08] ( 4, 3 ) byref -> lr "Inline return value spill temp"
+; V09 tmp1 [V09,T06] ( 4, 3 ) byref -> r1 "Inline return value spill temp"
;* V10 tmp2 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-; V11 tmp3 [V11,T09] ( 4, 3 ) byref -> r3 "Inline return value spill temp"
+; V11 tmp3 [V11,T07] ( 4, 3 ) byref -> r12 "Inline return value spill temp"
;* V12 tmp4 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V13 tmp5 [V13,T13] ( 2, 1.50) byref -> r3 single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp5 [V13,T10] ( 2, 1.50) byref -> r1 single-def "field V10._reference (fldOffset=0x0)" P-INDEP
;* V14 tmp6 [V14 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP
-; V15 tmp7 [V15,T14] ( 2, 1.50) byref -> r3 single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+; V15 tmp7 [V15,T11] ( 2, 1.50) byref -> lr single-def "field V12._reference (fldOffset=0x0)" P-INDEP
;* V16 tmp8 [V16 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x4)" P-INDEP
-; V17 tmp9 [V17,T10] ( 3, 3 ) int -> r2 "V01.[004..008)"
-; V18 tmp10 [V18,T11] ( 3, 3 ) int -> r1 "V02.[004..008)"
-; V19 tmp11 [V19,T03] ( 2, 4 ) int -> lr "Cast away GC"
-; V20 tmp12 [V20,T04] ( 2, 4 ) int -> r3 "Cast away GC"
-;* V21 tmp13 [V21,T12] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V22 tmp14 [V22,T05] ( 2, 4 ) int -> lr "argument with side effect"
-; V23 tmp15 [V23,T06] ( 2, 4 ) int -> r2 "argument with side effect"
-; V24 tmp16 [V24,T07] ( 2, 4 ) int -> r3 "argument with side effect"
+; V17 tmp9 [V17,T08] ( 3, 3 ) int -> r2 "V01.[004..008)"
+; V18 tmp10 [V18,T09] ( 3, 3 ) int -> r3 "V02.[004..008)"
+; V19 tmp11 [V19,T03] ( 2, 4 ) int -> r1 "Cast away GC"
+; V20 tmp12 [V20,T04] ( 2, 4 ) int -> r12 "Cast away GC"
+; V21 tmp13 [V21,T05] ( 2, 4 ) int -> r12 "argument with side effect"
;
; Lcl frame size = 20
@@ -48,49 +45,49 @@ G_M48718_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M48718_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0]
ldr r2, [sp+0x20]
- ldr r1, [sp+0x28]
- ldr r3, [sp+0x1C]
- ; byrRegs +[r3]
+ ldr r3, [sp+0x28]
+ ldr r1, [sp+0x1C]
+ ; byrRegs +[r1]
cmp r2, 0
bne SHORT G_M48718_IG04
;; size=10 bbWeight=1 PerfScore 5.00
G_M48718_IG03: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r3]
- mov lr, 1
- b SHORT G_M48718_IG05
- ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M48718_IG04: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0008 {r3}, byref
- ; byrRegs +[r3]
- mov lr, r3
- ; byrRegs +[lr]
- ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M48718_IG05: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=4000 {lr}, byref, isz
- ; byrRegs -[r3]
- str lr, [sp+0x0C] // [V05 loc1]
- ldr r3, [sp+0x24] // [V02 arg2]
- ; byrRegs +[r3]
- cmp r1, 0
- bne SHORT G_M48718_IG07
- ;; size=10 bbWeight=1 PerfScore 4.00
-G_M48718_IG06: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r3 lr]
- movs r3, 1
- b SHORT G_M48718_IG07
+ ; byrRegs -[r1]
+ movs r1, 1
+ b SHORT G_M48718_IG04
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M48718_IG07: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0008 {r3}, byref
- ; byrRegs +[r3]
- str r3, [sp+0x08] // [V07 loc3]
- str r1, [sp] // [V08 OutArgs]
- ldrb r1, [sp+0x2C] // [V03 arg3]
- str r1, [sp+0x04] // [V08 OutArgs+0x04]
- mov r1, lr
+G_M48718_IG04: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0002 {r1}, byref, isz
+ ; byrRegs +[r1]
+ str r1, [sp+0x0C] // [V05 loc1]
+ ldr lr, [sp+0x24] // [V02 arg2]
+ ; byrRegs +[lr]
+ cmp r3, 0
+ bne SHORT G_M48718_IG06
+ ;; size=10 bbWeight=1 PerfScore 4.00
+G_M48718_IG05: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r1 lr]
+ mov r12, 1
+ b SHORT G_M48718_IG07
+ ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M48718_IG06: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=4000 {lr}, byref
+ ; byrRegs +[lr]
+ mov r12, lr
+ ; byrRegs +[r12]
+ ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M48718_IG07: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=1000 {r12}, byref
+ ; byrRegs -[lr]
+ str r12, [sp+0x08] // [V07 loc3]
+ str r3, [sp] // [V08 OutArgs]
+ ldrb r3, [sp+0x2C] // [V03 arg3]
+ str r3, [sp+0x04] // [V08 OutArgs+0x04]
+ mov r3, r12
ldr lr, [r0]
ldr lr, [lr+0x30]
ldr lr, [lr+0x0C]
blx lr // <unknown method>
; gcrRegs -[r0]
- ; byrRegs -[r3]
- ;; size=26 bbWeight=1 PerfScore 9.00
+ ; byrRegs -[r12]
+ ;; size=28 bbWeight=1 PerfScore 9.00
G_M48718_IG08: ; bbWeight=1, epilog, nogc, extend
add sp, 20
pop {r11,lr}
@@ -98,7 +95,7 @@ G_M48718_IG08: ; bbWeight=1, epilog, nogc, extend
bx lr
;; size=10 bbWeight=1 PerfScore 4.00
-; Total bytes of code 86, prolog size 18, PerfScore 31.50, instruction count 34, allocated bytes for code 86 (MethodHash=f26641b1) for method System.Text.Decoder:GetChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],ubyte):int:this (FullOpts)
+; Total bytes of code 88, prolog size 18, PerfScore 31.50, instruction count 34, allocated bytes for code 88 (MethodHash=f26641b1) for method System.Text.Decoder:GetChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],ubyte):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -110,7 +107,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 86 (0x000056)
+ Function Length : 44 (0x0002c) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+8.51%) : 24378.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
@@ -8,30 +8,28 @@
; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 3 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V00 this [V00,T02] ( 3, 3 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Nullable`1[ubyte]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T03] ( 2, 4 ) ref -> r1 class-hnd single-def "dup spill" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def
-; V05 tmp3 [V05,T05] ( 4, 3.50) ref -> r1
-; V06 tmp4 [V06,T02] ( 5, 5 ) ref -> [sp+0x00] class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
-; V07 tmp5 [V07,T07] ( 3, 3 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V08 tmp6 [V08,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V09 tmp7 [V09,T10] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
-; V10 tmp8 [V10,T01] ( 3, 6 ) struct ( 4) [sp+0x04] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;* V11 tmp9 [V11,T08] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V12 tmp10 [V12,T04] ( 2, 4 ) ref -> r1 single-def "argument with side effect"
-;* V13 cse0 [V13,T11] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
-; V14 cse1 [V14,T06] ( 4, 3 ) int -> r5 "CSE - aggressive"
+; V05 tmp3 [V05,T04] ( 4, 3.50) ref -> r1
+; V06 tmp4 [V06,T01] ( 5, 5 ) ref -> [sp+0x00] class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
+; V07 tmp5 [V07,T05] ( 3, 3 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+;* V08 tmp6 [V08,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V09 tmp7 [V09,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
+; V10 tmp8 [V10,T00] ( 3, 6 ) struct ( 4) [sp+0x04] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
+;* V11 cse0 [V11,T08] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M22152_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r11,lr}
+ push {r4,r11,lr}
+ sub sp, 12
add r11, sp, 16
mov r4, r0
; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M22152_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff
movt r0, 0xd1ff
@@ -41,9 +39,9 @@ G_M22152_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
bne SHORT G_M22152_IG08
;; size=18 bbWeight=1 PerfScore 6.00
G_M22152_IG03: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- movw r5, 0xd1ff
- movt r5, 0xd1ff
- ldr r1, [r5]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ ldr r1, [r0]
; gcrRegs +[r1]
cmp r1, 0
bne SHORT G_M22152_IG05
@@ -60,12 +58,14 @@ G_M22152_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs +[r1]
str r1, [sp]
; GC ptr vars +{V06}
- ldr r3, [r5-0x2C]
+ movw r0, 0xd1ff
+ ; gcrRegs -[r0]
+ movt r0, 0xd1ff
+ ldr r3, [r0]
; gcrRegs +[r3]
cmp r3, 0
beq SHORT G_M22152_IG09
adds r0, r1, 4
- ; gcrRegs -[r0]
; byrRegs +[r0]
mov r1, r3
movw r12, 0xd1ff
@@ -78,7 +78,8 @@ G_M22152_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r2, [sp]
; gcrRegs +[r2]
str r1, [r2+0x0C]
- mov r0, r5
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
mov r1, r2
; gcrRegs +[r1]
movw r12, 0xd1ff
@@ -87,18 +88,18 @@ G_M22152_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r1]
mov r1, r2
; gcrRegs +[r1]
- ;; size=72 bbWeight=0.50 PerfScore 12.50
+ ;; size=84 bbWeight=0.50 PerfScore 14.00
G_M22152_IG05: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r2]
; GC ptr vars -{V06}
- movs r0, 0
- strb r0, [sp+0x04]
+ movs r3, 0
+ strb r3, [sp+0x04]
;; size=6 bbWeight=1 PerfScore 2.00
G_M22152_IG06: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
- strb r0, [sp+0x05]
+ strb r3, [sp+0x05]
+ ldrh r3, [sp+0x04]
mov r0, r4
; gcrRegs +[r0]
- ldrh r3, [sp+0x04]
movs r2, 0
movw lr, 0xd1ff
movt lr, 0xd1ff
@@ -107,8 +108,9 @@ G_M22152_IG06: ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b
; gcrRegs -[r1 r4]
;; size=26 bbWeight=1 PerfScore 8.00
G_M22152_IG07: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
+ add sp, 12
+ pop {r4,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M22152_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0] +[r4]
movw r0, 0xd1ff
@@ -128,7 +130,7 @@ G_M22152_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 188, prolog size 8, PerfScore 37.50, instruction count 62, allocated bytes for code 188 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
+; Total bytes of code 204, prolog size 10, PerfScore 41.00, instruction count 67, allocated bytes for code 204 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -140,7 +142,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 94 (0x0005e) Actual length = 188 (0x0000bc)
+ Function Length : 102 (0x00066) Actual length = 204 (0x0000cc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -148,7 +150,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32
- FF end
+ 03 add sp, sp, #12 ; opsize 16
+ A8 10 pop {r4,r11,lr} ; opsize 32
FF end
+16 (+10.81%) : 34066.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
@@ -8,33 +8,31 @@
; 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 -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+; V00 this [V00,T02] ( 3, 3 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T03] ( 2, 4 ) ref -> r1 class-hnd single-def "dup spill" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref single-def
-; V04 tmp3 [V04,T05] ( 4, 3.50) ref -> r1
+; V04 tmp3 [V04,T04] ( 4, 3.50) ref -> r1
;* V05 tmp4 [V05 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-; V06 tmp5 [V06,T02] ( 5, 5 ) ref -> [sp+0x00] class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
-; V07 tmp6 [V07,T07] ( 3, 3 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V08 tmp7 [V08,T09] ( 0, 0 ) ubyte -> zero-ref "field V05.hasValue (fldOffset=0x0)" P-INDEP
-;* V09 tmp8 [V09,T10] ( 0, 0 ) ubyte -> zero-ref "field V05.value (fldOffset=0x1)" P-INDEP
-; V10 tmp9 [V10,T01] ( 3, 6 ) struct ( 4) [sp+0x04] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;* V11 tmp10 [V11,T08] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V12 tmp11 [V12,T04] ( 2, 4 ) ref -> r1 single-def "argument with side effect"
-; V13 cse0 [V13,T06] ( 4, 3 ) int -> r5 "CSE - aggressive"
+; V06 tmp5 [V06,T01] ( 5, 5 ) ref -> [sp+0x00] class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
+; V07 tmp6 [V07,T05] ( 3, 3 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <<unknown class>>
+;* V08 tmp7 [V08,T06] ( 0, 0 ) ubyte -> zero-ref "field V05.hasValue (fldOffset=0x0)" P-INDEP
+;* V09 tmp8 [V09,T07] ( 0, 0 ) ubyte -> zero-ref "field V05.value (fldOffset=0x1)" P-INDEP
+; V10 tmp9 [V10,T00] ( 3, 6 ) struct ( 4) [sp+0x04] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M24931_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r2,r3,r4,r5,r11,lr}
+ push {r4,r11,lr}
+ sub sp, 12
add r11, sp, 16
mov r4, r0
; gcrRegs +[r4]
- ;; size=10 bbWeight=1 PerfScore 3.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
G_M24931_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- movw r5, 0xd1ff
- movt r5, 0xd1ff
- ldr r1, [r5]
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ ldr r1, [r0]
; gcrRegs +[r1]
cmp r1, 0
bne SHORT G_M24931_IG04
@@ -51,12 +49,14 @@ G_M24931_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs +[r1]
str r1, [sp]
; GC ptr vars +{V06}
- ldr r3, [r5-0x30]
+ movw r0, 0xd1ff
+ ; gcrRegs -[r0]
+ movt r0, 0xd1ff
+ ldr r3, [r0]
; gcrRegs +[r3]
cmp r3, 0
beq SHORT G_M24931_IG06
adds r0, r1, 4
- ; gcrRegs -[r0]
; byrRegs +[r0]
mov r1, r3
movw r12, 0xd1ff
@@ -69,7 +69,8 @@ G_M24931_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
ldr r2, [sp]
; gcrRegs +[r2]
str r1, [r2+0x0C]
- mov r0, r5
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
mov r1, r2
; gcrRegs +[r1]
movw r12, 0xd1ff
@@ -78,17 +79,17 @@ G_M24931_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
; gcrRegs -[r1]
mov r1, r2
; gcrRegs +[r1]
- ;; size=72 bbWeight=0.50 PerfScore 12.50
+ ;; size=84 bbWeight=0.50 PerfScore 14.00
G_M24931_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r2]
; GC ptr vars -{V06}
- movs r0, 1
- strb r0, [sp+0x04]
- movs r0, 16
- strb r0, [sp+0x05]
+ movs r3, 1
+ strb r3, [sp+0x04]
+ movs r3, 16
+ strb r3, [sp+0x05]
+ ldrh r3, [sp+0x04]
mov r0, r4
; gcrRegs +[r0]
- ldrh r3, [sp+0x04]
movs r2, 0
movw lr, 0xd1ff
movt lr, 0xd1ff
@@ -97,8 +98,9 @@ G_M24931_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4},
; gcrRegs -[r1 r4]
;; size=34 bbWeight=1 PerfScore 11.00
G_M24931_IG05: ; bbWeight=1, epilog, nogc, extend
- pop {r2,r3,r4,r5,r11,pc}
- ;; size=4 bbWeight=1 PerfScore 1.00
+ add sp, 12
+ pop {r4,r11,pc}
+ ;; size=6 bbWeight=1 PerfScore 2.00
G_M24931_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0]
movw r3, 0xd1ff
@@ -108,7 +110,7 @@ G_M24931_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
bkpt
;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 148, prolog size 8, PerfScore 32.50, instruction count 50, allocated bytes for code 148 (MethodHash=85d59e9c) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
+; Total bytes of code 164, prolog size 10, PerfScore 36.00, instruction count 55, allocated bytes for code 164 (MethodHash=85d59e9c) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -120,7 +122,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 74 (0x0004a) Actual length = 148 (0x000094)
+ Function Length : 82 (0x00052) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -128,7 +130,7 @@ Unwind Info:
Epilog Start Index : 0 (0x00)
---- Unwind codes ----
---- Epilog start at index 0 ----
- A8 3C pop {r2,r3,r4,r5,r11,lr} ; opsize 32
- FF end
+ 03 add sp, sp, #12 ; opsize 16
+ A8 10 pop {r4,r11,lr} ; opsize 32
FF end
To reproduce these diffs on Windows x86:
To reproduce these diffs on Windows x86:
To reproduce these diffs on Windows x86:
To reproduce these diffs on Windows x86:
To reproduce these diffs on Windows x86:
To reproduce these diffs on Windows x86:
To reproduce these diffs on Windows x86:
To reproduce these diffs on Windows x86:
To reproduce these diffs on Windows x86:
Details
Improvements/regressions per collection
Collection
Contexts with diffs
Improvements
Regressions
Same size
Improvements (bytes)
Regressions (bytes)
benchmarks.run.linux.arm.checked.mch
302
136
31
135
-1,470
+176
benchmarks.run_pgo.linux.arm.checked.mch
3,281
914
1,750
617
-9,854
+49,190
benchmarks.run_tiered.linux.arm.checked.mch
281
138
27
116
-1,478
+152
coreclr_tests.run.linux.arm.checked.mch
14,969
9,342
216
5,411
-210,986
+1,516
libraries.crossgen2.linux.arm.checked.mch
1,085
407
48
630
-5,552
+384
libraries.pmi.linux.arm.checked.mch
1,915
734
127
1,054
-7,146
+1,136
libraries_tests.run.linux.arm.Release.mch
13,691
8,817
569
4,305
-86,252
+2,978
librariestestsnotieredcompilation.run.linux.arm.Release.mch
3,675
1,079
156
2,440
-10,776
+2,266
realworld.run.linux.arm.checked.mch
443
260
23
160
-2,612
+476
39,642
21,827
2,947
14,868
-336,126
+58,274
Context information
Collection
Diffed contexts
MinOpts
FullOpts
Missed, base
Missed, diff
benchmarks.run.linux.arm.checked.mch
46,284
5,344
40,940
1,208 (2.54%)
1,208 (2.54%)
benchmarks.run_pgo.linux.arm.checked.mch
155,310
54,949
100,361
3,309 (2.09%)
3,309 (2.09%)
benchmarks.run_tiered.linux.arm.checked.mch
81,826
45,099
36,727
1,122 (1.35%)
1,122 (1.35%)
coreclr_tests.run.linux.arm.checked.mch
471,777
258,996
212,781
7,543 (1.57%)
7,543 (1.57%)
libraries.crossgen2.linux.arm.checked.mch
193,690
14
193,676
0 (0.00%)
0 (0.00%)
libraries.pmi.linux.arm.checked.mch
270,798
6
270,792
7,827 (2.81%)
7,827 (2.81%)
libraries_tests.run.linux.arm.Release.mch
707,758
441,682
266,076
18,888 (2.60%)
18,888 (2.60%)
librariestestsnotieredcompilation.run.linux.arm.Release.mch
273,849
21,565
252,284
33,279 (10.84%)
33,279 (10.84%)
realworld.run.linux.arm.checked.mch
36,398
157
36,241
1,412 (3.73%)
1,412 (3.73%)
2,237,690
827,812
1,409,878
74,588 (3.23%)
74,588 (3.23%)
jit-analyze output
benchmarks.run.linux.arm.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15303134 (overridden on cmd)
Total bytes of diff: 15301840 (overridden on cmd)
Total bytes of delta: -1294 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
18 : 10759.dasm (2.51 % of base)
16 : 9789.dasm (2.02 % of base)
16 : 24885.dasm (10.81 % of base)
16 : 24953.dasm (10.96 % of base)
10 : 3437.dasm (2.37 % of base)
10 : 45585.dasm (0.94 % of base)
8 : 24879.dasm (3.36 % of base)
8 : 6047.dasm (0.64 % of base)
6 : 1507.dasm (0.65 % of base)
6 : 5253.dasm (0.29 % of base)
6 : 9583.dasm (6.67 % of base)
4 : 12513.dasm (1.79 % of base)
4 : 14561.dasm (0.18 % of base)
4 : 15169.dasm (0.19 % of base)
4 : 19150.dasm (0.95 % of base)
4 : 21348.dasm (0.89 % of base)
4 : 996.dasm (1.31 % of base)
4 : 18992.dasm (0.82 % of base)
4 : 27468.dasm (1.89 % of base)
2 : 2694.dasm (2.33 % of base)
Top file improvements (bytes):
-122 : 17487.dasm (-7.47 % of base)
-72 : 6067.dasm (-4.44 % of base)
-40 : 36754.dasm (-7.78 % of base)
-38 : 13019.dasm (-29.69 % of base)
-38 : 28045.dasm (-5.78 % of base)
-38 : 8896.dasm (-0.48 % of base)
-36 : 29854.dasm (-7.86 % of base)
-36 : 2826.dasm (-6.02 % of base)
-32 : 17490.dasm (-4.76 % of base)
-30 : 6087.dasm (-2.96 % of base)
-30 : 4476.dasm (-0.95 % of base)
-28 : 25675.dasm (-1.01 % of base)
-24 : 6012.dasm (-3.86 % of base)
-22 : 1340.dasm (-5.12 % of base)
-22 : 13398.dasm (-0.95 % of base)
-22 : 17488.dasm (-5.73 % of base)
-22 : 2824.dasm (-5.42 % of base)
-20 : 12175.dasm (-1.15 % of base)
-20 : 12390.dasm (-0.56 % of base)
-20 : 5981.dasm (-4.03 % of base)
56 total files with Code Size differences (31 improved, 25 regressed), 20 unchanged.
Top method regressions (bytes):
18 (2.51 % of base) : 10759.dasm - MicroBenchmarks.Serializers.DataGenerator:CreateDateTimeArray(int):System.DateTime[] (FullOpts)
16 (10.96 % of base) : 24953.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
16 (10.81 % of base) : 24885.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
16 (2.02 % of base) : 9789.dasm - System.Text.Encoding:GetCharsWithFallback(uint,int,uint,int,int,int,System.Text.DecoderNLS):int:this (FullOpts)
10 (0.94 % of base) : 45585.dasm - BenchmarksGame.ReverseComplement_1:Bench(System.IO.Stream,System.IO.Stream) (FullOpts)
10 (2.37 % of base) : 3437.dasm - V8.Crypto.BigInteger:rShiftTo(int,V8.Crypto.BigInteger):this (FullOpts)
8 (3.36 % of base) : 24879.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyKeyFileAttributeSetting():System.String:this (FullOpts)
8 (0.64 % of base) : 6047.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodMetadataToken(System.Reflection.ConstructorInfo):int:this (FullOpts)
6 (0.65 % of base) : 1507.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (FullOpts)
6 (0.29 % of base) : 5253.dasm - System.Net.Sockets.Socket:.ctor(System.Net.Sockets.SafeSocketHandle,ubyte):this (FullOpts)
6 (6.67 % of base) : 9583.dasm - System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (FullOpts)
4 (0.95 % of base) : 19150.dasm - AssignRect:Run():double:this (FullOpts)
4 (1.89 % of base) : 27468.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
4 (0.89 % of base) : 21348.dasm - System.Collections.Immutable.ImmutableSortedSet`1[int]:LeafToRootRefill(System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.ImmutableSortedSet`1[int]:this (FullOpts)
4 (0.18 % of base) : 14561.dasm - System.Linq.Tests.PersonData:Generate(int):System.Linq.Tests.Person[] (FullOpts)
4 (1.79 % of base) : 12513.dasm - System.Runtime.Serialization.BitFlagsGenerator:LoadArray():this (FullOpts)
4 (1.31 % of base) : 996.dasm - System.Text.Json.JsonSerializer:GetTypeInfo[System.__Canon](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon] (FullOpts)
4 (0.82 % of base) : 18992.dasm - System.Text.Json.Tests.Perf_DateTimes:Setup():this (FullOpts)
4 (0.19 % of base) : 15169.dasm - System.Xml.Linq.XContainer+ContentReader:ReadContentFrom(System.Xml.Linq.XContainer,System.Xml.XmlReader):ubyte:this (FullOpts)
2 (0.75 % of base) : 13764.dasm - Interop+Sys:GetUserNameFromPasswd(uint):System.String (FullOpts)
Top method improvements (bytes):
-122 (-7.47 % of base) : 17487.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
-72 (-4.44 % of base) : 6067.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetFieldTokenNoLock(System.Reflection.FieldInfo):int:this (FullOpts)
-40 (-7.78 % of base) : 36754.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (FullOpts)
-38 (-29.69 % of base) : 13019.dasm - System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
-38 (-5.78 % of base) : 28045.dasm - System.Text.Json.Utf8JsonWriter:WriteStringValueIndented(System.Guid):this (FullOpts)
-38 (-0.48 % of base) : 8896.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-36 (-6.02 % of base) : 2826.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseTime(byref):ubyte:this (FullOpts)
-36 (-7.86 % of base) : 29854.dasm - System.Text.Json.Utf8JsonWriter:WriteStringValueMinimized(System.Guid):this (FullOpts)
-32 (-4.76 % of base) : 17490.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseTime(byref):ubyte:this (FullOpts)
-30 (-0.95 % of base) : 4476.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-30 (-2.96 % of base) : 6087.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMemberRefToken(System.Reflection.MethodBase,System.Type[]):int:this (FullOpts)
-28 (-1.01 % of base) : 25675.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
-24 (-3.86 % of base) : 6012.dasm - System.Reflection.Emit.RuntimeFieldBuilder:.ctor(System.Reflection.Emit.RuntimeTypeBuilder,System.String,System.Type,System.Type[],System.Type[],int):this (FullOpts)
-22 (-0.95 % of base) : 13398.dasm - MessagePack.Formatters.ListFormatter`1[System.__Canon]:Serialize(byref,int,System.Collections.Generic.List`1[System.__Canon],MessagePack.IFormatterResolver):int:this (FullOpts)
-22 (-5.42 % of base) : 2824.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseDate(int):ubyte:this (FullOpts)
-22 (-5.12 % of base) : 1340.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:Configure():this (FullOpts)
-22 (-5.73 % of base) : 17488.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseDate(int):ubyte:this (FullOpts)
-20 (-4.03 % of base) : 5981.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetTypeTokenWorkerNoLock(System.Type,ubyte):int:this (FullOpts)
-20 (-0.56 % of base) : 12390.dasm - System.Runtime.Serialization.Json.XmlJsonReader:Read():ubyte:this (FullOpts)
-20 (-1.15 % of base) : 12175.dasm - System.Runtime.Serialization.Json.XmlJsonWriter:WriteStartElement(System.String,System.String,System.String):this (FullOpts)
Top method regressions (percentages):
16 (10.96 % of base) : 24953.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
16 (10.81 % of base) : 24885.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
6 (6.67 % of base) : 9583.dasm - System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (FullOpts)
8 (3.36 % of base) : 24879.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyKeyFileAttributeSetting():System.String:this (FullOpts)
18 (2.51 % of base) : 10759.dasm - MicroBenchmarks.Serializers.DataGenerator:CreateDateTimeArray(int):System.DateTime[] (FullOpts)
2 (2.50 % of base) : 7592.dasm - System.Text.Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this (FullOpts)
10 (2.37 % of base) : 3437.dasm - V8.Crypto.BigInteger:rShiftTo(int,V8.Crypto.BigInteger):this (FullOpts)
2 (2.33 % of base) : 2694.dasm - System.Text.Decoder:GetChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],ubyte):int:this (FullOpts)
2 (2.33 % of base) : 199.dasm - System.Text.Encoder:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],ubyte):int:this (FullOpts)
16 (2.02 % of base) : 9789.dasm - System.Text.Encoding:GetCharsWithFallback(uint,int,uint,int,int,int,System.Text.DecoderNLS):int:this (FullOpts)
2 (1.92 % of base) : 42776.dasm - System.Text.Encoder:Convert(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],ubyte,byref,byref,byref):this (FullOpts)
4 (1.89 % of base) : 27468.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
4 (1.79 % of base) : 12513.dasm - System.Runtime.Serialization.BitFlagsGenerator:LoadArray():this (FullOpts)
2 (1.75 % of base) : 3438.dasm - V8.Crypto.BigInteger:copyTo(V8.Crypto.BigInteger):this (FullOpts)
4 (1.31 % of base) : 996.dasm - System.Text.Json.JsonSerializer:GetTypeInfo[System.__Canon](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon] (FullOpts)
4 (0.95 % of base) : 19150.dasm - AssignRect:Run():double:this (FullOpts)
10 (0.94 % of base) : 45585.dasm - BenchmarksGame.ReverseComplement_1:Bench(System.IO.Stream,System.IO.Stream) (FullOpts)
4 (0.89 % of base) : 21348.dasm - System.Collections.Immutable.ImmutableSortedSet`1[int]:LeafToRootRefill(System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.ImmutableSortedSet`1[int]:this (FullOpts)
4 (0.82 % of base) : 18992.dasm - System.Text.Json.Tests.Perf_DateTimes:Setup():this (FullOpts)
2 (0.75 % of base) : 13764.dasm - Interop+Sys:GetUserNameFromPasswd(uint):System.String (FullOpts)
Top method improvements (percentages):
-38 (-29.69 % of base) : 13019.dasm - System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
-18 (-7.96 % of base) : 3564.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.Object:this (FullOpts)
-36 (-7.86 % of base) : 29854.dasm - System.Text.Json.Utf8JsonWriter:WriteStringValueMinimized(System.Guid):this (FullOpts)
-40 (-7.78 % of base) : 36754.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (FullOpts)
-122 (-7.47 % of base) : 17487.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
-14 (-7.07 % of base) : 15824.dasm - System.Collections.Generic.SortedList`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
-6 (-6.38 % of base) : 42908.dasm - Span.IndexerBench:SameIndex2():ubyte:this (FullOpts)
-12 (-6.06 % of base) : 6057.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetStringMetadataToken(System.String):int:this (FullOpts)
-36 (-6.02 % of base) : 2826.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseTime(byref):ubyte:this (FullOpts)
-12 (-5.83 % of base) : 20861.dasm - System.Diagnostics.Tracing.EventSource:IsEnabledByDefault(int,ubyte,int,long):ubyte:this (FullOpts)
-38 (-5.78 % of base) : 28045.dasm - System.Text.Json.Utf8JsonWriter:WriteStringValueIndented(System.Guid):this (FullOpts)
-14 (-5.74 % of base) : 4404.dasm - System.Collections.Generic.Stack`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-22 (-5.73 % of base) : 17488.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseDate(int):ubyte:this (FullOpts)
-22 (-5.42 % of base) : 2824.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseDate(int):ubyte:this (FullOpts)
-6 (-5.26 % of base) : 46520.dasm - Benchstone.MDBenchI.MDPuzzle:Test():ubyte:this (FullOpts)
-22 (-5.12 % of base) : 1340.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:Configure():this (FullOpts)
-32 (-4.76 % of base) : 17490.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseTime(byref):ubyte:this (FullOpts)
-4 (-4.55 % of base) : 14158.dasm - System.Net.Sockets.UnixDomainSocketEndPoint:.cctor() (FullOpts)
-72 (-4.44 % of base) : 6067.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetFieldTokenNoLock(System.Reflection.FieldInfo):int:this (FullOpts)
-16 (-4.40 % of base) : 5984.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetTypeRefNested(System.Type,System.Reflection.Module):int:this (FullOpts)
benchmarks.run_pgo.linux.arm.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 61262128 (overridden on cmd)
Total bytes of diff: 61301464 (overridden on cmd)
Total bytes of delta: 39336 (0.06 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
30 : 146288.dasm (5.17 % of base)
30 : 147520.dasm (5.21 % of base)
30 : 148944.dasm (5.21 % of base)
30 : 151924.dasm (5.21 % of base)
30 : 155896.dasm (5.21 % of base)
30 : 156632.dasm (5.21 % of base)
30 : 146120.dasm (5.21 % of base)
30 : 146420.dasm (5.21 % of base)
30 : 147948.dasm (5.21 % of base)
30 : 149080.dasm (5.21 % of base)
30 : 150272.dasm (5.21 % of base)
30 : 150608.dasm (5.21 % of base)
30 : 152316.dasm (5.21 % of base)
30 : 153692.dasm (5.21 % of base)
30 : 146260.dasm (5.21 % of base)
30 : 146616.dasm (5.21 % of base)
30 : 148656.dasm (5.21 % of base)
30 : 149200.dasm (5.21 % of base)
30 : 151484.dasm (5.17 % of base)
30 : 154416.dasm (5.21 % of base)
Top file improvements (bytes):
-182 : 91390.dasm (-2.48 % of base)
-180 : 23116.dasm (-8.44 % of base)
-138 : 91075.dasm (-0.72 % of base)
-122 : 56912.dasm (-7.61 % of base)
-88 : 90958.dasm (-4.97 % of base)
-86 : 20776.dasm (-3.59 % of base)
-74 : 25715.dasm (-4.83 % of base)
-72 : 17888.dasm (-3.55 % of base)
-66 : 17098.dasm (-3.77 % of base)
-64 : 86641.dasm (-1.72 % of base)
-58 : 23103.dasm (-3.27 % of base)
-56 : 30168.dasm (-2.56 % of base)
-52 : 28578.dasm (-0.66 % of base)
-52 : 91248.dasm (-3.99 % of base)
-48 : 19925.dasm (-2.45 % of base)
-42 : 30296.dasm (-2.80 % of base)
-40 : 27209.dasm (-3.65 % of base)
-40 : 123842.dasm (-7.78 % of base)
-38 : 149573.dasm (-2.40 % of base)
-38 : 17986.dasm (-3.46 % of base)
70 total files with Code Size differences (48 improved, 22 regressed), 20 unchanged.
Top method regressions (bytes):
30 (5.17 % of base) : 146288.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 147520.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 148944.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 151924.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 155896.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 156632.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 146120.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 146420.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 147948.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 149080.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 150272.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 150608.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 152316.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 153692.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 146260.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 146616.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 148656.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 149200.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.17 % of base) : 151484.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 154416.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
Top method improvements (bytes):
-182 (-2.48 % of base) : 91390.dasm - Microsoft.CodeAnalysis.Compilation:SerializeToPeStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.RebuildData,System.Func`2[Microsoft.DiaSymReader.ISymWriterMetadataProvider,Microsoft.DiaSymReader.SymUnmanagedWriter],Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Emit.EmitOptions,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte:this (Instrumented Tier0)
-180 (-8.44 % of base) : 23116.dasm - ProtoBuf.Internal.Serializers.CompiledSerializer:Wrap(ProtoBuf.Internal.Serializers.IProtoTypeSerializer,ProtoBuf.Meta.RuntimeTypeModel):ProtoBuf.Internal.Serializers.ICompiledSerializer (Instrumented Tier0)
-138 (-0.72 % of base) : 91075.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldNeverOverflowBinaryOperators(int,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.ConstantValue):System.Object (Instrumented Tier0)
-122 (-7.61 % of base) : 56912.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (Tier0-FullOpts)
-88 (-4.97 % of base) : 90958.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Instrumented Tier0)
-86 (-3.59 % of base) : 20776.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetFieldTokenNoLock(System.Reflection.FieldInfo):int:this (Instrumented Tier0)
-74 (-4.83 % of base) : 25715.dasm - System.Linq.Expressions.Expression:Call(System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]):System.Linq.Expressions.MethodCallExpression (Instrumented Tier0)
-72 (-3.55 % of base) : 17888.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalWriter:SerializeValue(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.Serialization.JsonContract,Newtonsoft.Json.Serialization.JsonProperty,Newtonsoft.Json.Serialization.JsonContainerContract,Newtonsoft.Json.Serialization.JsonProperty):this (Instrumented Tier0)
-66 (-3.77 % of base) : 17098.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:IsValidCallback(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],System.Type,System.Reflection.MethodInfo,byref):ubyte (Instrumented Tier0)
-64 (-1.72 % of base) : 86641.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__createConversion|210_0(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Instrumented Tier0)
-58 (-3.27 % of base) : 23103.dasm - ProtoBuf.Internal.Serializers.PropertyDecorator:EmitRead(ProtoBuf.Compiler.CompilerContext,ProtoBuf.Compiler.Local):this (Instrumented Tier0)
-56 (-2.56 % of base) : 30168.dasm - System.Resources.ManifestBasedResourceGroveler:CreateResourceSet(System.IO.Stream,System.Reflection.Assembly):System.Resources.ResourceSet:this (Instrumented Tier0)
-52 (-3.99 % of base) : 91248.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitConstantValue(Microsoft.CodeAnalysis.ConstantValue):this (Instrumented Tier0)
-52 (-0.66 % of base) : 28578.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
-48 (-2.45 % of base) : 19925.dasm - System.Xml.Serialization.FieldModel:.ctor(System.Reflection.MemberInfo,System.Type,System.Xml.Serialization.TypeDesc):this (Instrumented Tier0)
-42 (-2.80 % of base) : 30296.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:IsValidCallback(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],System.Type,System.Reflection.MethodInfo,byref):ubyte (Instrumented Tier0)
-40 (-7.78 % of base) : 123842.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (Tier0-FullOpts)
-40 (-3.65 % of base) : 27209.dasm - System.Linq.Expressions.Expression:GetUserDefinedBinaryOperator(int,System.String,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte):System.Linq.Expressions.BinaryExpression (Instrumented Tier0)
-38 (-3.46 % of base) : 17986.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Create(System.Linq.Expressions.Expression,System.String,ubyte,System.Collections.Generic.IReadOnlyList`1[System.Linq.Expressions.ParameterExpression]):System.Linq.Expressions.Expression`1[System.__Canon] (Instrumented Tier0)
-38 (-2.40 % of base) : 149573.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:InternalDeserialize(System.Runtime.Serialization.XmlReaderDelegator,System.String,System.String,System.Type,byref):System.Object:this (Instrumented Tier0)
Top method regressions (percentages):
30 (5.21 % of base) : 147520.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 148944.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 151924.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 155896.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 156632.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 146120.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 146420.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 147948.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 149080.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 150272.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 150608.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 152316.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 153692.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 146260.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 146616.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 148656.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 149200.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 154416.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 154732.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
30 (5.21 % of base) : 144712.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
Top method improvements (percentages):
-16 (-19.51 % of base) : 24751.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Instrumented Tier0)
-16 (-19.51 % of base) : 17710.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
-28 (-15.73 % of base) : 10935.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
-28 (-15.73 % of base) : 121467.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
-28 (-15.73 % of base) : 120394.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
-28 (-15.73 % of base) : 67711.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
-28 (-15.73 % of base) : 70947.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
-28 (-15.73 % of base) : 54771.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
-28 (-15.73 % of base) : 71771.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
-28 (-15.73 % of base) : 74034.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
-18 (-13.43 % of base) : 101519.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ValidateDeclarationNameConflictsInScope(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Instrumented Tier0)
-14 (-11.48 % of base) : 87715.dasm - Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.InstrumentationState):this (Instrumented Tier0)
-12 (-10.17 % of base) : 41769.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
-12 (-10.17 % of base) : 59413.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
-22 (-9.73 % of base) : 8383.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreateGetterMethod(System.String,System.Type):System.Reflection.Emit.DynamicMethod (Instrumented Tier0)
-4 (-9.09 % of base) : 39648.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier1)
-20 (-9.01 % of base) : 20683.dasm - System.Xml.Serialization.CodeGenerator:BeginMethod(System.Type,System.String,System.Type[],System.String[],int):this (Instrumented Tier0)
-22 (-8.66 % of base) : 8387.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreateSetterMethod(System.String,System.Type):System.Reflection.Emit.DynamicMethod (Instrumented Tier0)
-180 (-8.44 % of base) : 23116.dasm - ProtoBuf.Internal.Serializers.CompiledSerializer:Wrap(ProtoBuf.Internal.Serializers.IProtoTypeSerializer,ProtoBuf.Meta.RuntimeTypeModel):ProtoBuf.Internal.Serializers.ICompiledSerializer (Instrumented Tier0)
-14 (-8.43 % of base) : 48.dasm - System.Buffer:Memmove[ushort](byref,byref,uint) (Instrumented Tier0)
benchmarks.run_tiered.linux.arm.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 22643448 (overridden on cmd)
Total bytes of diff: 22642122 (overridden on cmd)
Total bytes of delta: -1326 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
18 : 26700.dasm (2.51 % of base)
16 : 53306.dasm (10.81 % of base)
16 : 12054.dasm (1.11 % of base)
16 : 20492.dasm (2.02 % of base)
10 : 20634.dasm (2.37 % of base)
10 : 80895.dasm (0.94 % of base)
6 : 2896.dasm (0.70 % of base)
6 : 38551.dasm (0.29 % of base)
6 : 26653.dasm (6.67 % of base)
4 : 32299.dasm (0.18 % of base)
4 : 39293.dasm (0.82 % of base)
4 : 42832.dasm (0.89 % of base)
4 : 27732.dasm (1.79 % of base)
4 : 32042.dasm (0.19 % of base)
4 : 55042.dasm (1.89 % of base)
2 : 15109.dasm (2.50 % of base)
2 : 20641.dasm (0.39 % of base)
2 : 32708.dasm (0.75 % of base)
2 : 76497.dasm (1.92 % of base)
2 : 880.dasm (2.33 % of base)
Top file improvements (bytes):
-122 : 35332.dasm (-7.61 % of base)
-74 : 12687.dasm (-4.52 % of base)
-40 : 66072.dasm (-7.60 % of base)
-38 : 21888.dasm (-0.48 % of base)
-38 : 56760.dasm (-6.60 % of base)
-36 : 63098.dasm (-7.86 % of base)
-36 : 20998.dasm (-6.02 % of base)
-32 : 35337.dasm (-4.76 % of base)
-30 : 19936.dasm (-0.95 % of base)
-30 : 12791.dasm (-2.98 % of base)
-28 : 49159.dasm (-1.01 % of base)
-24 : 12868.dasm (-3.88 % of base)
-22 : 6724.dasm (-5.12 % of base)
-22 : 22125.dasm (-5.42 % of base)
-22 : 25341.dasm (-0.95 % of base)
-22 : 35356.dasm (-5.73 % of base)
-20 : 12223.dasm (-4.03 % of base)
-20 : 27399.dasm (-1.15 % of base)
-20 : 28031.dasm (-0.56 % of base)
-18 : 5327.dasm (-8.82 % of base)
59 total files with Code Size differences (35 improved, 24 regressed), 20 unchanged.
Top method regressions (bytes):
18 (2.51 % of base) : 26700.dasm - MicroBenchmarks.Serializers.DataGenerator:CreateDateTimeArray(int):System.DateTime[] (Tier0-FullOpts)
16 (10.81 % of base) : 53306.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (Tier1)
16 (1.11 % of base) : 12054.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodMetadataToken(System.Reflection.ConstructorInfo):int:this (Tier0-FullOpts)
16 (2.02 % of base) : 20492.dasm - System.Text.Encoding:GetCharsWithFallback(uint,int,uint,int,int,int,System.Text.DecoderNLS):int:this (Tier1)
10 (0.94 % of base) : 80895.dasm - BenchmarksGame.ReverseComplement_1:Bench(System.IO.Stream,System.IO.Stream) (Tier0-FullOpts)
10 (2.37 % of base) : 20634.dasm - V8.Crypto.BigInteger:rShiftTo(int,V8.Crypto.BigInteger):this (Tier0-FullOpts)
6 (0.70 % of base) : 2896.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (Tier0-FullOpts)
6 (0.29 % of base) : 38551.dasm - System.Net.Sockets.Socket:.ctor(System.Net.Sockets.SafeSocketHandle,ubyte):this (Tier1)
6 (6.67 % of base) : 26653.dasm - System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (Tier1)
4 (1.89 % of base) : 55042.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (Tier1)
4 (0.89 % of base) : 42832.dasm - System.Collections.Immutable.ImmutableSortedSet`1[int]:LeafToRootRefill(System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.ImmutableSortedSet`1[int]:this (Tier0-FullOpts)
4 (0.18 % of base) : 32299.dasm - System.Linq.Tests.PersonData:Generate(int):System.Linq.Tests.Person[] (Tier0-FullOpts)
4 (1.79 % of base) : 27732.dasm - System.Runtime.Serialization.BitFlagsGenerator:LoadArray():this (Tier0-FullOpts)
4 (0.82 % of base) : 39293.dasm - System.Text.Json.Tests.Perf_DateTimes:Setup():this (Tier0-FullOpts)
4 (0.19 % of base) : 32042.dasm - System.Xml.Linq.XContainer+ContentReader:ReadContentFrom(System.Xml.Linq.XContainer,System.Xml.XmlReader):ubyte:this (Tier0-FullOpts)
2 (0.75 % of base) : 32708.dasm - Interop+Sys:GetUserNameFromPasswd(uint):System.String (Tier0-FullOpts)
2 (0.20 % of base) : 7796.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (Tier0-FullOpts)
2 (0.49 % of base) : 2337.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
2 (2.33 % of base) : 6888.dasm - System.Text.Decoder:GetChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],ubyte):int:this (Tier1)
2 (1.92 % of base) : 76497.dasm - System.Text.Encoder:Convert(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],ubyte,byref,byref,byref):this (Tier1)
Top method improvements (bytes):
-122 (-7.61 % of base) : 35332.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (Tier0-FullOpts)
-74 (-4.52 % of base) : 12687.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetFieldTokenNoLock(System.Reflection.FieldInfo):int:this (Tier1)
-40 (-7.60 % of base) : 66072.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (Tier0-FullOpts)
-38 (-6.60 % of base) : 56760.dasm - System.Text.Json.Utf8JsonWriter:WriteStringValueIndented(System.Guid):this (Tier1)
-38 (-0.48 % of base) : 21888.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
-36 (-6.02 % of base) : 20998.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseTime(byref):ubyte:this (Tier0-FullOpts)
-36 (-7.86 % of base) : 63098.dasm - System.Text.Json.Utf8JsonWriter:WriteStringValueMinimized(System.Guid):this (Tier1)
-32 (-4.76 % of base) : 35337.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseTime(byref):ubyte:this (Tier0-FullOpts)
-30 (-0.95 % of base) : 19936.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (Tier0-FullOpts)
-30 (-2.98 % of base) : 12791.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMemberRefToken(System.Reflection.MethodBase,System.Type[]):int:this (Tier1)
-28 (-1.01 % of base) : 49159.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier0-FullOpts)
-24 (-3.88 % of base) : 12868.dasm - System.Reflection.Emit.RuntimeFieldBuilder:.ctor(System.Reflection.Emit.RuntimeTypeBuilder,System.String,System.Type,System.Type[],System.Type[],int):this (Tier1)
-22 (-0.95 % of base) : 25341.dasm - MessagePack.Formatters.ListFormatter`1[System.__Canon]:Serialize(byref,int,System.Collections.Generic.List`1[System.__Canon],MessagePack.IFormatterResolver):int:this (Tier0-FullOpts)
-22 (-5.42 % of base) : 22125.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseDate(int):ubyte:this (Tier1)
-22 (-5.12 % of base) : 6724.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:Configure():this (Tier1)
-22 (-5.73 % of base) : 35356.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseDate(int):ubyte:this (Tier1)
-20 (-4.03 % of base) : 12223.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetTypeTokenWorkerNoLock(System.Type,ubyte):int:this (Tier1)
-20 (-0.56 % of base) : 28031.dasm - System.Runtime.Serialization.Json.XmlJsonReader:Read():ubyte:this (Tier1)
-20 (-1.15 % of base) : 27399.dasm - System.Runtime.Serialization.Json.XmlJsonWriter:WriteStartElement(System.String,System.String,System.String):this (Tier1)
-18 (-8.82 % of base) : 5327.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.Object:this (Tier0-FullOpts)
Top method regressions (percentages):
16 (10.81 % of base) : 53306.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (Tier1)
6 (6.67 % of base) : 26653.dasm - System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (Tier1)
18 (2.51 % of base) : 26700.dasm - MicroBenchmarks.Serializers.DataGenerator:CreateDateTimeArray(int):System.DateTime[] (Tier0-FullOpts)
2 (2.50 % of base) : 15109.dasm - System.Text.Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this (Tier1)
10 (2.37 % of base) : 20634.dasm - V8.Crypto.BigInteger:rShiftTo(int,V8.Crypto.BigInteger):this (Tier0-FullOpts)
2 (2.33 % of base) : 6888.dasm - System.Text.Decoder:GetChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],ubyte):int:this (Tier1)
2 (2.33 % of base) : 880.dasm - System.Text.Encoder:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],ubyte):int:this (Tier1)
16 (2.02 % of base) : 20492.dasm - System.Text.Encoding:GetCharsWithFallback(uint,int,uint,int,int,int,System.Text.DecoderNLS):int:this (Tier1)
2 (1.92 % of base) : 76497.dasm - System.Text.Encoder:Convert(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],ubyte,byref,byref,byref):this (Tier1)
4 (1.89 % of base) : 55042.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (Tier1)
4 (1.79 % of base) : 27732.dasm - System.Runtime.Serialization.BitFlagsGenerator:LoadArray():this (Tier0-FullOpts)
2 (1.75 % of base) : 20635.dasm - V8.Crypto.BigInteger:copyTo(V8.Crypto.BigInteger):this (Tier0-FullOpts)
16 (1.11 % of base) : 12054.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodMetadataToken(System.Reflection.ConstructorInfo):int:this (Tier0-FullOpts)
10 (0.94 % of base) : 80895.dasm - BenchmarksGame.ReverseComplement_1:Bench(System.IO.Stream,System.IO.Stream) (Tier0-FullOpts)
4 (0.89 % of base) : 42832.dasm - System.Collections.Immutable.ImmutableSortedSet`1[int]:LeafToRootRefill(System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.ImmutableSortedSet`1[int]:this (Tier0-FullOpts)
4 (0.82 % of base) : 39293.dasm - System.Text.Json.Tests.Perf_DateTimes:Setup():this (Tier0-FullOpts)
2 (0.75 % of base) : 32708.dasm - Interop+Sys:GetUserNameFromPasswd(uint):System.String (Tier0-FullOpts)
6 (0.70 % of base) : 2896.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (Tier0-FullOpts)
2 (0.49 % of base) : 2337.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
2 (0.39 % of base) : 20641.dasm - V8.Crypto.BigInteger:multiplyTo(V8.Crypto.BigInteger,V8.Crypto.BigInteger):this (Tier0-FullOpts)
Top method improvements (percentages):
-16 (-19.51 % of base) : 11098.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
-4 (-9.09 % of base) : 11103.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier1)
-18 (-8.82 % of base) : 5327.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.Object:this (Tier0-FullOpts)
-6 (-8.33 % of base) : 67633.dasm - Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[int](byref,byref,uint) (Tier0)
-14 (-8.24 % of base) : 12417.dasm - System.Reflection.Emit.RuntimeTypeBuilder:SetParamInfo(System.Runtime.CompilerServices.QCallModule,int,int,int,System.String):int (Tier1)
-36 (-7.86 % of base) : 63098.dasm - System.Text.Json.Utf8JsonWriter:WriteStringValueMinimized(System.Guid):this (Tier1)
-122 (-7.61 % of base) : 35332.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (Tier0-FullOpts)
-40 (-7.60 % of base) : 66072.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (Tier0-FullOpts)
-14 (-7.07 % of base) : 33332.dasm - System.Collections.Generic.SortedList`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-38 (-6.60 % of base) : 56760.dasm - System.Text.Json.Utf8JsonWriter:WriteStringValueIndented(System.Guid):this (Tier1)
-6 (-6.38 % of base) : 21309.dasm - Benchstone.MDBenchI.MDAddArray2:.ctor():this (Tier0)
-6 (-6.38 % of base) : 81556.dasm - Benchstone.MDBenchI.MDXposMatrix:.ctor():this (Tier0)
-10 (-6.33 % of base) : 22124.dasm - Newtonsoft.Json.Utilities.DateTimeParser:Parse(ushort[],int,int):ubyte:this (Tier1)
-10 (-6.33 % of base) : 12816.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetTokenFromTypeSpec(ubyte[],int):int:this (Tier1)
-12 (-6.32 % of base) : 12821.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMemberRefFromSignature(int,System.String,ubyte[],int):int:this (Tier1)
-12 (-6.19 % of base) : 12304.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetStringMetadataToken(System.String):int:this (Tier1)
-36 (-6.02 % of base) : 20998.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseTime(byref):ubyte:this (Tier0-FullOpts)
-12 (-5.83 % of base) : 40436.dasm - System.Diagnostics.Tracing.EventSource:IsEnabledByDefault(int,ubyte,int,long):ubyte:this (Tier1)
-14 (-5.74 % of base) : 4991.dasm - System.Collections.Generic.Stack`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
-22 (-5.73 % of base) : 35356.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseDate(int):ubyte:this (Tier1)
coreclr_tests.run.linux.arm.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 321791116 (overridden on cmd)
Total bytes of diff: 321581646 (overridden on cmd)
Total bytes of delta: -209470 (-0.07 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
66 : 332783.dasm (10.22 % of base)
44 : 406809.dasm (12.87 % of base)
44 : 413230.dasm (13.02 % of base)
36 : 408042.dasm (6.25 % of base)
36 : 414257.dasm (6.29 % of base)
32 : 295035.dasm (5.52 % of base)
28 : 292733.dasm (4.84 % of base)
26 : 176811.dasm (4.51 % of base)
26 : 191688.dasm (4.51 % of base)
26 : 313717.dasm (4.51 % of base)
24 : 124163.dasm (4.12 % of base)
24 : 66996.dasm (4.12 % of base)
24 : 150608.dasm (4.12 % of base)
24 : 212832.dasm (4.12 % of base)
24 : 71451.dasm (4.12 % of base)
24 : 121808.dasm (4.12 % of base)
24 : 210959.dasm (4.12 % of base)
24 : 275075.dasm (4.12 % of base)
24 : 305435.dasm (4.12 % of base)
24 : 307556.dasm (4.12 % of base)
Top file improvements (bytes):
-710 : 409872.dasm (-2.02 % of base)
-602 : 410374.dasm (-1.76 % of base)
-500 : 394029.dasm (-24.41 % of base)
-482 : 394424.dasm (-20.46 % of base)
-464 : 394340.dasm (-24.95 % of base)
-462 : 395409.dasm (-26.22 % of base)
-444 : 394362.dasm (-22.07 % of base)
-442 : 393909.dasm (-28.22 % of base)
-438 : 395877.dasm (-31.20 % of base)
-438 : 394716.dasm (-30.25 % of base)
-432 : 394280.dasm (-32.14 % of base)
-422 : 394625.dasm (-25.36 % of base)
-418 : 395186.dasm (-21.57 % of base)
-416 : 395472.dasm (-23.34 % of base)
-410 : 394460.dasm (-19.54 % of base)
-408 : 395454.dasm (-25.15 % of base)
-400 : 395305.dasm (-33.33 % of base)
-400 : 393683.dasm (-36.63 % of base)
-396 : 394432.dasm (-26.72 % of base)
-388 : 389332.dasm (-31.29 % of base)
85 total files with Code Size differences (61 improved, 24 regressed), 20 unchanged.
Top method regressions (bytes):
66 (10.22 % of base) : 332783.dasm - VectorMgdMgd+HVATests`1[ubyte]:Init_HVAs():this (FullOpts)
44 (12.87 % of base) : 406809.dasm - Test_10w5d.testout1:Func_0():int (FullOpts)
44 (13.02 % of base) : 413230.dasm - Test_10w5d.testout1:Func_0():int (FullOpts)
36 (6.25 % of base) : 408042.dasm - Test_10w5d.testout1:Func_0_5_6_6():double (FullOpts)
36 (6.29 % of base) : 414257.dasm - Test_10w5d.testout1:Func_0_5_6_6():double (FullOpts)
32 (5.52 % of base) : 295035.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
28 (4.84 % of base) : 292733.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
26 (4.51 % of base) : 176811.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
26 (4.51 % of base) : 191688.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
26 (4.51 % of base) : 313717.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
24 (4.12 % of base) : 124163.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
24 (4.12 % of base) : 66996.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
24 (4.12 % of base) : 150608.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
24 (4.12 % of base) : 212832.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
24 (4.12 % of base) : 71451.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
24 (4.12 % of base) : 121808.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
24 (4.12 % of base) : 210959.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
24 (4.12 % of base) : 275075.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
24 (4.12 % of base) : 305435.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
24 (4.12 % of base) : 307556.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
Top method improvements (bytes):
-710 (-2.02 % of base) : 409872.dasm - longMDArrTest:TestEntryPoint():int (FullOpts)
-602 (-1.76 % of base) : 410374.dasm - ulongMDArrTest:TestEntryPoint():int (FullOpts)
-500 (-24.41 % of base) : 394029.dasm - (dynamicClass):ABIStress_PInvoker211(ABIStress.S9U,ABIStress.S14U,System.Int128,ABIStress.S1P,ABIStress.Hfa1,ABIStress.S4P,ABIStress.S31U,float,System.Int128,short,int,ABIStress.S13U,ABIStress.S8U,ABIStress.S13U,ABIStress.S2U,ABIStress.I128_2,ubyte,ABIStress.S13U,float,ABIStress.S8U,System.Runtime.Intrinsics.Vector128`1[int],System.Int128,ABIStress.S11U,ABIStress.S1P,ABIStress.S2U):int[] (FullOpts)
-482 (-20.46 % of base) : 394424.dasm - (dynamicClass):ABIStress_PInvoker413(ABIStress.S13U):int[] (FullOpts)
-464 (-24.95 % of base) : 394340.dasm - (dynamicClass):ABIStress_PInvoker369(ABIStress.S2P,ABIStress.S16U,short,ABIStress.S4U,double,short,ABIStress.S10U,ABIStress.S6U,int,ABIStress.S15U,int,ABIStress.S7U,ABIStress.S5U,ABIStress.S13U,ubyte,ABIStress.S11U,ABIStress.S17U,ABIStress.S6U,ABIStress.S8U,ABIStress.S11U,ABIStress.S6U,ABIStress.S12U):int[] (FullOpts)
-462 (-26.22 % of base) : 395409.dasm - (dynamicClass):ABIStress_PInvoker929(ABIStress.S17U,ABIStress.S10U,double,System.Numerics.Vector`1[int],System.Int128,int,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S1P,ABIStress.S3U,ABIStress.I128_1,ABIStress.S7U,ABIStress.S8P,float,ABIStress.S8U,ABIStress.S15U,ABIStress.S16U,ABIStress.S6U,ABIStress.S31U,ABIStress.S2P,double,ABIStress.S7U,ABIStress.S3U,ABIStress.I128_2,ABIStress.Hfa1,short):int[] (FullOpts)
-444 (-22.07 % of base) : 394362.dasm - (dynamicClass):ABIStress_PInvoker380(ABIStress.S12U,ABIStress.I128_2,ABIStress.S5U,float,ABIStress.S17U):int[] (FullOpts)
-442 (-28.22 % of base) : 393909.dasm - (dynamicClass):ABIStress_PInvoker150(ABIStress.S8U,float,ABIStress.S11U,ABIStress.S8P,ABIStress.S8U,ABIStress.S13U,ABIStress.S8P,ABIStress.S5U,ABIStress.S1P,ABIStress.S3U,ABIStress.I128_1,System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S6U,ABIStress.S6U,int,ubyte,ABIStress.I128_1):int[] (FullOpts)
-438 (-30.25 % of base) : 394716.dasm - (dynamicClass):ABIStress_PInvoker563(ABIStress.S10U,ABIStress.S4U,ABIStress.S9U,ABIStress.S32U,ABIStress.S2P,float,ABIStress.S7U,ABIStress.S2U,ABIStress.S31U,System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S2U,long,System.Int128):int[] (FullOpts)
-438 (-31.20 % of base) : 395877.dasm - (dynamicClass):ABIStress_TailCaller104(ubyte,ABIStress.S5U,ABIStress.S14U,ABIStress.S9U,ubyte,ABIStress.S8U,ABIStress.S8P,ABIStress.S14U,ABIStress.S15U,ABIStress.Hfa2,ABIStress.S11U,ABIStress.S16U,float,int,short,ABIStress.Hfa1,ABIStress.S2U,ABIStress.S9U,ABIStress.S12U,ABIStress.S15U,ABIStress.S17U,long,ABIStress.S17U):int (FullOpts)
-432 (-32.14 % of base) : 394280.dasm - (dynamicClass):ABIStress_PInvoker338(ABIStress.S15U,ABIStress.S1P,ABIStress.S3U,ABIStress.S3U,ABIStress.S17U,ABIStress.S11U,ABIStress.S7U,System.Numerics.Vector`1[int],ABIStress.S5U,ABIStress.S2P,ABIStress.I128_2,ABIStress.S31U,ABIStress.S8P,ABIStress.S16U,ABIStress.S2P,ABIStress.S8P,ABIStress.I128_1,ABIStress.S31U,ABIStress.S32U,int):int[] (FullOpts)
-422 (-25.36 % of base) : 394625.dasm - (dynamicClass):ABIStress_PInvoker516(ABIStress.S5U,ABIStress.S17U,ABIStress.S8U,ABIStress.S1P,ABIStress.S17U,ABIStress.Hfa1,short,ABIStress.S12U,ABIStress.S2P,int,ABIStress.S13U,float):int[] (FullOpts)
-418 (-21.57 % of base) : 395186.dasm - (dynamicClass):ABIStress_PInvoker810(ABIStress.S4P,ABIStress.S13U,ABIStress.S6U):int[] (FullOpts)
-416 (-23.34 % of base) : 395472.dasm - (dynamicClass):ABIStress_PInvoker963(ABIStress.S2P,ubyte,ABIStress.S31U,ABIStress.S16U,ABIStress.S11U,ABIStress.S11U,ABIStress.S7U,ABIStress.I128_2,ABIStress.S9U,ABIStress.S1P,ubyte):int[] (FullOpts)
-410 (-19.54 % of base) : 394460.dasm - (dynamicClass):ABIStress_PInvoker431(ABIStress.S10U,ABIStress.S8P,ABIStress.S12U,ABIStress.S2P,ABIStress.Hfa2):int[] (FullOpts)
-408 (-25.15 % of base) : 395454.dasm - (dynamicClass):ABIStress_PInvoker953(ABIStress.Hfa2,ABIStress.I128_1,ABIStress.S12U,ABIStress.S1P,ABIStress.S16U,ABIStress.S2U,ABIStress.S10U,ABIStress.Hfa2,ABIStress.S12U,int,ABIStress.S14U,short,float,ABIStress.S11U,ABIStress.S17U,ABIStress.Hfa2,ubyte,ABIStress.S32U,ABIStress.S11U,ubyte,ABIStress.I128_1,System.Int128,ABIStress.S4P):int[] (FullOpts)
-400 (-36.63 % of base) : 393683.dasm - (dynamicClass):ABIStress_PInvoker34(ABIStress.S16U,ABIStress.S5U,float,ABIStress.S7U,ubyte,ABIStress.S15U,ABIStress.Hfa2,ABIStress.S17U,ABIStress.S14U,System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S9U,ABIStress.S12U,System.Numerics.Vector`1[int],ABIStress.S13U,ABIStress.S2P,short,ABIStress.S11U,ubyte,ABIStress.S4P,ABIStress.S10U,float):int[] (FullOpts)
-400 (-33.33 % of base) : 395305.dasm - (dynamicClass):ABIStress_PInvoker874(System.Runtime.Intrinsics.Vector256`1[int],ABIStress.Hfa1,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S8P,ABIStress.S13U,ABIStress.Hfa2,int,int,int,ABIStress.S9U,float,ABIStress.S4U,ABIStress.S31U,ABIStress.S11U,ABIStress.S2P,ABIStress.S11U,ABIStress.S12U,ubyte,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S1P,ABIStress.I128_1,ABIStress.S15U,long,System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S1P):int[] (FullOpts)
-396 (-26.72 % of base) : 394432.dasm - (dynamicClass):ABIStress_PInvoker417(ubyte,ABIStress.Hfa2,ABIStress.I128_1,System.Int128,ABIStress.S5U,System.Numerics.Vector`1[int],ABIStress.S8U,ABIStress.S8P,float,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S11U,ABIStress.S31U,ABIStress.S17U,ABIStress.S2P,ABIStress.S10U,ABIStress.Hfa1,ABIStress.S5U,ABIStress.I128_2,ABIStress.S6U,ABIStress.S6U,ABIStress.S8U,ABIStress.S15U,ABIStress.S4P,ABIStress.I128_2):int[] (FullOpts)
-388 (-31.29 % of base) : 389332.dasm - (dynamicClass):InvokeStub_ABIStress_PInvokee6022(System.Object,System.Span`1[System.Object]):System.Object (FullOpts)
Top method regressions (percentages):
44 (13.02 % of base) : 413230.dasm - Test_10w5d.testout1:Func_0():int (FullOpts)
44 (12.87 % of base) : 406809.dasm - Test_10w5d.testout1:Func_0():int (FullOpts)
16 (10.96 % of base) : 378634.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
16 (10.81 % of base) : 378545.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
66 (10.22 % of base) : 332783.dasm - VectorMgdMgd+HVATests`1[ubyte]:Init_HVAs():this (FullOpts)
6 (6.67 % of base) : 383438.dasm - System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (FullOpts)
36 (6.29 % of base) : 414257.dasm - Test_10w5d.testout1:Func_0_5_6_6():double (FullOpts)
36 (6.25 % of base) : 408042.dasm - Test_10w5d.testout1:Func_0_5_6_6():double (FullOpts)
32 (5.52 % of base) : 295035.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
4 (5.26 % of base) : 424163.dasm - ILGEN_0xc2f3d0c8:Method_0x5cc2(double):int (FullOpts)
28 (4.84 % of base) : 292733.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
26 (4.51 % of base) : 176811.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
26 (4.51 % of base) : 191688.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
26 (4.51 % of base) : 313717.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
24 (4.12 % of base) : 124163.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
24 (4.12 % of base) : 66996.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
24 (4.12 % of base) : 150608.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
24 (4.12 % of base) : 212832.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
24 (4.12 % of base) : 71451.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
24 (4.12 % of base) : 121808.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
Top method improvements (percentages):
-286 (-43.60 % of base) : 398009.dasm - (dynamicClass):ABIStress_TailCaller800(ABIStress.S16U,ABIStress.S3U,ABIStress.S8U,ABIStress.S4P,ABIStress.S2P,ubyte,ABIStress.S15U,ABIStress.S10U,ABIStress.S17U,ABIStress.S5U,ABIStress.S11U,ABIStress.Hfa2,ABIStress.S14U,ABIStress.S16U,ABIStress.S2P,ABIStress.S7U,int,ABIStress.S4P,ABIStress.S11U,ABIStress.S32U,ABIStress.S8P,ABIStress.S32U,ABIStress.S14U,float):int (FullOpts)
-354 (-43.60 % of base) : 397542.dasm - (dynamicClass):ABIStress_TailCaller638(ABIStress.S11U,ABIStress.S31U,ABIStress.S31U,ABIStress.S10U,ABIStress.S9U,ABIStress.S32U,ABIStress.S17U,ABIStress.S17U,ABIStress.S14U,ABIStress.S10U,ABIStress.S15U,ABIStress.Hfa1,long,ABIStress.S8U,ABIStress.S17U,ABIStress.S5U,ABIStress.Hfa2):int (FullOpts)
-296 (-42.65 % of base) : 397314.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
-298 (-40.82 % of base) : 398305.dasm - (dynamicClass):ABIStress_TailCaller902(ABIStress.S7U,ABIStress.S17U,ABIStress.S2P,ABIStress.S32U,ABIStress.S10U,ubyte,ubyte,short,ABIStress.S9U,double,int,ABIStress.S13U,ubyte,ABIStress.S1P,ABIStress.S8U,ABIStress.S1P,ubyte,ABIStress.S32U,float,ABIStress.S2P,ABIStress.S1P,ABIStress.S10U,ABIStress.S14U,ABIStress.S16U,ABIStress.S10U):int (FullOpts)
-294 (-39.95 % of base) : 395769.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
-290 (-39.62 % of base) : 396823.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
-246 (-39.42 % of base) : 397678.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
-246 (-39.42 % of base) : 397585.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
-236 (-39.33 % of base) : 397302.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
-248 (-38.87 % of base) : 397775.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
-206 (-38.01 % of base) : 397276.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
-286 (-37.93 % of base) : 398340.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
-104 (-37.68 % of base) : 398356.dasm - (dynamicClass):ABIStress_TailCaller919(ABIStress.S4U,ABIStress.S8U,ABIStress.S7U,ABIStress.S1P,ABIStress.S8P,long,ABIStress.S14U,ABIStress.S6U,ABIStress.S12U,ABIStress.S12U,ABIStress.S17U,ABIStress.S14U,ABIStress.S9U,ABIStress.S10U,ABIStress.S11U,ABIStress.S6U,ABIStress.S1P,ABIStress.S13U,ABIStress.Hfa2,ABIStress.S15U):int (FullOpts)
-238 (-37.66 % of base) : 396718.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
-180 (-37.50 % of base) : 395605.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
-138 (-37.50 % of base) : 395841.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
-128 (-37.21 % of base) : 395962.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
-358 (-36.98 % of base) : 397657.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
-248 (-36.80 % of base) : 396003.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
-298 (-36.70 % of base) : 396680.dasm - (dynamicClass):ABIStress_TailCaller361(ABIStress.S1P,ABIStress.S8P,ABIStress.S8U,ABIStress.Hfa2,ABIStress.S4U,ABIStress.Hfa2,ABIStress.S12U,int,ABIStress.Hfa2,ABIStress.S31U,ABIStress.S12U,ABIStress.S6U,ABIStress.S11U,ABIStress.S14U,ABIStress.Hfa1,ABIStress.S31U):int (FullOpts)
libraries.crossgen2.linux.arm.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 35175262 (overridden on cmd)
Total bytes of diff: 35170094 (overridden on cmd)
Total bytes of delta: -5168 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
70 : 26163.dasm (9.00 % of base)
52 : 11625.dasm (1.25 % of base)
46 : 61683.dasm (10.70 % of base)
30 : 128331.dasm (6.52 % of base)
28 : 25114.dasm (1.07 % of base)
22 : 50308.dasm (1.80 % of base)
12 : 93825.dasm (2.78 % of base)
10 : 61825.dasm (1.50 % of base)
8 : 189536.dasm (3.05 % of base)
8 : 82072.dasm (0.60 % of base)
4 : 132213.dasm (1.12 % of base)
4 : 134448.dasm (3.12 % of base)
4 : 151059.dasm (1.50 % of base)
4 : 4318.dasm (2.17 % of base)
4 : 171889.dasm (1.68 % of base)
4 : 127172.dasm (0.69 % of base)
4 : 132341.dasm (1.12 % of base)
4 : 145744.dasm (0.80 % of base)
4 : 148782.dasm (1.18 % of base)
4 : 60567.dasm (0.20 % of base)
Top file improvements (bytes):
-196 : 101469.dasm (-0.60 % of base)
-186 : 83385.dasm (-2.94 % of base)
-126 : 25086.dasm (-0.48 % of base)
-90 : 27256.dasm (-2.27 % of base)
-86 : 50654.dasm (-17.06 % of base)
-86 : 27378.dasm (-20.28 % of base)
-82 : 83381.dasm (-22.91 % of base)
-80 : 115534.dasm (-9.13 % of base)
-70 : 153952.dasm (-5.35 % of base)
-54 : 153964.dasm (-6.72 % of base)
-54 : 21272.dasm (-3.69 % of base)
-50 : 83376.dasm (-10.68 % of base)
-50 : 83374.dasm (-12.14 % of base)
-50 : 83375.dasm (-5.40 % of base)
-50 : 161352.dasm (-14.04 % of base)
-50 : 148732.dasm (-0.71 % of base)
-48 : 27387.dasm (-16.11 % of base)
-46 : 50657.dasm (-14.02 % of base)
-46 : 22715.dasm (-3.47 % of base)
-46 : 27203.dasm (-12.71 % of base)
71 total files with Code Size differences (43 improved, 28 regressed), 20 unchanged.
Top method regressions (bytes):
70 (9.00 % of base) : 26163.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions):this (FullOpts)
52 (1.25 % of base) : 11625.dasm - System.TimeZoneInfo:GetAdjustmentRules():System.TimeZoneInfo+AdjustmentRule[]:this (FullOpts)
46 (10.70 % of base) : 61683.dasm - Microsoft.Diagnostics.Tracing.StackSources.ParallelLinuxPerfScriptStackSource:TryGetCompleteBuffer(Microsoft.Diagnostics.Tracing.Utilities.FastStream,uint,double,int,byref):ubyte:this (FullOpts)
30 (6.52 % of base) : 128331.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:LeastGenericProcedure(Microsoft.VisualBasic.CompilerServices.Symbols+Method,Microsoft.VisualBasic.CompilerServices.Symbols+Method,int,byref):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)
28 (1.07 % of base) : 25114.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompiler:CreateCompilation(System.IO.TextWriter,Microsoft.CodeAnalysis.TouchedFileLogger,Microsoft.CodeAnalysis.ErrorLogger,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AnalyzerConfigOptionsResult],Microsoft.CodeAnalysis.AnalyzerConfigOptionsResult):Microsoft.CodeAnalysis.Compilation:this (FullOpts)
22 (1.80 % of base) : 50308.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:InitializeNewSymbols(System.Collections.Generic.List`1[int],Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyData[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]],Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.AssemblyIdentity,Microsoft.CodeAnalysis.CSharp.Symbols.MissingAssemblySymbol]) (FullOpts)
12 (2.78 % of base) : 93825.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:SelectManyAsArrayAsync[System.__Canon,System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`4[System.__Canon,System.__Canon,System.Threading.CancellationToken,System.Threading.Tasks.ValueTask`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]],System.__Canon,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
10 (1.50 % of base) : 61825.dasm - Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode:FoldNodesUnder(float,System.Collections.Generic.Dictionary`2[int,Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase]):int:this (FullOpts)
8 (0.60 % of base) : 82072.dasm - Microsoft.CodeAnalysis.CompilationOptions:GetHashCodeHelper():int:this (FullOpts)
8 (3.05 % of base) : 189536.dasm - System.Security.Cryptography.X509Certificates.CertificateRevocationListBuilder:ReadX509Time(byref):System.DateTimeOffset (FullOpts)
4 (2.17 % of base) : 4318.dasm - <StartupCode$FSharp-Core>.$Async+taskCtxt@1645[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
4 (0.80 % of base) : 145744.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeManager:SubstEqualTypesCore(Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.SubstContext):ubyte (FullOpts)
4 (0.20 % of base) : 60567.dasm - Microsoft.Diagnostics.Tracing.ETWTraceEventSource:InitializeFiles():this (FullOpts)
4 (0.69 % of base) : 127172.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:ReorderArgumentArray(byref,System.Object):this (FullOpts)
4 (1.12 % of base) : 132213.dasm - System.Collections.Generic.SegmentedList`1[System.__Canon]:AppendFrom(System.Collections.Generic.SegmentedList`1[System.__Canon],long,long):this (FullOpts)
4 (1.12 % of base) : 132341.dasm - System.Collections.Generic.SegmentedList`1[ubyte]:AppendFrom(System.Collections.Generic.SegmentedList`1[ubyte],long,long):this (FullOpts)
4 (3.12 % of base) : 134448.dasm - System.Net.Sockets.UnixDomainSocketEndPoint:.cctor() (FullOpts)
4 (1.68 % of base) : 171889.dasm - System.Reflection.Internal.EncodingHelper:DecodeUtf8Prefixed(uint,int,ubyte[],System.Reflection.Metadata.MetadataStringDecoder):System.String (FullOpts)
4 (1.50 % of base) : 151059.dasm - System.Runtime.Serialization.ObjectManager:DoNewlyRegisteredObjectFixups(System.Runtime.Serialization.ObjectHolder):this (FullOpts)
4 (1.18 % of base) : 148782.dasm - System.Text.RegularExpressions.GroupCollection:GetGroupImpl(int):System.Text.RegularExpressions.Group:this (FullOpts)
Top method improvements (bytes):
-196 (-0.60 % of base) : 101469.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineArguments:this (FullOpts)
-186 (-2.94 % of base) : 83385.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGeneratorsCore(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.DiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriverState:this (FullOpts)
-126 (-0.48 % of base) : 25086.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
-90 (-2.27 % of base) : 27256.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitForEachExpression(Microsoft.CodeAnalysis.CSharp.BoundForEachStatement):this (FullOpts)
-86 (-20.28 % of base) : 27378.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__setAnalyzedNullability|169_1(Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbol],ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
-86 (-17.06 % of base) : 50654.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass169_0:<VisitObjectElementInitializer>b__10(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):this (FullOpts)
-82 (-22.91 % of base) : 83381.dasm - Microsoft.CodeAnalysis.GeneratorDriver:WithUpdatedParseOptions(Microsoft.CodeAnalysis.ParseOptions):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-80 (-9.13 % of base) : 115534.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions:.ctor(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions):this (FullOpts)
-70 (-5.35 % of base) : 153952.dasm - System.Formats.Asn1.AsnWriter:WriteGeneralizedTimeCore(System.Formats.Asn1.Asn1Tag,System.DateTimeOffset,ubyte):this (FullOpts)
-54 (-3.69 % of base) : 21272.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAnonymousFunction(Microsoft.CodeAnalysis.CSharp.Syntax.AnonymousFunctionExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.UnboundLambda:this (FullOpts)
-54 (-6.72 % of base) : 153964.dasm - System.Formats.Asn1.AsnWriter:WriteUtcTimeCore(System.Formats.Asn1.Asn1Tag,System.DateTimeOffset):this (FullOpts)
-50 (-12.14 % of base) : 83374.dasm - Microsoft.CodeAnalysis.GeneratorDriver:AddGenerators(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISourceGenerator]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-50 (-10.68 % of base) : 83376.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RemoveGenerators(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISourceGenerator]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-50 (-5.40 % of base) : 83375.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ReplaceGenerators(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISourceGenerator]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-50 (-14.04 % of base) : 161352.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(System.Guid):this (FullOpts)
-50 (-0.71 % of base) : 148732.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-48 (-16.11 % of base) : 27387.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitCollectionElementInitializer>g__setUpdatedSymbol|171_0(Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
-46 (-3.47 % of base) : 22715.dasm - Microsoft.CodeAnalysis.CSharp.Conversions:ReportDelegateOrFunctionPointerMethodGroupDiagnostics(Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundMethodGroup,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte (FullOpts)
-46 (-12.71 % of base) : 27203.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:TrackAnalyzedNullabilityThroughConversionGroup(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.CSharp.BoundExpression):this (FullOpts)
-46 (-14.02 % of base) : 50657.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass171_0:<VisitCollectionElementInitializer>b__3(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):this (FullOpts)
Top method regressions (percentages):
46 (10.70 % of base) : 61683.dasm - Microsoft.Diagnostics.Tracing.StackSources.ParallelLinuxPerfScriptStackSource:TryGetCompleteBuffer(Microsoft.Diagnostics.Tracing.Utilities.FastStream,uint,double,int,byref):ubyte:this (FullOpts)
70 (9.00 % of base) : 26163.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions):this (FullOpts)
30 (6.52 % of base) : 128331.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:LeastGenericProcedure(Microsoft.VisualBasic.CompilerServices.Symbols+Method,Microsoft.VisualBasic.CompilerServices.Symbols+Method,int,byref):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)
4 (3.12 % of base) : 134448.dasm - System.Net.Sockets.UnixDomainSocketEndPoint:.cctor() (FullOpts)
8 (3.05 % of base) : 189536.dasm - System.Security.Cryptography.X509Certificates.CertificateRevocationListBuilder:ReadX509Time(byref):System.DateTimeOffset (FullOpts)
12 (2.78 % of base) : 93825.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:SelectManyAsArrayAsync[System.__Canon,System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`4[System.__Canon,System.__Canon,System.Threading.CancellationToken,System.Threading.Tasks.ValueTask`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]],System.__Canon,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
2 (2.33 % of base) : 14673.dasm - System.Text.Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this (FullOpts)
2 (2.33 % of base) : 14679.dasm - System.Text.Encoding:GetChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int:this (FullOpts)
4 (2.17 % of base) : 4318.dasm - <StartupCode$FSharp-Core>.$Async+taskCtxt@1645[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
2 (2.17 % of base) : 14549.dasm - System.Text.Decoder:GetChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],ubyte):int:this (FullOpts)
2 (2.17 % of base) : 14594.dasm - System.Text.Encoder:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],ubyte):int:this (FullOpts)
2 (1.82 % of base) : 57710.dasm - System.Data.Common.SqlUdtStorage:Copy(int,int):this (FullOpts)
2 (1.82 % of base) : 14550.dasm - System.Text.Decoder:Convert(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],ubyte,byref,byref,byref):this (FullOpts)
2 (1.82 % of base) : 14595.dasm - System.Text.Encoder:Convert(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],ubyte,byref,byref,byref):this (FullOpts)
22 (1.80 % of base) : 50308.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:InitializeNewSymbols(System.Collections.Generic.List`1[int],Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyData[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]],Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.AssemblyIdentity,Microsoft.CodeAnalysis.CSharp.Symbols.MissingAssemblySymbol]) (FullOpts)
4 (1.68 % of base) : 171889.dasm - System.Reflection.Internal.EncodingHelper:DecodeUtf8Prefixed(uint,int,ubyte[],System.Reflection.Metadata.MetadataStringDecoder):System.String (FullOpts)
2 (1.59 % of base) : 144577.dasm - System.ComponentModel.Composition.ReflectionModel.GenericServices:Reorder[System.__Canon](System.__Canon[],int[]):System.__Canon[] (FullOpts)
4 (1.50 % of base) : 151059.dasm - System.Runtime.Serialization.ObjectManager:DoNewlyRegisteredObjectFixups(System.Runtime.Serialization.ObjectHolder):this (FullOpts)
10 (1.50 % of base) : 61825.dasm - Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode:FoldNodesUnder(float,System.Collections.Generic.Dictionary`2[int,Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase]):int:this (FullOpts)
52 (1.25 % of base) : 11625.dasm - System.TimeZoneInfo:GetAdjustmentRules():System.TimeZoneInfo+AdjustmentRule[]:this (FullOpts)
Top method improvements (percentages):
-22 (-26.83 % of base) : 160244.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.Guid]):System.Text.Json.Nodes.JsonNode (FullOpts)
-22 (-25.58 % of base) : 160238.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTimeOffset]):System.Text.Json.Nodes.JsonNode (FullOpts)
-22 (-25.58 % of base) : 160240.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.Decimal]):System.Text.Json.Nodes.JsonNode (FullOpts)
-82 (-22.91 % of base) : 83381.dasm - Microsoft.CodeAnalysis.GeneratorDriver:WithUpdatedParseOptions(Microsoft.CodeAnalysis.ParseOptions):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-44 (-22.22 % of base) : 26979.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetAnalyzedNullability(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState):this (FullOpts)
-16 (-22.22 % of base) : 160237.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.DateTimeOffset):System.Text.Json.Nodes.JsonNode (FullOpts)
-16 (-22.22 % of base) : 160239.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Decimal):System.Text.Json.Nodes.JsonNode (FullOpts)
-16 (-22.22 % of base) : 160243.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Guid):System.Text.Json.Nodes.JsonNode (FullOpts)
-16 (-22.22 % of base) : 160242.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[double]):System.Text.Json.Nodes.JsonNode (FullOpts)
-16 (-22.22 % of base) : 160250.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
-16 (-22.22 % of base) : 160236.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
-16 (-22.22 % of base) : 160261.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
-12 (-21.43 % of base) : 160235.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.DateTime):System.Text.Json.Nodes.JsonNode (FullOpts)
-12 (-21.43 % of base) : 160254.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[float]):System.Text.Json.Nodes.JsonNode (FullOpts)
-12 (-21.43 % of base) : 160248.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[int]):System.Text.Json.Nodes.JsonNode (FullOpts)
-12 (-21.43 % of base) : 160259.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[uint]):System.Text.Json.Nodes.JsonNode (FullOpts)
-86 (-20.28 % of base) : 27378.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__setAnalyzedNullability|169_1(Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbol],ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
-86 (-17.06 % of base) : 50654.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass169_0:<VisitObjectElementInitializer>b__10(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):this (FullOpts)
-20 (-16.39 % of base) : 160334.dasm - System.Text.Json.Nodes.JsonValue:Create(System.DateTimeOffset,System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue (FullOpts)
-20 (-16.39 % of base) : 160336.dasm - System.Text.Json.Nodes.JsonValue:Create(System.Decimal,System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue (FullOpts)
libraries.pmi.linux.arm.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 49615946 (overridden on cmd)
Total bytes of diff: 49609936 (overridden on cmd)
Total bytes of delta: -6010 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
332 : 93266.dasm (8.65 % of base)
38 : 93353.dasm (18.45 % of base)
32 : 234091.dasm (2.15 % of base)
32 : 175198.dasm (4.65 % of base)
20 : 175135.dasm (6.25 % of base)
20 : 208466.dasm (8.77 % of base)
20 : 120287.dasm (0.47 % of base)
16 : 79893.dasm (8.51 % of base)
16 : 79894.dasm (8.51 % of base)
16 : 79897.dasm (8.51 % of base)
16 : 79898.dasm (8.51 % of base)
16 : 79904.dasm (8.51 % of base)
16 : 79905.dasm (8.42 % of base)
16 : 79899.dasm (8.51 % of base)
16 : 79900.dasm (8.51 % of base)
16 : 158029.dasm (0.41 % of base)
16 : 79895.dasm (8.51 % of base)
16 : 79896.dasm (8.51 % of base)
12 : 233687.dasm (2.65 % of base)
12 : 93508.dasm (1.86 % of base)
Top file improvements (bytes):
-196 : 195225.dasm (-5.75 % of base)
-194 : 93205.dasm (-4.85 % of base)
-150 : 131818.dasm (-1.96 % of base)
-126 : 154307.dasm (-6.00 % of base)
-96 : 59215.dasm (-2.15 % of base)
-92 : 59338.dasm (-21.10 % of base)
-92 : 87069.dasm (-16.97 % of base)
-84 : 131815.dasm (-23.86 % of base)
-80 : 131814.dasm (-22.86 % of base)
-68 : 153068.dasm (-0.90 % of base)
-58 : 178853.dasm (-4.90 % of base)
-58 : 273103.dasm (-1.82 % of base)
-56 : 53069.dasm (-3.66 % of base)
-52 : 59168.dasm (-4.26 % of base)
-50 : 87083.dasm (-3.92 % of base)
-50 : 59131.dasm (-1.77 % of base)
-50 : 131808.dasm (-4.17 % of base)
-50 : 59347.dasm (-10.68 % of base)
-50 : 87072.dasm (-10.33 % of base)
-48 : 59097.dasm (-0.94 % of base)
68 total files with Code Size differences (42 improved, 26 regressed), 20 unchanged.
Top method regressions (bytes):
332 (8.65 % of base) : 93266.dasm - System.Data.RBTree`1[ubyte]:RBDeleteX(int,int,int):int:this (FullOpts)
38 (18.45 % of base) : 93353.dasm - System.Data.RBTree`1[System.Numerics.Vector`1[float]]:Search(System.Numerics.Vector`1[float]):int:this (FullOpts)
32 (4.65 % of base) : 175198.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySortHelper`2[ubyte,System.Nullable`1[int]]:DownHeap(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte],System.Span`1[System.Nullable`1[int]],int,int,int,System.Collections.Generic.IComparer`1[ubyte]) (FullOpts)
32 (2.15 % of base) : 234091.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
20 (8.77 % of base) : 208466.dasm - Microsoft.Build.Collections.ArrayDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:set_Item(System.Numerics.Vector`1[float],System.Nullable`1[int]):this (FullOpts)
20 (6.25 % of base) : 175135.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySortHelper`1[ubyte]:SwapIfGreater(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte],System.Comparison`1[ubyte],int,int) (FullOpts)
20 (0.47 % of base) : 120287.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
16 (8.51 % of base) : 79904.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
16 (8.51 % of base) : 79896.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_Company():System.String:this (FullOpts)
16 (8.51 % of base) : 79899.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_Copyright():System.String:this (FullOpts)
16 (8.51 % of base) : 79895.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_Description():System.String:this (FullOpts)
16 (8.51 % of base) : 79893.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_FileVersion():System.String:this (FullOpts)
16 (8.51 % of base) : 79898.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_InformationalVersion():System.String:this (FullOpts)
16 (8.51 % of base) : 79897.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_Product():System.String:this (FullOpts)
16 (8.42 % of base) : 79905.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
16 (8.51 % of base) : 79894.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_Title():System.String:this (FullOpts)
16 (8.51 % of base) : 79900.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_Trademark():System.String:this (FullOpts)
16 (0.41 % of base) : 158029.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
12 (2.65 % of base) : 233687.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:LeastGenericProcedure(Microsoft.VisualBasic.CompilerServices.Symbols+Method,Microsoft.VisualBasic.CompilerServices.Symbols+Method,int,byref):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)
12 (1.86 % of base) : 93508.dasm - System.Data.Index:GetRows(System.Data.Range):System.Data.DataRow[]:this (FullOpts)
Top method improvements (bytes):
-196 (-5.75 % of base) : 195225.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,System.Nullable`1[int]]:MergeSortCooperatively():this (FullOpts)
-194 (-4.85 % of base) : 93205.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteX(int,int,int):int:this (FullOpts)
-150 (-1.96 % of base) : 131818.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGeneratorsCore(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.DiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriverState:this (FullOpts)
-126 (-6.00 % of base) : 154307.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
-96 (-2.15 % of base) : 59215.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitForEachExpression(Microsoft.CodeAnalysis.CSharp.BoundForEachStatement):this (FullOpts)
-92 (-21.10 % of base) : 59338.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__setAnalyzedNullability|169_1(Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbol],ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
-92 (-16.97 % of base) : 87069.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass169_0:<VisitObjectElementInitializer>b__10(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):this (FullOpts)
-84 (-23.86 % of base) : 131815.dasm - Microsoft.CodeAnalysis.GeneratorDriver:WithUpdatedAnalyzerConfigOptions(Microsoft.CodeAnalysis.Diagnostics.AnalyzerConfigOptionsProvider):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-80 (-22.86 % of base) : 131814.dasm - Microsoft.CodeAnalysis.GeneratorDriver:WithUpdatedParseOptions(Microsoft.CodeAnalysis.ParseOptions):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-68 (-0.90 % of base) : 153068.dasm - System.Xml.Schema.XdrBuilder:.cctor() (FullOpts)
-58 (-1.82 % of base) : 273103.dasm - System.Formats.Asn1.AsnWriter:WriteUtcTimeCore(System.Formats.Asn1.Asn1Tag,System.DateTimeOffset):this (FullOpts)
-58 (-4.90 % of base) : 178853.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(System.Guid):this (FullOpts)
-56 (-3.66 % of base) : 53069.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAnonymousFunction(Microsoft.CodeAnalysis.CSharp.Syntax.AnonymousFunctionExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.UnboundLambda:this (FullOpts)
-52 (-4.26 % of base) : 59168.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitDelegateCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundDelegateCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
-50 (-10.68 % of base) : 59347.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitCollectionElementInitializer>g__setUpdatedSymbol|171_0(Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
-50 (-1.77 % of base) : 59131.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArgumentOutboundAssignmentsAndPostConditions(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.NullableWalker+CompareExchangeInfo):this (FullOpts)
-50 (-10.33 % of base) : 87072.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass171_0:<VisitCollectionElementInitializer>b__3(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):this (FullOpts)
-50 (-3.92 % of base) : 87083.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass449_0:<VisitSwitchExpressionCore>g__convertArms|0(Microsoft.CodeAnalysis.CSharp.BoundSwitchExpression,Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
-50 (-4.17 % of base) : 131808.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ReplaceGenerators(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISourceGenerator]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-48 (-0.94 % of base) : 59097.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitConditionalAccess(Microsoft.CodeAnalysis.CSharp.BoundConditionalAccess,byref):this (FullOpts)
Top method regressions (percentages):
38 (18.45 % of base) : 93353.dasm - System.Data.RBTree`1[System.Numerics.Vector`1[float]]:Search(System.Numerics.Vector`1[float]):int:this (FullOpts)
20 (8.77 % of base) : 208466.dasm - Microsoft.Build.Collections.ArrayDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:set_Item(System.Numerics.Vector`1[float],System.Nullable`1[int]):this (FullOpts)
332 (8.65 % of base) : 93266.dasm - System.Data.RBTree`1[ubyte]:RBDeleteX(int,int,int):int:this (FullOpts)
16 (8.51 % of base) : 79904.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
16 (8.51 % of base) : 79896.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_Company():System.String:this (FullOpts)
16 (8.51 % of base) : 79899.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_Copyright():System.String:this (FullOpts)
16 (8.51 % of base) : 79895.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_Description():System.String:this (FullOpts)
16 (8.51 % of base) : 79893.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_FileVersion():System.String:this (FullOpts)
16 (8.51 % of base) : 79898.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_InformationalVersion():System.String:this (FullOpts)
16 (8.51 % of base) : 79897.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_Product():System.String:this (FullOpts)
16 (8.51 % of base) : 79894.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_Title():System.String:this (FullOpts)
16 (8.51 % of base) : 79900.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_Trademark():System.String:this (FullOpts)
16 (8.42 % of base) : 79905.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
6 (6.67 % of base) : 165266.dasm - System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (FullOpts)
20 (6.25 % of base) : 175135.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySortHelper`1[ubyte]:SwapIfGreater(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte],System.Comparison`1[ubyte],int,int) (FullOpts)
6 (5.88 % of base) : 10414.dasm - System.Collections.Generic.HashSet`1[long]:TryGetValue(long,byref):ubyte:this (FullOpts)
6 (5.36 % of base) : 244933.dasm - System.Collections.Generic.GrowableArray`1[ubyte]:Search[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float],int,System.Func`3[System.Numerics.Vector`1[float],ubyte,int],byref):ubyte:this (FullOpts)
6 (5.26 % of base) : 244894.dasm - System.Collections.Generic.GrowableArray`1[System.__Canon]:Search[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float],int,System.Func`3[System.Numerics.Vector`1[float],System.__Canon,int],byref):ubyte:this (FullOpts)
32 (4.65 % of base) : 175198.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySortHelper`2[ubyte,System.Nullable`1[int]]:DownHeap(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte],System.Span`1[System.Nullable`1[int]],int,int,int,System.Collections.Generic.IComparer`1[ubyte]) (FullOpts)
8 (4.55 % of base) : 208468.dasm - Microsoft.Build.Collections.ArrayDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:ContainsKey(System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
Top method improvements (percentages):
-46 (-25.00 % of base) : 58936.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetAnalyzedNullability(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState):this (FullOpts)
-18 (-25.00 % of base) : 179186.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[double]):System.Text.Json.Nodes.JsonNode (FullOpts)
-18 (-25.00 % of base) : 179194.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
-18 (-25.00 % of base) : 179180.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
-18 (-25.00 % of base) : 179205.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
-84 (-23.86 % of base) : 131815.dasm - Microsoft.CodeAnalysis.GeneratorDriver:WithUpdatedAnalyzerConfigOptions(Microsoft.CodeAnalysis.Diagnostics.AnalyzerConfigOptionsProvider):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-80 (-22.86 % of base) : 131814.dasm - Microsoft.CodeAnalysis.GeneratorDriver:WithUpdatedParseOptions(Microsoft.CodeAnalysis.ParseOptions):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-92 (-21.10 % of base) : 59338.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__setAnalyzedNullability|169_1(Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbol],ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
-46 (-20.00 % of base) : 59408.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitDelegateCreationExpression>g__visitMethodGroupArgument|278_2(Microsoft.CodeAnalysis.CSharp.BoundDelegateCreationExpression,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundMethodGroup):System.Action`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
-46 (-18.11 % of base) : 59406.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitDelegateCreationExpression>g__setAnalyzedNullability|278_0(Microsoft.CodeAnalysis.CSharp.BoundDelegateCreationExpression,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Action`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
-92 (-16.97 % of base) : 87069.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass169_0:<VisitObjectElementInitializer>b__10(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):this (FullOpts)
-46 (-16.43 % of base) : 59332.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectCreationExpressionBase>g__setAnalyzedNullability|167_0(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpressionBase,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,System.Func`3[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int],System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
-38 (-15.83 % of base) : 131813.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ReplaceAdditionalTexts(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-24 (-15.58 % of base) : 52989.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetMethodGroupDelegateType(Microsoft.CodeAnalysis.CSharp.BoundMethodGroup):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
-46 (-15.13 % of base) : 87078.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass278_0:<VisitDelegateCreationExpression>b__11(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
-8 (-14.81 % of base) : 179179.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.DateTime):System.Text.Json.Nodes.JsonNode (FullOpts)
-8 (-14.81 % of base) : 179198.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[float]):System.Text.Json.Nodes.JsonNode (FullOpts)
-8 (-14.81 % of base) : 179192.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[int]):System.Text.Json.Nodes.JsonNode (FullOpts)
-8 (-14.81 % of base) : 179203.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[uint]):System.Text.Json.Nodes.JsonNode (FullOpts)
-36 (-13.64 % of base) : 179163.dasm - System.Text.Json.Nodes.JsonNode:ReplaceWith[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float]):this (FullOpts)
libraries_tests.run.linux.arm.Release.mch
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 242762120 (overridden on cmd)
Total bytes of diff: 242678846 (overridden on cmd)
Total bytes of delta: -83274 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
332 : 257157.dasm (8.65 % of base)
50 : 93931.dasm (1.33 % of base)
36 : 331522.dasm (2.86 % of base)
36 : 93180.dasm (0.93 % of base)
34 : 446975.dasm (0.82 % of base)
30 : 191771.dasm (2.12 % of base)
28 : 126311.dasm (4.84 % of base)
24 : 534251.dasm (4.12 % of base)
24 : 534269.dasm (4.12 % of base)
24 : 444088.dasm (0.63 % of base)
20 : 567552.dasm (1.16 % of base)
16 : 94902.dasm (1.12 % of base)
14 : 379134.dasm (3.91 % of base)
14 : 393694.dasm (3.91 % of base)
14 : 334184.dasm (1.82 % of base)
14 : 76672.dasm (0.64 % of base)
12 : 337786.dasm (1.55 % of base)
12 : 520600.dasm (1.46 % of base)
12 : 255961.dasm (1.85 % of base)
10 : 337171.dasm (1.11 % of base)
Top file improvements (bytes):
-1100 : 262311.dasm (-6.25 % of base)
-478 : 560764.dasm (-2.55 % of base)
-342 : 439121.dasm (-4.08 % of base)
-294 : 443414.dasm (-3.46 % of base)
-268 : 443423.dasm (-3.21 % of base)
-194 : 257794.dasm (-4.85 % of base)
-182 : 182791.dasm (-2.45 % of base)
-178 : 293730.dasm (-2.11 % of base)
-164 : 671018.dasm (-1.45 % of base)
-140 : 18184.dasm (-1.71 % of base)
-138 : 86630.dasm (-0.72 % of base)
-136 : 430029.dasm (-2.30 % of base)
-136 : 443391.dasm (-1.79 % of base)
-136 : 443280.dasm (-3.20 % of base)
-128 : 35890.dasm (-11.39 % of base)
-126 : 265451.dasm (-5.92 % of base)
-124 : 144266.dasm (-12.86 % of base)
-124 : 12696.dasm (-12.86 % of base)
-124 : 157579.dasm (-12.86 % of base)
-120 : 151175.dasm (-3.22 % of base)
85 total files with Code Size differences (54 improved, 31 regressed), 20 unchanged.
Top method regressions (bytes):
332 (8.65 % of base) : 257157.dasm - System.Data.RBTree`1[int]:RBDeleteX(int,int,int):int:this (Tier0-FullOpts)
50 (1.33 % of base) : 93931.dasm - Microsoft.CodeAnalysis.CSharp.CodeGeneration.CSharpSyntaxGenerator:InsertNodesAfter(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxNode]):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
36 (0.93 % of base) : 93180.dasm - Microsoft.CodeAnalysis.CSharp.CodeGeneration.CSharpSyntaxGenerator:RemoveNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,int):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
36 (2.86 % of base) : 331522.dasm - System.IO.BinaryReader:ReadBytes(int):ubyte[]:this (Tier1)
34 (0.82 % of base) : 446975.dasm - (dynamicClass):<xsl:apply-templates>(System.Xml.Xsl.Runtime.XmlQueryRuntime,System.Xml.XPath.XPathNavigator) (FullOpts)
30 (2.12 % of base) : 191771.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (Tier0-FullOpts)
28 (4.84 % of base) : 126311.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
24 (4.12 % of base) : 534251.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
24 (4.12 % of base) : 534269.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
24 (0.63 % of base) : 444088.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (Tier1)
20 (1.16 % of base) : 567552.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:UncheckedTransformFinalBlock(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int:this (Tier1)
16 (1.12 % of base) : 94902.dasm - System.Text.Encoding:GetBytesWithFallback(System.ReadOnlySpan`1[ushort],int,System.Span`1[ubyte],int,System.Text.EncoderNLS,ubyte):int:this (Instrumented Tier1)
14 (0.64 % of base) : 76672.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNodeRemover+SyntaxRemover:VisitList[System.__Canon](Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]):Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:this (Tier0-FullOpts)
14 (3.91 % of base) : 379134.dasm - System.Net.Sockets.SocketPal:TryStartConnect(System.Net.Sockets.SafeSocketHandle,System.Memory`1[ubyte],byref):ubyte (Tier1)
14 (3.91 % of base) : 393694.dasm - System.Net.Sockets.SocketPal:TryStartConnect(System.Net.Sockets.SafeSocketHandle,System.Memory`1[ubyte],byref):ubyte (Tier1)
14 (1.82 % of base) : 334184.dasm - System.Net.Sockets.SocketPal:TryStartConnect(System.Net.Sockets.SafeSocketHandle,System.Memory`1[ubyte],byref):ubyte (Tier1)
12 (1.46 % of base) : 520600.dasm - System.Array+SorterObjectArray:IntroSort(int,int,int):this (Tier1)
12 (1.85 % of base) : 255961.dasm - System.Data.Index:GetRows(System.Data.Range):System.Data.DataRow[]:this (Tier0-FullOpts)
12 (1.55 % of base) : 337786.dasm - System.Text.Encoding:GetBytesWithFallback(uint,int,uint,int,int,int,System.Text.EncoderNLS):int:this (Instrumented Tier1)
10 (1.11 % of base) : 337171.dasm - System.Text.Encoding:GetCharsWithFallback(uint,int,uint,int,int,int,System.Text.DecoderNLS):int:this (Instrumented Tier1)
Top method improvements (bytes):
-1100 (-6.25 % of base) : 262311.dasm - System.Xml.Schema.SchemaNames:.ctor(System.Xml.XmlNameTable):this (Instrumented Tier0)
-478 (-2.55 % of base) : 560764.dasm - System.Security.Cryptography.Tests.CryptoConfigTests+<get_AllValidNames>d__27:MoveNext():ubyte:this (Instrumented Tier0)
-342 (-4.08 % of base) : 439121.dasm - System.Xml.Xsl.Xslt.KeywordsTable:.ctor(System.Xml.XmlNameTable):this (Instrumented Tier0)
-294 (-3.46 % of base) : 443414.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (Instrumented Tier0)
-268 (-3.21 % of base) : 443423.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitDocOrderDistinct(System.Xml.Xsl.Qil.QilUnary):System.Xml.Xsl.Qil.QilNode:this (Instrumented Tier0)
-194 (-4.85 % of base) : 257794.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteX(int,int,int):int:this (Tier0-FullOpts)
-182 (-2.45 % of base) : 182791.dasm - Microsoft.CodeAnalysis.Compilation:SerializeToPeStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.RebuildData,System.Func`2[Microsoft.DiaSymReader.ISymWriterMetadataProvider,Microsoft.DiaSymReader.SymUnmanagedWriter],Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Emit.EmitOptions,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte:this (Instrumented Tier0)
-178 (-2.11 % of base) : 293730.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.array005.array005.Program:Test(System.Object):int (Instrumented Tier0)
-164 (-1.45 % of base) : 671018.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitConditionalOperatorCore(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
-140 (-1.71 % of base) : 18184.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGeneratorsCore(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.DiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriverState:this (Tier0-FullOpts)
-138 (-0.72 % of base) : 86630.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldNeverOverflowBinaryOperators(int,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.ConstantValue):System.Object (Instrumented Tier0)
-136 (-2.30 % of base) : 430029.dasm - System.Xml.Serialization.XmlSerializationReader:InitPrimitiveIDs():this (Instrumented Tier0)
-136 (-1.79 % of base) : 443391.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitLoop(System.Xml.Xsl.Qil.QilLoop):System.Xml.Xsl.Qil.QilNode:this (Instrumented Tier0)
-136 (-3.20 % of base) : 443280.dasm - System.Xml.Xsl.XPath.XPathBuilder:Function(System.String,System.String,System.Collections.Generic.IList`1[System.Xml.Xsl.Qil.QilNode]):System.Xml.Xsl.Qil.QilNode:this (Instrumented Tier0)
-128 (-11.39 % of base) : 35890.dasm - NuGet.Configuration.SettingsFile+<>c__DisplayClass32_0:<ExecuteSynchronized>b__0():this (Instrumented Tier0)
-126 (-5.92 % of base) : 265451.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (Tier0-FullOpts)
-124 (-12.86 % of base) : 144266.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions):this (Instrumented Tier0)
-124 (-12.86 % of base) : 12696.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions):this (Instrumented Tier0)
-124 (-12.86 % of base) : 157579.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions):this (Instrumented Tier0)
-120 (-3.22 % of base) : 151175.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNonMethod(Microsoft.CodeAnalysis.CSharp.Syntax.SimpleNameSyntax,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Instrumented Tier0)
Top method regressions (percentages):
332 (8.65 % of base) : 257157.dasm - System.Data.RBTree`1[int]:RBDeleteX(int,int,int):int:this (Tier0-FullOpts)
6 (6.67 % of base) : 500844.dasm - System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (Tier1)
28 (4.84 % of base) : 126311.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
4 (4.76 % of base) : 473635.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon](System.Object):System.__Canon:this (Instrumented Tier1)
24 (4.12 % of base) : 534251.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
24 (4.12 % of base) : 534269.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
14 (3.91 % of base) : 379134.dasm - System.Net.Sockets.SocketPal:TryStartConnect(System.Net.Sockets.SafeSocketHandle,System.Memory`1[ubyte],byref):ubyte (Tier1)
14 (3.91 % of base) : 393694.dasm - System.Net.Sockets.SocketPal:TryStartConnect(System.Net.Sockets.SafeSocketHandle,System.Memory`1[ubyte],byref):ubyte (Tier1)
36 (2.86 % of base) : 331522.dasm - System.IO.BinaryReader:ReadBytes(int):ubyte[]:this (Tier1)
8 (2.82 % of base) : 323114.dasm - System.IO.Tests.BaseGetSetTimes`1[System.__Canon]:CanGetAllTimesAfterCreation():this (Tier1)
8 (2.31 % of base) : 713679.dasm - System.Threading.Tasks.Tests.TaskContinueWhenAllTests:makeCWAllTaskArrays(int,int,byref,byref) (Tier0-FullOpts)
30 (2.12 % of base) : 191771.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (Tier0-FullOpts)
8 (2.06 % of base) : 713663.dasm - System.Threading.Tasks.Tests.TaskContinueWhenAllTests:makeCWAllFutureArrays(int,int,byref,byref) (Tier0-FullOpts)
6 (1.89 % of base) : 625031.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,System.Guid):System.Object (FullOpts)
4 (1.85 % of base) : 394647.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAll(System.Predicate`1[System.__Canon]):int:this (Tier1)
4 (1.85 % of base) : 712508.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAll(System.Predicate`1[System.__Canon]):int:this (Tier1)
12 (1.85 % of base) : 255961.dasm - System.Data.Index:GetRows(System.Data.Range):System.Data.DataRow[]:this (Tier0-FullOpts)
2 (1.82 % of base) : 371193.dasm - System.Net.Http.Json.Functional.Tests.HttpClientJsonExtensionsTests:<AllowNullRequestUrlAsAsyncEnumerable>g__AssertPeopleEquality|11_2(System.Collections.Generic.List`1[System.Net.Http.Json.Functional.Tests.Person]) (Tier0-FullOpts)
14 (1.82 % of base) : 334184.dasm - System.Net.Sockets.SocketPal:TryStartConnect(System.Net.Sockets.SafeSocketHandle,System.Memory`1[ubyte],byref):ubyte (Tier1)
2 (1.82 % of base) : 367454.dasm - System.Text.Encoder:Convert(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],ubyte,byref,byref,byref):this (Tier1)
Top method improvements (percentages):
-70 (-30.17 % of base) : 182574.dasm - Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression:Update(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.BoundObjectInitializerExpressionBase,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression:this (Instrumented Tier0)
-46 (-25.00 % of base) : 183663.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetAnalyzedNullability(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState):this (Tier1)
-62 (-21.53 % of base) : 691189.dasm - Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):this (Instrumented Tier0)
-24 (-18.18 % of base) : 160849.dasm - Microsoft.CodeAnalysis.CSharp.AccessCheck:IsSymbolAccessible(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref,byref,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte (Instrumented Tier0)
-24 (-18.18 % of base) : 24271.dasm - Microsoft.CodeAnalysis.CSharp.AccessCheck:IsSymbolAccessible(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref,byref,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte (Instrumented Tier0)
-24 (-18.18 % of base) : 147008.dasm - Microsoft.CodeAnalysis.CSharp.AccessCheck:IsSymbolAccessible(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref,byref,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte (Instrumented Tier0)
-38 (-16.67 % of base) : 405759.dasm - Kerberos.NET.Crypto.AESTransformer+<>c__DisplayClass17_0:<GetOrDeriveKey>b__0(System.ReadOnlyMemory`1[ubyte]):System.ReadOnlyMemory`1[ubyte]:this (Instrumented Tier0)
-50 (-15.82 % of base) : 29767.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithVersion(Microsoft.CodeAnalysis.VersionStamp):Microsoft.CodeAnalysis.ProjectInfo:this (Tier1)
-28 (-15.73 % of base) : 548853.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
-28 (-15.73 % of base) : 549817.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
-28 (-15.73 % of base) : 564621.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
-28 (-15.73 % of base) : 390910.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
-28 (-15.73 % of base) : 540598.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
-28 (-15.73 % of base) : 548742.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
-28 (-15.73 % of base) : 548834.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
-28 (-15.73 % of base) : 565065.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
-28 (-15.73 % of base) : 565121.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
-28 (-15.73 % of base) : 399909.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
-28 (-15.73 % of base) : 564654.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
-28 (-15.73 % of base) : 564761.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
librariestestsnotieredcompilation.run.linux.arm.Release.mch
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 93201612 (overridden on cmd)
Total bytes of diff: 93193102 (overridden on cmd)
Total bytes of delta: -8510 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
332 : 92344.dasm (8.65 % of base)
276 : 202454.dasm (7.11 % of base)
188 : 202097.dasm (5.30 % of base)
164 : 202200.dasm (8.53 % of base)
128 : 203216.dasm (4.73 % of base)
82 : 195647.dasm (4.52 % of base)
82 : 194909.dasm (4.52 % of base)
46 : 196972.dasm (2.53 % of base)
46 : 199484.dasm (2.55 % of base)
32 : 171253.dasm (1.03 % of base)
32 : 60081.dasm (2.15 % of base)
30 : 226716.dasm (1.57 % of base)
16 : 5392.dasm (10.96 % of base)
16 : 170215.dasm (0.42 % of base)
16 : 45598.dasm (10.81 % of base)
16 : 45767.dasm (10.96 % of base)
16 : 5374.dasm (10.81 % of base)
16 : 52420.dasm (10.81 % of base)
16 : 52475.dasm (10.96 % of base)
14 : 14822.dasm (1.38 % of base)
Top file improvements (bytes):
-196 : 132076.dasm (-5.92 % of base)
-194 : 90618.dasm (-4.85 % of base)
-140 : 5379.dasm (-1.71 % of base)
-122 : 95593.dasm (-7.47 % of base)
-104 : 264282.dasm (-5.48 % of base)
-74 : 266143.dasm (-2.43 % of base)
-70 : 175111.dasm (-5.90 % of base)
-60 : 17872.dasm (-3.97 % of base)
-60 : 170376.dasm (-3.16 % of base)
-60 : 171367.dasm (-3.97 % of base)
-58 : 115219.dasm (-1.82 % of base)
-58 : 255680.dasm (-4.90 % of base)
-54 : 48546.dasm (-19.15 % of base)
-54 : 175123.dasm (-4.69 % of base)
-54 : 42667.dasm (-19.15 % of base)
-50 : 3484.dasm (-15.82 % of base)
-50 : 55779.dasm (-3.96 % of base)
-50 : 29998.dasm (-5.58 % of base)
-50 : 269840.dasm (-10.68 % of base)
-48 : 266381.dasm (-4.12 % of base)
67 total files with Code Size differences (39 improved, 28 regressed), 20 unchanged.
Top method regressions (bytes):
332 (8.65 % of base) : 92344.dasm - System.Data.RBTree`1[int]:RBDeleteX(int,int,int):int:this (FullOpts)
276 (7.11 % of base) : 202454.dasm - System.Tests.TimeZoneInfoTests:ConvertTime_DateTime_LocalToUtc() (FullOpts)
188 (5.30 % of base) : 202097.dasm - System.Tests.TimeZoneInfoTests:ConvertTime_DateTime_LocalToLocal() (FullOpts)
164 (8.53 % of base) : 202200.dasm - System.Tests.TimeZoneInfoTests:ConvertTime_DateTime_UtcToLocal() (FullOpts)
128 (4.73 % of base) : 203216.dasm - System.Tests.TimeZoneInfoTests:ConvertTime_DateTime_MiscUtc() (FullOpts)
82 (4.52 % of base) : 195647.dasm - DataContractJsonSerializerTests:DCJS_DateTimeAsRoot() (FullOpts)
82 (4.52 % of base) : 194909.dasm - DataContractJsonSerializerTests:DCJS_DateTimeAsRoot() (FullOpts)
46 (2.53 % of base) : 196972.dasm - DataContractSerializerTests:DCS_TypeWithDatetimeOffsetTypeProperty() (FullOpts)
46 (2.55 % of base) : 199484.dasm - DataContractSerializerTests:DCS_TypeWithDatetimeOffsetTypeProperty() (FullOpts)
32 (1.03 % of base) : 171253.dasm - (dynamicClass):<xsl:apply-templates>(System.Xml.Xsl.Runtime.XmlQueryRuntime,System.Xml.XPath.XPathNavigator) (FullOpts)
32 (2.15 % of base) : 60081.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
30 (1.57 % of base) : 226716.dasm - System.Security.Cryptography.Tests.HmacSha1Tests:HmacSha1_Byte_Constructors():this (FullOpts)
16 (10.96 % of base) : 5392.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
16 (10.96 % of base) : 45767.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
16 (10.96 % of base) : 52475.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
16 (10.81 % of base) : 45598.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
16 (10.81 % of base) : 5374.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
16 (10.81 % of base) : 52420.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
16 (0.42 % of base) : 170215.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
14 (1.38 % of base) : 14822.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.IndentBlockFormattingRule:AddBracketIndentationOperation(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Formatting.Rules.IndentBlockOperation],Microsoft.CodeAnalysis.SyntaxNode) (FullOpts)
Top method improvements (bytes):
-196 (-5.92 % of base) : 132076.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,int]:MergeSortCooperatively():this (FullOpts)
-194 (-4.85 % of base) : 90618.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteX(int,int,int):int:this (FullOpts)
-140 (-1.71 % of base) : 5379.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGeneratorsCore(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.DiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriverState:this (FullOpts)
-122 (-7.47 % of base) : 95593.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
-104 (-5.48 % of base) : 264282.dasm - System.Text.Json.Nodes.Tests.OperatorTests:ImplicitOperators_FromNullableValues() (FullOpts)
-74 (-2.43 % of base) : 266143.dasm - System.Text.Json.Nodes.Tests.ParseTests:Parse_TryGetValue() (FullOpts)
-70 (-5.90 % of base) : 175111.dasm - System.Xml.XmlConvertTests.VerifyNameTests1:v1():int:this (FullOpts)
-60 (-3.16 % of base) : 170376.dasm - (dynamicClass):<xsl:apply-templates>(System.Xml.Xsl.Runtime.XmlQueryRuntime,System.Xml.XPath.XPathNavigator) (FullOpts)
-60 (-3.97 % of base) : 171367.dasm - (dynamicClass):<xsl:apply-templates>(System.Xml.Xsl.Runtime.XmlQueryRuntime,System.Xml.XPath.XPathNavigator) (FullOpts)
-60 (-3.97 % of base) : 17872.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAnonymousFunction(Microsoft.CodeAnalysis.CSharp.Syntax.AnonymousFunctionExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.UnboundLambda:this (FullOpts)
-58 (-1.82 % of base) : 115219.dasm - System.Formats.Asn1.AsnWriter:WriteUtcTimeCore(System.Formats.Asn1.Asn1Tag,System.DateTimeOffset):this (FullOpts)
-58 (-4.90 % of base) : 255680.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(System.Guid):this (FullOpts)
-54 (-19.15 % of base) : 48546.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithDefaultNamespace(System.String):Microsoft.CodeAnalysis.ProjectInfo:this (FullOpts)
-54 (-19.15 % of base) : 42667.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithDefaultNamespace(System.String):Microsoft.CodeAnalysis.ProjectInfo:this (FullOpts)
-54 (-4.69 % of base) : 175123.dasm - System.Xml.XmlConvertTests.VerifyNameTests1:v3():int:this (FullOpts)
-50 (-10.68 % of base) : 269840.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitCollectionElementInitializer>g__setUpdatedSymbol|171_0(Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
-50 (-3.96 % of base) : 55779.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass452_0:<VisitSwitchExpressionCore>g__convertArms|0(Microsoft.CodeAnalysis.CSharp.BoundSwitchExpression,Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
-50 (-15.82 % of base) : 3484.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithVersion(Microsoft.CodeAnalysis.VersionStamp):Microsoft.CodeAnalysis.ProjectInfo:this (FullOpts)
-50 (-5.58 % of base) : 29998.dasm - Microsoft.CodeAnalysis.Workspace:CreateProjectInfo(Microsoft.CodeAnalysis.Project):Microsoft.CodeAnalysis.ProjectInfo (FullOpts)
-48 (-4.12 % of base) : 266381.dasm - System.Text.Json.Nodes.Tests.JsonNodeTests:GetValueKind() (FullOpts)
Top method regressions (percentages):
16 (10.96 % of base) : 5392.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
16 (10.96 % of base) : 45767.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
16 (10.96 % of base) : 52475.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
16 (10.81 % of base) : 45598.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
16 (10.81 % of base) : 5374.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
16 (10.81 % of base) : 52420.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
332 (8.65 % of base) : 92344.dasm - System.Data.RBTree`1[int]:RBDeleteX(int,int,int):int:this (FullOpts)
164 (8.53 % of base) : 202200.dasm - System.Tests.TimeZoneInfoTests:ConvertTime_DateTime_UtcToLocal() (FullOpts)
276 (7.11 % of base) : 202454.dasm - System.Tests.TimeZoneInfoTests:ConvertTime_DateTime_LocalToUtc() (FullOpts)
6 (6.67 % of base) : 101009.dasm - System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (FullOpts)
188 (5.30 % of base) : 202097.dasm - System.Tests.TimeZoneInfoTests:ConvertTime_DateTime_LocalToLocal() (FullOpts)
10 (4.90 % of base) : 178049.dasm - generatedProxy_1:TestMethod(int,System.String,double):double:this (FullOpts)
128 (4.73 % of base) : 203216.dasm - System.Tests.TimeZoneInfoTests:ConvertTime_DateTime_MiscUtc() (FullOpts)
82 (4.52 % of base) : 195647.dasm - DataContractJsonSerializerTests:DCJS_DateTimeAsRoot() (FullOpts)
82 (4.52 % of base) : 194909.dasm - DataContractJsonSerializerTests:DCJS_DateTimeAsRoot() (FullOpts)
4 (4.35 % of base) : 187297.dasm - System.Tests.ConvertTestBase`1+<>c__DisplayClass4_0`1[ulong,System.__Canon]:<VerifyFromStringWithBaseThrows>b__0():System.Object:this (FullOpts)
8 (3.36 % of base) : 45590.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyKeyFileAttributeSetting():System.String:this (FullOpts)
8 (3.36 % of base) : 52414.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyKeyFileAttributeSetting():System.String:this (FullOpts)
8 (3.36 % of base) : 5366.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyKeyFileAttributeSetting():System.String:this (FullOpts)
2 (3.23 % of base) : 196236.dasm - System.Runtime.Serialization.Schema.Tests.ImporterTests+<>c:<CanImport_MemberData>b__5_9(System.Runtime.Serialization.XsdDataContractImporter):ubyte:this (FullOpts)
Top method improvements (percentages):
-54 (-19.15 % of base) : 48546.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithDefaultNamespace(System.String):Microsoft.CodeAnalysis.ProjectInfo:this (FullOpts)
-54 (-19.15 % of base) : 42667.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithDefaultNamespace(System.String):Microsoft.CodeAnalysis.ProjectInfo:this (FullOpts)
-50 (-15.82 % of base) : 3484.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithVersion(Microsoft.CodeAnalysis.VersionStamp):Microsoft.CodeAnalysis.ProjectInfo:this (FullOpts)
-42 (-13.91 % of base) : 42548.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithVersion(Microsoft.CodeAnalysis.VersionStamp):Microsoft.CodeAnalysis.ProjectInfo:this (FullOpts)
-42 (-13.91 % of base) : 48424.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithVersion(Microsoft.CodeAnalysis.VersionStamp):Microsoft.CodeAnalysis.ProjectInfo:this (FullOpts)
-46 (-13.14 % of base) : 54718.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass167_0:<VisitObjectCreationExpressionBase>b__5(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
-30 (-12.82 % of base) : 259409.dasm - System.Text.Json.Nodes.JsonNode:ReplaceWith[System.Text.Json.JsonElement](System.Text.Json.JsonElement):this (FullOpts)
-16 (-11.94 % of base) : 30001.dasm - Microsoft.CodeAnalysis.DocumentInfo:WithDesignTimeOnly(ubyte):Microsoft.CodeAnalysis.DocumentInfo:this (FullOpts)
-16 (-10.81 % of base) : 90544.dasm - System.Data.RBTree`1+RBTreeEnumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-50 (-10.68 % of base) : 269840.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitCollectionElementInitializer>g__setUpdatedSymbol|171_0(Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
-10 (-10.64 % of base) : 94264.dasm - System.Data.ProviderBase.SchemaMapping:MappedIndex():this (FullOpts)
-20 (-9.90 % of base) : 259329.dasm - System.Text.Json.Nodes.Tests.JsonValueTests:DeepEquals_EscapedString() (FullOpts)
-6 (-9.68 % of base) : 196239.dasm - System.Runtime.Serialization.Schema.Tests.ImporterTests+<>c__DisplayClass5_0:<CanImport_MemberData>b__14(System.Runtime.Serialization.XsdDataContractImporter):ubyte:this (FullOpts)
-6 (-9.68 % of base) : 196327.dasm - System.Runtime.Serialization.Schema.Tests.ImporterTests+<>c__DisplayClass7_0:<Import_MemberData>b__5(System.Runtime.Serialization.XsdDataContractImporter):this (FullOpts)
-8 (-9.52 % of base) : 68399.dasm - System.Collections.Immutable.Tests.ImmutableArrayTest+<>c__DisplayClass128_1:<RemoveRangeEnumerableInvalid>b__20():System.Object:this (FullOpts)
-28 (-9.40 % of base) : 43406.dasm - Microsoft.CodeAnalysis.GeneratorDriver:StateWithPendingEditsApplied(Microsoft.CodeAnalysis.GeneratorDriverState):Microsoft.CodeAnalysis.GeneratorDriverState (FullOpts)
-18 (-8.82 % of base) : 29226.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.Object:this (FullOpts)
-30 (-8.62 % of base) : 15995.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:ExactTypeArgumentInference(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,byref):this (FullOpts)
-10 (-8.33 % of base) : 266365.dasm - System.Text.Json.Nodes.Tests.JsonNodeTests+<>c:<AsMethods_Throws>b__8_0():System.Object:this (FullOpts)
-10 (-8.33 % of base) : 266369.dasm - System.Text.Json.Nodes.Tests.JsonNodeTests+<>c:<AsMethods_Throws>b__8_3():System.Object:this (FullOpts)
realworld.run.linux.arm.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13613446 (overridden on cmd)
Total bytes of diff: 13611310 (overridden on cmd)
Total bytes of delta: -2136 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
350 : 6857.dasm (0.41 % of base)
36 : 16566.dasm (0.93 % of base)
16 : 24378.dasm (8.51 % of base)
16 : 34066.dasm (10.81 % of base)
8 : 37320.dasm (1.20 % of base)
6 : 1066.dasm (0.70 % of base)
4 : 17631.dasm (0.64 % of base)
4 : 2107.dasm (1.11 % of base)
4 : 14882.dasm (0.02 % of base)
4 : 19166.dasm (0.74 % of base)
4 : 9411.dasm (0.65 % of base)
2 : 18477.dasm (0.69 % of base)
2 : 2749.dasm (0.20 % of base)
2 : 28748.dasm (0.78 % of base)
2 : 30781.dasm (0.08 % of base)
2 : 3539.dasm (2.33 % of base)
2 : 27523.dasm (0.11 % of base)
2 : 2882.dasm (0.18 % of base)
2 : 6257.dasm (1.19 % of base)
2 : 35140.dasm (0.75 % of base)
Top file improvements (bytes):
-92 : 28256.dasm (-21.10 % of base)
-84 : 5502.dasm (-0.43 % of base)
-68 : 17999.dasm (-11.85 % of base)
-66 : 2055.dasm (-7.71 % of base)
-60 : 29164.dasm (-3.97 % of base)
-60 : 8519.dasm (-6.01 % of base)
-52 : 30671.dasm (-4.30 % of base)
-50 : 30054.dasm (-3.96 % of base)
-50 : 30077.dasm (-10.68 % of base)
-48 : 28773.dasm (-0.97 % of base)
-46 : 28016.dasm (-6.44 % of base)
-46 : 28230.dasm (-3.59 % of base)
-46 : 30725.dasm (-20.00 % of base)
-46 : 28515.dasm (-7.52 % of base)
-46 : 29395.dasm (-12.78 % of base)
-42 : 14165.dasm (-17.80 % of base)
-38 : 34471.dasm (-0.48 % of base)
-30 : 11462.dasm (-1.79 % of base)
-30 : 28828.dasm (-8.62 % of base)
-28 : 25153.dasm (-1.01 % of base)
68 total files with Code Size differences (45 improved, 23 regressed), 20 unchanged.
Top method regressions (bytes):
350 (0.41 % of base) : 6857.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
36 (0.93 % of base) : 16566.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:SetLevel(int):this (FullOpts)
16 (8.51 % of base) : 24378.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
16 (10.81 % of base) : 34066.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
8 (1.20 % of base) : 37320.dasm - Microsoft.ApplicationInsights.Metrics.DefaultAggregationPeriodCycle:GetNextCycleTargetTime(System.DateTimeOffset):System.DateTimeOffset (FullOpts)
6 (0.70 % of base) : 1066.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (FullOpts)
4 (1.11 % of base) : 2107.dasm - BepuPhysics.CollisionDetection.ConstraintRemover:RemoveConstraintsFromTypeBatch(int):this (FullOpts)
4 (0.02 % of base) : 14882.dasm - FSharp.Compiler.QuotationTranslator:ConvExprCore(FSharp.Compiler.QuotationTranslator+QuotationGenerationScope,FSharp.Compiler.QuotationTranslator+QuotationTranslationEnv,FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.QuotationPickler+ExprData (FullOpts)
4 (0.65 % of base) : 9411.dasm - FSharp.Compiler.TypedTreeOps:eliminateDeadTargetsFromMatch[System.__Canon](FSharp.Compiler.TypedTree+DecisionTree,System.__Canon[]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
4 (0.64 % of base) : 17631.dasm - Microsoft.ML.Data.RowToRowTransformerBase+MapperBase:Microsoft.ML.Data.IRowMapper.CreateGetters(Microsoft.ML.DataViewRow,System.Func`2[int,ubyte],byref):System.Delegate[]:this (FullOpts)
4 (0.74 % of base) : 19166.dasm - System.Net.Sockets.IPEndPointExtensions:GetIPAddress(System.ReadOnlySpan`1[ubyte]):System.Net.IPAddress (FullOpts)
2 (1.19 % of base) : 6257.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader+seekReadNestedExportedTypes@3183[int,FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+ImplementationTag]]:Invoke(Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILNestedExportedType]:this (FullOpts)
2 (0.19 % of base) : 3800.dasm - FSharp.Compiler.CompilerOptions:processArg@245(Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerOptions+CompilerOptionBlock],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerOptions+CompilerOption],Microsoft.FSharp.Collections.FSharpList`1[System.String]) (FullOpts)
2 (0.75 % of base) : 35140.dasm - Interop+Sys:GetUserNameFromPasswd(uint):System.String (FullOpts)
2 (0.78 % of base) : 28748.dasm - Microsoft.CodeAnalysis.BitVector:UnionWith(byref):ubyte:this (FullOpts)
2 (0.11 % of base) : 27523.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAssignment(Microsoft.CodeAnalysis.CSharp.Syntax.AssignmentExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
2 (0.08 % of base) : 30781.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:DefaultVisit(Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
2 (0.69 % of base) : 18477.dasm - Microsoft.ML.Data.TypedCursorable`1+TypedRowBase[System.__Canon]:.ctor(Microsoft.ML.Data.TypedCursorable`1[System.__Canon],Microsoft.ML.DataViewRow,System.String):this (FullOpts)
2 (0.20 % of base) : 2749.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (FullOpts)
2 (0.49 % of base) : 95.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (FullOpts)
Top method improvements (bytes):
-92 (-21.10 % of base) : 28256.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__setAnalyzedNullability|169_1(Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbol],ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
-84 (-0.43 % of base) : 5502.dasm - FSharp.Compiler.Lexer:token(FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort]):FSharp.Compiler.Parser+token (FullOpts)
-68 (-11.85 % of base) : 17999.dasm - Microsoft.ML.Internal.Utilities.Heap`1[Microsoft.ML.Internal.Utilities.MinWaiter+WaitStats]:BubbleDown(int):this (FullOpts)
-66 (-7.71 % of base) : 2055.dasm - BepuPhysics.Solver`1[DemoBenchmarks.RagdollTubeBenchmark+DemoPoseIntegratorCallbacks]:Solve(float,BepuUtilities.IThreadDispatcher):this (FullOpts)
-60 (-6.01 % of base) : 8519.dasm - FSharp.Compiler.Lexer:token$cont@859(FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort],Microsoft.FSharp.Core.Unit):FSharp.Compiler.Parser+token (FullOpts)
-60 (-3.97 % of base) : 29164.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAnonymousFunction(Microsoft.CodeAnalysis.CSharp.Syntax.AnonymousFunctionExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.UnboundLambda:this (FullOpts)
-52 (-4.30 % of base) : 30671.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitDelegateCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundDelegateCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
-50 (-10.68 % of base) : 30077.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitCollectionElementInitializer>g__setUpdatedSymbol|171_0(Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
-50 (-3.96 % of base) : 30054.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass449_0:<VisitSwitchExpressionCore>g__convertArms|0(Microsoft.CodeAnalysis.CSharp.BoundSwitchExpression,Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
-48 (-0.97 % of base) : 28773.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitConditionalAccess(Microsoft.CodeAnalysis.CSharp.BoundConditionalAccess,byref):this (FullOpts)
-46 (-7.52 % of base) : 28515.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitConditionalOperatorCore>g__convertArms|206_0(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
-46 (-20.00 % of base) : 30725.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitDelegateCreationExpression>g__visitMethodGroupArgument|278_2(Microsoft.CodeAnalysis.CSharp.BoundDelegateCreationExpression,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundMethodGroup):System.Action`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
-46 (-3.59 % of base) : 28230.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitLocalDeclaration(Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
-46 (-6.44 % of base) : 28016.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitObjectCreationExpressionBase(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpressionBase):this (FullOpts)
-46 (-12.78 % of base) : 29395.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass167_0:<VisitObjectCreationExpressionBase>b__5(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
-42 (-17.80 % of base) : 14165.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
-38 (-0.48 % of base) : 34471.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-30 (-1.79 % of base) : 11462.dasm - FSharp.Compiler.CheckDeclarations+IncrClassChecking+FixupExprNode@1147:Invoke(Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.TypedTree+Expr):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Expr]:this (FullOpts)
-30 (-8.62 % of base) : 28828.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:ExactTypeArgumentInference(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,byref):this (FullOpts)
-28 (-1.01 % of base) : 25153.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
Top method regressions (percentages):
16 (10.81 % of base) : 34066.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
16 (8.51 % of base) : 24378.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
2 (2.33 % of base) : 3539.dasm - System.Text.Decoder:GetChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],ubyte):int:this (FullOpts)
2 (2.33 % of base) : 199.dasm - System.Text.Encoder:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],ubyte):int:this (FullOpts)
8 (1.20 % of base) : 37320.dasm - Microsoft.ApplicationInsights.Metrics.DefaultAggregationPeriodCycle:GetNextCycleTargetTime(System.DateTimeOffset):System.DateTimeOffset (FullOpts)
2 (1.19 % of base) : 6257.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader+seekReadNestedExportedTypes@3183[int,FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+ImplementationTag]]:Invoke(Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILNestedExportedType]:this (FullOpts)
4 (1.11 % of base) : 2107.dasm - BepuPhysics.CollisionDetection.ConstraintRemover:RemoveConstraintsFromTypeBatch(int):this (FullOpts)
36 (0.93 % of base) : 16566.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:SetLevel(int):this (FullOpts)
2 (0.78 % of base) : 28748.dasm - Microsoft.CodeAnalysis.BitVector:UnionWith(byref):ubyte:this (FullOpts)
2 (0.75 % of base) : 35140.dasm - Interop+Sys:GetUserNameFromPasswd(uint):System.String (FullOpts)
4 (0.74 % of base) : 19166.dasm - System.Net.Sockets.IPEndPointExtensions:GetIPAddress(System.ReadOnlySpan`1[ubyte]):System.Net.IPAddress (FullOpts)
6 (0.70 % of base) : 1066.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (FullOpts)
2 (0.69 % of base) : 18477.dasm - Microsoft.ML.Data.TypedCursorable`1+TypedRowBase[System.__Canon]:.ctor(Microsoft.ML.Data.TypedCursorable`1[System.__Canon],Microsoft.ML.DataViewRow,System.String):this (FullOpts)
4 (0.65 % of base) : 9411.dasm - FSharp.Compiler.TypedTreeOps:eliminateDeadTargetsFromMatch[System.__Canon](FSharp.Compiler.TypedTree+DecisionTree,System.__Canon[]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
4 (0.64 % of base) : 17631.dasm - Microsoft.ML.Data.RowToRowTransformerBase+MapperBase:Microsoft.ML.Data.IRowMapper.CreateGetters(Microsoft.ML.DataViewRow,System.Func`2[int,ubyte],byref):System.Delegate[]:this (FullOpts)
2 (0.49 % of base) : 95.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (FullOpts)
350 (0.41 % of base) : 6857.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
2 (0.20 % of base) : 2749.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (FullOpts)
2 (0.19 % of base) : 3800.dasm - FSharp.Compiler.CompilerOptions:processArg@245(Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerOptions+CompilerOptionBlock],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerOptions+CompilerOption],Microsoft.FSharp.Collections.FSharpList`1[System.String]) (FullOpts)
2 (0.18 % of base) : 2882.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)
Top method improvements (percentages):
-92 (-21.10 % of base) : 28256.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__setAnalyzedNullability|169_1(Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbol],ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
-46 (-20.00 % of base) : 30725.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitDelegateCreationExpression>g__visitMethodGroupArgument|278_2(Microsoft.CodeAnalysis.CSharp.BoundDelegateCreationExpression,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundMethodGroup):System.Action`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
-42 (-17.80 % of base) : 14165.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
-46 (-12.78 % of base) : 29395.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass167_0:<VisitObjectCreationExpressionBase>b__5(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
-8 (-12.12 % of base) : 18239.dasm - Microsoft.ML.Trainers.SdcaTrainerBase`3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]:ApplyAt(long,Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]):this (FullOpts)
-68 (-11.85 % of base) : 17999.dasm - Microsoft.ML.Internal.Utilities.Heap`1[Microsoft.ML.Internal.Utilities.MinWaiter+WaitStats]:BubbleDown(int):this (FullOpts)
-12 (-10.71 % of base) : 18724.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator+Transformer:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]):this (FullOpts)
-50 (-10.68 % of base) : 30077.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitCollectionElementInitializer>g__setUpdatedSymbol|171_0(Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
-12 (-10.17 % of base) : 4197.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-6 (-8.82 % of base) : 36586.dasm - System.Management.Automation.Interpreter.LoadCachedObjectInstruction:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-30 (-8.62 % of base) : 28828.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:ExactTypeArgumentInference(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,byref):this (FullOpts)
-10 (-8.33 % of base) : 16186.dasm - System.IO.Compression.DeflateStream:ReadByte():int:this (FullOpts)
-66 (-7.71 % of base) : 2055.dasm - BepuPhysics.Solver`1[DemoBenchmarks.RagdollTubeBenchmark+DemoPoseIntegratorCallbacks]:Solve(float,BepuUtilities.IThreadDispatcher):this (FullOpts)
-14 (-7.69 % of base) : 34113.dasm - System.Reflection.Internal.EnumerableExtensions+<>c__DisplayClass1_0`1[System.Reflection.Metadata.Ecma335.MetadataBuilder+ConstantRow]:<OrderBy>b__0(int,int):int:this (FullOpts)
-20 (-7.63 % of base) : 8429.dasm - FSharp.Compiler.Xml.XmlDocCollector:LinesRange(FSharp.Compiler.Text.Position):FSharp.Compiler.Text.Range:this (FullOpts)
-46 (-7.52 % of base) : 28515.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitConditionalOperatorCore>g__convertArms|206_0(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
-12 (-7.50 % of base) : 20569.dasm - Microsoft.ML.Transforms.Text.NgramExtractingEstimator:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.Text.NgramExtractingEstimator+ColumnOptions[]):this (FullOpts)
-12 (-6.98 % of base) : 18727.dasm - Microsoft.ML.Transforms.Text.WordEmbeddingEstimator:.ctor(Microsoft.ML.Runtime.IHostEnvironment,int,Microsoft.ML.Transforms.Text.WordEmbeddingEstimator+ColumnOptions[]):this (FullOpts)
-16 (-6.78 % of base) : 18717.dasm - Microsoft.ML.Transforms.ColumnSelectingTransformer+Mapper:.ctor(Microsoft.ML.Transforms.ColumnSelectingTransformer,Microsoft.ML.DataViewSchema):this (FullOpts)
-12 (-6.45 % of base) : 17571.dasm - Microsoft.ML.Transforms.HashingEstimator:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.HashingEstimator+ColumnOptions[]):this (FullOpts)
Diffs are based on 2,296,119 contexts (841,817 MinOpts, 1,454,302 FullOpts).
MISSED contexts: base: 5,093 (0.22%), diff: 5,251 (0.23%)
Overall (-182,725 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run.windows.x86.checked.mch
7,104,846
-1,078
benchmarks.run_pgo.windows.x86.checked.mch
45,219,159
-7,368
benchmarks.run_tiered.windows.x86.checked.mch
9,509,296
-932
coreclr_tests.run.windows.x86.checked.mch
309,170,651
-39,164
libraries.crossgen2.windows.x86.checked.mch
31,620,161
-3,178
libraries.pmi.windows.x86.checked.mch
48,795,839
-4,664
libraries_tests.run.windows.x86.Release.mch
185,793,630
-119,035
librariestestsnotieredcompilation.run.windows.x86.Release.mch
102,157,669
-6,712
realworld.run.windows.x86.checked.mch
11,359,539
-594
MinOpts (-105,402 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch
6,629,490
-8,597
benchmarks.run_tiered.windows.x86.checked.mch
4,269,809
-101
coreclr_tests.run.windows.x86.checked.mch
201,671,769
-20,973
libraries_tests.run.windows.x86.Release.mch
98,331,507
-75,731
FullOpts (-77,323 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run.windows.x86.checked.mch
7,104,567
-1,078
benchmarks.run_pgo.windows.x86.checked.mch
38,589,669
+1,229
benchmarks.run_tiered.windows.x86.checked.mch
5,239,487
-831
coreclr_tests.run.windows.x86.checked.mch
107,498,882
-18,191
libraries.crossgen2.windows.x86.checked.mch
31,619,104
-3,178
libraries.pmi.windows.x86.checked.mch
48,700,525
-4,664
libraries_tests.run.windows.x86.Release.mch
87,462,123
-43,304
librariestestsnotieredcompilation.run.windows.x86.Release.mch
93,487,877
-6,712
realworld.run.windows.x86.checked.mch
11,063,839
-594
Example diffs
benchmarks.run.windows.x86.checked.mch
-8 (-14.04%) : 4727.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
@@ -9,7 +9,7 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 5, 5 ) ref -> ebx this class-hnd single-def <System.Threading.QueueUserWorkItemCallbackBase>
-; V01 tmp0 [V01,T01] ( 2, 4 ) ubyte -> ecx "Inlining Arg"
+;* V01 tmp0 [V01 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;
; Lcl frame size = 0
@@ -32,11 +32,8 @@ G_M21281_IG02: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
mov ecx, 1
xchg dword ptr [ebx], ecx
test ecx, ecx
- sete cl
- movzx ecx, cl
- test ecx, ecx
- jne SHORT G_M21281_IG04
- ;; size=32 bbWeight=1 PerfScore 29.50
+ je SHORT G_M21281_IG04
+ ;; size=24 bbWeight=1 PerfScore 28.00
G_M21281_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; byrRegs -[ebx]
mov ecx, 0xD1FFAB1E
@@ -52,6 +49,6 @@ G_M21281_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
ret
;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 57, prolog size 4, PerfScore 35.75, instruction count 21, allocated bytes for code 57 (MethodHash=f256acde) for method System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
+; Total bytes of code 49, prolog size 4, PerfScore 34.25, instruction count 18, allocated bytes for code 49 (MethodHash=f256acde) for method System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
; ============================================================
-16 (-13.91%) : 23524.dasm - V8.Crypto.BigInteger:copyTo(V8.Crypto.BigInteger):this (FullOpts)
@@ -8,16 +8,14 @@
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 6, 6 ) ref -> esi this class-hnd single-def <V8.Crypto.BigInteger>
-; V01 arg1 [V01,T07] ( 5, 5 ) ref -> [ebp-0x18] class-hnd single-def <V8.Crypto.BigInteger>
-; V02 loc0 [V02,T03] ( 3, 9 ) ref -> ebx class-hnd single-def <V8.Crypto.ListX`1[int]>
-; V03 loc1 [V03,T04] ( 2, 5 ) ref -> [ebp-0x1C] class-hnd spill-single-def <V8.Crypto.ListX`1[int]>
-; V04 loc2 [V04,T02] ( 7, 22 ) int -> [ebp-0x10]
-; V05 tmp0 [V05,T01] ( 3, 24 ) ref -> edi "arr expr"
-;* V06 tmp1 [V06,T06] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V07 tmp2 [V07,T00] ( 4, 32 ) int -> [ebp-0x14] spill-single-def "argument with side effect"
+; V00 this [V00,T03] ( 6, 6 ) ref -> esi this class-hnd single-def <V8.Crypto.BigInteger>
+; V01 arg1 [V01,T04] ( 5, 5 ) ref -> edi class-hnd single-def <V8.Crypto.BigInteger>
+; V02 loc0 [V02,T02] ( 3, 9 ) ref -> ebx class-hnd single-def <V8.Crypto.ListX`1[int]>
+; V03 loc1 [V03,T05] ( 2, 5 ) ref -> [ebp-0x14] class-hnd spill-single-def <V8.Crypto.ListX`1[int]>
+; V04 loc2 [V04,T00] ( 9, 30 ) int -> [ebp-0x10]
+; V05 tmp0 [V05,T01] ( 3, 24 ) ref -> ecx "arr expr"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M4195_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -25,7 +23,7 @@ G_M4195_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
push edi
push esi
push ebx
- sub esp, 16
+ sub esp, 8
mov esi, ecx
; gcrRegs +[esi]
mov edi, edx
@@ -34,51 +32,41 @@ G_M4195_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
G_M4195_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ebx, gword ptr [esi+0x04]
; gcrRegs +[ebx]
- mov gword ptr [ebp-0x18], edi
- ; GC ptr vars +{V01}
mov eax, gword ptr [edi+0x04]
; gcrRegs +[eax]
- mov gword ptr [ebp-0x1C], eax
+ mov gword ptr [ebp-0x14], eax
; GC ptr vars +{V03}
mov edx, dword ptr [esi+0x08]
dec edx
js SHORT G_M4195_IG04
- ;; size=18 bbWeight=1 PerfScore 9.25
-G_M4195_IG03: ; bbWeight=4, gcVars=00000090 {V01 V03}, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[edi]
+ ;; size=15 bbWeight=1 PerfScore 8.25
+G_M4195_IG03: ; bbWeight=4, gcVars=00000020 {V03}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
cmp edx, dword ptr [ebx+0x08]
jae SHORT G_M4195_IG07
- mov dword ptr [ebp-0x10], edx
- mov ecx, edx
- mov dword ptr [ebp-0x14], ecx
- mov edi, gword ptr [ebx+0x04]
- ; gcrRegs +[edi]
- cmp ecx, dword ptr [edi+0x04]
- jae SHORT G_M4195_IG06
- push dword ptr [edi+4*ecx+0x08]
- mov ecx, eax
+ mov ecx, gword ptr [ebx+0x04]
; gcrRegs +[ecx]
- mov edx, dword ptr [ebp-0x14]
+ cmp edx, dword ptr [ecx+0x04]
+ jae SHORT G_M4195_IG06
+ push dword ptr [ecx+4*edx+0x08]
+ mov ecx, eax
+ mov dword ptr [ebp-0x10], edx
cmp dword ptr [ecx], ecx
call [V8.Crypto.ListX`1[int]:set_Item(int,int):this]
- ; gcrRegs -[eax ecx edi]
- mov edi, dword ptr [ebp-0x10]
- dec edi
- mov edx, edi
- mov eax, gword ptr [ebp-0x1C]
+ ; gcrRegs -[eax ecx]
+ mov edx, dword ptr [ebp-0x10]
+ dec edx
+ mov eax, gword ptr [ebp-0x14]
; gcrRegs +[eax]
jns SHORT G_M4195_IG03
- ;; size=49 bbWeight=4 PerfScore 100.00
-G_M4195_IG04: ; bbWeight=1, gcVars=00000080 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=39 bbWeight=4 PerfScore 90.00
+G_M4195_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax ebx]
; GC ptr vars -{V03}
mov eax, dword ptr [esi+0x08]
- mov edi, gword ptr [ebp-0x18]
- ; gcrRegs +[edi]
mov dword ptr [edi+0x08], eax
mov eax, dword ptr [esi+0x0C]
mov dword ptr [edi+0x0C], eax
- ;; size=15 bbWeight=1 PerfScore 7.00
+ ;; size=12 bbWeight=1 PerfScore 6.00
G_M4195_IG05: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
@@ -89,7 +77,6 @@ G_M4195_IG05: ; bbWeight=1, epilog, nogc, extend
;; size=8 bbWeight=1 PerfScore 3.50
G_M4195_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[esi edi]
- ; GC ptr vars -{V01}
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
G_M4195_IG07: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
@@ -97,6 +84,6 @@ G_M4195_IG07: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 115, prolog size 9, PerfScore 124.75, instruction count 47, allocated bytes for code 115 (MethodHash=53c8ef9c) for method V8.Crypto.BigInteger:copyTo(V8.Crypto.BigInteger):this (FullOpts)
+; Total bytes of code 99, prolog size 9, PerfScore 112.75, instruction count 41, allocated bytes for code 99 (MethodHash=53c8ef9c) for method V8.Crypto.BigInteger:copyTo(V8.Crypto.BigInteger):this (FullOpts)
; ============================================================
-12 (-10.17%) : 24384.dasm - System.Linq.Grouping`2+
@@ -9,48 +9,40 @@
;
; V00 this [V00,T00] ( 13, 8.50) ref -> ecx this class-hnd single-def <System.Linq.Grouping`2+<GetEnumerator>d__9[System.__Canon,System.__Canon]>
; V01 loc0 [V01,T04] ( 3, 2.50) int -> eax
-; V02 loc1 [V02,T03] ( 4, 2.50) ref -> [ebp-0x08] class-hnd spill-single-def <<unknown class>>
+; V02 loc1 [V02,T03] ( 4, 2.50) ref -> edx class-hnd single-def <<unknown class>>
;* V03 loc2 [V03 ] ( 0, 0 ) int -> zero-ref
-; V04 tmp0 [V04,T01] ( 3, 3 ) ref -> eax single-def "arr expr"
-; V05 tmp1 [V05,T02] ( 3, 3 ) int -> esi "index expr"
+; V04 tmp0 [V04,T01] ( 3, 3 ) ref -> edx single-def "arr expr"
+; V05 tmp1 [V05,T02] ( 3, 3 ) int -> eax "index expr"
; V06 cse0 [V06,T05] ( 3, 1.50) int -> eax "CSE - moderate"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M24504_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- push esi
- push eax
- ;; size=5 bbWeight=1 PerfScore 3.25
+ ;; size=3 bbWeight=1 PerfScore 1.25
G_M24504_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
mov eax, dword ptr [ecx+0x0C]
mov edx, gword ptr [ecx+0x08]
; gcrRegs +[edx]
- mov gword ptr [ebp-0x08], edx
- ; GC ptr vars +{V02}
test eax, eax
je SHORT G_M24504_IG06
- ;; size=13 bbWeight=1 PerfScore 6.25
-G_M24504_IG03: ; bbWeight=0.50, gcVars=00000008 {V02}, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=10 bbWeight=1 PerfScore 5.25
+G_M24504_IG03: ; bbWeight=0.50, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz
cmp eax, 1
je SHORT G_M24504_IG09
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M24504_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M24504_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx edx]
- ; GC ptr vars -{V02}
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M24504_IG05: ; bbWeight=0.50, epilog, nogc, extend
- pop ecx
- pop esi
pop ebp
ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M24504_IG06: ; bbWeight=0.50, gcVars=00000008 {V02}, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M24504_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ecx edx]
- ; GC ptr vars +{V02}
mov dword ptr [ecx+0x0C], -1
xor eax, eax
mov dword ptr [ecx+0x10], eax
@@ -58,33 +50,28 @@ G_M24504_IG06: ; bbWeight=0.50, gcVars=00000008 {V02}, gcrefRegs=00000006
cmp eax, dword ptr [edx+0x18]
jge SHORT G_M24504_IG04
;; size=20 bbWeight=0.50 PerfScore 4.12
-G_M24504_IG07: ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[edx]
- lea edx, bword ptr [ecx+0x04]
- ; byrRegs +[edx]
- mov eax, gword ptr [ebp-0x08]
- ; gcrRegs +[eax]
- mov eax, gword ptr [eax+0x08]
- mov esi, dword ptr [ecx+0x10]
- cmp esi, dword ptr [eax+0x04]
+G_M24504_IG07: ; bbWeight=0.50, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz
+ mov edx, gword ptr [edx+0x08]
+ mov eax, dword ptr [ecx+0x10]
+ cmp eax, dword ptr [edx+0x04]
jae SHORT G_M24504_IG10
- mov eax, gword ptr [eax+4*esi+0x08]
- ; GC ptr vars -{V02}
+ mov eax, gword ptr [edx+4*eax+0x08]
+ ; gcrRegs +[eax]
+ lea edx, bword ptr [ecx+0x04]
+ ; gcrRegs -[edx]
+ ; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax]
; byrRegs -[edx]
mov dword ptr [ecx+0x0C], 1
mov eax, 1
- ;; size=38 bbWeight=0.50 PerfScore 6.88
+ ;; size=35 bbWeight=0.50 PerfScore 6.38
G_M24504_IG08: ; bbWeight=0.50, epilog, nogc, extend
- pop ecx
- pop esi
pop ebp
ret
- ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M24504_IG09: ; bbWeight=0.50, gcVars=00000008 {V02}, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M24504_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[edx]
- ; GC ptr vars +{V02}
mov dword ptr [ecx+0x0C], -1
mov eax, dword ptr [ecx+0x10]
inc eax
@@ -93,13 +80,12 @@ G_M24504_IG09: ; bbWeight=0.50, gcVars=00000008 {V02}, gcrefRegs=00000006
jl SHORT G_M24504_IG07
jmp SHORT G_M24504_IG04
;; size=21 bbWeight=0.50 PerfScore 5.12
-G_M24504_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M24504_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx edx]
- ; GC ptr vars -{V02}
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 118, prolog size 5, PerfScore 28.88, instruction count 45, allocated bytes for code 118 (MethodHash=63dfa047) for method System.Linq.Grouping`2+<GetEnumerator>d__9[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 106, prolog size 3, PerfScore 24.38, instruction count 37, allocated bytes for code 106 (MethodHash=63dfa047) for method System.Linq.Grouping`2+<GetEnumerator>d__9[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
; ============================================================
+36 (+1.47%) : 5387.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
@@ -9,50 +9,50 @@
; Final local variable assignments
;
; V00 this [V00,T01] ( 48, 63 ) ref -> [ebp-0xAC] this class-hnd single-def <System.Reflection.Emit.RuntimeTypeBuilder>
-; V01 loc0 [V01,T36] ( 3, 8.50) ref -> [ebp-0xB0] class-hnd exact spill-single-def <int[]>
-; V02 loc1 [V02,T72] ( 5, 2.50) int -> edi
+; V01 loc0 [V01,T34] ( 3, 8.50) ref -> [ebp-0xB0] class-hnd exact spill-single-def <int[]>
+; V02 loc1 [V02,T70] ( 5, 2.50) int -> edi
; V03 loc2 [V03 ] ( 9, 7.50) ref -> [ebp-0x24] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Reflection.Emit.RuntimeModuleBuilder>
-; V04 loc3 [V04,T59] ( 3, 5 ) int -> [ebp-0x28] spill-single-def
+; V04 loc3 [V04,T57] ( 3, 5 ) int -> [ebp-0x28] spill-single-def
; V05 loc4 [V05 ] ( 4, 2 ) ref -> [ebp-0x2C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.RuntimeType>
; V06 loc5 [V06,T02] ( 9, 32.50) int -> [ebp-0x30]
-; V07 loc6 [V07,T29] ( 8, 11 ) ref -> [ebp-0xB4] class-hnd <int[]>
+; V07 loc6 [V07,T27] ( 8, 11 ) ref -> [ebp-0xB4] class-hnd <int[]>
;* V08 loc7 [V08 ] ( 0, 0 ) int -> zero-ref
; V09 loc8 [V09,T03] ( 9, 32.50) int -> [ebp-0x34]
;* V10 loc9 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Reflection.Emit.RuntimeTypeBuilder+CustAttr]>
;* V11 loc10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Reflection.Emit.RuntimeTypeBuilder+CustAttr>
-; V12 loc11 [V12,T34] ( 4, 9 ) ref -> edi class-hnd exact single-def <<unknown class>>
+; V12 loc11 [V12,T32] ( 4, 9 ) ref -> edi class-hnd exact single-def <<unknown class>>
; V13 loc12 [V13,T15] ( 5, 16.50) int -> [ebp-0x38]
;* V14 loc13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
; V15 loc14 [V15,T05] ( 7, 24.50) int -> [ebp-0x3C]
; V16 loc15 [V16,T00] ( 30, 64 ) ref -> [ebp-0xB8] class-hnd exact spill-single-def <System.Reflection.Emit.RuntimeMethodBuilder>
-; V17 loc16 [V17,T27] ( 4, 12 ) int -> [ebp-0x40] spill-single-def
-; V18 loc17 [V18,T51] ( 3, 6 ) ref -> [ebp-0xBC] class-hnd spill-single-def <ubyte[]>
+; V17 loc16 [V17,T25] ( 4, 12 ) int -> [ebp-0x40] spill-single-def
+; V18 loc17 [V18,T49] ( 3, 6 ) ref -> [ebp-0xBC] class-hnd spill-single-def <ubyte[]>
; V19 loc18 [V19 ] ( 2, 4 ) int -> [ebp-0x44] do-not-enreg[X] addr-exposed ld-addr-op
; V20 loc19 [V20,T14] ( 11, 22 ) ref -> [ebp-0xC0] class-hnd <ubyte[]>
;* V21 loc20 [V21 ] ( 0, 0 ) int -> zero-ref
-; V22 loc21 [V22,T31] ( 5, 10 ) ref -> [ebp-0xC4] class-hnd exact spill-single-def <System.Reflection.Emit.ExceptionHandler[]>
-; V23 loc22 [V23,T32] ( 5, 10 ) ref -> edi class-hnd <int[]>
-; V24 tmp0 [V24,T17] ( 2, 16 ) ref -> ecx class-hnd exact "impAppendStmt" <System.Reflection.Emit.RuntimeModuleBuilder>
-; V25 tmp1 [V25,T23] ( 2, 16 ) int -> eax "Strict ordering of exceptions for Array store"
+; V22 loc21 [V22,T29] ( 5, 10 ) ref -> [ebp-0xC4] class-hnd exact spill-single-def <System.Reflection.Emit.ExceptionHandler[]>
+; V23 loc22 [V23,T30] ( 5, 10 ) ref -> edi class-hnd <int[]>
+; V24 tmp0 [V24,T17] ( 2, 16 ) ref -> [ebp-0xC8] class-hnd exact spill-single-def "impAppendStmt" <System.Reflection.Emit.RuntimeModuleBuilder>
+; V25 tmp1 [V25,T21] ( 2, 16 ) int -> eax "Strict ordering of exceptions for Array store"
;* V26 tmp2 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallModule>
;* V27 tmp3 [V27 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Runtime.CompilerServices.QCallModule>
-; V28 tmp4 [V28,T44] ( 2, 8 ) int -> [ebp-0x48] spill-single-def "impAppendStmt"
+; V28 tmp4 [V28,T42] ( 2, 8 ) int -> [ebp-0x48] spill-single-def "impAppendStmt"
;* V29 tmp5 [V29 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.CompilerServices.QCallModule>
;* V30 tmp6 [V30 ] ( 0, 0 ) int -> zero-ref
-; V31 tmp7 [V31,T62] ( 2, 4 ) int -> [ebp-0x4C] spill-single-def
+; V31 tmp7 [V31,T60] ( 2, 4 ) int -> [ebp-0x4C] spill-single-def
;* V32 tmp8 [V32 ] ( 0, 0 ) ref -> zero-ref
;* V33 tmp9 [V33 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.CompilerServices.QCallModule>
;* V34 tmp10 [V34 ] ( 0, 0 ) int -> zero-ref
;* V35 tmp11 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 tmp12 [V36 ] ( 0, 0 ) ref -> zero-ref
-; V37 tmp13 [V37,T53] ( 3, 6 ) int -> [ebp-0x50]
+; V37 tmp13 [V37,T51] ( 3, 6 ) int -> [ebp-0x50]
;* V38 tmp14 [V38 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.CompilerServices.QCallModule>
;* V39 tmp15 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp16 [V40 ] ( 0, 0 ) int -> zero-ref
;* V41 tmp17 [V41 ] ( 0, 0 ) ref -> zero-ref
;* V42 tmp18 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp19 [V43 ] ( 0, 0 ) ref -> zero-ref
-; V44 tmp20 [V44,T63] ( 2, 4 ) int -> [ebp-0x54] spill-single-def
+; V44 tmp20 [V44,T61] ( 2, 4 ) int -> [ebp-0x54] spill-single-def
;* V45 tmp21 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp22 [V46 ] ( 0, 0 ) ref -> zero-ref
;* V47 tmp23 [V47 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.CompilerServices.QCallModule>
@@ -64,7 +64,7 @@
;* V53 tmp29 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp30 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp31 [V55 ] ( 0, 0 ) ref -> zero-ref
-; V56 tmp32 [V56,T54] ( 3, 6 ) int -> [ebp-0x58]
+; V56 tmp32 [V56,T52] ( 3, 6 ) int -> [ebp-0x58]
;* V57 tmp33 [V57 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.CompilerServices.QCallModule>
;* V58 tmp34 [V58 ] ( 0, 0 ) int -> zero-ref
;* V59 tmp35 [V59 ] ( 0, 0 ) int -> zero-ref
@@ -87,26 +87,26 @@
;* V76 tmp52 [V76 ] ( 0, 0 ) ref -> zero-ref
;* V77 tmp53 [V77 ] ( 0, 0 ) int -> zero-ref
;* V78 tmp54 [V78 ] ( 0, 0 ) ref -> zero-ref
-; V79 tmp55 [V79,T55] ( 3, 6 ) int -> [ebp-0x5C]
-; V80 tmp56 [V80,T114] ( 2, 0 ) ref -> esi class-hnd exact "impAppendStmt" <System.String>
-; V81 tmp57 [V81,T111] ( 3, 0 ) ref -> edi class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V79 tmp55 [V79,T53] ( 3, 6 ) int -> [ebp-0x5C]
+; V80 tmp56 [V80,T112] ( 2, 0 ) ref -> esi class-hnd exact "impAppendStmt" <System.String>
+; V81 tmp57 [V81,T109] ( 3, 0 ) ref -> edi class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V82 tmp58 [V82 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-; V83 tmp59 [V83,T60] ( 3, 5 ) int -> ecx "fgMakeTemp is creating a new local variable"
-; V84 tmp60 [V84,T25] ( 5, 15 ) ref -> eax class-hnd "spilling QMark2" <System.Reflection.Emit.RuntimeILGenerator>
-; V85 tmp61 [V85,T115] ( 2, 0 ) ref -> esi class-hnd exact "impAppendStmt" <System.String>
-; V86 tmp62 [V86,T112] ( 3, 0 ) ref -> edi class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V87 tmp63 [V87,T113] ( 3, 0 ) ref -> esi class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V83 tmp59 [V83,T58] ( 3, 5 ) int -> ecx "fgMakeTemp is creating a new local variable"
+; V84 tmp60 [V84,T23] ( 5, 15 ) ref -> eax class-hnd "spilling QMark2" <System.Reflection.Emit.RuntimeILGenerator>
+; V85 tmp61 [V85,T113] ( 2, 0 ) ref -> esi class-hnd exact "impAppendStmt" <System.String>
+; V86 tmp62 [V86,T110] ( 3, 0 ) ref -> edi class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V87 tmp63 [V87,T111] ( 3, 0 ) ref -> esi class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V88 tmp64 [V88 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallModule>
;* V89 tmp65 [V89 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Runtime.CompilerServices.QCallModule>
-; V90 tmp66 [V90,T83] ( 2, 2 ) int -> ecx "impAppendStmt"
+; V90 tmp66 [V90,T81] ( 2, 2 ) int -> ecx "impAppendStmt"
;* V91 tmp67 [V91 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V92 tmp68 [V92 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallModule>
-; V93 tmp69 [V93,T18] ( 2, 16 ) ref -> ecx class-hnd exact "impAppendStmt" <System.Reflection.Emit.RuntimeModuleBuilder>
-; V94 tmp70 [V94,T24] ( 2, 16 ) int -> eax "Strict ordering of exceptions for Array store"
-; V95 tmp71 [V95,T97] ( 3, 1.50) int -> [ebp-0x60]
+; V93 tmp69 [V93,T18] ( 2, 16 ) ref -> [ebp-0xCC] class-hnd exact spill-single-def "impAppendStmt" <System.Reflection.Emit.RuntimeModuleBuilder>
+; V94 tmp70 [V94,T22] ( 2, 16 ) int -> eax "Strict ordering of exceptions for Array store"
+; V95 tmp71 [V95,T95] ( 3, 1.50) int -> [ebp-0x60]
;* V96 tmp72 [V96 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallModule>
;* V97 tmp73 [V97 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Reflection.Emit.RuntimeModuleBuilder>
-; V98 tmp74 [V98,T67] ( 3, 3 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V98 tmp74 [V98,T65] ( 3, 3 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V99 tmp75 [V99 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
; V100 tmp76 [V100,T07] ( 3, 24 ) ref -> edi class-hnd "Inlining Arg" <<unknown class>>
;* V101 tmp77 [V101 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
@@ -116,45 +116,45 @@
;* V105 tmp81 [V105 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
;* V106 tmp82 [V106 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V107 tmp83 [V107 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.RuntimeMethodBuilder>
-; V108 tmp84 [V108,T68] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeMethodBuilder>
-; V109 tmp85 [V109,T76] ( 2, 2 ) ref -> edi class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
+; V108 tmp84 [V108,T66] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeMethodBuilder>
+; V109 tmp85 [V109,T74] ( 2, 2 ) ref -> edi class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
;* V110 tmp86 [V110 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.RuntimeModule>
;* V111 tmp87 [V111 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V112 tmp88 [V112 ] ( 2, 1 ) byref -> [ebp-0x64] do-not-enreg[P] must-init pinned "Inline stloc first use temp"
;* V113 tmp89 [V113 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V114 tmp90 [V114,T69] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.String>
+; V114 tmp90 [V114,T67] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.String>
; V115 tmp91 [V115 ] ( 2, 1 ) byref -> [ebp-0x68] do-not-enreg[P] must-init pinned "Inline stloc first use temp"
;* V116 tmp92 [V116 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V117 tmp93 [V117 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Runtime.CompilerServices.QCallModule>
-; V118 tmp94 [V118,T84] ( 2, 2 ) int -> [ebp-0x6C] spill-single-def "Inlining Arg"
-; V119 tmp95 [V119,T85] ( 2, 2 ) int -> [ebp-0x70] spill-single-def "Inlining Arg"
-; V120 tmp96 [V120,T101] ( 2, 1 ) int -> edi "Inline stloc first use temp"
-; V121 tmp97 [V121,T88] ( 3, 1.50) byref -> edi "Inline return value spill temp"
-; V122 tmp98 [V122,T74] ( 4, 2 ) byref -> ecx "Inline return value spill temp"
-; V123 tmp99 [V123,T77] ( 2, 2 ) ref -> edi class-hnd single-def "Inlining Arg" <<unknown class>>
+; V118 tmp94 [V118,T82] ( 2, 2 ) int -> [ebp-0x6C] spill-single-def "Inlining Arg"
+; V119 tmp95 [V119,T83] ( 2, 2 ) int -> [ebp-0x70] spill-single-def "Inlining Arg"
+; V120 tmp96 [V120,T99] ( 2, 1 ) int -> edi "Inline stloc first use temp"
+; V121 tmp97 [V121,T86] ( 3, 1.50) byref -> edi "Inline return value spill temp"
+; V122 tmp98 [V122,T72] ( 4, 2 ) byref -> ecx "Inline return value spill temp"
+; V123 tmp99 [V123,T75] ( 2, 2 ) ref -> edi class-hnd single-def "Inlining Arg" <<unknown class>>
;* V124 tmp100 [V124 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Reflection.Emit.RuntimeTypeBuilder+CustAttr]>
-;* V125 tmp101 [V125,T45] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V125 tmp101 [V125,T43] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V126 tmp102 [V126 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V127 tmp103 [V127,T78] ( 2, 2 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
+; V127 tmp103 [V127,T76] ( 2, 2 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
;* V128 tmp104 [V128 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.RuntimeModule>
-; V129 tmp105 [V129,T04] ( 4, 32 ) ref -> [ebp-0xC8] class-hnd exact spill-single-def "Inlining Arg" <System.Reflection.Emit.RuntimeTypeBuilder>
+; V129 tmp105 [V129,T04] ( 4, 32 ) ref -> [ebp-0xD0] class-hnd exact spill-single-def "Inlining Arg" <System.Reflection.Emit.RuntimeTypeBuilder>
;* V130 tmp106 [V130 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Reflection.TypeInfo>
-; V131 tmp107 [V131,T58] ( 2, 6 ) ref -> eax class-hnd "Inline stloc first use temp" <System.Reflection.TypeInfo>
-; V132 tmp108 [V132,T56] ( 2, 4 ) int -> ecx
+; V131 tmp107 [V131,T56] ( 2, 6 ) ref -> eax class-hnd "Inline stloc first use temp" <System.Reflection.TypeInfo>
+; V132 tmp108 [V132,T54] ( 2, 4 ) int -> ecx
;* V133 tmp109 [V133 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V134 tmp110 [V134 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V135 tmp111 [V135 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
; V136 tmp112 [V136,T09] ( 3, 24 ) ref -> ecx class-hnd "Inlining Arg" <<unknown class>>
;* V137 tmp113 [V137 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Reflection.Emit.ILGenerator>
-; V138 tmp114 [V138,T41] ( 2, 8 ) ref -> edx class-hnd "dup spill" <System.Reflection.Emit.RuntimeILGenerator>
-; V139 tmp115 [V139,T35] ( 5, 8.50) ref -> edx
-; V140 tmp116 [V140,T16] ( 4, 16 ) ref -> [ebp-0xCC] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.RuntimeILGenerator>
+; V138 tmp114 [V138,T39] ( 2, 8 ) ref -> edx class-hnd "dup spill" <System.Reflection.Emit.RuntimeILGenerator>
+; V139 tmp115 [V139,T33] ( 5, 8.50) ref -> edx
+; V140 tmp116 [V140,T16] ( 4, 16 ) ref -> [ebp-0xD4] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.RuntimeILGenerator>
;* V141 tmp117 [V141 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.RuntimeILGenerator>
-; V142 tmp118 [V142,T57] ( 3, 6 ) int -> [ebp-0x74] "Inline return value spill temp"
-; V143 tmp119 [V143,T42] ( 2, 8 ) ref -> esi class-hnd exact "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
+; V142 tmp118 [V142,T55] ( 3, 6 ) int -> [ebp-0x74] "Inline return value spill temp"
+; V143 tmp119 [V143,T40] ( 2, 8 ) ref -> esi class-hnd exact "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
;* V144 tmp120 [V144 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.RuntimeModule>
;* V145 tmp121 [V145 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V146 tmp122 [V146,T64] ( 2, 4 ) int -> [ebp-0x78] spill-single-def "Inline stloc first use temp"
+; V146 tmp122 [V146,T62] ( 2, 4 ) int -> [ebp-0x78] spill-single-def "Inline stloc first use temp"
; V147 tmp123 [V147 ] ( 2, 4 ) byref -> [ebp-0x7C] do-not-enreg[P] must-init pinned "Inline stloc first use temp"
;* V148 tmp124 [V148 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V149 tmp125 [V149 ] ( 2, 4 ) byref -> [ebp-0x80] do-not-enreg[P] must-init pinned "Inline stloc first use temp"
@@ -163,29 +163,29 @@
;* V152 tmp128 [V152 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V153 tmp129 [V153 ] ( 2, 4 ) byref -> [ebp-0x88] do-not-enreg[P] must-init pinned "Inline stloc first use temp"
;* V154 tmp130 [V154 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V155 tmp131 [V155,T37] ( 4, 8 ) byref -> edi "Inline return value spill temp"
-; V156 tmp132 [V156,T38] ( 4, 8 ) byref -> edx "Inline return value spill temp"
-; V157 tmp133 [V157,T39] ( 4, 8 ) byref -> esi "Inline return value spill temp"
-; V158 tmp134 [V158,T40] ( 4, 8 ) byref -> ecx "Inline return value spill temp"
+; V155 tmp131 [V155,T35] ( 4, 8 ) byref -> edi "Inline return value spill temp"
+; V156 tmp132 [V156,T36] ( 4, 8 ) byref -> edx "Inline return value spill temp"
+; V157 tmp133 [V157,T37] ( 4, 8 ) byref -> esi "Inline return value spill temp"
+; V158 tmp134 [V158,T38] ( 4, 8 ) byref -> ecx "Inline return value spill temp"
;* V159 tmp135 [V159 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
-; V160 tmp136 [V160,T79] ( 2, 2 ) ref -> edx class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
+; V160 tmp136 [V160,T77] ( 2, 2 ) ref -> edx class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
;* V161 tmp137 [V161 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.RuntimeModule>
;* V162 tmp138 [V162 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V163 tmp139 [V163 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V164 tmp140 [V164,T70] ( 3, 3 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <System.RuntimeType>
-; V165 tmp141 [V165,T89] ( 3, 1.50) ref -> edi class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-; V166 tmp142 [V166,T71] ( 5, 2.50) ref -> edi class-hnd single-def "Inline stloc first use temp" <System.Object>
-; V167 tmp143 [V167,T80] ( 2, 2 ) ref -> ecx class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+; V164 tmp140 [V164,T68] ( 3, 3 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <System.RuntimeType>
+; V165 tmp141 [V165,T87] ( 3, 1.50) ref -> edi class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+; V166 tmp142 [V166,T69] ( 5, 2.50) ref -> edi class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V167 tmp143 [V167,T78] ( 2, 2 ) ref -> ecx class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
;* V168 tmp144 [V168 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
-; V169 tmp145 [V169,T50] ( 5, 13 ) ref -> eax "Single return block return value"
-; V170 FramesRoot [V170,T30] ( 11, 10 ) int -> [ebp-0x8C] spill-single-def "Pinvoke FrameListRoot"
-; V171 PInvokeFrame[V171 ] ( 20, 18 ) struct (32) [ebp-0xEC] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V172 tmp148 [V172,T26] ( 4, 12.50) ref -> edi single-def "field V10._list (fldOffset=0x0)" P-INDEP
-; V173 tmp149 [V173,T33] ( 2, 6 ) ref -> ecx "field V10._current (fldOffset=0x4)" P-INDEP
+; V169 tmp145 [V169,T48] ( 5, 13 ) ref -> eax "Single return block return value"
+; V170 FramesRoot [V170,T28] ( 11, 10 ) int -> [ebp-0x8C] spill-single-def "Pinvoke FrameListRoot"
+; V171 PInvokeFrame[V171 ] ( 20, 18 ) struct (32) [ebp-0xF4] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V172 tmp148 [V172,T24] ( 4, 12.50) ref -> edi single-def "field V10._list (fldOffset=0x0)" P-INDEP
+; V173 tmp149 [V173,T31] ( 2, 6 ) ref -> ecx "field V10._current (fldOffset=0x4)" P-INDEP
; V174 tmp150 [V174,T06] ( 6, 20.50) int -> [ebp-0x90] "field V10._index (fldOffset=0x8)" P-INDEP
-; V175 tmp151 [V175,T61] ( 2, 4.50) int -> [ebp-0x94] spill-single-def "field V10._version (fldOffset=0xc)" P-INDEP
-; V176 tmp152 [V176,T65] ( 2, 4 ) int -> [ebp-0x98] spill-single-def "field V26._ptr (fldOffset=0x0)" P-INDEP
-; V177 tmp153 [V177,T66] ( 2, 4 ) int -> [ebp-0x9C] spill-single-def "field V26._module (fldOffset=0x4)" P-INDEP
+; V175 tmp151 [V175,T59] ( 2, 4.50) int -> [ebp-0x94] spill-single-def "field V10._version (fldOffset=0xc)" P-INDEP
+; V176 tmp152 [V176,T63] ( 2, 4 ) int -> [ebp-0x98] spill-single-def "field V26._ptr (fldOffset=0x0)" P-INDEP
+; V177 tmp153 [V177,T64] ( 2, 4 ) int -> [ebp-0x9C] spill-single-def "field V26._module (fldOffset=0x4)" P-INDEP
;* V178 tmp154 [V178 ] ( 0, 0 ) int -> zero-ref "field V27._ptr (fldOffset=0x0)" P-INDEP
;* V179 tmp155 [V179 ] ( 0, 0 ) int -> zero-ref "field V27._module (fldOffset=0x4)" P-INDEP
;* V180 tmp156 [V180 ] ( 0, 0 ) int -> zero-ref "field V29._ptr (fldOffset=0x0)" P-INDEP
@@ -200,58 +200,56 @@
;* V189 tmp165 [V189 ] ( 0, 0 ) int -> zero-ref "field V57._module (fldOffset=0x4)" P-INDEP
;* V190 tmp166 [V190 ] ( 0, 0 ) int -> zero-ref "field V68._ptr (fldOffset=0x0)" P-INDEP
;* V191 tmp167 [V191 ] ( 0, 0 ) int -> zero-ref "field V68._module (fldOffset=0x4)" P-INDEP
-; V192 tmp168 [V192,T102] ( 2, 1 ) int -> eax "field V88._ptr (fldOffset=0x0)" P-INDEP
-; V193 tmp169 [V193,T103] ( 2, 1 ) int -> edx "field V88._module (fldOffset=0x4)" P-INDEP
+; V192 tmp168 [V192,T100] ( 2, 1 ) int -> eax "field V88._ptr (fldOffset=0x0)" P-INDEP
+; V193 tmp169 [V193,T101] ( 2, 1 ) int -> edx "field V88._module (fldOffset=0x4)" P-INDEP
;* V194 tmp170 [V194 ] ( 0, 0 ) int -> zero-ref "field V89._ptr (fldOffset=0x0)" P-INDEP
;* V195 tmp171 [V195 ] ( 0, 0 ) int -> zero-ref "field V89._module (fldOffset=0x4)" P-INDEP
;* V196 tmp172 [V196 ] ( 0, 0 ) int -> zero-ref "field V91._ptr (fldOffset=0x0)" P-INDEP
-; V197 tmp173 [V197,T104] ( 2, 1 ) int -> edx "field V92._ptr (fldOffset=0x0)" P-INDEP
-; V198 tmp174 [V198,T105] ( 2, 1 ) int -> ecx "field V92._module (fldOffset=0x4)" P-INDEP
-; V199 tmp175 [V199,T106] ( 2, 1 ) int -> [ebp-0xA0] spill-single-def "field V96._ptr (fldOffset=0x0)" P-INDEP
-; V200 tmp176 [V200,T107] ( 2, 1 ) int -> [ebp-0xA4] spill-single-def "field V96._module (fldOffset=0x4)" P-INDEP
+; V197 tmp173 [V197,T102] ( 2, 1 ) int -> edx "field V92._ptr (fldOffset=0x0)" P-INDEP
+; V198 tmp174 [V198,T103] ( 2, 1 ) int -> ecx "field V92._module (fldOffset=0x4)" P-INDEP
+; V199 tmp175 [V199,T104] ( 2, 1 ) int -> [ebp-0xA0] spill-single-def "field V96._ptr (fldOffset=0x0)" P-INDEP
+; V200 tmp176 [V200,T105] ( 2, 1 ) int -> [ebp-0xA4] spill-single-def "field V96._module (fldOffset=0x4)" P-INDEP
;* V201 tmp177 [V201 ] ( 0, 0 ) int -> zero-ref "field V117._ptr (fldOffset=0x0)" P-INDEP
;* V202 tmp178 [V202 ] ( 0, 0 ) int -> zero-ref "field V117._module (fldOffset=0x4)" P-INDEP
-; V203 tmp179 [V203,T90] ( 3, 1.50) ref -> edi single-def "field V124._list (fldOffset=0x0)" P-INDEP
...
+8 (+2.05%) : 104.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
@@ -8,33 +8,33 @@
; 0 inlinees with PGO data; 8 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T08] ( 7, 4.50) ref -> esi class-hnd single-def <System.String>
-; V01 loc0 [V01,T10] ( 6, 2.38) ref -> edi class-hnd exact <System.String>
-; V02 loc1 [V02,T07] ( 8, 14.50) ref -> ebx class-hnd exact single-def <<unknown class>>
-; V03 loc2 [V03,T02] ( 6, 17 ) ref -> esi class-hnd exact single-def <<unknown class>>
-; V04 loc3 [V04,T00] ( 9, 32.50) int -> edi
+; V00 arg0 [V00,T07] ( 7, 4.50) ref -> esi class-hnd single-def <System.String>
+; V01 loc0 [V01,T09] ( 6, 2.38) ref -> edi class-hnd exact <System.String>
+; V02 loc1 [V02,T06] ( 7, 14 ) ref -> ebx class-hnd exact single-def <<unknown class>>
+; V03 loc2 [V03,T02] ( 6, 17 ) ref -> edi class-hnd exact single-def <<unknown class>>
+; V04 loc3 [V04,T00] ( 9, 32.50) int -> [ebp-0x10]
; V05 loc4 [V05,T03] ( 5, 16.50) int -> ebx
-; V06 tmp0 [V06,T11] ( 2, 2 ) ref -> edi single-def "CASTCLASS eval op1"
+; V06 tmp0 [V06,T10] ( 2, 2 ) ref -> edi single-def "CASTCLASS eval op1"
;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-; V08 tmp2 [V08,T09] ( 3, 3 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V08 tmp2 [V08,T08] ( 3, 3 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V09 tmp3 [V09,T04] ( 2, 16 ) byref -> ecx "impAppendStmt"
;* V10 tmp4 [V10,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V11 tmp5 [V11,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V12 tmp6 [V12 ] ( 2, 2 ) ushort -> [ebp-0x10] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+; V12 tmp6 [V12 ] ( 2, 2 ) ushort -> [ebp-0x14] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
;* V13 tmp7 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V14 tmp8 [V14 ] ( 2, 2 ) ushort -> [ebp-0x14] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+; V14 tmp8 [V14 ] ( 2, 2 ) ushort -> [ebp-0x18] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
;* V15 tmp9 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V16 tmp10 [V16,T14] ( 2, 1 ) byref -> ecx single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V17 tmp11 [V17,T18] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x4)" P-INDEP
; V18 tmp12 [V18,T15] ( 2, 1 ) byref -> ecx single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V19 tmp13 [V19,T19] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x4)" P-INDEP
-; V20 tmp14 [V20,T12] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-; V21 tmp15 [V21,T13] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V20 tmp14 [V20,T11] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V21 tmp15 [V21,T12] ( 2, 2 ) ref -> edx single-def "argument with side effect"
; V22 tmp16 [V22,T01] ( 3, 24 ) ref -> edx "arr expr"
-; V23 tmp17 [V23,T05] ( 2, 16 ) byref -> ecx "argument with side effect"
-; V24 tmp18 [V24,T06] ( 2, 16 ) ref -> edx "argument with side effect"
+; V23 tmp17 [V23,T05] ( 2, 16 ) ref -> edx "argument with side effect"
+; V24 cse0 [V24,T13] ( 3, 1.50) int -> esi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M12781_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -42,7 +42,7 @@ G_M12781_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 8
+ sub esp, 12
mov esi, ecx
; gcrRegs +[esi]
;; size=11 bbWeight=1 PerfScore 4.75
@@ -113,8 +113,8 @@ G_M12781_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
;; size=64 bbWeight=0.50 PerfScore 7.88
G_M12781_IG09: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
movzx ecx, word ptr [D1FFAB1EH] ; static handle
- mov word ptr [ebp-0x10], cx
- lea ecx, bword ptr [ebp-0x10]
+ mov word ptr [ebp-0x14], cx
+ lea ecx, bword ptr [ebp-0x14]
; byrRegs +[ecx]
push 1
push ecx
@@ -140,8 +140,8 @@ G_M12781_IG10: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=0
;; size=17 bbWeight=0.50 PerfScore 2.62
G_M12781_IG11: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref
movzx ecx, word ptr [D1FFAB1EH] ; static handle
- mov word ptr [ebp-0x14], cx
- lea ecx, bword ptr [ebp-0x14]
+ mov word ptr [ebp-0x18], cx
+ lea ecx, bword ptr [ebp-0x18]
; byrRegs +[ecx]
push 1
push ecx
@@ -160,57 +160,61 @@ G_M12781_IG11: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=0
; gcrRegs -[eax ecx edx]
;; size=42 bbWeight=0.50 PerfScore 6.75
G_M12781_IG12: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
- mov edx, dword ptr [ebx+0x08]
+ mov esi, dword ptr [ebx+0x08]
+ mov edx, esi
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[eax]
- mov esi, eax
- ; gcrRegs +[esi]
- xor edi, edi
- cmp dword ptr [ebx+0x08], 0
- jle SHORT G_M12781_IG14
- ;; size=23 bbWeight=0.50 PerfScore 3.88
-G_M12781_IG13: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ mov edi, eax
+ ; gcrRegs +[edi]
+ xor eax, eax
; gcrRegs -[eax]
- cmp edi, dword ptr [esi+0x04]
+ test esi, esi
+ jle SHORT G_M12781_IG14
+ ;; size=23 bbWeight=0.50 PerfScore 2.62
+G_M12781_IG13: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz
+ cmp eax, dword ptr [edi+0x04]
jae SHORT G_M12781_IG17
- lea ecx, bword ptr [esi+8*edi+0x08]
+ lea ecx, bword ptr [edi+8*eax+0x08]
; byrRegs +[ecx]
- cmp edi, dword ptr [ebx+0x08]
+ cmp eax, dword ptr [ebx+0x08]
jae SHORT G_M12781_IG20
mov edx, gword ptr [ebx+0x04]
; gcrRegs +[edx]
- cmp edi, dword ptr [edx+0x04]
+ cmp eax, dword ptr [edx+0x04]
jae SHORT G_M12781_IG17
- mov edx, gword ptr [edx+4*edi+0x08]
+ mov dword ptr [ebp-0x10], eax
+ mov edx, gword ptr [edx+4*eax+0x08]
call [<unknown method>]
; gcrRegs -[edx]
; byrRegs -[ecx]
- inc edi
- cmp edi, dword ptr [ebx+0x08]
+ mov esi, dword ptr [ebp-0x10]
+ inc esi
+ cmp esi, dword ptr [ebx+0x08]
+ mov eax, esi
jl SHORT G_M12781_IG13
- ;; size=38 bbWeight=4 PerfScore 97.00
-G_M12781_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ;; size=46 bbWeight=4 PerfScore 106.00
+G_M12781_IG14: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ebx]
xor ebx, ebx
- cmp dword ptr [esi+0x04], 0
+ cmp dword ptr [edi+0x04], 0
jle G_M12781_IG03
;; size=12 bbWeight=0.50 PerfScore 2.12
-G_M12781_IG15: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M12781_IG15: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
lea eax, [8*ebx]
add eax, 8
- add eax, esi
+ add eax, edi
; byrRegs +[eax]
push gword ptr [eax+0x04]
push gword ptr [eax]
call [<unknown method>]
; byrRegs -[eax]
inc ebx
- cmp dword ptr [esi+0x04], ebx
+ cmp dword ptr [edi+0x04], ebx
jg SHORT G_M12781_IG15
;; size=29 bbWeight=4 PerfScore 49.00
G_M12781_IG16: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi]
+ ; gcrRegs -[edi]
jmp G_M12781_IG03
;; size=5 bbWeight=0.50 PerfScore 1.00
G_M12781_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
@@ -236,6 +240,6 @@ G_M12781_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 390, prolog size 9, PerfScore 195.53, instruction count 115, allocated bytes for code 390 (MethodHash=6685ce12) for method System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
+; Total bytes of code 398, prolog size 9, PerfScore 203.28, instruction count 119, allocated bytes for code 398 (MethodHash=6685ce12) for method System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
; ============================================================
+15 (+8.11%) : 22900.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
@@ -7,29 +7,31 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 9, 5.50) byref -> edi this single-def
+; V00 this [V00,T01] ( 8, 5 ) byref -> edi this single-def
; V01 arg1 [V01,T00] ( 11, 7 ) int -> esi single-def
; V02 arg2 [V02,T02] ( 9, 5 ) int -> ebx single-def
-; V03 loc0 [V03,T18] ( 2, 1 ) ref -> [ebp-0x10] class-hnd spill-single-def <<unknown class>>
-; V04 loc1 [V04,T19] ( 2, 1 ) ref -> [ebp-0x14] class-hnd spill-single-def <<unknown class>>
-; V05 tmp0 [V05,T03] ( 3, 3 ) ref -> edx single-def "arr expr"
-; V06 tmp1 [V06,T04] ( 3, 3 ) ref -> eax single-def "arr expr"
-; V07 tmp2 [V07,T11] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
-; V08 tmp3 [V08,T12] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-; V09 tmp4 [V09,T05] ( 3, 3 ) ref -> edx single-def "arr expr"
-; V10 tmp5 [V10,T06] ( 3, 3 ) ref -> ecx single-def "arr expr"
-; V11 tmp6 [V11,T13] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-;* V12 tmp7 [V12,T20] ( 0, 0 ) int -> zero-ref "argument with side effect"
-; V13 tmp8 [V13,T14] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
-; V14 tmp9 [V14,T07] ( 3, 3 ) ref -> edx single-def "arr expr"
-; V15 tmp10 [V15,T08] ( 3, 3 ) ref -> ecx single-def "arr expr"
-; V16 tmp11 [V16,T15] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-; V17 tmp12 [V17,T17] ( 2, 2 ) int -> esi "argument with side effect"
-; V18 tmp13 [V18,T16] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
-; V19 cse0 [V19,T09] ( 5, 2.50) ref -> ecx "CSE - moderate"
-; V20 cse1 [V20,T10] ( 4, 2 ) ref -> ecx "CSE - conservative"
+; V03 loc0 [V03,T21] ( 2, 1 ) ref -> [ebp-0x14] class-hnd spill-single-def <<unknown class>>
+; V04 loc1 [V04,T22] ( 2, 1 ) ref -> [ebp-0x18] class-hnd spill-single-def <<unknown class>>
+; V05 tmp0 [V05,T03] ( 3, 3 ) ref -> eax single-def "arr expr"
+; V06 tmp1 [V06,T08] ( 2, 2 ) ref -> edx single-def "arr expr"
+; V07 tmp2 [V07,T09] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
+; V08 tmp3 [V08,T10] ( 2, 2 ) ref -> eax single-def "argument with side effect"
+; V09 tmp4 [V09,T04] ( 3, 3 ) ref -> edx single-def "arr expr"
+; V10 tmp5 [V10,T11] ( 2, 2 ) ref -> ecx single-def "arr expr"
+; V11 tmp6 [V11,T12] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V12 tmp7 [V12,T13] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
+; V13 tmp8 [V13,T05] ( 3, 3 ) ref -> edx single-def "arr expr"
+; V14 tmp9 [V14,T14] ( 2, 2 ) ref -> ecx single-def "arr expr"
+; V15 tmp10 [V15,T15] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V16 tmp11 [V16,T16] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
+; V17 cse0 [V17,T06] ( 5, 2.50) ref -> ecx "CSE - moderate"
+; V18 cse1 [V18,T07] ( 4, 2 ) ref -> ecx "CSE - moderate"
+; V19 cse2 [V19,T17] ( 3, 1.50) ref -> [ebp-0x1C] spill-single-def "CSE - moderate"
+; V20 cse3 [V20,T18] ( 3, 1.50) int -> [ebp-0x10] spill-single-def "CSE - moderate"
+; V21 cse4 [V21,T19] ( 3, 1.50) int -> eax "CSE - moderate"
+; V22 cse5 [V22,T20] ( 3, 1.50) int -> eax "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M28033_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -37,7 +39,7 @@ G_M28033_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 8
+ sub esp, 16
mov edi, ecx
; byrRegs +[edi]
mov esi, edx
@@ -45,47 +47,56 @@ G_M28033_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=16 bbWeight=1 PerfScore 6.00
G_M28033_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
cmp esi, ebx
- je G_M28033_IG04
+ je G_M28033_IG05
;; size=8 bbWeight=1 PerfScore 1.25
G_M28033_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
mov ecx, gword ptr [edi+0x08]
; gcrRegs +[ecx]
mov edx, gword ptr [edi]
; gcrRegs +[edx]
- cmp esi, dword ptr [edx+0x04]
- jae G_M28033_IG05
- mov edx, gword ptr [edx+4*esi+0x08]
- mov eax, gword ptr [edi]
+ mov gword ptr [ebp-0x1C], edx
+ ; GC ptr vars +{V19}
+ mov eax, edx
; gcrRegs +[eax]
- cmp ebx, dword ptr [eax+0x04]
- jae G_M28033_IG05
- push gword ptr [eax+4*ebx+0x08]
+ mov edx, dword ptr [eax+0x04]
+ ; gcrRegs -[edx]
+ mov dword ptr [ebp-0x10], edx
+ cmp esi, edx
+ jae G_M28033_IG06
+ mov eax, gword ptr [eax+4*esi+0x08]
+ mov edx, gword ptr [ebp-0x1C]
+ ; gcrRegs +[edx]
+ cmp ebx, dword ptr [ebp-0x10]
+ jae G_M28033_IG06
+ push gword ptr [edx+4*ebx+0x08]
+ mov edx, eax
+ ; GC ptr vars -{V19}
call [<unknown method>]
; gcrRegs -[eax ecx edx]
test eax, eax
- jle SHORT G_M28033_IG04
+ jle SHORT G_M28033_IG05
mov ecx, gword ptr [edi]
; gcrRegs +[ecx]
mov edx, ecx
; gcrRegs +[edx]
- cmp esi, dword ptr [edx+0x04]
- jae SHORT G_M28033_IG05
- mov eax, gword ptr [edx+4*esi+0x08]
- ; gcrRegs +[eax]
- mov gword ptr [ebp-0x10], eax
+ mov eax, dword ptr [edx+0x04]
+ cmp esi, eax
+ jae SHORT G_M28033_IG06
+ mov edx, gword ptr [edx+4*esi+0x08]
+ mov gword ptr [ebp-0x14], edx
; GC ptr vars +{V03}
mov edx, ecx
- cmp ebx, dword ptr [ecx+0x04]
- jae SHORT G_M28033_IG05
+ cmp ebx, eax
+ jae SHORT G_M28033_IG06
push gword ptr [ecx+4*ebx+0x08]
mov ecx, edx
mov edx, esi
; gcrRegs -[edx]
call CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[eax ecx]
+ ; gcrRegs -[ecx]
mov ecx, gword ptr [edi]
; gcrRegs +[ecx]
- push gword ptr [ebp-0x10]
+ push gword ptr [ebp-0x14]
mov edx, ebx
; GC ptr vars -{V03}
call CORINFO_HELP_ARRADDR_ST
@@ -93,34 +104,36 @@ G_M28033_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080
mov ecx, gword ptr [edi+0x04]
; gcrRegs +[ecx]
test ecx, ecx
- je SHORT G_M28033_IG04
+ je SHORT G_M28033_IG05
mov edx, ecx
; gcrRegs +[edx]
- cmp esi, dword ptr [edx+0x04]
- jae SHORT G_M28033_IG05
- mov eax, gword ptr [edx+4*esi+0x08]
- ; gcrRegs +[eax]
- mov gword ptr [ebp-0x14], eax
+ mov eax, dword ptr [edx+0x04]
+ cmp esi, eax
+ jae SHORT G_M28033_IG06
+ mov edx, gword ptr [edx+4*esi+0x08]
+ mov gword ptr [ebp-0x18], edx
; GC ptr vars +{V04}
mov edx, ecx
- cmp ebx, dword ptr [ecx+0x04]
- jae SHORT G_M28033_IG05
+ cmp ebx, eax
+ jae SHORT G_M28033_IG06
push gword ptr [ecx+4*ebx+0x08]
mov ecx, edx
mov edx, esi
; gcrRegs -[edx]
call CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[eax ecx]
+ ; gcrRegs -[ecx]
+ ;; size=147 bbWeight=0.50 PerfScore 27.25
+G_M28033_IG04: ; bbWeight=0.50, extend
mov ecx, gword ptr [edi+0x04]
; gcrRegs +[ecx]
- push gword ptr [ebp-0x14]
+ push gword ptr [ebp-0x18]
mov edx, ebx
; GC ptr vars -{V04}
call CORINFO_HELP_ARRADDR_ST
; gcrRegs -[ecx]
; byrRegs -[edi]
- ;; size=145 bbWeight=0.50 PerfScore 33.00
-G_M28033_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
+G_M28033_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -128,11 +141,11 @@ G_M28033_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
pop ebp
ret 4
;; size=10 bbWeight=1 PerfScore 4.50
-G_M28033_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M28033_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 185, prolog size 9, PerfScore 44.75, instruction count 67, allocated bytes for code 185 (MethodHash=4064927e) for method System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
+; Total bytes of code 200, prolog size 9, PerfScore 41.12, instruction count 74, allocated bytes for code 200 (MethodHash=4064927e) for method System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
; ============================================================
benchmarks.run_pgo.windows.x86.checked.mch
-18 (-16.67%) : 77849.dasm - Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.InstrumentationState):this (Instrumented Tier0)
@@ -13,30 +13,22 @@
; V05 arg5 [V05 ] ( 1, 1 ) ref -> [ebp+0x08] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.InstrumentationState>
; V06 tmp0 [V06 ] ( 1, 1 ) ref -> [ebp-0x0C] do-not-enreg[] must-init "handle histogram profile tmp"
; V07 tmp1 [V07 ] ( 1, 1 ) ref -> [ebp-0x10] do-not-enreg[] must-init "argument with side effect"
-; V08 tmp2 [V08 ] ( 1, 1 ) ref -> [ebp-0x14] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp3 [V09 ] ( 1, 1 ) ref -> [ebp-0x18] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 24
+; Lcl frame size = 16
G_M29273_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- sub esp, 24
+ sub esp, 16
xor eax, eax
mov dword ptr [ebp-0x0C], eax
mov dword ptr [ebp-0x10], eax
- mov dword ptr [ebp-0x14], eax
- mov dword ptr [ebp-0x18], eax
mov gword ptr [ebp-0x04], ecx
mov gword ptr [ebp-0x08], edx
- ;; size=26 bbWeight=1 PerfScore 7.75
+ ;; size=20 bbWeight=1 PerfScore 5.75
G_M29273_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, gword ptr [ebp-0x04]
+ mov ecx, gword ptr [ebp-0x08]
; gcrRegs +[ecx]
- mov gword ptr [ebp-0x18], ecx
- mov ecx, gword ptr [ebp-0x08]
- mov gword ptr [ebp-0x14], ecx
- mov ecx, gword ptr [ebp-0x08]
mov gword ptr [ebp-0x0C], ecx
mov ecx, gword ptr [ebp-0x0C]
mov edx, 0xD1FFAB1E
@@ -58,19 +50,19 @@ G_M29273_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push gword ptr [ebp+0x10]
push gword ptr [ebp+0x0C]
push gword ptr [ebp+0x08]
- mov edx, gword ptr [ebp-0x14]
+ mov edx, gword ptr [ebp-0x08]
; gcrRegs +[edx]
- mov ecx, gword ptr [ebp-0x18]
+ mov ecx, gword ptr [ebp-0x04]
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[eax ecx edx]
- ;; size=76 bbWeight=1 PerfScore 29.25
+ ;; size=64 bbWeight=1 PerfScore 25.25
G_M29273_IG03: ; bbWeight=1, epilog, nogc, extend
mov esp, ebp
pop ebp
ret 16
;; size=6 bbWeight=1 PerfScore 2.75
-; Total bytes of code 108, prolog size 20, PerfScore 39.75, instruction count 37, allocated bytes for code 108 (MethodHash=65478da6) for method Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.InstrumentationState):this (Instrumented Tier0)
+; Total bytes of code 90, prolog size 14, PerfScore 33.75, instruction count 31, allocated bytes for code 90 (MethodHash=65478da6) for method Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.InstrumentationState):this (Instrumented Tier0)
; ============================================================
-20 (-14.93%) : 50.dasm - System.Buffer:Memmoveushort (Instrumented Tier0)
@@ -10,34 +10,23 @@
; V02 arg2 [V02 ] ( 1, 1 ) int -> [ebp+0x08] do-not-enreg[]
; V03 tmp0 [V03 ] ( 1, 1 ) int -> [ebp-0x0C] do-not-enreg[] "length histogram profile tmp"
; V04 tmp1 [V04 ] ( 1, 1 ) int -> [ebp-0x10] do-not-enreg[] "argument with side effect"
-; V05 tmp2 [V05 ] ( 1, 1 ) byref -> [ebp-0x14] do-not-enreg[] must-init "argument with side effect"
-; V06 tmp3 [V06 ] ( 1, 1 ) byref -> [ebp-0x18] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 24
+; Lcl frame size = 16
G_M13625_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- sub esp, 24
- xor eax, eax
- mov dword ptr [ebp-0x14], eax
- mov dword ptr [ebp-0x18], eax
+ sub esp, 16
mov bword ptr [ebp-0x04], ecx
mov bword ptr [ebp-0x08], edx
- ;; size=20 bbWeight=1 PerfScore 5.75
+ ;; size=12 bbWeight=1 PerfScore 3.50
G_M13625_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
call [<unknown method>]
test eax, eax
jne SHORT G_M13625_IG04
mov ecx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
- mov ecx, bword ptr [ebp-0x04]
- ; byrRegs +[ecx]
- mov bword ptr [ebp-0x18], ecx
- mov ecx, bword ptr [ebp-0x08]
- mov bword ptr [ebp-0x14], ecx
mov ecx, dword ptr [ebp+0x08]
- ; byrRegs -[ecx]
add ecx, ecx
mov dword ptr [ebp-0x0C], ecx
mov ecx, dword ptr [ebp-0x0C]
@@ -46,13 +35,13 @@ G_M13625_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov edx, 0xD1FFAB1E
call CORINFO_HELP_VALUEPROFILE32
push dword ptr [ebp-0x0C]
- mov edx, bword ptr [ebp-0x14]
+ mov edx, bword ptr [ebp-0x08]
; byrRegs +[edx]
- mov ecx, bword ptr [ebp-0x18]
+ mov ecx, bword ptr [ebp-0x04]
; byrRegs +[ecx]
call [<unknown method>]
; byrRegs -[ecx edx]
- ;; size=74 bbWeight=1 PerfScore 22.00
+ ;; size=62 bbWeight=1 PerfScore 18.00
G_M13625_IG03: ; bbWeight=1, epilog, nogc, extend
mov esp, ebp
pop ebp
@@ -77,6 +66,6 @@ G_M13625_IG05: ; bbWeight=1, epilog, nogc, extend
ret 4
;; size=6 bbWeight=1 PerfScore 2.75
-; Total bytes of code 134, prolog size 14, PerfScore 41.75, instruction count 43, allocated bytes for code 134 (MethodHash=19ebcac6) for method System.Buffer:Memmove[ushort](byref,byref,uint) (Instrumented Tier0)
+; Total bytes of code 114, prolog size 6, PerfScore 35.50, instruction count 36, allocated bytes for code 114 (MethodHash=19ebcac6) for method System.Buffer:Memmove[ushort](byref,byref,uint) (Instrumented Tier0)
; ============================================================
-11 (-14.29%) : 28474.dasm - Benchstone.MDBenchI.MDAddArray2:.ctor():this (Tier0)
@@ -7,35 +7,28 @@
;
; V00 this [V00 ] ( 1, 1 ) ref -> [ebp-0x04] do-not-enreg[] this class-hnd <Benchstone.MDBenchI.MDAddArray2>
; V01 tmp0 [V01 ] ( 1, 1 ) struct ( 8) [ebp-0x0C] do-not-enreg[XSF] addr-exposed "NewObjArrayArgs"
-; TEMP_01 byref -> [ebp-0x10]
;
-; Lcl frame size = 16
+; Lcl frame size = 12
G_M41305_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- sub esp, 16
- xor eax, eax
- mov dword ptr [ebp-0x10], eax
+ sub esp, 12
mov gword ptr [ebp-0x04], ecx
- ;; size=14 bbWeight=1 PerfScore 3.75
+ ;; size=9 bbWeight=1 PerfScore 2.50
G_M41305_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, gword ptr [ebp-0x04]
- ; gcrRegs +[ecx]
- lea edx, bword ptr [ecx+0x04]
- ; byrRegs +[edx]
- mov bword ptr [ebp-0x10], edx
mov dword ptr [ebp-0x0C], 201
mov dword ptr [ebp-0x08], 201
lea ecx, [ebp-0x0C]
- ; gcrRegs -[ecx]
push ecx
mov ecx, 0xD1FFAB1E ; <unknown class>
mov edx, 2
- ; byrRegs -[edx]
call CORINFO_HELP_NEW_MDARR
; gcrRegs +[eax]
- mov edx, bword ptr [ebp-0x10]
+ mov edx, gword ptr [ebp-0x04]
+ ; gcrRegs +[edx]
+ lea edx, bword ptr [edx+0x04]
+ ; gcrRegs -[edx]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax]
@@ -44,13 +37,13 @@ G_M41305_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx]
- ;; size=59 bbWeight=1 PerfScore 13.50
+ ;; size=53 bbWeight=1 PerfScore 11.50
G_M41305_IG03: ; bbWeight=1, epilog, nogc, extend
mov esp, ebp
pop ebp
ret
;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 77, prolog size 11, PerfScore 19.00, instruction count 23, allocated bytes for code 77 (MethodHash=b8d25ea6) for method Benchstone.MDBenchI.MDAddArray2:.ctor():this (Tier0)
+; Total bytes of code 66, prolog size 6, PerfScore 15.75, instruction count 19, allocated bytes for code 66 (MethodHash=b8d25ea6) for method Benchstone.MDBenchI.MDAddArray2:.ctor():this (Tier0)
; ============================================================
+5 (+2.79%) : 6997.dasm - System.IO.Compression.ZLibNative+ZLibStreamHandle:EnsureState(int):this (Instrumented Tier0)
@@ -14,19 +14,22 @@
; V06 tmp4 [V06 ] ( 1, 1 ) ref -> [ebp-0x1C] do-not-enreg[] must-init "argument with side effect"
; V07 tmp5 [V07 ] ( 1, 1 ) ref -> [ebp-0x20] do-not-enreg[] must-init "argument with side effect"
; V08 tmp6 [V08 ] ( 1, 1 ) ref -> [ebp-0x24] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp7 [V09 ] ( 1, 1 ) ref -> [ebp-0x28] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 40
+; Lcl frame size = 36
G_M20604_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- sub esp, 40
+ sub esp, 36
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [ebp-0x28], ymm4
+ vmovdqu xmmword ptr [ebp-0x24], xmm4
+ xor eax, eax
+ mov dword ptr [ebp-0x14], eax
+ mov dword ptr [ebp-0x10], eax
+ mov dword ptr [ebp-0x0C], eax
mov gword ptr [ebp-0x04], ecx
mov dword ptr [ebp-0x08], edx
- ;; size=21 bbWeight=1 PerfScore 5.83
+ ;; size=32 bbWeight=1 PerfScore 9.08
G_M20604_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [ebp-0x04]
; gcrRegs +[ecx]
@@ -50,11 +53,7 @@ G_M20604_IG03: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
mov gword ptr [ebp-0x10], eax
- mov ecx, gword ptr [ebp-0x10]
- ; gcrRegs +[ecx]
- mov gword ptr [ebp-0x28], ecx
mov ecx, 0xBF9
- ; gcrRegs -[ecx]
mov edx, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov gword ptr [ebp-0x1C], eax
@@ -86,7 +85,7 @@ G_M20604_IG03: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov gword ptr [ebp-0x24], eax
mov edx, gword ptr [ebp-0x24]
; gcrRegs +[edx]
- mov ecx, gword ptr [ebp-0x28]
+ mov ecx, gword ptr [ebp-0x10]
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[eax ecx edx]
@@ -94,13 +93,13 @@ G_M20604_IG03: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs +[ecx]
call CORINFO_HELP_THROW
; gcrRegs -[ecx]
- ;; size=136 bbWeight=0 PerfScore 0.00
+ ;; size=130 bbWeight=0 PerfScore 0.00
G_M20604_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
mov esp, ebp
pop ebp
ret
;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 179, prolog size 15, PerfScore 14.58, instruction count 51, allocated bytes for code 179 (MethodHash=e494af83) for method System.IO.Compression.ZLibNative+ZLibStreamHandle:EnsureState(int):this (Instrumented Tier0)
+; Total bytes of code 184, prolog size 26, PerfScore 17.83, instruction count 53, allocated bytes for code 184 (MethodHash=e494af83) for method System.IO.Compression.ZLibNative+ZLibStreamHandle:EnsureState(int):this (Instrumented Tier0)
; ============================================================
+5 (+2.92%) : 81467.dasm - System.Security.Cryptography.HashAlgorithm:CaptureHashCodeAndReinitialize():ubyte[]:this (Instrumented Tier0)
@@ -13,29 +13,27 @@
; V05 tmp3 [V05 ] ( 1, 1 ) ref -> [ebp-0x18] do-not-enreg[] must-init "argument with side effect"
; V06 tmp4 [V06 ] ( 1, 1 ) ref -> [ebp-0x1C] do-not-enreg[] must-init "argument with side effect"
; V07 tmp5 [V07 ] ( 1, 1 ) ref -> [ebp-0x20] do-not-enreg[] must-init "argument with side effect"
-; TEMP_01 byref -> [ebp-0x24]
;
-; Lcl frame size = 36
+; Lcl frame size = 32
G_M5479_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- sub esp, 36
+ sub esp, 32
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [ebp-0x24], ymm4
+ vmovdqu xmmword ptr [ebp-0x20], xmm4
+ xor eax, eax
+ mov dword ptr [ebp-0x10], eax
+ mov dword ptr [ebp-0x0C], eax
+ mov dword ptr [ebp-0x08], eax
mov gword ptr [ebp-0x04], ecx
- ;; size=18 bbWeight=1 PerfScore 4.83
+ ;; size=29 bbWeight=1 PerfScore 8.08
G_M5479_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [ebp-0x04]
; gcrRegs +[ecx]
- lea edx, bword ptr [ecx+0x04]
- ; byrRegs +[edx]
- mov bword ptr [ebp-0x24], edx
- mov ecx, gword ptr [ebp-0x04]
mov gword ptr [ebp-0x0C], ecx
mov ecx, gword ptr [ebp-0x0C]
mov edx, 0xD1FFAB1E
- ; byrRegs -[edx]
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[ecx]
mov ecx, gword ptr [ebp-0x0C]
@@ -49,7 +47,10 @@ G_M5479_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
mov eax, dword ptr [eax+0x30]
call [eax+0x1C]<unknown method>
; gcrRegs -[ecx] +[eax]
- mov edx, bword ptr [ebp-0x24]
+ mov edx, gword ptr [ebp-0x04]
+ ; gcrRegs +[edx]
+ lea edx, bword ptr [edx+0x04]
+ ; gcrRegs -[edx]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax]
@@ -94,13 +95,13 @@ G_M5479_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
; gcrRegs -[ecx]
mov eax, gword ptr [ebp-0x08]
; gcrRegs +[eax]
- ;; size=149 bbWeight=1 PerfScore 53.50
+ ;; size=143 bbWeight=1 PerfScore 51.50
G_M5479_IG03: ; bbWeight=1, epilog, nogc, extend
mov esp, ebp
pop ebp
ret
;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 171, prolog size 15, PerfScore 60.08, instruction count 53, allocated bytes for code 171 (MethodHash=97b2ea98) for method System.Security.Cryptography.HashAlgorithm:CaptureHashCodeAndReinitialize():ubyte[]:this (Instrumented Tier0)
+; Total bytes of code 176, prolog size 26, PerfScore 61.33, instruction count 55, allocated bytes for code 176 (MethodHash=97b2ea98) for method System.Security.Cryptography.HashAlgorithm:CaptureHashCodeAndReinitialize():ubyte[]:this (Instrumented Tier0)
; ============================================================
+5 (+3.07%) : 33839.dasm - System.Xml.Serialization.CodeGenerator:get_ReturnLocal():System.Reflection.Emit.LocalBuilder:this (Instrumented Tier0)
@@ -13,18 +13,21 @@
; V05 tmp3 [V05 ] ( 1, 1 ) ref -> [ebp-0x18] do-not-enreg[] must-init "handle histogram profile tmp"
; V06 tmp4 [V06 ] ( 1, 1 ) ref -> [ebp-0x1C] do-not-enreg[] must-init "argument with side effect"
; V07 tmp5 [V07 ] ( 1, 1 ) ref -> [ebp-0x20] do-not-enreg[] must-init "argument with side effect"
-; V08 tmp6 [V08 ] ( 1, 1 ) ref -> [ebp-0x24] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 36
+; Lcl frame size = 32
G_M16990_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- sub esp, 36
+ sub esp, 32
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [ebp-0x24], ymm4
+ vmovdqu xmmword ptr [ebp-0x20], xmm4
+ xor eax, eax
+ mov dword ptr [ebp-0x10], eax
+ mov dword ptr [ebp-0x0C], eax
+ mov dword ptr [ebp-0x08], eax
mov gword ptr [ebp-0x04], ecx
- ;; size=18 bbWeight=1 PerfScore 4.83
+ ;; size=29 bbWeight=1 PerfScore 8.08
G_M16990_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [ebp-0x04]
; gcrRegs +[ecx]
@@ -39,8 +42,6 @@ G_M16990_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
call CORINFO_HELP_COUNTPROFILE32
mov ecx, gword ptr [ebp-0x04]
; gcrRegs +[ecx]
- mov gword ptr [ebp-0x24], ecx
- mov ecx, gword ptr [ebp-0x04]
mov ecx, gword ptr [ecx+0x08]
mov gword ptr [ebp-0x18], ecx
mov ecx, gword ptr [ebp-0x18]
@@ -62,7 +63,7 @@ G_M16990_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push 0xD1FFAB1E
mov edx, gword ptr [ebp-0x20]
; gcrRegs +[edx]
- mov ecx, gword ptr [ebp-0x24]
+ mov ecx, gword ptr [ebp-0x04]
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx edx]
@@ -82,7 +83,7 @@ G_M16990_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov ecx, gword ptr [ebp-0x08]
; gcrRegs +[ecx]
mov gword ptr [ebp-0x10], ecx
- ;; size=128 bbWeight=1 PerfScore 45.00
+ ;; size=122 bbWeight=1 PerfScore 43.00
G_M16990_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
mov ecx, 0xD1FFAB1E
@@ -96,6 +97,6 @@ G_M16990_IG04: ; bbWeight=1, epilog, nogc, extend
ret
;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 163, prolog size 15, PerfScore 53.83, instruction count 50, allocated bytes for code 163 (MethodHash=6f55bda1) for method System.Xml.Serialization.CodeGenerator:get_ReturnLocal():System.Reflection.Emit.LocalBuilder:this (Instrumented Tier0)
+; Total bytes of code 168, prolog size 26, PerfScore 55.08, instruction count 52, allocated bytes for code 168 (MethodHash=6f55bda1) for method System.Xml.Serialization.CodeGenerator:get_ReturnLocal():System.Reflection.Emit.LocalBuilder:this (Instrumented Tier0)
; ============================================================
benchmarks.run_tiered.windows.x86.checked.mch
-11 (-14.29%) : 18249.dasm - Benchstone.MDBenchI.MDAddArray2:.ctor():this (Tier0)
@@ -7,35 +7,28 @@
;
; V00 this [V00 ] ( 1, 1 ) ref -> [ebp-0x04] do-not-enreg[] this class-hnd <Benchstone.MDBenchI.MDAddArray2>
; V01 tmp0 [V01 ] ( 1, 1 ) struct ( 8) [ebp-0x0C] do-not-enreg[XSF] addr-exposed "NewObjArrayArgs"
-; TEMP_01 byref -> [ebp-0x10]
;
-; Lcl frame size = 16
+; Lcl frame size = 12
G_M41305_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- sub esp, 16
- xor eax, eax
- mov dword ptr [ebp-0x10], eax
+ sub esp, 12
mov gword ptr [ebp-0x04], ecx
- ;; size=14 bbWeight=1 PerfScore 3.75
+ ;; size=9 bbWeight=1 PerfScore 2.50
G_M41305_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, gword ptr [ebp-0x04]
- ; gcrRegs +[ecx]
- lea edx, bword ptr [ecx+0x04]
- ; byrRegs +[edx]
- mov bword ptr [ebp-0x10], edx
mov dword ptr [ebp-0x0C], 201
mov dword ptr [ebp-0x08], 201
lea ecx, [ebp-0x0C]
- ; gcrRegs -[ecx]
push ecx
mov ecx, 0xD1FFAB1E ; <unknown class>
mov edx, 2
- ; byrRegs -[edx]
call CORINFO_HELP_NEW_MDARR
; gcrRegs +[eax]
- mov edx, bword ptr [ebp-0x10]
+ mov edx, gword ptr [ebp-0x04]
+ ; gcrRegs +[edx]
+ lea edx, bword ptr [edx+0x04]
+ ; gcrRegs -[edx]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax]
@@ -44,13 +37,13 @@ G_M41305_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx]
- ;; size=59 bbWeight=1 PerfScore 13.50
+ ;; size=53 bbWeight=1 PerfScore 11.50
G_M41305_IG03: ; bbWeight=1, epilog, nogc, extend
mov esp, ebp
pop ebp
ret
;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 77, prolog size 11, PerfScore 19.00, instruction count 23, allocated bytes for code 77 (MethodHash=b8d25ea6) for method Benchstone.MDBenchI.MDAddArray2:.ctor():this (Tier0)
+; Total bytes of code 66, prolog size 6, PerfScore 15.75, instruction count 19, allocated bytes for code 66 (MethodHash=b8d25ea6) for method Benchstone.MDBenchI.MDAddArray2:.ctor():this (Tier0)
; ============================================================
-11 (-14.29%) : 23201.dasm - Benchstone.MDBenchI.MDXposMatrix:.ctor():this (Tier0)
@@ -7,35 +7,28 @@
;
; V00 this [V00 ] ( 1, 1 ) ref -> [ebp-0x04] do-not-enreg[] this class-hnd <Benchstone.MDBenchI.MDXposMatrix>
; V01 tmp0 [V01 ] ( 1, 1 ) struct ( 8) [ebp-0x0C] do-not-enreg[XSF] addr-exposed "NewObjArrayArgs"
-; TEMP_01 byref -> [ebp-0x10]
;
-; Lcl frame size = 16
+; Lcl frame size = 12
G_M52764_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- sub esp, 16
- xor eax, eax
- mov dword ptr [ebp-0x10], eax
+ sub esp, 12
mov gword ptr [ebp-0x04], ecx
- ;; size=14 bbWeight=1 PerfScore 3.75
+ ;; size=9 bbWeight=1 PerfScore 2.50
G_M52764_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, gword ptr [ebp-0x04]
- ; gcrRegs +[ecx]
- lea edx, bword ptr [ecx+0x04]
- ; byrRegs +[edx]
- mov bword ptr [ebp-0x10], edx
mov dword ptr [ebp-0x0C], 101
mov dword ptr [ebp-0x08], 101
lea ecx, [ebp-0x0C]
- ; gcrRegs -[ecx]
push ecx
mov ecx, 0xD1FFAB1E ; <unknown class>
mov edx, 2
- ; byrRegs -[edx]
call CORINFO_HELP_NEW_MDARR
; gcrRegs +[eax]
- mov edx, bword ptr [ebp-0x10]
+ mov edx, gword ptr [ebp-0x04]
+ ; gcrRegs +[edx]
+ lea edx, bword ptr [edx+0x04]
+ ; gcrRegs -[edx]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax]
@@ -44,13 +37,13 @@ G_M52764_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx]
- ;; size=59 bbWeight=1 PerfScore 13.50
+ ;; size=53 bbWeight=1 PerfScore 11.50
G_M52764_IG03: ; bbWeight=1, epilog, nogc, extend
mov esp, ebp
pop ebp
ret
;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 77, prolog size 11, PerfScore 19.00, instruction count 23, allocated bytes for code 77 (MethodHash=136e31e3) for method Benchstone.MDBenchI.MDXposMatrix:.ctor():this (Tier0)
+; Total bytes of code 66, prolog size 6, PerfScore 15.75, instruction count 19, allocated bytes for code 66 (MethodHash=136e31e3) for method Benchstone.MDBenchI.MDXposMatrix:.ctor():this (Tier0)
; ============================================================
-8 (-14.04%) : 17247.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (Tier1)
@@ -9,7 +9,7 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 5, 5 ) ref -> ebx this class-hnd single-def <System.Threading.QueueUserWorkItemCallbackBase>
-; V01 tmp0 [V01,T01] ( 2, 4 ) ubyte -> ecx "Inlining Arg"
+;* V01 tmp0 [V01 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;
; Lcl frame size = 0
@@ -32,11 +32,8 @@ G_M21281_IG02: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
mov ecx, 1
xchg dword ptr [ebx], ecx
test ecx, ecx
- sete cl
- movzx ecx, cl
- test ecx, ecx
- jne SHORT G_M21281_IG04
- ;; size=32 bbWeight=1 PerfScore 29.50
+ je SHORT G_M21281_IG04
+ ;; size=24 bbWeight=1 PerfScore 28.00
G_M21281_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; byrRegs -[ebx]
mov ecx, 0xD1FFAB1E
@@ -52,6 +49,6 @@ G_M21281_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
ret
;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 57, prolog size 4, PerfScore 35.75, instruction count 21, allocated bytes for code 57 (MethodHash=f256acde) for method System.Threading.QueueUserWorkItemCallbackBase:Execute():this (Tier1)
+; Total bytes of code 49, prolog size 4, PerfScore 34.25, instruction count 18, allocated bytes for code 49 (MethodHash=f256acde) for method System.Threading.QueueUserWorkItemCallbackBase:Execute():this (Tier1)
; ============================================================
+36 (+1.47%) : 14038.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (Tier0-FullOpts)
@@ -9,50 +9,50 @@
; Final local variable assignments
;
; V00 this [V00,T01] ( 48, 63 ) ref -> [ebp-0xAC] this class-hnd single-def <System.Reflection.Emit.RuntimeTypeBuilder>
-; V01 loc0 [V01,T36] ( 3, 8.50) ref -> [ebp-0xB0] class-hnd exact spill-single-def <int[]>
-; V02 loc1 [V02,T72] ( 5, 2.50) int -> edi
+; V01 loc0 [V01,T34] ( 3, 8.50) ref -> [ebp-0xB0] class-hnd exact spill-single-def <int[]>
+; V02 loc1 [V02,T70] ( 5, 2.50) int -> edi
; V03 loc2 [V03 ] ( 9, 7.50) ref -> [ebp-0x24] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Reflection.Emit.RuntimeModuleBuilder>
-; V04 loc3 [V04,T59] ( 3, 5 ) int -> [ebp-0x28] spill-single-def
+; V04 loc3 [V04,T57] ( 3, 5 ) int -> [ebp-0x28] spill-single-def
; V05 loc4 [V05 ] ( 4, 2 ) ref -> [ebp-0x2C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.RuntimeType>
; V06 loc5 [V06,T02] ( 9, 32.50) int -> [ebp-0x30]
-; V07 loc6 [V07,T29] ( 8, 11 ) ref -> [ebp-0xB4] class-hnd <int[]>
+; V07 loc6 [V07,T27] ( 8, 11 ) ref -> [ebp-0xB4] class-hnd <int[]>
;* V08 loc7 [V08 ] ( 0, 0 ) int -> zero-ref
; V09 loc8 [V09,T03] ( 9, 32.50) int -> [ebp-0x34]
;* V10 loc9 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Reflection.Emit.RuntimeTypeBuilder+CustAttr]>
;* V11 loc10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Reflection.Emit.RuntimeTypeBuilder+CustAttr>
-; V12 loc11 [V12,T34] ( 4, 9 ) ref -> edi class-hnd exact single-def <<unknown class>>
+; V12 loc11 [V12,T32] ( 4, 9 ) ref -> edi class-hnd exact single-def <<unknown class>>
; V13 loc12 [V13,T15] ( 5, 16.50) int -> [ebp-0x38]
;* V14 loc13 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
; V15 loc14 [V15,T05] ( 7, 24.50) int -> [ebp-0x3C]
; V16 loc15 [V16,T00] ( 30, 64 ) ref -> [ebp-0xB8] class-hnd exact spill-single-def <System.Reflection.Emit.RuntimeMethodBuilder>
-; V17 loc16 [V17,T27] ( 4, 12 ) int -> [ebp-0x40] spill-single-def
-; V18 loc17 [V18,T51] ( 3, 6 ) ref -> [ebp-0xBC] class-hnd spill-single-def <ubyte[]>
+; V17 loc16 [V17,T25] ( 4, 12 ) int -> [ebp-0x40] spill-single-def
+; V18 loc17 [V18,T49] ( 3, 6 ) ref -> [ebp-0xBC] class-hnd spill-single-def <ubyte[]>
; V19 loc18 [V19 ] ( 2, 4 ) int -> [ebp-0x44] do-not-enreg[X] addr-exposed ld-addr-op
; V20 loc19 [V20,T14] ( 11, 22 ) ref -> [ebp-0xC0] class-hnd <ubyte[]>
;* V21 loc20 [V21 ] ( 0, 0 ) int -> zero-ref
-; V22 loc21 [V22,T31] ( 5, 10 ) ref -> [ebp-0xC4] class-hnd exact spill-single-def <System.Reflection.Emit.ExceptionHandler[]>
-; V23 loc22 [V23,T32] ( 5, 10 ) ref -> edi class-hnd <int[]>
-; V24 tmp0 [V24,T17] ( 2, 16 ) ref -> ecx class-hnd exact "impAppendStmt" <System.Reflection.Emit.RuntimeModuleBuilder>
-; V25 tmp1 [V25,T23] ( 2, 16 ) int -> eax "Strict ordering of exceptions for Array store"
+; V22 loc21 [V22,T29] ( 5, 10 ) ref -> [ebp-0xC4] class-hnd exact spill-single-def <System.Reflection.Emit.ExceptionHandler[]>
+; V23 loc22 [V23,T30] ( 5, 10 ) ref -> edi class-hnd <int[]>
+; V24 tmp0 [V24,T17] ( 2, 16 ) ref -> [ebp-0xC8] class-hnd exact spill-single-def "impAppendStmt" <System.Reflection.Emit.RuntimeModuleBuilder>
+; V25 tmp1 [V25,T21] ( 2, 16 ) int -> eax "Strict ordering of exceptions for Array store"
;* V26 tmp2 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallModule>
;* V27 tmp3 [V27 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Runtime.CompilerServices.QCallModule>
-; V28 tmp4 [V28,T44] ( 2, 8 ) int -> [ebp-0x48] spill-single-def "impAppendStmt"
+; V28 tmp4 [V28,T42] ( 2, 8 ) int -> [ebp-0x48] spill-single-def "impAppendStmt"
;* V29 tmp5 [V29 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.CompilerServices.QCallModule>
;* V30 tmp6 [V30 ] ( 0, 0 ) int -> zero-ref
-; V31 tmp7 [V31,T62] ( 2, 4 ) int -> [ebp-0x4C] spill-single-def
+; V31 tmp7 [V31,T60] ( 2, 4 ) int -> [ebp-0x4C] spill-single-def
;* V32 tmp8 [V32 ] ( 0, 0 ) ref -> zero-ref
;* V33 tmp9 [V33 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.CompilerServices.QCallModule>
;* V34 tmp10 [V34 ] ( 0, 0 ) int -> zero-ref
;* V35 tmp11 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 tmp12 [V36 ] ( 0, 0 ) ref -> zero-ref
-; V37 tmp13 [V37,T53] ( 3, 6 ) int -> [ebp-0x50]
+; V37 tmp13 [V37,T51] ( 3, 6 ) int -> [ebp-0x50]
;* V38 tmp14 [V38 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.CompilerServices.QCallModule>
;* V39 tmp15 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp16 [V40 ] ( 0, 0 ) int -> zero-ref
;* V41 tmp17 [V41 ] ( 0, 0 ) ref -> zero-ref
;* V42 tmp18 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp19 [V43 ] ( 0, 0 ) ref -> zero-ref
-; V44 tmp20 [V44,T63] ( 2, 4 ) int -> [ebp-0x54] spill-single-def
+; V44 tmp20 [V44,T61] ( 2, 4 ) int -> [ebp-0x54] spill-single-def
;* V45 tmp21 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp22 [V46 ] ( 0, 0 ) ref -> zero-ref
;* V47 tmp23 [V47 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.CompilerServices.QCallModule>
@@ -64,7 +64,7 @@
;* V53 tmp29 [V53 ] ( 0, 0 ) int -> zero-ref
;* V54 tmp30 [V54 ] ( 0, 0 ) int -> zero-ref
;* V55 tmp31 [V55 ] ( 0, 0 ) ref -> zero-ref
-; V56 tmp32 [V56,T54] ( 3, 6 ) int -> [ebp-0x58]
+; V56 tmp32 [V56,T52] ( 3, 6 ) int -> [ebp-0x58]
;* V57 tmp33 [V57 ] ( 0, 0 ) struct ( 8) zero-ref <System.Runtime.CompilerServices.QCallModule>
;* V58 tmp34 [V58 ] ( 0, 0 ) int -> zero-ref
;* V59 tmp35 [V59 ] ( 0, 0 ) int -> zero-ref
@@ -87,26 +87,26 @@
;* V76 tmp52 [V76 ] ( 0, 0 ) ref -> zero-ref
;* V77 tmp53 [V77 ] ( 0, 0 ) int -> zero-ref
;* V78 tmp54 [V78 ] ( 0, 0 ) ref -> zero-ref
-; V79 tmp55 [V79,T55] ( 3, 6 ) int -> [ebp-0x5C]
-; V80 tmp56 [V80,T114] ( 2, 0 ) ref -> esi class-hnd exact "impAppendStmt" <System.String>
-; V81 tmp57 [V81,T111] ( 3, 0 ) ref -> edi class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V79 tmp55 [V79,T53] ( 3, 6 ) int -> [ebp-0x5C]
+; V80 tmp56 [V80,T112] ( 2, 0 ) ref -> esi class-hnd exact "impAppendStmt" <System.String>
+; V81 tmp57 [V81,T109] ( 3, 0 ) ref -> edi class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V82 tmp58 [V82 ] ( 0, 0 ) ref -> zero-ref "CASTCLASS eval op1"
-; V83 tmp59 [V83,T60] ( 3, 5 ) int -> ecx "fgMakeTemp is creating a new local variable"
-; V84 tmp60 [V84,T25] ( 5, 15 ) ref -> eax class-hnd "spilling QMark2" <System.Reflection.Emit.RuntimeILGenerator>
-; V85 tmp61 [V85,T115] ( 2, 0 ) ref -> esi class-hnd exact "impAppendStmt" <System.String>
-; V86 tmp62 [V86,T112] ( 3, 0 ) ref -> edi class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V87 tmp63 [V87,T113] ( 3, 0 ) ref -> esi class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V83 tmp59 [V83,T58] ( 3, 5 ) int -> ecx "fgMakeTemp is creating a new local variable"
+; V84 tmp60 [V84,T23] ( 5, 15 ) ref -> eax class-hnd "spilling QMark2" <System.Reflection.Emit.RuntimeILGenerator>
+; V85 tmp61 [V85,T113] ( 2, 0 ) ref -> esi class-hnd exact "impAppendStmt" <System.String>
+; V86 tmp62 [V86,T110] ( 3, 0 ) ref -> edi class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V87 tmp63 [V87,T111] ( 3, 0 ) ref -> esi class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V88 tmp64 [V88 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallModule>
;* V89 tmp65 [V89 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Runtime.CompilerServices.QCallModule>
-; V90 tmp66 [V90,T83] ( 2, 2 ) int -> ecx "impAppendStmt"
+; V90 tmp66 [V90,T81] ( 2, 2 ) int -> ecx "impAppendStmt"
;* V91 tmp67 [V91 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V92 tmp68 [V92 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallModule>
-; V93 tmp69 [V93,T18] ( 2, 16 ) ref -> ecx class-hnd exact "impAppendStmt" <System.Reflection.Emit.RuntimeModuleBuilder>
-; V94 tmp70 [V94,T24] ( 2, 16 ) int -> eax "Strict ordering of exceptions for Array store"
-; V95 tmp71 [V95,T97] ( 3, 1.50) int -> [ebp-0x60]
+; V93 tmp69 [V93,T18] ( 2, 16 ) ref -> [ebp-0xCC] class-hnd exact spill-single-def "impAppendStmt" <System.Reflection.Emit.RuntimeModuleBuilder>
+; V94 tmp70 [V94,T22] ( 2, 16 ) int -> eax "Strict ordering of exceptions for Array store"
+; V95 tmp71 [V95,T95] ( 3, 1.50) int -> [ebp-0x60]
;* V96 tmp72 [V96 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallModule>
;* V97 tmp73 [V97 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Reflection.Emit.RuntimeModuleBuilder>
-; V98 tmp74 [V98,T67] ( 3, 3 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V98 tmp74 [V98,T65] ( 3, 3 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V99 tmp75 [V99 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
; V100 tmp76 [V100,T07] ( 3, 24 ) ref -> edi class-hnd "Inlining Arg" <<unknown class>>
;* V101 tmp77 [V101 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
@@ -116,45 +116,45 @@
;* V105 tmp81 [V105 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
;* V106 tmp82 [V106 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V107 tmp83 [V107 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.RuntimeMethodBuilder>
-; V108 tmp84 [V108,T68] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeMethodBuilder>
-; V109 tmp85 [V109,T76] ( 2, 2 ) ref -> edi class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
+; V108 tmp84 [V108,T66] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeMethodBuilder>
+; V109 tmp85 [V109,T74] ( 2, 2 ) ref -> edi class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
;* V110 tmp86 [V110 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.RuntimeModule>
;* V111 tmp87 [V111 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V112 tmp88 [V112 ] ( 2, 1 ) byref -> [ebp-0x64] do-not-enreg[P] must-init pinned "Inline stloc first use temp"
;* V113 tmp89 [V113 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V114 tmp90 [V114,T69] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.String>
+; V114 tmp90 [V114,T67] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.String>
; V115 tmp91 [V115 ] ( 2, 1 ) byref -> [ebp-0x68] do-not-enreg[P] must-init pinned "Inline stloc first use temp"
;* V116 tmp92 [V116 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V117 tmp93 [V117 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Runtime.CompilerServices.QCallModule>
-; V118 tmp94 [V118,T84] ( 2, 2 ) int -> [ebp-0x6C] spill-single-def "Inlining Arg"
-; V119 tmp95 [V119,T85] ( 2, 2 ) int -> [ebp-0x70] spill-single-def "Inlining Arg"
-; V120 tmp96 [V120,T101] ( 2, 1 ) int -> edi "Inline stloc first use temp"
-; V121 tmp97 [V121,T88] ( 3, 1.50) byref -> edi "Inline return value spill temp"
-; V122 tmp98 [V122,T74] ( 4, 2 ) byref -> ecx "Inline return value spill temp"
-; V123 tmp99 [V123,T77] ( 2, 2 ) ref -> edi class-hnd single-def "Inlining Arg" <<unknown class>>
+; V118 tmp94 [V118,T82] ( 2, 2 ) int -> [ebp-0x6C] spill-single-def "Inlining Arg"
+; V119 tmp95 [V119,T83] ( 2, 2 ) int -> [ebp-0x70] spill-single-def "Inlining Arg"
+; V120 tmp96 [V120,T99] ( 2, 1 ) int -> edi "Inline stloc first use temp"
+; V121 tmp97 [V121,T86] ( 3, 1.50) byref -> edi "Inline return value spill temp"
+; V122 tmp98 [V122,T72] ( 4, 2 ) byref -> ecx "Inline return value spill temp"
+; V123 tmp99 [V123,T75] ( 2, 2 ) ref -> edi class-hnd single-def "Inlining Arg" <<unknown class>>
;* V124 tmp100 [V124 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Reflection.Emit.RuntimeTypeBuilder+CustAttr]>
-;* V125 tmp101 [V125,T45] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V125 tmp101 [V125,T43] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V126 tmp102 [V126 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V127 tmp103 [V127,T78] ( 2, 2 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
+; V127 tmp103 [V127,T76] ( 2, 2 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
;* V128 tmp104 [V128 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.RuntimeModule>
-; V129 tmp105 [V129,T04] ( 4, 32 ) ref -> [ebp-0xC8] class-hnd exact spill-single-def "Inlining Arg" <System.Reflection.Emit.RuntimeTypeBuilder>
+; V129 tmp105 [V129,T04] ( 4, 32 ) ref -> [ebp-0xD0] class-hnd exact spill-single-def "Inlining Arg" <System.Reflection.Emit.RuntimeTypeBuilder>
;* V130 tmp106 [V130 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Reflection.TypeInfo>
-; V131 tmp107 [V131,T58] ( 2, 6 ) ref -> eax class-hnd "Inline stloc first use temp" <System.Reflection.TypeInfo>
-; V132 tmp108 [V132,T56] ( 2, 4 ) int -> ecx
+; V131 tmp107 [V131,T56] ( 2, 6 ) ref -> eax class-hnd "Inline stloc first use temp" <System.Reflection.TypeInfo>
+; V132 tmp108 [V132,T54] ( 2, 4 ) int -> ecx
;* V133 tmp109 [V133 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V134 tmp110 [V134 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V135 tmp111 [V135 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
; V136 tmp112 [V136,T09] ( 3, 24 ) ref -> ecx class-hnd "Inlining Arg" <<unknown class>>
;* V137 tmp113 [V137 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Reflection.Emit.ILGenerator>
-; V138 tmp114 [V138,T41] ( 2, 8 ) ref -> edx class-hnd "dup spill" <System.Reflection.Emit.RuntimeILGenerator>
-; V139 tmp115 [V139,T35] ( 5, 8.50) ref -> edx
-; V140 tmp116 [V140,T16] ( 4, 16 ) ref -> [ebp-0xCC] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.RuntimeILGenerator>
+; V138 tmp114 [V138,T39] ( 2, 8 ) ref -> edx class-hnd "dup spill" <System.Reflection.Emit.RuntimeILGenerator>
+; V139 tmp115 [V139,T33] ( 5, 8.50) ref -> edx
+; V140 tmp116 [V140,T16] ( 4, 16 ) ref -> [ebp-0xD4] class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.RuntimeILGenerator>
;* V141 tmp117 [V141 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.RuntimeILGenerator>
-; V142 tmp118 [V142,T57] ( 3, 6 ) int -> [ebp-0x74] "Inline return value spill temp"
-; V143 tmp119 [V143,T42] ( 2, 8 ) ref -> esi class-hnd exact "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
+; V142 tmp118 [V142,T55] ( 3, 6 ) int -> [ebp-0x74] "Inline return value spill temp"
+; V143 tmp119 [V143,T40] ( 2, 8 ) ref -> esi class-hnd exact "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
;* V144 tmp120 [V144 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.RuntimeModule>
;* V145 tmp121 [V145 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V146 tmp122 [V146,T64] ( 2, 4 ) int -> [ebp-0x78] spill-single-def "Inline stloc first use temp"
+; V146 tmp122 [V146,T62] ( 2, 4 ) int -> [ebp-0x78] spill-single-def "Inline stloc first use temp"
; V147 tmp123 [V147 ] ( 2, 4 ) byref -> [ebp-0x7C] do-not-enreg[P] must-init pinned "Inline stloc first use temp"
;* V148 tmp124 [V148 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V149 tmp125 [V149 ] ( 2, 4 ) byref -> [ebp-0x80] do-not-enreg[P] must-init pinned "Inline stloc first use temp"
@@ -163,29 +163,29 @@
;* V152 tmp128 [V152 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V153 tmp129 [V153 ] ( 2, 4 ) byref -> [ebp-0x88] do-not-enreg[P] must-init pinned "Inline stloc first use temp"
;* V154 tmp130 [V154 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V155 tmp131 [V155,T37] ( 4, 8 ) byref -> edi "Inline return value spill temp"
-; V156 tmp132 [V156,T38] ( 4, 8 ) byref -> edx "Inline return value spill temp"
-; V157 tmp133 [V157,T39] ( 4, 8 ) byref -> esi "Inline return value spill temp"
-; V158 tmp134 [V158,T40] ( 4, 8 ) byref -> ecx "Inline return value spill temp"
+; V155 tmp131 [V155,T35] ( 4, 8 ) byref -> edi "Inline return value spill temp"
+; V156 tmp132 [V156,T36] ( 4, 8 ) byref -> edx "Inline return value spill temp"
+; V157 tmp133 [V157,T37] ( 4, 8 ) byref -> esi "Inline return value spill temp"
+; V158 tmp134 [V158,T38] ( 4, 8 ) byref -> ecx "Inline return value spill temp"
;* V159 tmp135 [V159 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
-; V160 tmp136 [V160,T79] ( 2, 2 ) ref -> edx class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
+; V160 tmp136 [V160,T77] ( 2, 2 ) ref -> edx class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
;* V161 tmp137 [V161 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.RuntimeModule>
;* V162 tmp138 [V162 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V163 tmp139 [V163 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V164 tmp140 [V164,T70] ( 3, 3 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <System.RuntimeType>
-; V165 tmp141 [V165,T89] ( 3, 1.50) ref -> edi class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-; V166 tmp142 [V166,T71] ( 5, 2.50) ref -> edi class-hnd single-def "Inline stloc first use temp" <System.Object>
-; V167 tmp143 [V167,T80] ( 2, 2 ) ref -> ecx class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+; V164 tmp140 [V164,T68] ( 3, 3 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <System.RuntimeType>
+; V165 tmp141 [V165,T87] ( 3, 1.50) ref -> edi class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+; V166 tmp142 [V166,T69] ( 5, 2.50) ref -> edi class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V167 tmp143 [V167,T78] ( 2, 2 ) ref -> ecx class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
;* V168 tmp144 [V168 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
-; V169 tmp145 [V169,T50] ( 5, 13 ) ref -> eax "Single return block return value"
-; V170 FramesRoot [V170,T30] ( 11, 10 ) int -> [ebp-0x8C] spill-single-def "Pinvoke FrameListRoot"
-; V171 PInvokeFrame[V171 ] ( 20, 18 ) struct (32) [ebp-0xEC] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V172 tmp148 [V172,T26] ( 4, 12.50) ref -> edi single-def "field V10._list (fldOffset=0x0)" P-INDEP
-; V173 tmp149 [V173,T33] ( 2, 6 ) ref -> ecx "field V10._current (fldOffset=0x4)" P-INDEP
+; V169 tmp145 [V169,T48] ( 5, 13 ) ref -> eax "Single return block return value"
+; V170 FramesRoot [V170,T28] ( 11, 10 ) int -> [ebp-0x8C] spill-single-def "Pinvoke FrameListRoot"
+; V171 PInvokeFrame[V171 ] ( 20, 18 ) struct (32) [ebp-0xF4] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V172 tmp148 [V172,T24] ( 4, 12.50) ref -> edi single-def "field V10._list (fldOffset=0x0)" P-INDEP
+; V173 tmp149 [V173,T31] ( 2, 6 ) ref -> ecx "field V10._current (fldOffset=0x4)" P-INDEP
; V174 tmp150 [V174,T06] ( 6, 20.50) int -> [ebp-0x90] "field V10._index (fldOffset=0x8)" P-INDEP
-; V175 tmp151 [V175,T61] ( 2, 4.50) int -> [ebp-0x94] spill-single-def "field V10._version (fldOffset=0xc)" P-INDEP
-; V176 tmp152 [V176,T65] ( 2, 4 ) int -> [ebp-0x98] spill-single-def "field V26._ptr (fldOffset=0x0)" P-INDEP
-; V177 tmp153 [V177,T66] ( 2, 4 ) int -> [ebp-0x9C] spill-single-def "field V26._module (fldOffset=0x4)" P-INDEP
+; V175 tmp151 [V175,T59] ( 2, 4.50) int -> [ebp-0x94] spill-single-def "field V10._version (fldOffset=0xc)" P-INDEP
+; V176 tmp152 [V176,T63] ( 2, 4 ) int -> [ebp-0x98] spill-single-def "field V26._ptr (fldOffset=0x0)" P-INDEP
+; V177 tmp153 [V177,T64] ( 2, 4 ) int -> [ebp-0x9C] spill-single-def "field V26._module (fldOffset=0x4)" P-INDEP
;* V178 tmp154 [V178 ] ( 0, 0 ) int -> zero-ref "field V27._ptr (fldOffset=0x0)" P-INDEP
;* V179 tmp155 [V179 ] ( 0, 0 ) int -> zero-ref "field V27._module (fldOffset=0x4)" P-INDEP
;* V180 tmp156 [V180 ] ( 0, 0 ) int -> zero-ref "field V29._ptr (fldOffset=0x0)" P-INDEP
@@ -200,58 +200,56 @@
;* V189 tmp165 [V189 ] ( 0, 0 ) int -> zero-ref "field V57._module (fldOffset=0x4)" P-INDEP
;* V190 tmp166 [V190 ] ( 0, 0 ) int -> zero-ref "field V68._ptr (fldOffset=0x0)" P-INDEP
;* V191 tmp167 [V191 ] ( 0, 0 ) int -> zero-ref "field V68._module (fldOffset=0x4)" P-INDEP
-; V192 tmp168 [V192,T102] ( 2, 1 ) int -> eax "field V88._ptr (fldOffset=0x0)" P-INDEP
-; V193 tmp169 [V193,T103] ( 2, 1 ) int -> edx "field V88._module (fldOffset=0x4)" P-INDEP
+; V192 tmp168 [V192,T100] ( 2, 1 ) int -> eax "field V88._ptr (fldOffset=0x0)" P-INDEP
+; V193 tmp169 [V193,T101] ( 2, 1 ) int -> edx "field V88._module (fldOffset=0x4)" P-INDEP
;* V194 tmp170 [V194 ] ( 0, 0 ) int -> zero-ref "field V89._ptr (fldOffset=0x0)" P-INDEP
;* V195 tmp171 [V195 ] ( 0, 0 ) int -> zero-ref "field V89._module (fldOffset=0x4)" P-INDEP
;* V196 tmp172 [V196 ] ( 0, 0 ) int -> zero-ref "field V91._ptr (fldOffset=0x0)" P-INDEP
-; V197 tmp173 [V197,T104] ( 2, 1 ) int -> edx "field V92._ptr (fldOffset=0x0)" P-INDEP
-; V198 tmp174 [V198,T105] ( 2, 1 ) int -> ecx "field V92._module (fldOffset=0x4)" P-INDEP
-; V199 tmp175 [V199,T106] ( 2, 1 ) int -> [ebp-0xA0] spill-single-def "field V96._ptr (fldOffset=0x0)" P-INDEP
-; V200 tmp176 [V200,T107] ( 2, 1 ) int -> [ebp-0xA4] spill-single-def "field V96._module (fldOffset=0x4)" P-INDEP
+; V197 tmp173 [V197,T102] ( 2, 1 ) int -> edx "field V92._ptr (fldOffset=0x0)" P-INDEP
+; V198 tmp174 [V198,T103] ( 2, 1 ) int -> ecx "field V92._module (fldOffset=0x4)" P-INDEP
+; V199 tmp175 [V199,T104] ( 2, 1 ) int -> [ebp-0xA0] spill-single-def "field V96._ptr (fldOffset=0x0)" P-INDEP
+; V200 tmp176 [V200,T105] ( 2, 1 ) int -> [ebp-0xA4] spill-single-def "field V96._module (fldOffset=0x4)" P-INDEP
;* V201 tmp177 [V201 ] ( 0, 0 ) int -> zero-ref "field V117._ptr (fldOffset=0x0)" P-INDEP
;* V202 tmp178 [V202 ] ( 0, 0 ) int -> zero-ref "field V117._module (fldOffset=0x4)" P-INDEP
-; V203 tmp179 [V203,T90] ( 3, 1.50) ref -> edi single-def "field V124._list (fldOffset=0x0)" P-INDEP
...
+6 (+1.95%) : 17827.dasm - System.Text.Json.Reflection.ReflectionExtensions:IsInSubtypeRelationshipWith(System.Type,System.Type):ubyte (Tier1)
@@ -9,25 +9,24 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 13, 7.50) ref -> esi class-hnd single-def <System.Type>
-; V01 arg1 [V01,T01] ( 12, 8 ) ref -> edi class-hnd single-def <System.Type>
+; V01 arg1 [V01,T01] ( 10, 7 ) ref -> edi class-hnd single-def <System.Type>
; V02 tmp0 [V02,T05] ( 3, 2 ) ubyte -> eax "Inline return value spill temp"
; V03 tmp1 [V03,T12] ( 2, 1 ) ubyte -> eax "Inline return value spill temp"
; V04 tmp2 [V04,T13] ( 3, 1.50) ubyte -> eax "Inline return value spill temp"
; V05 tmp3 [V05,T14] ( 2, 1 ) ubyte -> eax "Inline return value spill temp"
-; V06 tmp4 [V06,T06] ( 2, 2 ) ref -> [ebp-0x10] spill-single-def "argument with side effect"
+; V06 tmp4 [V06,T06] ( 2, 2 ) ref -> [ebp-0x18] spill-single-def "argument with side effect"
; V07 tmp5 [V07,T07] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-; V08 tmp6 [V08,T02] ( 3, 3 ) ref -> eax single-def "arr expr"
+; V08 tmp6 [V08,T03] ( 3, 3 ) ref -> eax single-def "arr expr"
; V09 tmp7 [V09,T08] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-;* V10 tmp8 [V10,T17] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V11 tmp9 [V11,T09] ( 2, 2 ) ref -> [ebp-0x14] spill-single-def "argument with side effect"
-; V12 tmp10 [V12,T10] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-; V13 tmp11 [V13,T03] ( 3, 3 ) ref -> eax single-def "arr expr"
-; V14 tmp12 [V14,T11] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-; V15 tmp13 [V15,T04] ( 3, 3 ) ref -> edi single-def "argument with side effect"
-; V16 cse0 [V16,T15] ( 3, 1.50) int -> ebx "CSE - conservative"
-; V17 cse1 [V17,T16] ( 3, 1.50) int -> ebx "CSE - conservative"
+; V10 tmp8 [V10,T09] ( 2, 2 ) ref -> [ebp-0x1C] spill-single-def "argument with side effect"
+; V11 tmp9 [V11,T10] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V12 tmp10 [V12,T04] ( 3, 3 ) ref -> eax single-def "arr expr"
+; V13 tmp11 [V13,T11] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V14 cse0 [V14,T15] ( 3, 1.50) int -> [ebp-0x10] spill-single-def "CSE - moderate"
+; V15 cse1 [V15,T16] ( 3, 1.50) int -> [ebp-0x14] spill-single-def "CSE - moderate"
+; V16 cse2 [V16,T02] ( 5, 3.50) int -> ebx "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M38117_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -35,7 +34,7 @@ G_M38117_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 8
+ sub esp, 16
mov esi, ecx
; gcrRegs +[esi]
mov edi, edx
@@ -44,8 +43,8 @@ G_M38117_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
G_M38117_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, edi
; gcrRegs +[ecx]
- mov eax, dword ptr [edi]
- mov eax, dword ptr [eax+0x3C]
+ mov ebx, dword ptr [edi]
+ mov eax, dword ptr [ebx+0x3C]
call [eax+0x04]<unknown method>
; gcrRegs -[ecx]
test eax, eax
@@ -54,15 +53,15 @@ G_M38117_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
G_M38117_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, edi
; gcrRegs +[ecx]
- mov eax, dword ptr [edi]
- mov ebx, dword ptr [eax+0x40]
- call [ebx+0x0C]<unknown method>
+ mov eax, dword ptr [ebx+0x40]
+ mov dword ptr [ebp-0x10], eax
+ call [eax+0x0C]<unknown method>
; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x10], eax
+ mov gword ptr [ebp-0x18], eax
; GC ptr vars +{V06}
test byte ptr [D1FFAB1EH], 1 ; global ptr
je G_M38117_IG14
- ;; size=26 bbWeight=0.50 PerfScore 6.12
+ ;; size=27 bbWeight=0.50 PerfScore 5.62
G_M38117_IG04: ; bbWeight=0.50, gcVars=00000040 {V06}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
mov edx, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[edx]
@@ -82,7 +81,8 @@ G_M38117_IG04: ; bbWeight=0.50, gcVars=00000040 {V06}, gcrefRegs=000000C1
je SHORT G_M38117_IG05
mov ecx, edi
; gcrRegs +[ecx]
- call [ebx+0x14]<unknown method>
+ mov eax, dword ptr [ebp-0x10]
+ call [eax+0x14]<unknown method>
; gcrRegs -[ecx] +[eax]
cmp dword ptr [eax+0x04], 0
jbe G_M38117_IG13
@@ -96,7 +96,7 @@ G_M38117_IG04: ; bbWeight=0.50, gcVars=00000040 {V06}, gcrefRegs=000000C1
call [eax+0x10]<unknown method>
; gcrRegs -[ecx edx]
jmp SHORT G_M38117_IG06
- ;; size=62 bbWeight=0.50 PerfScore 16.25
+ ;; size=65 bbWeight=0.50 PerfScore 16.75
G_M38117_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, esi
; gcrRegs +[ecx]
@@ -123,20 +123,21 @@ G_M38117_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
mov ecx, esi
; gcrRegs +[ecx]
mov eax, dword ptr [esi]
- mov ebx, dword ptr [eax+0x40]
- call [ebx+0x0C]<unknown method>
+ mov eax, dword ptr [eax+0x40]
+ mov dword ptr [ebp-0x14], eax
+ call [eax+0x0C]<unknown method>
; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x14], eax
- ; GC ptr vars +{V11}
+ mov gword ptr [ebp-0x1C], eax
+ ; GC ptr vars +{V10}
test byte ptr [D1FFAB1EH], 1 ; global ptr
je SHORT G_M38117_IG15
- ;; size=36 bbWeight=0.50 PerfScore 10.38
-G_M38117_IG08: ; bbWeight=0.50, gcVars=00000200 {V11}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=39 bbWeight=0.50 PerfScore 10.88
+G_M38117_IG08: ; bbWeight=0.50, gcVars=00000200 {V10}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
mov edx, gword ptr [D1FFAB1EH] ; static handle
; gcrRegs +[edx]
mov ecx, eax
; gcrRegs +[ecx]
- ; GC ptr vars -{V11}
+ ; GC ptr vars -{V10}
call [System.Type:op_Equality(System.Type,System.Type):ubyte]
; gcrRegs -[eax ecx edx]
test eax, eax
@@ -149,32 +150,32 @@ G_M38117_IG08: ; bbWeight=0.50, gcVars=00000200 {V11}, gcrefRegs=000000C1
je SHORT G_M38117_IG09
mov ecx, esi
; gcrRegs +[ecx]
- call [ebx+0x14]<unknown method>
- ; gcrRegs -[ecx esi] +[eax]
+ mov esi, dword ptr [ebp-0x14]
+ ; gcrRegs -[esi]
+ call [esi+0x14]<unknown method>
+ ; gcrRegs -[ecx] +[eax]
cmp dword ptr [eax+0x04], 0
jbe SHORT G_M38117_IG13
mov edx, gword ptr [eax+0x08]
; gcrRegs +[edx]
mov ecx, edi
; gcrRegs +[ecx]
- mov eax, dword ptr [edi]
+ mov eax, dword ptr [ebx+0x64]
; gcrRegs -[eax]
- mov eax, dword ptr [eax+0x64]
call [eax+0x10]<unknown method>
; gcrRegs -[ecx edx edi]
jmp SHORT G_M38117_IG10
- ;; size=56 bbWeight=0.50 PerfScore 14.75
+ ;; size=57 bbWeight=0.50 PerfScore 14.25
G_M38117_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi edi]
mov ecx, edi
; gcrRegs +[ecx]
mov edx, esi
; gcrRegs +[edx]
- mov eax, dword ptr [edi]
- mov eax, dword ptr [eax+0x64]
+ mov eax, dword ptr [ebx+0x64]
call [eax+0x10]<unknown method>
; gcrRegs -[ecx edx esi edi]
- ;; size=12 bbWeight=0.50 PerfScore 3.75
+ ;; size=10 bbWeight=0.50 PerfScore 2.75
G_M38117_IG10: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C]
pop ebx
@@ -204,21 +205,21 @@ G_M38117_IG14: ; bbWeight=0, gcVars=00000040 {V06}, gcrefRegs=000000C1 {e
mov edx, 113
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
; gcrRegs -[eax]
- mov eax, gword ptr [ebp-0x10]
+ mov eax, gword ptr [ebp-0x18]
; gcrRegs +[eax]
jmp G_M38117_IG04
;; size=23 bbWeight=0 PerfScore 0.00
-G_M38117_IG15: ; bbWeight=0, gcVars=00000200 {V11}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars -{V06} +{V09 V11}
+G_M38117_IG15: ; bbWeight=0, gcVars=00000200 {V10}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ ; GC ptr vars -{V06} +{V09 V10}
mov ecx, 0xD1FFAB1E
mov edx, 113
call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
; gcrRegs -[eax]
- mov eax, gword ptr [ebp-0x14]
+ mov eax, gword ptr [ebp-0x1C]
; gcrRegs +[eax]
jmp G_M38117_IG08
;; size=23 bbWeight=0 PerfScore 0.00
-; Total bytes of code 307, prolog size 9, PerfScore 73.38, instruction count 109, allocated bytes for code 307 (MethodHash=a1aa6b1a) for method System.Text.Json.Reflection.ReflectionExtensions:IsInSubtypeRelationshipWith(System.Type,System.Type):ubyte (Tier1)
+; Total bytes of code 313, prolog size 9, PerfScore 72.38, instruction count 110, allocated bytes for code 313 (MethodHash=a1aa6b1a) for method System.Text.Json.Reflection.ReflectionExtensions:IsInSubtypeRelationshipWith(System.Type,System.Type):ubyte (Tier1)
; ============================================================
+8 (+2.05%) : 239.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (Tier0-FullOpts)
@@ -8,33 +8,33 @@
; 0 inlinees with PGO data; 8 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T08] ( 7, 4.50) ref -> esi class-hnd single-def <System.String>
-; V01 loc0 [V01,T10] ( 6, 2.38) ref -> edi class-hnd exact <System.String>
-; V02 loc1 [V02,T07] ( 8, 14.50) ref -> ebx class-hnd exact single-def <<unknown class>>
-; V03 loc2 [V03,T02] ( 6, 17 ) ref -> esi class-hnd exact single-def <<unknown class>>
-; V04 loc3 [V04,T00] ( 9, 32.50) int -> edi
+; V00 arg0 [V00,T07] ( 7, 4.50) ref -> esi class-hnd single-def <System.String>
+; V01 loc0 [V01,T09] ( 6, 2.38) ref -> edi class-hnd exact <System.String>
+; V02 loc1 [V02,T06] ( 7, 14 ) ref -> ebx class-hnd exact single-def <<unknown class>>
+; V03 loc2 [V03,T02] ( 6, 17 ) ref -> edi class-hnd exact single-def <<unknown class>>
+; V04 loc3 [V04,T00] ( 9, 32.50) int -> [ebp-0x10]
; V05 loc4 [V05,T03] ( 5, 16.50) int -> ebx
-; V06 tmp0 [V06,T11] ( 2, 2 ) ref -> edi single-def "CASTCLASS eval op1"
+; V06 tmp0 [V06,T10] ( 2, 2 ) ref -> edi single-def "CASTCLASS eval op1"
;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-; V08 tmp2 [V08,T09] ( 3, 3 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V08 tmp2 [V08,T08] ( 3, 3 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V09 tmp3 [V09,T04] ( 2, 16 ) byref -> ecx "impAppendStmt"
;* V10 tmp4 [V10,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V11 tmp5 [V11,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V12 tmp6 [V12 ] ( 2, 2 ) ushort -> [ebp-0x10] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+; V12 tmp6 [V12 ] ( 2, 2 ) ushort -> [ebp-0x14] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
;* V13 tmp7 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V14 tmp8 [V14 ] ( 2, 2 ) ushort -> [ebp-0x14] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+; V14 tmp8 [V14 ] ( 2, 2 ) ushort -> [ebp-0x18] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
;* V15 tmp9 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V16 tmp10 [V16,T14] ( 2, 1 ) byref -> ecx single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V17 tmp11 [V17,T18] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x4)" P-INDEP
; V18 tmp12 [V18,T15] ( 2, 1 ) byref -> ecx single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V19 tmp13 [V19,T19] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x4)" P-INDEP
-; V20 tmp14 [V20,T12] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-; V21 tmp15 [V21,T13] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V20 tmp14 [V20,T11] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V21 tmp15 [V21,T12] ( 2, 2 ) ref -> edx single-def "argument with side effect"
; V22 tmp16 [V22,T01] ( 3, 24 ) ref -> edx "arr expr"
-; V23 tmp17 [V23,T05] ( 2, 16 ) byref -> ecx "argument with side effect"
-; V24 tmp18 [V24,T06] ( 2, 16 ) ref -> edx "argument with side effect"
+; V23 tmp17 [V23,T05] ( 2, 16 ) ref -> edx "argument with side effect"
+; V24 cse0 [V24,T13] ( 3, 1.50) int -> esi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M12781_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -42,7 +42,7 @@ G_M12781_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 8
+ sub esp, 12
mov esi, ecx
; gcrRegs +[esi]
;; size=11 bbWeight=1 PerfScore 4.75
@@ -113,8 +113,8 @@ G_M12781_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
;; size=64 bbWeight=0.50 PerfScore 7.88
G_M12781_IG09: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
movzx ecx, word ptr [D1FFAB1EH] ; static handle
- mov word ptr [ebp-0x10], cx
- lea ecx, bword ptr [ebp-0x10]
+ mov word ptr [ebp-0x14], cx
+ lea ecx, bword ptr [ebp-0x14]
; byrRegs +[ecx]
push 1
push ecx
@@ -140,8 +140,8 @@ G_M12781_IG10: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=0
;; size=17 bbWeight=0.50 PerfScore 2.62
G_M12781_IG11: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref
movzx ecx, word ptr [D1FFAB1EH] ; static handle
- mov word ptr [ebp-0x14], cx
- lea ecx, bword ptr [ebp-0x14]
+ mov word ptr [ebp-0x18], cx
+ lea ecx, bword ptr [ebp-0x18]
; byrRegs +[ecx]
push 1
push ecx
@@ -160,57 +160,61 @@ G_M12781_IG11: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=0
; gcrRegs -[eax ecx edx]
;; size=42 bbWeight=0.50 PerfScore 6.75
G_M12781_IG12: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
- mov edx, dword ptr [ebx+0x08]
+ mov esi, dword ptr [ebx+0x08]
+ mov edx, esi
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[eax]
- mov esi, eax
- ; gcrRegs +[esi]
- xor edi, edi
- cmp dword ptr [ebx+0x08], 0
- jle SHORT G_M12781_IG14
- ;; size=23 bbWeight=0.50 PerfScore 3.88
-G_M12781_IG13: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ mov edi, eax
+ ; gcrRegs +[edi]
+ xor eax, eax
; gcrRegs -[eax]
- cmp edi, dword ptr [esi+0x04]
+ test esi, esi
+ jle SHORT G_M12781_IG14
+ ;; size=23 bbWeight=0.50 PerfScore 2.62
+G_M12781_IG13: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz
+ cmp eax, dword ptr [edi+0x04]
jae SHORT G_M12781_IG17
- lea ecx, bword ptr [esi+8*edi+0x08]
+ lea ecx, bword ptr [edi+8*eax+0x08]
; byrRegs +[ecx]
- cmp edi, dword ptr [ebx+0x08]
+ cmp eax, dword ptr [ebx+0x08]
jae SHORT G_M12781_IG20
mov edx, gword ptr [ebx+0x04]
; gcrRegs +[edx]
- cmp edi, dword ptr [edx+0x04]
+ cmp eax, dword ptr [edx+0x04]
jae SHORT G_M12781_IG17
- mov edx, gword ptr [edx+4*edi+0x08]
+ mov dword ptr [ebp-0x10], eax
+ mov edx, gword ptr [edx+4*eax+0x08]
call [<unknown method>]
; gcrRegs -[edx]
; byrRegs -[ecx]
- inc edi
- cmp edi, dword ptr [ebx+0x08]
+ mov esi, dword ptr [ebp-0x10]
+ inc esi
+ cmp esi, dword ptr [ebx+0x08]
+ mov eax, esi
jl SHORT G_M12781_IG13
- ;; size=38 bbWeight=4 PerfScore 97.00
-G_M12781_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ;; size=46 bbWeight=4 PerfScore 106.00
+G_M12781_IG14: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ebx]
xor ebx, ebx
- cmp dword ptr [esi+0x04], 0
+ cmp dword ptr [edi+0x04], 0
jle G_M12781_IG03
;; size=12 bbWeight=0.50 PerfScore 2.12
-G_M12781_IG15: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M12781_IG15: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
lea eax, [8*ebx]
add eax, 8
- add eax, esi
+ add eax, edi
; byrRegs +[eax]
push gword ptr [eax+0x04]
push gword ptr [eax]
call [<unknown method>]
; byrRegs -[eax]
inc ebx
- cmp dword ptr [esi+0x04], ebx
+ cmp dword ptr [edi+0x04], ebx
jg SHORT G_M12781_IG15
;; size=29 bbWeight=4 PerfScore 49.00
G_M12781_IG16: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi]
+ ; gcrRegs -[edi]
jmp G_M12781_IG03
;; size=5 bbWeight=0.50 PerfScore 1.00
G_M12781_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
@@ -236,6 +240,6 @@ G_M12781_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 390, prolog size 9, PerfScore 195.53, instruction count 115, allocated bytes for code 390 (MethodHash=6685ce12) for method System.StartupHookProvider:ProcessStartupHooks(System.String) (Tier0-FullOpts)
+; Total bytes of code 398, prolog size 9, PerfScore 203.28, instruction count 119, allocated bytes for code 398 (MethodHash=6685ce12) for method System.StartupHookProvider:ProcessStartupHooks(System.String) (Tier0-FullOpts)
; ============================================================
coreclr_tests.run.windows.x86.checked.mch
-22 (-20.18%) : 505330.dasm - TestclassarrInnerProd.ArrayClass:.ctor(int):this (FullOpts)
@@ -11,24 +11,18 @@
; V00 this [V00,T01] ( 4, 4 ) ref -> edi this class-hnd single-def <Test_classarr_InnerProd.ArrayClass>
; V01 arg1 [V01,T00] ( 7, 7 ) int -> esi single-def
; V02 tmp0 [V02 ] ( 7, 7 ) struct (12) [esp+0x00] do-not-enreg[XSF] addr-exposed "NewObjArrayArgs"
-; TEMP_01 byref -> [esp+0x0C]
;
-; Lcl frame size = 16
+; Lcl frame size = 12
G_M23325_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push edi
push esi
- sub esp, 16
- xor eax, eax
- mov dword ptr [esp+0x0C], eax
+ sub esp, 12
mov edi, ecx
; gcrRegs +[edi]
mov esi, edx
- ;; size=15 bbWeight=1 PerfScore 4.00
+ ;; size=9 bbWeight=1 PerfScore 2.75
G_M23325_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
- lea edx, bword ptr [edi+0x04]
- ; byrRegs +[edx]
- mov bword ptr [esp+0x0C], edx
mov dword ptr [esp], esi
mov dword ptr [esp+0x04], esi
lea ecx, [esp]
@@ -36,18 +30,14 @@ G_M23325_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000
; npt arg push 0
mov ecx, 0xD1FFAB1E ; <unknown class>
mov edx, 2
- ; byrRegs -[edx]
call CORINFO_HELP_NEW_MDARR
; gcrRegs +[eax]
; gcr arg pop 1
- mov edx, bword ptr [esp+0x0C]
+ lea edx, bword ptr [edi+0x04]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax]
; byrRegs -[edx]
- lea edx, bword ptr [edi+0x08]
- ; byrRegs +[edx]
- mov bword ptr [esp+0x0C], edx
mov dword ptr [esp], esi
mov dword ptr [esp+0x04], esi
mov dword ptr [esp+0x08], esi
@@ -56,23 +46,22 @@ G_M23325_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000
; npt arg push 0
mov ecx, 0xD1FFAB1E ; <unknown class>
mov edx, 3
- ; byrRegs -[edx]
call CORINFO_HELP_NEW_MDARR
- ; gcrRegs -[edi] +[eax]
+ ; gcrRegs +[eax]
; gcr arg pop 1
- mov edx, bword ptr [esp+0x0C]
+ lea edx, bword ptr [edi+0x08]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EAX
- ; gcrRegs -[eax]
+ ; gcrRegs -[eax edi]
; byrRegs -[edx]
- ;; size=88 bbWeight=1 PerfScore 18.00
+ ;; size=72 bbWeight=1 PerfScore 14.00
G_M23325_IG03: ; bbWeight=1, epilog, nogc, extend
- add esp, 16
+ add esp, 12
pop esi
pop edi
ret
;; size=6 bbWeight=1 PerfScore 2.25
-; Total bytes of code 109, prolog size 11, PerfScore 24.25, instruction count 34, allocated bytes for code 109 (MethodHash=91efa4e2) for method Test_classarr_InnerProd.ArrayClass:.ctor(int):this (FullOpts)
+; Total bytes of code 87, prolog size 5, PerfScore 19.00, instruction count 28, allocated bytes for code 87 (MethodHash=91efa4e2) for method Test_classarr_InnerProd.ArrayClass:.ctor(int):this (FullOpts)
; ============================================================
-14 (-19.18%) : 509850.dasm - Test10w5d.testout1+CL01155:.ctor():this (FullOpts)
@@ -10,22 +10,16 @@
;
; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <Test_10w5d.testout1+CL_0_1_1_5_5>
; V01 tmp0 [V01 ] ( 3, 3 ) struct ( 8) [esp+0x00] do-not-enreg[XSF] addr-exposed "NewObjArrayArgs"
-; TEMP_01 byref -> [esp+0x08]
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M48731_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push esi
- sub esp, 12
- xor eax, eax
- mov dword ptr [esp+0x08], eax
+ sub esp, 8
mov esi, ecx
; gcrRegs +[esi]
- ;; size=12 bbWeight=1 PerfScore 2.75
+ ;; size=6 bbWeight=1 PerfScore 1.50
G_M48731_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- lea edx, bword ptr [esi+0x04]
- ; byrRegs +[edx]
- mov bword ptr [esp+0x08], edx
mov dword ptr [esp], 3
mov dword ptr [esp+0x04], 11
lea ecx, [esp]
@@ -33,23 +27,22 @@ G_M48731_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; npt arg push 0
mov ecx, 0xD1FFAB1E ; <unknown class>
mov edx, 2
- ; byrRegs -[edx]
call CORINFO_HELP_NEW_MDARR
; gcrRegs +[eax]
; gcr arg pop 1
- mov edx, bword ptr [esp+0x08]
+ lea edx, bword ptr [esi+0x04]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax]
; byrRegs -[edx]
mov word ptr [esi+0x08], 0x747C
- ;; size=56 bbWeight=1 PerfScore 9.50
+ ;; size=48 bbWeight=1 PerfScore 7.50
G_M48731_IG03: ; bbWeight=1, epilog, nogc, extend
- add esp, 12
+ add esp, 8
pop esi
ret
;; size=5 bbWeight=1 PerfScore 1.75
-; Total bytes of code 73, prolog size 10, PerfScore 14.00, instruction count 20, allocated bytes for code 73 (MethodHash=9ef941a4) for method Test_10w5d.testout1+CL_0_1_1_5_5:.ctor():this (FullOpts)
+; Total bytes of code 59, prolog size 4, PerfScore 10.75, instruction count 16, allocated bytes for code 59 (MethodHash=9ef941a4) for method Test_10w5d.testout1+CL_0_1_1_5_5:.ctor():this (FullOpts)
; ============================================================
-14 (-19.18%) : 503015.dasm - Test10w5d.testout1+CL05135:.ctor():this (FullOpts)
@@ -10,22 +10,16 @@
;
; V00 this [V00,T00] ( 4, 4 ) ref -> esi this class-hnd single-def <Test_10w5d.testout1+CL_0_5_1_3_5>
; V01 tmp0 [V01 ] ( 3, 3 ) struct ( 8) [esp+0x00] do-not-enreg[XSF] addr-exposed "NewObjArrayArgs"
-; TEMP_01 byref -> [esp+0x08]
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M22041_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push esi
- sub esp, 12
- xor eax, eax
- mov dword ptr [esp+0x08], eax
+ sub esp, 8
mov esi, ecx
; gcrRegs +[esi]
- ;; size=12 bbWeight=1 PerfScore 2.75
+ ;; size=6 bbWeight=1 PerfScore 1.50
G_M22041_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- lea edx, bword ptr [esi+0x04]
- ; byrRegs +[edx]
- mov bword ptr [esp+0x08], edx
mov dword ptr [esp], 3
mov dword ptr [esp+0x04], 11
lea ecx, [esp]
@@ -33,23 +27,22 @@ G_M22041_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; npt arg push 0
mov ecx, 0xD1FFAB1E ; <unknown class>
mov edx, 2
- ; byrRegs -[edx]
call CORINFO_HELP_NEW_MDARR
; gcrRegs +[eax]
; gcr arg pop 1
- mov edx, bword ptr [esp+0x08]
+ lea edx, bword ptr [esi+0x04]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax]
; byrRegs -[edx]
mov word ptr [esi+0x08], 0x11AD
- ;; size=56 bbWeight=1 PerfScore 9.50
+ ;; size=48 bbWeight=1 PerfScore 7.50
G_M22041_IG03: ; bbWeight=1, epilog, nogc, extend
- add esp, 12
+ add esp, 8
pop esi
ret
;; size=5 bbWeight=1 PerfScore 1.75
-; Total bytes of code 73, prolog size 10, PerfScore 14.00, instruction count 20, allocated bytes for code 73 (MethodHash=f0d2a9e6) for method Test_10w5d.testout1+CL_0_5_1_3_5:.ctor():this (FullOpts)
+; Total bytes of code 59, prolog size 4, PerfScore 10.75, instruction count 16, allocated bytes for code 59 (MethodHash=f0d2a9e6) for method Test_10w5d.testout1+CL_0_5_1_3_5:.ctor():this (FullOpts)
; ============================================================
+5 (+3.38%) : 372509.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.StringImportSignature:AppendMangledName(ILCompiler.NameMangler,Internal.Text.Utf8StringBuilder):this (Instrumented Tier0)
@@ -14,26 +14,27 @@
; V06 tmp2 [V06 ] ( 1, 1 ) ref -> [ebp-0x24] do-not-enreg[] must-init "argument with side effect"
; V07 tmp3 [V07 ] ( 1, 1 ) ref -> [ebp-0x28] do-not-enreg[] must-init "argument with side effect"
; V08 tmp4 [V08 ] ( 1, 1 ) ref -> [ebp-0x2C] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp5 [V09 ] ( 1, 1 ) ref -> [ebp-0x30] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 40
+; Lcl frame size = 36
G_M44208_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
push edi
push esi
- sub esp, 40
+ sub esp, 36
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [ebp-0x30], ymm4
+ vmovdqu xmmword ptr [ebp-0x2C], xmm4
+ xor eax, eax
+ mov dword ptr [ebp-0x1C], eax
+ mov dword ptr [ebp-0x18], eax
+ mov dword ptr [ebp-0x14], eax
mov gword ptr [ebp-0x0C], ecx
mov gword ptr [ebp-0x10], edx
- ;; size=23 bbWeight=1 PerfScore 7.83
+ ;; size=34 bbWeight=1 PerfScore 11.08
G_M44208_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, gword ptr [ebp+0x08]
- ; gcrRegs +[ecx]
- mov gword ptr [ebp-0x28], ecx
mov ecx, gword ptr [ebp-0x10]
+ ; gcrRegs +[ecx]
mov gword ptr [ebp-0x1C], ecx
mov ecx, gword ptr [ebp-0x1C]
mov edx, 0xD1FFAB1E
@@ -53,7 +54,7 @@ G_M44208_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov gword ptr [ebp-0x24], eax
mov edx, gword ptr [ebp-0x24]
; gcrRegs +[edx]
- mov ecx, gword ptr [ebp-0x28]
+ mov ecx, gword ptr [ebp+0x08]
; gcrRegs +[ecx]
cmp dword ptr [ecx], ecx
call [<unknown method>]
@@ -70,22 +71,22 @@ G_M44208_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
lea ecx, [ebp-0x18]
call [<unknown method>]
; byrRegs -[esi edi]
- mov gword ptr [ebp-0x2C], eax
- mov edx, gword ptr [ebp-0x2C]
+ mov gword ptr [ebp-0x28], eax
+ mov edx, gword ptr [ebp-0x28]
; gcrRegs +[edx]
mov ecx, 0xD1FFAB1E
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx edx]
- mov gword ptr [ebp-0x30], eax
- mov edx, gword ptr [ebp-0x30]
+ mov gword ptr [ebp-0x2C], eax
+ mov edx, gword ptr [ebp-0x2C]
; gcrRegs +[edx]
mov ecx, gword ptr [ebp+0x08]
; gcrRegs +[ecx]
cmp dword ptr [ecx], ecx
call [<unknown method>]
; gcrRegs -[ecx edx]
- ;; size=116 bbWeight=1 PerfScore 47.75
+ ;; size=110 bbWeight=1 PerfScore 45.75
G_M44208_IG03: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x08]
pop esi
@@ -94,6 +95,6 @@ G_M44208_IG03: ; bbWeight=1, epilog, nogc, extend
ret 4
;; size=9 bbWeight=1 PerfScore 4.00
-; Total bytes of code 148, prolog size 17, PerfScore 59.58, instruction count 49, allocated bytes for code 148 (MethodHash=64ed534f) for method ILCompiler.DependencyAnalysis.ReadyToRun.StringImportSignature:AppendMangledName(ILCompiler.NameMangler,Internal.Text.Utf8StringBuilder):this (Instrumented Tier0)
+; Total bytes of code 153, prolog size 28, PerfScore 60.83, instruction count 51, allocated bytes for code 153 (MethodHash=64ed534f) for method ILCompiler.DependencyAnalysis.ReadyToRun.StringImportSignature:AppendMangledName(ILCompiler.NameMangler,Internal.Text.Utf8StringBuilder):this (Instrumented Tier0)
; ============================================================
+5 (+3.55%) : 364931.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker+<>cDisplayClass10_0:
@@ -14,19 +14,22 @@
; V06 tmp3 [V06 ] ( 1, 1 ) ref -> [ebp-0x1C] do-not-enreg[] must-init "argument with side effect"
; V07 tmp4 [V07 ] ( 1, 1 ) ref -> [ebp-0x20] do-not-enreg[] must-init "argument with side effect"
; V08 tmp5 [V08 ] ( 1, 1 ) ref -> [ebp-0x24] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp6 [V09 ] ( 1, 1 ) ref -> [ebp-0x28] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 40
+; Lcl frame size = 36
G_M60667_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- sub esp, 40
+ sub esp, 36
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [ebp-0x28], ymm4
+ vmovdqu xmmword ptr [ebp-0x24], xmm4
+ xor eax, eax
+ mov dword ptr [ebp-0x14], eax
+ mov dword ptr [ebp-0x10], eax
+ mov dword ptr [ebp-0x0C], eax
mov gword ptr [ebp-0x04], ecx
mov gword ptr [ebp-0x08], edx
- ;; size=21 bbWeight=1 PerfScore 5.83
+ ;; size=32 bbWeight=1 PerfScore 9.08
G_M60667_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [ebp-0x04]
; gcrRegs +[ecx]
@@ -50,10 +53,8 @@ G_M60667_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov gword ptr [ebp-0x10], eax
xor ecx, ecx
mov gword ptr [ebp-0x0C], ecx
- mov ecx, gword ptr [ebp-0x04]
- ; gcrRegs +[ecx]
- mov gword ptr [ebp-0x28], ecx
mov ecx, gword ptr [ebp-0x08]
+ ; gcrRegs +[ecx]
mov gword ptr [ebp-0x18], ecx
mov ecx, gword ptr [ebp-0x18]
mov edx, 0xD1FFAB1E
@@ -75,17 +76,17 @@ G_M60667_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov gword ptr [ebp-0x24], eax
mov edx, gword ptr [ebp-0x24]
; gcrRegs +[edx]
- mov ecx, gword ptr [ebp-0x28]
+ mov ecx, gword ptr [ebp-0x04]
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[ecx edx]
- ;; size=116 bbWeight=1 PerfScore 44.75
+ ;; size=110 bbWeight=1 PerfScore 42.75
G_M60667_IG03: ; bbWeight=1, epilog, nogc, extend
mov esp, ebp
pop ebp
ret
;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 141, prolog size 15, PerfScore 52.33, instruction count 46, allocated bytes for code 141 (MethodHash=4ed91304) for method ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker+<>c__DisplayClass10_0:<ValidateTypeWorker>g__ValidateTypeWorkerHelper|0(Internal.TypeSystem.TypeDesc):System.Threading.Tasks.Task`1[ubyte]:this (Instrumented Tier0)
+; Total bytes of code 146, prolog size 26, PerfScore 53.58, instruction count 48, allocated bytes for code 146 (MethodHash=4ed91304) for method ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker+<>c__DisplayClass10_0:<ValidateTypeWorker>g__ValidateTypeWorkerHelper|0(Internal.TypeSystem.TypeDesc):System.Threading.Tasks.Task`1[ubyte]:this (Instrumented Tier0)
; ============================================================
+6 (+7.41%) : 517132.dasm - Runtime_88091:IsSubsetOf(System.Collections.Generic.List`1[NamedSet],int,int):ubyte (FullOpts)
@@ -10,17 +10,16 @@
;
; V00 arg0 [V00,T01] ( 4, 4 ) ref -> ecx class-hnd single-def <System.Collections.Generic.List`1[NamedSet]>
; V01 arg1 [V01,T00] ( 5, 5 ) int -> edx single-def
-; V02 arg2 [V02,T08] ( 3, 3 ) int -> eax single-def
-; V03 tmp0 [V03,T03] ( 2, 4 ) ref -> edx class-hnd single-def "impAppendStmt" <<unknown class>>
+; V02 arg2 [V02,T07] ( 3, 3 ) int -> eax single-def
+; V03 tmp0 [V03,T03] ( 2, 4 ) ref -> [ebp-0x10] class-hnd spill-single-def "impAppendStmt" <<unknown class>>
; V04 tmp1 [V04,T02] ( 3, 6 ) ref -> edi single-def "arr expr"
; V05 tmp2 [V05,T04] ( 2, 4 ) ref -> ecx single-def "arr expr"
-; V06 tmp3 [V06,T05] ( 2, 4 ) ref -> edx single-def "argument with side effect"
-; V07 tmp4 [V07,T06] ( 2, 4 ) ref -> eax single-def "argument with side effect"
-; V08 cse0 [V08,T09] ( 3, 3 ) int -> esi "CSE - moderate"
-; V09 cse1 [V09,T07] ( 3, 3 ) ref -> ecx "CSE - moderate"
-; V10 cse2 [V10,T10] ( 3, 3 ) int -> ebx "CSE - moderate"
+; V06 tmp3 [V06,T05] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
+; V07 cse0 [V07,T08] ( 3, 3 ) int -> esi "CSE - moderate"
+; V08 cse1 [V08,T06] ( 3, 3 ) ref -> ecx "CSE - moderate"
+; V09 cse2 [V09,T09] ( 3, 3 ) int -> ebx "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M20577_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -28,8 +27,9 @@ G_M20577_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
+ push eax
mov eax, dword ptr [ebp+0x08]
- ;; size=9 bbWeight=1 PerfScore 5.25
+ ;; size=10 bbWeight=1 PerfScore 6.25
G_M20577_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
mov esi, dword ptr [ecx+0x08]
@@ -44,26 +44,29 @@ G_M20577_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000
mov edx, gword ptr [edi+4*edx+0x08]
; gcrRegs +[edx]
mov edx, gword ptr [edx+0x04]
+ mov gword ptr [ebp-0x10], edx
+ ; GC ptr vars +{V03}
cmp eax, esi
jae SHORT G_M20577_IG05
cmp eax, ebx
jae SHORT G_M20577_IG04
mov ecx, gword ptr [ecx+4*eax+0x08]
- mov eax, gword ptr [ecx+0x04]
- ; gcrRegs +[eax]
- mov ecx, edx
- mov edx, eax
+ mov ecx, gword ptr [ecx+0x04]
+ mov edx, ecx
+ mov ecx, gword ptr [ebp-0x10]
cmp dword ptr [ecx], ecx
+ ; GC ptr vars -{V03}
call [System.Collections.Generic.HashSet`1[System.__Canon]:IsSubsetOf(System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte:this]
- ; gcrRegs -[eax ecx edx edi]
- ;; size=53 bbWeight=1 PerfScore 25.75
+ ; gcrRegs -[ecx edx edi]
+ ;; size=57 bbWeight=1 PerfScore 27.50
G_M20577_IG03: ; bbWeight=1, epilog, nogc, extend
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 4
- ;; size=7 bbWeight=1 PerfScore 4.00
+ ;; size=8 bbWeight=1 PerfScore 4.50
G_M20577_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
@@ -72,6 +75,6 @@ G_M20577_IG05: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 81, prolog size 6, PerfScore 35.00, instruction count 34, allocated bytes for code 81 (MethodHash=dd89af9e) for method Runtime_88091:IsSubsetOf(System.Collections.Generic.List`1[NamedSet],int,int):ubyte (FullOpts)
+; Total bytes of code 87, prolog size 7, PerfScore 38.25, instruction count 37, allocated bytes for code 87 (MethodHash=dd89af9e) for method Runtime_88091:IsSubsetOf(System.Collections.Generic.List`1[NamedSet],int,int):ubyte (FullOpts)
; ============================================================
libraries.crossgen2.windows.x86.checked.mch
-48 (-23.76%) : 149280.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
@@ -9,22 +9,20 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 8, 12 ) ref -> esi this class-hnd single-def <System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension>
+; V00 this [V00,T05] ( 8, 12 ) ref -> esi this class-hnd single-def <System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension>
;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Xml.Xsl.XsltContext>
-; V02 arg2 [V02,T08] ( 7, 11 ) ref -> [ebp+0x0C] class-hnd single-def <System.Object[]>
+; V02 arg2 [V02,T06] ( 8, 11.04) ref -> edi class-hnd single-def <System.Object[]>
;* V03 arg3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Xml.XPath.XPathNavigator>
-; V04 loc0 [V04,T03] ( 11, 19 ) int -> ebx
+; V04 loc0 [V04,T00] ( 22, 39.04) int -> ebx
;* V05 tmp0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Object>
; V06 tmp1 [V06,T01] ( 6, 24 ) ref -> eax "arr expr"
-; V07 tmp2 [V07,T02] ( 6, 24 ) ref -> edi "arr expr"
-; V08 tmp3 [V08,T05] ( 4, 16 ) ref -> ecx "argument with side effect"
-; V09 tmp4 [V09,T06] ( 4, 16 ) int -> eax "argument with side effect"
-; V10 tmp5 [V10,T00] ( 15, 56.08) int -> [ebp-0x10] "argument with side effect"
-; V11 tmp6 [V11,T04] ( 5, 16.08) ref -> eax "argument with side effect"
-; V12 tmp7 [V12,T09] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
-; V13 tmp8 [V13,T10] ( 2, 4 ) ref -> edx single-def "argument with side effect"
+; V07 tmp2 [V07,T02] ( 6, 24 ) ref -> eax "arr expr"
+; V08 tmp3 [V08,T03] ( 4, 16 ) ref -> ecx "argument with side effect"
+; V09 tmp4 [V09,T04] ( 4, 16 ) int -> edx "argument with side effect"
+; V10 tmp5 [V10,T07] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
+; V11 tmp6 [V11,T08] ( 2, 4 ) ref -> edx single-def "argument with side effect"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M50779_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -32,86 +30,69 @@ G_M50779_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- push eax
mov esi, ecx
; gcrRegs +[esi]
mov edi, gword ptr [ebp+0x0C]
; gcrRegs +[edi]
- ;; size=12 bbWeight=1 PerfScore 6.50
+ ;; size=11 bbWeight=1 PerfScore 5.50
G_M50779_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ebx, dword ptr [edi+0x04]
dec ebx
- js G_M50779_IG06
+ js SHORT G_M50779_IG06
cmp dword ptr [edi+0x04], ebx
jle SHORT G_M50779_IG05
- ;; size=15 bbWeight=1 PerfScore 7.25
+ ;; size=11 bbWeight=1 PerfScore 7.25
G_M50779_IG03: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp+0x0C], edi
- mov eax, edi
- ; gcrRegs +[eax]
- mov edx, ebx
- mov ecx, gword ptr [eax+4*edx+0x08]
+ mov ecx, gword ptr [edi+4*ebx+0x08]
; gcrRegs +[ecx]
mov eax, gword ptr [esi+0x04]
- cmp edx, dword ptr [eax+0x04]
- jae G_M50779_IG08
- mov eax, dword ptr [eax+4*edx+0x08]
- ; gcrRegs -[eax]
- mov edi, gword ptr [esi+0x1C]
- cmp edx, dword ptr [edi+0x04]
- jae G_M50779_IG08
- mov dword ptr [ebp-0x10], edx
- push gword ptr [edi+4*edx+0x08]
- mov edx, eax
+ ; gcrRegs +[eax]
+ cmp ebx, dword ptr [eax+0x04]
+ jae SHORT G_M50779_IG08
+ mov edx, dword ptr [eax+4*ebx+0x08]
+ mov eax, gword ptr [esi+0x1C]
+ cmp ebx, dword ptr [eax+0x04]
+ jae SHORT G_M50779_IG08
+ push gword ptr [eax+4*ebx+0x08]
call [System.Xml.Xsl.XsltOld.XsltCompileContext+XsltFunctionImpl:ConvertToXPathType(System.Object,int,System.Type):System.Object]
- ; gcrRegs -[ecx edi] +[eax]
+ ; gcrRegs -[ecx]
push eax
- mov edx, dword ptr [ebp-0x10]
- mov ecx, gword ptr [ebp+0x0C]
+ mov edx, ebx
+ mov ecx, edi
; gcrRegs +[ecx]
call [CORINFO_HELP_ARRADDR_ST]
; gcrRegs -[eax ecx]
dec ebx
- mov edi, gword ptr [ebp+0x0C]
- ; gcrRegs +[edi]
jns SHORT G_M50779_IG03
- ;; size=73 bbWeight=3.96 PerfScore 126.72
+ ;; size=48 bbWeight=3.96 PerfScore 105.93
G_M50779_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M50779_IG06
;; size=2 bbWeight=1 PerfScore 2.00
G_M50779_IG05: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp+0x0C], edi
- mov eax, edi
- ; gcrRegs +[eax]
- mov edx, ebx
- cmp edx, dword ptr [eax+0x04]
+ cmp ebx, dword ptr [edi+0x04]
jae SHORT G_M50779_IG08
- mov ecx, gword ptr [eax+4*edx+0x08]
+ mov ecx, gword ptr [edi+4*ebx+0x08]
; gcrRegs +[ecx]
mov eax, gword ptr [esi+0x04]
- cmp edx, dword ptr [eax+0x04]
+ ; gcrRegs +[eax]
+ cmp ebx, dword ptr [eax+0x04]
jae SHORT G_M50779_IG08
- mov eax, dword ptr [eax+4*edx+0x08]
- ; gcrRegs -[eax]
- mov edi, gword ptr [esi+0x1C]
- cmp edx, dword ptr [edi+0x04]
+ mov edx, dword ptr [eax+4*ebx+0x08]
+ mov eax, gword ptr [esi+0x1C]
+ cmp ebx, dword ptr [eax+0x04]
jae SHORT G_M50779_IG08
- mov dword ptr [ebp-0x10], edx
- push gword ptr [edi+4*edx+0x08]
- mov edx, eax
+ push gword ptr [eax+4*ebx+0x08]
call [System.Xml.Xsl.XsltOld.XsltCompileContext+XsltFunctionImpl:ConvertToXPathType(System.Object,int,System.Type):System.Object]
- ; gcrRegs -[ecx edi] +[eax]
+ ; gcrRegs -[ecx]
push eax
- mov edx, dword ptr [ebp-0x10]
- mov ecx, gword ptr [ebp+0x0C]
+ mov edx, ebx
+ mov ecx, edi
; gcrRegs +[ecx]
call [CORINFO_HELP_ARRADDR_ST]
; gcrRegs -[eax ecx]
dec ebx
- mov edi, gword ptr [ebp+0x0C]
- ; gcrRegs +[edi]
jns SHORT G_M50779_IG05
- ;; size=70 bbWeight=0.04 PerfScore 1.44
+ ;; size=53 bbWeight=0.04 PerfScore 1.23
G_M50779_IG06: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x18]
; gcrRegs +[ecx]
@@ -123,19 +104,18 @@ G_M50779_IG06: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
; gcrRegs -[ecx edx esi edi] +[eax]
;; size=15 bbWeight=1 PerfScore 11.00
G_M50779_IG07: ; bbWeight=1, epilog, nogc, extend
- pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 8
- ;; size=8 bbWeight=1 PerfScore 4.50
+ ;; size=7 bbWeight=1 PerfScore 4.00
G_M50779_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax]
call [CORINFO_HELP_RNGCHKFAIL]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 202, prolog size 7, PerfScore 159.41, instruction count 73, allocated bytes for code 202 (MethodHash=355039a4) for method System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
+; Total bytes of code 154, prolog size 6, PerfScore 136.91, instruction count 59, allocated bytes for code 154 (MethodHash=355039a4) for method System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
; ============================================================
-13 (-19.12%) : 226882.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol:GetRootNamespaceSymbol():Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (FullOpts)
@@ -12,27 +12,20 @@
;* V00 loc0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol>
; V01 tmp0 [V01,T00] ( 4, 8 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol>
; V02 tmp1 [V02,T01] ( 3, 6 ) ref -> edx single-def "arr expr"
-; TEMP_01 byref -> [esp+0x00]
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M38638_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push esi
- push eax
- xor eax, eax
- mov dword ptr [esp], eax
- ;; size=7 bbWeight=1 PerfScore 3.25
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M38638_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
call [CORINFO_HELP_READYTORUN_NEW]
; gcrRegs +[eax]
mov esi, eax
; gcrRegs +[esi]
- lea edx, bword ptr [esi+0x04]
- ; byrRegs +[edx]
- mov bword ptr [esp], edx
call [CORINFO_HELP_READYTORUN_GCSTATIC_BASE]
; gcrRegs -[eax]
- ; byrRegs -[edx] +[eax]
+ ; byrRegs +[eax]
; gcr arg pop 0
mov edx, gword ptr [eax+0x60]
; gcrRegs +[edx]
@@ -41,7 +34,7 @@ G_M38638_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov eax, gword ptr [edx+0x1A4]
; gcrRegs +[eax]
; byrRegs -[eax]
- mov edx, bword ptr [esp]
+ lea edx, bword ptr [esi+0x04]
; gcrRegs -[edx]
; byrRegs +[edx]
call [CORINFO_HELP_ASSIGN_REF_EAX]
@@ -51,18 +44,17 @@ G_M38638_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
mov dword ptr [esi+0x14], eax
mov eax, esi
; gcrRegs +[eax]
- ;; size=51 bbWeight=1 PerfScore 21.25
+ ;; size=45 bbWeight=1 PerfScore 19.25
G_M38638_IG03: ; bbWeight=1, epilog, nogc, extend
- pop ecx
pop esi
ret
- ;; size=3 bbWeight=1 PerfScore 2.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
G_M38638_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax esi]
call [CORINFO_HELP_RNGCHKFAIL]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 68, prolog size 7, PerfScore 26.50, instruction count 23, allocated bytes for code 71 (MethodHash=64d56911) for method Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol:GetRootNamespaceSymbol():Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (FullOpts)
+; Total bytes of code 55, prolog size 1, PerfScore 21.75, instruction count 17, allocated bytes for code 55 (MethodHash=64d56911) for method Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol:GetRootNamespaceSymbol():Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (FullOpts)
; ============================================================
-8 (-15.69%) : 30542.dasm - System.Data.Common.SqlBinaryStorage:Get(int):System.Object:this (FullOpts)
@@ -8,46 +8,41 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 3, 3 ) ref -> [esp+0x00] this class-hnd single-def <System.Data.Common.SqlBinaryStorage>
+; V00 this [V00,T03] ( 3, 3 ) ref -> edi this class-hnd single-def <System.Data.Common.SqlBinaryStorage>
; V01 arg1 [V01,T00] ( 4, 4 ) int -> esi single-def
; V02 tmp0 [V02,T01] ( 3, 6 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <System.Data.SqlTypes.SqlBinary>
; V03 tmp1 [V03,T02] ( 3, 6 ) ref -> ecx single-def "arr expr"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M2130_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push edi
push esi
- push ebx
- push eax
- mov gword ptr [esp], ecx
- ; GC ptr vars +{V00}
+ mov edi, ecx
+ ; gcrRegs +[edi]
mov esi, edx
- ;; size=9 bbWeight=1 PerfScore 5.25
-G_M2130_IG02: ; bbWeight=1, gcVars=00000008 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=6 bbWeight=1 PerfScore 2.50
+G_M2130_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
call [CORINFO_HELP_READYTORUN_NEW]
; gcrRegs +[eax]
- lea edi, bword ptr [eax+0x04]
- ; byrRegs +[edi]
- mov ebx, gword ptr [esp]
- ; gcrRegs +[ebx]
- mov ecx, gword ptr [ebx+0x24]
+ ; gcr arg pop 0
+ mov ecx, gword ptr [edi+0x24]
; gcrRegs +[ecx]
cmp esi, dword ptr [ecx+0x04]
jae SHORT G_M2130_IG04
lea esi, bword ptr [ecx+4*esi+0x08]
; byrRegs +[esi]
- ; GC ptr vars -{V00}
+ lea edi, bword ptr [eax+0x04]
+ ; gcrRegs -[edi]
+ ; byrRegs +[edi]
call [CORINFO_HELP_ASSIGN_BYREF]
- ; gcrRegs -[ecx ebx]
- ;; size=30 bbWeight=1 PerfScore 14.50
+ ; gcrRegs -[ecx]
+ ;; size=27 bbWeight=1 PerfScore 13.50
G_M2130_IG03: ; bbWeight=1, epilog, nogc, extend
- pop ecx
- pop ebx
pop esi
pop edi
ret
- ;; size=5 bbWeight=1 PerfScore 3.00
+ ;; size=3 bbWeight=1 PerfScore 2.00
G_M2130_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax]
; byrRegs -[esi edi]
@@ -55,6 +50,6 @@ G_M2130_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, by
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 51, prolog size 4, PerfScore 22.75, instruction count 21, allocated bytes for code 51 (MethodHash=63a8f7ad) for method System.Data.Common.SqlBinaryStorage:Get(int):System.Object:this (FullOpts)
+; Total bytes of code 43, prolog size 2, PerfScore 18.00, instruction count 16, allocated bytes for code 43 (MethodHash=63a8f7ad) for method System.Data.Common.SqlBinaryStorage:Get(int):System.Object:this (FullOpts)
; ============================================================
+30 (+4.54%) : 178406.dasm - System.IO.Packaging.PartBasedPackageProperties:SerializeDirtyProperties():this (FullOpts)
@@ -15,14 +15,14 @@
; V03 loc2 [V03,T08] ( 5, 18 ) int -> [ebp-0x44] spill-single-def
; V04 loc3 [V04 ] ( 2, 4 ) struct (12) [ebp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Nullable`1[System.DateTime]>
; V05 loc4 [V05 ] ( 2, 4 ) struct ( 8) [ebp-0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.DateTime>
-; V06 tmp0 [V06,T09] ( 2, 16 ) ref -> [ebp-0x70] class-hnd spill-single-def "non-inline candidate call" <<unknown class>>
-; V07 tmp1 [V07,T10] ( 2, 16 ) ref -> [ebp-0x74] class-hnd spill-single-def "impAppendStmt" <System.String>
+; V06 tmp0 [V06,T09] ( 2, 16 ) ref -> [ebp-0x6C] class-hnd spill-single-def "non-inline candidate call" <<unknown class>>
+; V07 tmp1 [V07,T10] ( 2, 16 ) ref -> [ebp-0x70] class-hnd spill-single-def "impAppendStmt" <System.String>
;* V08 tmp2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>>
-; V09 tmp3 [V09,T17] ( 2, 8 ) ref -> edi class-hnd "non-inline candidate call" <<unknown class>>
+; V09 tmp3 [V09,T15] ( 2, 8 ) ref -> [ebp-0x74] class-hnd spill-single-def "non-inline candidate call" <<unknown class>>
; V10 tmp4 [V10 ] ( 2, 8 ) struct ( 8) [ebp-0x60] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <System.DateTime>
-; V11 tmp5 [V11,T18] ( 2, 8 ) ref -> edi class-hnd "impAppendStmt" <<unknown class>>
-; V12 tmp6 [V12,T19] ( 2, 8 ) ref -> [ebp-0x78] class-hnd spill-single-def "impAppendStmt" <System.String>
-; V13 tmp7 [V13,T20] ( 2, 8 ) ref -> [ebp-0x7C] class-hnd spill-single-def "impAppendStmt" <<unknown class>>
+; V11 tmp5 [V11,T16] ( 2, 8 ) ref -> [ebp-0x78] class-hnd spill-single-def "impAppendStmt" <<unknown class>>
+; V12 tmp6 [V12,T17] ( 2, 8 ) ref -> [ebp-0x7C] class-hnd spill-single-def "impAppendStmt" <System.String>
+; V13 tmp7 [V13,T18] ( 2, 8 ) ref -> [ebp-0x80] class-hnd spill-single-def "impAppendStmt" <<unknown class>>
; V14 tmp8 [V14,T00] ( 4, 32 ) int -> [ebp-0x64] spill-single-def "Inlining Arg"
;* V15 tmp9 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V16 tmp10 [V16,T01] ( 4, 32 ) int -> [ebp-0x68] spill-single-def "Inlining Arg"
@@ -34,29 +34,23 @@
; V22 tmp16 [V22 ] ( 6, 20 ) ref -> [ebp-0x40] do-not-enreg[X] addr-exposed "field V02.value (fldOffset=0x0)" P-DEP
; V23 tmp17 [V23 ] ( 6, 20 ) int -> [ebp-0x3C] do-not-enreg[X] addr-exposed "field V02.key (fldOffset=0x4)" P-DEP
; V24 tmp18 [V24 ] ( 2, 4 ) long -> [ebp-0x58] do-not-enreg[X] addr-exposed "field V05._dateData (fldOffset=0x0)" P-DEP
-; V25 tmp19 [V25,T28] ( 2, 8 ) long -> [ebp-0x60] do-not-enreg[H] hidden-struct-arg "field V10._dateData (fldOffset=0x0)" P-DEP
+; V25 tmp19 [V25,T22] ( 2, 8 ) long -> [ebp-0x60] do-not-enreg[H] hidden-struct-arg "field V10._dateData (fldOffset=0x0)" P-DEP
; V26 tmp20 [V26,T03] ( 3, 24 ) ref -> ecx "arr expr"
; V27 tmp21 [V27,T04] ( 3, 24 ) ref -> ecx "arr expr"
-; V28 tmp22 [V28,T05] ( 3, 24 ) ref -> edi "arr expr"
-; V29 tmp23 [V29,T11] ( 2, 16 ) ref -> edx "argument with side effect"
-; V30 tmp24 [V30,T12] ( 2, 16 ) ref -> ecx "argument with side effect"
-; V31 tmp25 [V31,T21] ( 2, 8 ) ref -> edx "argument with side effect"
-; V32 tmp26 [V32,T22] ( 2, 8 ) ref -> edi "argument with side effect"
-; V33 tmp27 [V33,T13] ( 3, 12 ) ref -> ecx "arr expr"
-; V34 tmp28 [V34,T14] ( 3, 12 ) ref -> eax "arr expr"
-; V35 tmp29 [V35,T23] ( 2, 8 ) ref -> edx "argument with side effect"
-; V36 tmp30 [V36,T24] ( 2, 8 ) ref -> ecx "argument with side effect"
-; V37 tmp31 [V37,T15] ( 3, 12 ) ref -> eax "arr expr"
-; V38 tmp32 [V38,T25] ( 2, 8 ) ref -> edx "argument with side effect"
-; V39 tmp33 [V39,T26] ( 2, 8 ) ref -> ecx "argument with side effect"
-; V40 tmp34 [V40,T27] ( 2, 8 ) ref -> edx "argument with side effect"
-; V41 EHSlots [V41 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
-;* V42 cse0 [V42,T29] ( 0, 0 ) byref -> zero-ref "CSE - moderate"
-; V43 cse1 [V43,T06] ( 7, 22 ) byref -> [ebp-0x80] spill-single-def "CSE - moderate"
-; V44 cse2 [V44,T07] ( 6, 20 ) int -> ebx "CSE - moderate"
-; V45 cse3 [V45,T16] ( 7, 11 ) int -> [ebp-0x6C] multi-def "CSE - moderate"
+; V28 tmp22 [V28,T05] ( 3, 24 ) ref -> edx "arr expr"
+; V29 tmp23 [V29,T19] ( 2, 8 ) ref -> edx "argument with side effect"
+; V30 tmp24 [V30,T20] ( 2, 8 ) ref -> [ebp-0x84] spill-single-def "argument with side effect"
+; V31 tmp25 [V31,T11] ( 3, 12 ) ref -> ecx "arr expr"
+; V32 tmp26 [V32,T12] ( 3, 12 ) ref -> edx "arr expr"
+; V33 tmp27 [V33,T13] ( 3, 12 ) ref -> edx "arr expr"
+; V34 tmp28 [V34,T21] ( 2, 8 ) ref -> edx "argument with side effect"
+; V35 EHSlots [V35 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
+;* V36 cse0 [V36,T23] ( 0, 0 ) byref -> zero-ref "CSE - moderate"
+; V37 cse1 [V37,T06] ( 7, 22 ) byref -> [ebp-0x88] spill-single-def "CSE - moderate"
+; V38 cse2 [V38,T07] ( 6, 20 ) int -> ebx "CSE - moderate"
+; V39 cse3 [V39,T14] ( 7, 11 ) int -> edi multi-def "CSE - moderate"
;
-; Lcl frame size = 116
+; Lcl frame size = 124
G_M56215_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -64,7 +58,7 @@ G_M56215_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 116
+ sub esp, 124
xorps xmm4, xmm4
movups xmmword ptr [ebp-0x58], xmm4
movups xmmword ptr [ebp-0x48], xmm4
@@ -93,7 +87,6 @@ G_M56215_IG03: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
je G_M56215_IG12
;; size=25 bbWeight=1 PerfScore 7.00
G_M56215_IG04: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
- mov dword ptr [ebp-0x6C], edi
push edi
lea ecx, [ebp-0x38]
lea edx, [ebp-0x40]
@@ -110,8 +103,8 @@ G_M56215_IG04: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; byrRegs -[eax]
call [CORINFO_HELP_READYTORUN_GCSTATIC_BASE]
; byrRegs +[eax]
- mov bword ptr [ebp-0x80], eax
- ; GC ptr vars +{V43}
+ mov bword ptr [ebp-0x88], eax
+ ; GC ptr vars +{V37}
mov ecx, gword ptr [eax+0x1C]
; gcrRegs +[ecx]
mov edx, dword ptr [ebp-0x64]
@@ -121,7 +114,7 @@ G_M56215_IG04: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov edx, dword ptr [ecx+4*edx+0x10]
mov dword ptr [ebp-0x44], edx
mov ecx, gword ptr [esi+0x0C]
- mov gword ptr [ebp-0x70], ecx
+ mov gword ptr [ebp-0x6C], ecx
; GC ptr vars +{V06}
lea ecx, [ebp-0x40]
; gcrRegs -[ecx]
@@ -131,7 +124,7 @@ G_M56215_IG04: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov dword ptr [ebp-0x68], eax
mov ecx, eax
call [System.IO.Packaging.PackageXmlStringTable:CheckIdRange(int)]
- mov eax, bword ptr [ebp-0x80]
+ mov eax, bword ptr [ebp-0x88]
; byrRegs +[eax]
mov ecx, gword ptr [eax+0x1C]
; gcrRegs +[ecx]
@@ -141,34 +134,33 @@ G_M56215_IG04: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
lea edx, [edx+2*edx]
mov edx, gword ptr [ecx+4*edx+0x08]
; gcrRegs +[edx]
- mov gword ptr [ebp-0x74], edx
+ mov gword ptr [ebp-0x70], edx
; GC ptr vars +{V07}
mov ecx, dword ptr [ebp-0x44]
; gcrRegs -[ecx]
call [System.IO.Packaging.PackageXmlStringTable:CheckIdRange(int)]
; gcrRegs -[edx]
; byrRegs -[eax]
- mov ecx, gword ptr [ebp-0x70]
- ; gcrRegs +[ecx]
- mov edx, gword ptr [ebp-0x74]
- ; gcrRegs +[edx]
- mov eax, bword ptr [ebp-0x80]
+ mov eax, bword ptr [ebp-0x88]
; byrRegs +[eax]
- mov edi, gword ptr [eax+0x1C]
- ; gcrRegs +[edi]
- mov eax, dword ptr [ebp-0x44]
- ; byrRegs -[eax]
- cmp eax, dword ptr [edi+0x04]
+ mov edx, gword ptr [eax+0x1C]
+ ; gcrRegs +[edx]
+ mov ecx, dword ptr [ebp-0x44]
+ cmp ecx, dword ptr [edx+0x04]
jae G_M56215_IG10
- lea eax, [eax+2*eax]
- push gword ptr [edi+4*eax+0x08]
+ lea ecx, [ecx+2*ecx]
+ push gword ptr [edx+4*ecx+0x08]
+ mov edx, gword ptr [ebp-0x70]
+ mov ecx, gword ptr [ebp-0x6C]
+ ; gcrRegs +[ecx]
cmp dword ptr [ecx], ecx
; GC ptr vars -{V06 V07}
call [<unknown method>]
- ; gcrRegs -[ecx edx edi]
+ ; gcrRegs -[ecx edx]
+ ; byrRegs -[eax]
lea ecx, [ebp-0x40]
mov edx, ebx
- ;; size=194 bbWeight=4 PerfScore 320.00
+ ;; size=200 bbWeight=4 PerfScore 316.00
G_M56215_IG05: ; bbWeight=4, extend
call [<unknown method>]
; gcrRegs +[eax]
@@ -183,11 +175,14 @@ G_M56215_IG06: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs -[eax]
cmp dword ptr [ebp-0x44], 6
jne G_M56215_IG07
- mov edi, gword ptr [esi+0x0C]
- ; gcrRegs +[edi]
+ mov eax, gword ptr [esi+0x0C]
+ ; gcrRegs +[eax]
+ mov gword ptr [ebp-0x78], eax
+ ; GC ptr vars +{V11}
mov ecx, 10
call [System.IO.Packaging.PackageXmlStringTable:CheckIdRange(int)]
- mov eax, bword ptr [ebp-0x80]
+ ; gcrRegs -[eax]
+ mov eax, bword ptr [ebp-0x88]
; byrRegs +[eax]
mov ecx, gword ptr [eax+0x1C]
; gcrRegs +[ecx]
@@ -195,65 +190,67 @@ G_M56215_IG06: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
jbe G_M56215_IG10
mov edx, gword ptr [ecx+0x80]
; gcrRegs +[edx]
- mov gword ptr [ebp-0x78], edx
+ mov gword ptr [ebp-0x7C], edx
; GC ptr vars +{V12}
mov ecx, 1
; gcrRegs -[ecx]
call [System.IO.Packaging.PackageXmlStringTable:CheckIdRange(int)]
; gcrRegs -[edx]
; byrRegs -[eax]
- mov ecx, edi
- ; gcrRegs +[ecx]
- mov edi, gword ptr [ebp-0x78]
- mov edx, edi
+ mov eax, bword ptr [ebp-0x88]
+ ; byrRegs +[eax]
+ mov edx, gword ptr [eax+0x1C]
; gcrRegs +[edx]
- mov edi, bword ptr [ebp-0x80]
- ; gcrRegs -[edi]
- ; byrRegs +[edi]
- mov eax, gword ptr [edi+0x1C]
- ; gcrRegs +[eax]
- cmp dword ptr [eax+0x04], 1
+ cmp dword ptr [edx+0x04], 1
jbe G_M56215_IG10
- push gword ptr [eax+0x14]
+ push gword ptr [edx+0x14]
+ mov edx, gword ptr [ebp-0x7C]
+ mov ecx, gword ptr [ebp-0x78]
+ ; gcrRegs +[ecx]
cmp dword ptr [ecx], ecx
- ; GC ptr vars -{V12}
+ ; GC ptr vars -{V11 V12}
call [<unknown method>]
- ; gcrRegs -[eax ecx edx]
+ ; gcrRegs -[ecx edx]
+ ; byrRegs -[eax]
mov eax, gword ptr [esi+0x0C]
; gcrRegs +[eax]
- mov gword ptr [ebp-0x7C], eax
+ mov gword ptr [ebp-0x80], eax
; GC ptr vars +{V13}
mov ecx, 6
call [System.IO.Packaging.PackageXmlStringTable:CheckIdRange(int)]
; gcrRegs -[eax]
- mov ecx, gword ptr [ebp-0x7C]
- ; gcrRegs +[ecx]
+ mov edx, bword ptr [ebp-0x88]
+ ; byrRegs +[edx]
+ mov edx, gword ptr [edx+0x1C]
+ ; gcrRegs +[edx]
+ ; byrRegs -[edx]
+ cmp dword ptr [edx+0x04], 6
+ jbe G_M56215_IG10
+ push gword ptr [edx+0x50]
mov edx, dword ptr [(reloc)] ; const ptr
+ ; gcrRegs -[edx]
mov edx, gword ptr [edx]
; gcrRegs +[edx]
- mov eax, gword ptr [edi+0x1C]
- ; gcrRegs +[eax]
- cmp dword ptr [eax+0x04], 6
- jbe G_M56215_IG10
- push gword ptr [eax+0x50]
+ mov ecx, gword ptr [ebp-0x80]
+ ; gcrRegs +[ecx]
cmp dword ptr [ecx], ecx
- ; GC ptr vars -{V13 V43}
+ ; GC ptr vars -{V13 V37}
...
+29 (+7.16%) : 209613.dasm - System.IO.Compression.DeflateStream:ReadCore(System.Span`1[ubyte]):int:this (FullOpts)
@@ -26,24 +26,23 @@
; V14 tmp10 [V14,T11] ( 2, 8 ) ref -> edx class-hnd "Inlining Arg" <ubyte[]>
; V15 tmp11 [V15 ] ( 2, 8 ) struct (12) [ebp-0x20] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <System.Memory`1[ubyte]>
; V16 tmp12 [V16 ] ( 2, 8 ) struct (12) [ebp-0x2C] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <System.ReadOnlyMemory`1[ubyte]>
-; V17 tmp13 [V17,T08] ( 2, 10 ) byref -> edx "field V05._reference (fldOffset=0x0)" P-INDEP
-; V18 tmp14 [V18,T05] ( 2, 16 ) int -> eax "field V05._length (fldOffset=0x4)" P-INDEP
+; V17 tmp13 [V17,T08] ( 2, 10 ) byref -> ecx "field V05._reference (fldOffset=0x0)" P-INDEP
+; V18 tmp14 [V18,T05] ( 2, 16 ) int -> edx "field V05._length (fldOffset=0x4)" P-INDEP
; V19 tmp15 [V19,T12] ( 2, 8 ) ref -> [ebp-0x20] do-not-enreg[H] hidden-struct-arg "field V15._object (fldOffset=0x0)" P-DEP
-; V20 tmp16 [V20,T17] ( 2, 8 ) int -> [ebp-0x1C] do-not-enreg[H] hidden-struct-arg "field V15._index (fldOffset=0x4)" P-DEP
-; V21 tmp17 [V21,T18] ( 2, 8 ) int -> [ebp-0x18] do-not-enreg[H] hidden-struct-arg "field V15._length (fldOffset=0x8)" P-DEP
+; V20 tmp16 [V20,T16] ( 2, 8 ) int -> [ebp-0x1C] do-not-enreg[H] hidden-struct-arg "field V15._index (fldOffset=0x4)" P-DEP
+; V21 tmp17 [V21,T17] ( 2, 8 ) int -> [ebp-0x18] do-not-enreg[H] hidden-struct-arg "field V15._length (fldOffset=0x8)" P-DEP
; V22 tmp18 [V22,T13] ( 2, 8 ) ref -> [ebp-0x2C] do-not-enreg[H] hidden-struct-arg "field V16._object (fldOffset=0x0)" P-DEP
-; V23 tmp19 [V23,T19] ( 2, 8 ) int -> [ebp-0x28] do-not-enreg[H] hidden-struct-arg "field V16._index (fldOffset=0x4)" P-DEP
-; V24 tmp20 [V24,T20] ( 2, 8 ) int -> [ebp-0x24] do-not-enreg[H] hidden-struct-arg "field V16._length (fldOffset=0x8)" P-DEP
+; V23 tmp19 [V23,T18] ( 2, 8 ) int -> [ebp-0x28] do-not-enreg[H] hidden-struct-arg "field V16._index (fldOffset=0x4)" P-DEP
+; V24 tmp20 [V24,T19] ( 2, 8 ) int -> [ebp-0x24] do-not-enreg[H] hidden-struct-arg "field V16._length (fldOffset=0x8)" P-DEP
; V25 tmp21 [V25,T04] ( 6, 17.50) int -> edi "V01.[004..008)"
-; V26 tmp22 [V26,T25] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
-; V27 tmp23 [V27,T21] ( 2, 8 ) int -> edx "Cast away GC"
-; V28 tmp24 [V28,T14] ( 2, 8 ) ref -> ecx "argument with side effect"
-; V29 tmp25 [V29,T22] ( 2, 8 ) int -> edx "argument with side effect"
-; V30 tmp26 [V30,T15] ( 2, 8 ) ref -> ecx "argument with side effect"
-; V31 tmp27 [V31,T16] ( 2, 8 ) ref -> eax "argument with side effect"
-; V32 cse0 [V32,T23] ( 3, 6 ) ref -> edx "CSE - conservative"
-; V33 cse1 [V33,T24] ( 3, 6 ) ref -> edx "CSE - conservative"
-; V34 cse2 [V34,T02] ( 13, 25.50) int -> ebx "CSE - aggressive"
+; V26 tmp22 [V26,T24] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
+; V27 tmp23 [V27,T20] ( 2, 8 ) int -> edx "Cast away GC"
+; V28 tmp24 [V28,T21] ( 2, 8 ) int -> edx "argument with side effect"
+; V29 tmp25 [V29,T14] ( 2, 8 ) ref -> ecx "argument with side effect"
+; V30 tmp26 [V30,T15] ( 2, 8 ) ref -> eax "argument with side effect"
+; V31 cse0 [V31,T22] ( 3, 6 ) ref -> edx "CSE - moderate"
+; V32 cse1 [V32,T23] ( 3, 6 ) ref -> edx "CSE - moderate"
+; V33 cse2 [V33,T02] ( 13, 25.50) int -> ebx "CSE - aggressive"
;
; Lcl frame size = 40
@@ -67,7 +66,7 @@ G_M15958_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov edi, dword ptr [ebp+0x0C]
mov ebx, dword ptr [(reloc)] ; const ptr
cmp dword ptr [esi+ebx+0x10], 0
- jne G_M15958_IG15
+ jne G_M15958_IG20
xor ecx, ecx
cmp gword ptr [esi+ebx], 0
sete cl
@@ -96,49 +95,47 @@ G_M15958_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000
G_M15958_IG04: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov eax, gword ptr [esi+ebx+0x04]
; gcrRegs +[eax]
- mov ecx, eax
- ; gcrRegs +[ecx]
- mov gword ptr [ebp-0x30], ecx
+ mov gword ptr [ebp-0x30], eax
; GC ptr vars +{V08}
- mov eax, edi
- ; gcrRegs -[eax]
- mov edx, bword ptr [ebp+0x08]
- ; byrRegs +[edx]
- cmp byte ptr [ecx], cl
- test eax, eax
+ mov edx, edi
+ mov ecx, bword ptr [ebp+0x08]
+ ; byrRegs +[ecx]
+ cmp byte ptr [eax], al
+ test edx, edx
jne SHORT G_M15958_IG06
- ;; size=20 bbWeight=8 PerfScore 70.00
+ ;; size=18 bbWeight=8 PerfScore 68.00
G_M15958_IG05: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[ecx]
- ; byrRegs -[edx]
+ ; gcrRegs -[eax]
+ ; byrRegs -[ecx]
; GC ptr vars -{V08}
- xor eax, eax
+ xor edx, edx
jmp SHORT G_M15958_IG07
;; size=4 bbWeight=2 PerfScore 4.50
-G_M15958_IG06: ; bbWeight=2, gcVars=00000001 {V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000004 {edx}, gcvars, byref
- ; byrRegs +[edx]
+G_M15958_IG06: ; bbWeight=2, gcVars=00000001 {V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, gcvars, byref
+ ; byrRegs +[ecx]
; GC ptr vars +{V00 V08}
push edi
- push edx
+ push ecx
call [<unknown method>]
- ; byrRegs -[edx] +[eax]
+ ; byrRegs -[ecx] +[eax]
mov bword ptr [ebp-0x14], eax
- mov ecx, gword ptr [ebp-0x30]
- ; gcrRegs +[ecx]
mov edx, bword ptr [ebp-0x14]
; byrRegs +[edx]
push edi
+ mov ecx, gword ptr [ebp-0x30]
+ ; gcrRegs +[ecx]
; GC ptr vars -{V00 V08}
call [<unknown method>]
; gcrRegs -[ecx]
; byrRegs -[eax edx]
- ;; size=24 bbWeight=2 PerfScore 24.00
+ mov edx, eax
+ ;; size=26 bbWeight=2 PerfScore 24.50
G_M15958_IG07: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
xor ecx, ecx
; byrRegs +[ecx]
mov bword ptr [ebp-0x14], ecx
- mov dword ptr [ebp-0x10], eax
- test eax, eax
+ mov dword ptr [ebp-0x10], edx
+ test edx, edx
jne G_M15958_IG13
;; size=16 bbWeight=8 PerfScore 28.00
G_M15958_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
@@ -148,7 +145,7 @@ G_M15958_IG08: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
call [System.IO.Compression.DeflateStream:get_InflatorIsFinished():ubyte:this]
; gcrRegs -[ecx]
test eax, eax
- jne G_M15958_IG13
+ jne G_M15958_IG12
mov ecx, gword ptr [esi+ebx+0x04]
; gcrRegs +[ecx]
mov edx, dword ptr [(reloc)] ; const ptr
@@ -173,11 +170,11 @@ G_M15958_IG09: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
call [<unknown method>]
; gcrRegs -[eax ecx edx]
test eax, eax
- jle SHORT G_M15958_IG12
+ jle SHORT G_M15958_IG14
mov edx, gword ptr [esi+ebx+0x0C]
; gcrRegs +[edx]
cmp dword ptr [edx+0x04], eax
- jl G_M15958_IG17
+ jl G_M15958_IG22
mov ecx, gword ptr [esi+ebx+0x04]
; gcrRegs +[ecx]
mov gword ptr [ebp-0x34], ecx
@@ -210,32 +207,42 @@ G_M15958_IG10: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
G_M15958_IG11: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[esi]
mov esi, dword ptr [ebp-0x10]
- jmp SHORT G_M15958_IG13
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M15958_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov edx, esi
+ jmp SHORT G_M15958_IG15
+ ;; size=7 bbWeight=0.50 PerfScore 1.62
+G_M15958_IG12: ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov edx, dword ptr [ebp-0x10]
+ jmp SHORT G_M15958_IG15
+ ;; size=5 bbWeight=2 PerfScore 6.00
+G_M15958_IG13: ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov edx, dword ptr [ebp-0x10]
+ jmp SHORT G_M15958_IG15
+ ;; size=5 bbWeight=4 PerfScore 12.00
+G_M15958_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi]
call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
; byrRegs +[eax]
cmp byte ptr [eax+0x68], 0
- je SHORT G_M15958_IG13
+ je SHORT G_M15958_IG19
test edi, edi
- je SHORT G_M15958_IG13
+ je SHORT G_M15958_IG18
mov eax, gword ptr [esi+ebx+0x04]
; gcrRegs +[eax]
; byrRegs -[eax]
mov edx, dword ptr [(reloc)] ; const ptr
cmp byte ptr [eax+edx], 0
- jne SHORT G_M15958_IG13
+ jne SHORT G_M15958_IG17
mov eax, gword ptr [esi+ebx+0x04]
mov edx, dword ptr [(reloc)] ; const ptr
cmp byte ptr [eax+edx], 0
- jne SHORT G_M15958_IG16
- ;; size=48 bbWeight=0.50 PerfScore 12.12
-G_M15958_IG13: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ mov edx, dword ptr [ebp-0x10]
+ jne SHORT G_M15958_IG21
+ ;; size=51 bbWeight=0.50 PerfScore 12.62
+G_M15958_IG15: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax esi]
- mov eax, dword ptr [ebp-0x10]
- ;; size=3 bbWeight=1 PerfScore 1.00
-G_M15958_IG14: ; bbWeight=1, epilog, nogc, extend
+ mov eax, edx
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M15958_IG16: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -243,19 +250,31 @@ G_M15958_IG14: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret 8
;; size=10 bbWeight=1 PerfScore 4.50
-G_M15958_IG15: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M15958_IG17: ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ mov edx, dword ptr [ebp-0x10]
+ jmp SHORT G_M15958_IG15
+ ;; size=5 bbWeight=0.25 PerfScore 0.75
+G_M15958_IG18: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov edx, dword ptr [ebp-0x10]
+ jmp SHORT G_M15958_IG15
+ ;; size=5 bbWeight=0.25 PerfScore 0.75
+G_M15958_IG19: ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+ mov edx, dword ptr [ebp-0x10]
+ jmp SHORT G_M15958_IG15
+ ;; size=5 bbWeight=0.25 PerfScore 0.75
+G_M15958_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call [System.IO.Compression.DeflateStream:<EnsureDecompressionMode>g__ThrowCannotReadFromDeflateStreamException|43_0()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M15958_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M15958_IG21: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call [System.IO.Compression.DeflateStream:ThrowTruncatedInvalidData()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M15958_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M15958_IG22: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
call [System.IO.Compression.DeflateStream:ThrowGenericInvalidData()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 405, prolog size 27, PerfScore 355.71, instruction count 125, allocated bytes for code 405 (MethodHash=2e44c1a9) for method System.IO.Compression.DeflateStream:ReadCore(System.Span`1[ubyte]):int:this (FullOpts)
+; Total bytes of code 434, prolog size 27, PerfScore 374.33, instruction count 137, allocated bytes for code 434 (MethodHash=2e44c1a9) for method System.IO.Compression.DeflateStream:ReadCore(System.Span`1[ubyte]):int:this (FullOpts)
; ============================================================
+15 (+7.89%) : 21996.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
@@ -8,29 +8,31 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 9, 5.50) byref -> edi this single-def
+; V00 this [V00,T01] ( 8, 5 ) byref -> edi this single-def
; V01 arg1 [V01,T00] ( 11, 7 ) int -> esi single-def
; V02 arg2 [V02,T02] ( 9, 5 ) int -> ebx single-def
-; V03 loc0 [V03,T18] ( 2, 1 ) ref -> [ebp-0x10] class-hnd spill-single-def <<unknown class>>
-; V04 loc1 [V04,T19] ( 2, 1 ) ref -> [ebp-0x14] class-hnd spill-single-def <<unknown class>>
-; V05 tmp0 [V05,T03] ( 3, 3 ) ref -> edx single-def "arr expr"
-; V06 tmp1 [V06,T04] ( 3, 3 ) ref -> eax single-def "arr expr"
-; V07 tmp2 [V07,T11] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
-; V08 tmp3 [V08,T12] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-; V09 tmp4 [V09,T05] ( 3, 3 ) ref -> edx single-def "arr expr"
-; V10 tmp5 [V10,T06] ( 3, 3 ) ref -> ecx single-def "arr expr"
-; V11 tmp6 [V11,T13] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-;* V12 tmp7 [V12,T20] ( 0, 0 ) int -> zero-ref "argument with side effect"
-; V13 tmp8 [V13,T14] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
-; V14 tmp9 [V14,T07] ( 3, 3 ) ref -> edx single-def "arr expr"
-; V15 tmp10 [V15,T08] ( 3, 3 ) ref -> ecx single-def "arr expr"
-; V16 tmp11 [V16,T15] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-; V17 tmp12 [V17,T17] ( 2, 2 ) int -> esi "argument with side effect"
-; V18 tmp13 [V18,T16] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
-; V19 cse0 [V19,T09] ( 5, 2.50) ref -> ecx "CSE - moderate"
-; V20 cse1 [V20,T10] ( 4, 2 ) ref -> ecx "CSE - conservative"
+; V03 loc0 [V03,T21] ( 2, 1 ) ref -> [ebp-0x14] class-hnd spill-single-def <<unknown class>>
+; V04 loc1 [V04,T22] ( 2, 1 ) ref -> [ebp-0x18] class-hnd spill-single-def <<unknown class>>
+; V05 tmp0 [V05,T03] ( 3, 3 ) ref -> eax single-def "arr expr"
+; V06 tmp1 [V06,T08] ( 2, 2 ) ref -> edx single-def "arr expr"
+; V07 tmp2 [V07,T09] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
+; V08 tmp3 [V08,T10] ( 2, 2 ) ref -> eax single-def "argument with side effect"
+; V09 tmp4 [V09,T04] ( 3, 3 ) ref -> edx single-def "arr expr"
+; V10 tmp5 [V10,T11] ( 2, 2 ) ref -> ecx single-def "arr expr"
+; V11 tmp6 [V11,T12] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V12 tmp7 [V12,T13] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
+; V13 tmp8 [V13,T05] ( 3, 3 ) ref -> edx single-def "arr expr"
+; V14 tmp9 [V14,T14] ( 2, 2 ) ref -> ecx single-def "arr expr"
+; V15 tmp10 [V15,T15] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V16 tmp11 [V16,T16] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
+; V17 cse0 [V17,T06] ( 5, 2.50) ref -> ecx "CSE - moderate"
+; V18 cse1 [V18,T07] ( 4, 2 ) ref -> ecx "CSE - moderate"
+; V19 cse2 [V19,T17] ( 3, 1.50) ref -> [ebp-0x1C] spill-single-def "CSE - moderate"
+; V20 cse3 [V20,T18] ( 3, 1.50) int -> [ebp-0x10] spill-single-def "CSE - moderate"
+; V21 cse4 [V21,T19] ( 3, 1.50) int -> eax "CSE - moderate"
+; V22 cse5 [V22,T20] ( 3, 1.50) int -> eax "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M28033_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -38,7 +40,7 @@ G_M28033_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 8
+ sub esp, 16
mov edi, ecx
; byrRegs +[edi]
mov esi, edx
@@ -46,47 +48,56 @@ G_M28033_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
;; size=16 bbWeight=1 PerfScore 6.00
G_M28033_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
cmp esi, ebx
- je G_M28033_IG04
+ je G_M28033_IG05
;; size=8 bbWeight=1 PerfScore 1.25
G_M28033_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
mov ecx, gword ptr [edi+0x08]
; gcrRegs +[ecx]
mov edx, gword ptr [edi]
; gcrRegs +[edx]
- cmp esi, dword ptr [edx+0x04]
- jae G_M28033_IG05
- mov edx, gword ptr [edx+4*esi+0x08]
- mov eax, gword ptr [edi]
+ mov gword ptr [ebp-0x1C], edx
+ ; GC ptr vars +{V19}
+ mov eax, edx
; gcrRegs +[eax]
- cmp ebx, dword ptr [eax+0x04]
- jae G_M28033_IG05
- push gword ptr [eax+4*ebx+0x08]
+ mov edx, dword ptr [eax+0x04]
+ ; gcrRegs -[edx]
+ mov dword ptr [ebp-0x10], edx
+ cmp esi, edx
+ jae G_M28033_IG06
+ mov eax, gword ptr [eax+4*esi+0x08]
+ mov edx, gword ptr [ebp-0x1C]
+ ; gcrRegs +[edx]
+ cmp ebx, dword ptr [ebp-0x10]
+ jae G_M28033_IG06
+ push gword ptr [edx+4*ebx+0x08]
+ mov edx, eax
+ ; GC ptr vars -{V19}
call [<unknown method>]
; gcrRegs -[eax ecx edx]
test eax, eax
- jle SHORT G_M28033_IG04
+ jle SHORT G_M28033_IG05
mov ecx, gword ptr [edi]
; gcrRegs +[ecx]
mov edx, ecx
; gcrRegs +[edx]
- cmp esi, dword ptr [edx+0x04]
- jae SHORT G_M28033_IG05
- mov eax, gword ptr [edx+4*esi+0x08]
- ; gcrRegs +[eax]
- mov gword ptr [ebp-0x10], eax
+ mov eax, dword ptr [edx+0x04]
+ cmp esi, eax
+ jae SHORT G_M28033_IG06
+ mov edx, gword ptr [edx+4*esi+0x08]
+ mov gword ptr [ebp-0x14], edx
; GC ptr vars +{V03}
mov edx, ecx
- cmp ebx, dword ptr [ecx+0x04]
- jae SHORT G_M28033_IG05
+ cmp ebx, eax
+ jae SHORT G_M28033_IG06
push gword ptr [ecx+4*ebx+0x08]
mov ecx, edx
mov edx, esi
; gcrRegs -[edx]
call [CORINFO_HELP_ARRADDR_ST]
- ; gcrRegs -[eax ecx]
+ ; gcrRegs -[ecx]
mov ecx, gword ptr [edi]
; gcrRegs +[ecx]
- push gword ptr [ebp-0x10]
+ push gword ptr [ebp-0x14]
mov edx, ebx
; GC ptr vars -{V03}
call [CORINFO_HELP_ARRADDR_ST]
@@ -94,34 +105,36 @@ G_M28033_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080
mov ecx, gword ptr [edi+0x04]
; gcrRegs +[ecx]
test ecx, ecx
- je SHORT G_M28033_IG04
+ je SHORT G_M28033_IG05
mov edx, ecx
; gcrRegs +[edx]
- cmp esi, dword ptr [edx+0x04]
- jae SHORT G_M28033_IG05
- mov eax, gword ptr [edx+4*esi+0x08]
- ; gcrRegs +[eax]
- mov gword ptr [ebp-0x14], eax
+ mov eax, dword ptr [edx+0x04]
+ cmp esi, eax
+ jae SHORT G_M28033_IG06
+ mov edx, gword ptr [edx+4*esi+0x08]
+ mov gword ptr [ebp-0x18], edx
; GC ptr vars +{V04}
mov edx, ecx
- cmp ebx, dword ptr [ecx+0x04]
- jae SHORT G_M28033_IG05
+ cmp ebx, eax
+ jae SHORT G_M28033_IG06
push gword ptr [ecx+4*ebx+0x08]
mov ecx, edx
mov edx, esi
; gcrRegs -[edx]
call [CORINFO_HELP_ARRADDR_ST]
- ; gcrRegs -[eax ecx]
+ ; gcrRegs -[ecx]
+ ;; size=150 bbWeight=0.50 PerfScore 30.25
+G_M28033_IG04: ; bbWeight=0.50, extend
mov ecx, gword ptr [edi+0x04]
; gcrRegs +[ecx]
- push gword ptr [ebp-0x14]
+ push gword ptr [ebp-0x18]
mov edx, ebx
; GC ptr vars -{V04}
call [CORINFO_HELP_ARRADDR_ST]
; gcrRegs -[ecx]
; byrRegs -[edi]
- ;; size=149 bbWeight=0.50 PerfScore 37.00
-G_M28033_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+ ;; size=14 bbWeight=0.50 PerfScore 3.12
+G_M28033_IG05: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
lea esp, [ebp-0x0C]
pop ebx
pop esi
@@ -129,11 +142,11 @@ G_M28033_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
pop ebp
ret 4
;; size=10 bbWeight=1 PerfScore 4.50
-G_M28033_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M28033_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call [CORINFO_HELP_RNGCHKFAIL]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 190, prolog size 9, PerfScore 48.75, instruction count 67, allocated bytes for code 190 (MethodHash=4064927e) for method System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
+; Total bytes of code 205, prolog size 9, PerfScore 45.12, instruction count 74, allocated bytes for code 205 (MethodHash=4064927e) for method System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
; ============================================================
libraries.pmi.windows.x86.checked.mch
-48 (-23.41%) : 189854.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
@@ -8,24 +8,22 @@
; 1 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 8, 12 ) ref -> esi this class-hnd single-def <System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension>
+; V00 this [V00,T05] ( 8, 12 ) ref -> esi this class-hnd single-def <System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension>
;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Xml.Xsl.XsltContext>
-; V02 arg2 [V02,T08] ( 7, 11 ) ref -> [ebp+0x0C] class-hnd single-def <System.Object[]>
+; V02 arg2 [V02,T06] ( 8, 11.04) ref -> edi class-hnd single-def <System.Object[]>
;* V03 arg3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Xml.XPath.XPathNavigator>
-; V04 loc0 [V04,T03] ( 11, 19 ) int -> ebx
+; V04 loc0 [V04,T00] ( 22, 39.04) int -> ebx
;* V05 tmp0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Object>
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.MethodInfo>
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Object>
; V08 tmp3 [V08,T01] ( 6, 24 ) ref -> eax "arr expr"
-; V09 tmp4 [V09,T02] ( 6, 24 ) ref -> edi "arr expr"
-; V10 tmp5 [V10,T05] ( 4, 16 ) ref -> ecx "argument with side effect"
-; V11 tmp6 [V11,T06] ( 4, 16 ) int -> eax "argument with side effect"
-; V12 tmp7 [V12,T00] ( 15, 56.08) int -> [ebp-0x10] "argument with side effect"
-; V13 tmp8 [V13,T04] ( 5, 16.08) ref -> eax "argument with side effect"
-; V14 tmp9 [V14,T09] ( 3, 6 ) ref -> ecx single-def "argument with side effect"
-; V15 tmp10 [V15,T10] ( 2, 4 ) ref -> edx single-def "argument with side effect"
+; V09 tmp4 [V09,T02] ( 6, 24 ) ref -> eax "arr expr"
+; V10 tmp5 [V10,T03] ( 4, 16 ) ref -> ecx "argument with side effect"
+; V11 tmp6 [V11,T04] ( 4, 16 ) int -> edx "argument with side effect"
+; V12 tmp7 [V12,T07] ( 3, 6 ) ref -> ecx single-def "argument with side effect"
+; V13 tmp8 [V13,T08] ( 2, 4 ) ref -> edx single-def "argument with side effect"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M50779_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -33,86 +31,69 @@ G_M50779_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- push eax
mov esi, ecx
; gcrRegs +[esi]
mov edi, gword ptr [ebp+0x0C]
; gcrRegs +[edi]
- ;; size=12 bbWeight=1 PerfScore 6.50
+ ;; size=11 bbWeight=1 PerfScore 5.50
G_M50779_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ebx, dword ptr [edi+0x04]
dec ebx
- js G_M50779_IG06
+ js SHORT G_M50779_IG06
cmp dword ptr [edi+0x04], ebx
jle SHORT G_M50779_IG05
- ;; size=15 bbWeight=1 PerfScore 7.25
+ ;; size=11 bbWeight=1 PerfScore 7.25
G_M50779_IG03: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp+0x0C], edi
- mov eax, edi
- ; gcrRegs +[eax]
- mov edx, ebx
- mov ecx, gword ptr [eax+4*edx+0x08]
+ mov ecx, gword ptr [edi+4*ebx+0x08]
; gcrRegs +[ecx]
mov eax, gword ptr [esi+0x04]
- cmp edx, dword ptr [eax+0x04]
- jae G_M50779_IG08
- mov eax, dword ptr [eax+4*edx+0x08]
- ; gcrRegs -[eax]
- mov edi, gword ptr [esi+0x1C]
- cmp edx, dword ptr [edi+0x04]
- jae G_M50779_IG08
- mov dword ptr [ebp-0x10], edx
- push gword ptr [edi+4*edx+0x08]
- mov edx, eax
+ ; gcrRegs +[eax]
+ cmp ebx, dword ptr [eax+0x04]
+ jae SHORT G_M50779_IG08
+ mov edx, dword ptr [eax+4*ebx+0x08]
+ mov eax, gword ptr [esi+0x1C]
+ cmp ebx, dword ptr [eax+0x04]
+ jae SHORT G_M50779_IG08
+ push gword ptr [eax+4*ebx+0x08]
call [System.Xml.Xsl.XsltOld.XsltCompileContext+XsltFunctionImpl:ConvertToXPathType(System.Object,int,System.Type):System.Object]
- ; gcrRegs -[ecx edi] +[eax]
+ ; gcrRegs -[ecx]
push eax
- mov edx, dword ptr [ebp-0x10]
- mov ecx, gword ptr [ebp+0x0C]
+ mov edx, ebx
+ mov ecx, edi
; gcrRegs +[ecx]
call CORINFO_HELP_ARRADDR_ST
; gcrRegs -[eax ecx]
dec ebx
- mov edi, gword ptr [ebp+0x0C]
- ; gcrRegs +[edi]
jns SHORT G_M50779_IG03
- ;; size=72 bbWeight=3.96 PerfScore 118.80
+ ;; size=47 bbWeight=3.96 PerfScore 98.01
G_M50779_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M50779_IG06
;; size=2 bbWeight=1 PerfScore 2.00
G_M50779_IG05: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp+0x0C], edi
- mov eax, edi
- ; gcrRegs +[eax]
- mov edx, ebx
- cmp edx, dword ptr [eax+0x04]
+ cmp ebx, dword ptr [edi+0x04]
jae SHORT G_M50779_IG08
- mov ecx, gword ptr [eax+4*edx+0x08]
+ mov ecx, gword ptr [edi+4*ebx+0x08]
; gcrRegs +[ecx]
mov eax, gword ptr [esi+0x04]
- cmp edx, dword ptr [eax+0x04]
+ ; gcrRegs +[eax]
+ cmp ebx, dword ptr [eax+0x04]
jae SHORT G_M50779_IG08
- mov eax, dword ptr [eax+4*edx+0x08]
- ; gcrRegs -[eax]
- mov edi, gword ptr [esi+0x1C]
- cmp edx, dword ptr [edi+0x04]
+ mov edx, dword ptr [eax+4*ebx+0x08]
+ mov eax, gword ptr [esi+0x1C]
+ cmp ebx, dword ptr [eax+0x04]
jae SHORT G_M50779_IG08
- mov dword ptr [ebp-0x10], edx
- push gword ptr [edi+4*edx+0x08]
- mov edx, eax
+ push gword ptr [eax+4*ebx+0x08]
call [System.Xml.Xsl.XsltOld.XsltCompileContext+XsltFunctionImpl:ConvertToXPathType(System.Object,int,System.Type):System.Object]
- ; gcrRegs -[ecx edi] +[eax]
+ ; gcrRegs -[ecx]
push eax
- mov edx, dword ptr [ebp-0x10]
- mov ecx, gword ptr [ebp+0x0C]
+ mov edx, ebx
+ mov ecx, edi
; gcrRegs +[ecx]
call CORINFO_HELP_ARRADDR_ST
; gcrRegs -[eax ecx]
dec ebx
- mov edi, gword ptr [ebp+0x0C]
- ; gcrRegs +[edi]
jns SHORT G_M50779_IG05
- ;; size=69 bbWeight=0.04 PerfScore 1.36
+ ;; size=52 bbWeight=0.04 PerfScore 1.15
G_M50779_IG06: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x18]
; gcrRegs +[ecx]
@@ -128,19 +109,18 @@ G_M50779_IG06: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
; gcrRegs -[ecx edx esi edi] +[eax]
;; size=21 bbWeight=1 PerfScore 15.00
G_M50779_IG07: ; bbWeight=1, epilog, nogc, extend
- pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 8
- ;; size=8 bbWeight=1 PerfScore 4.50
+ ;; size=7 bbWeight=1 PerfScore 4.00
G_M50779_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax]
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 205, prolog size 7, PerfScore 155.41, instruction count 77, allocated bytes for code 205 (MethodHash=355039a4) for method System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
+; Total bytes of code 157, prolog size 6, PerfScore 132.91, instruction count 63, allocated bytes for code 157 (MethodHash=355039a4) for method System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
; ============================================================
-8 (-15.09%) : 74021.dasm - System.Data.Common.SqlBinaryStorage:Get(int):System.Object:this (FullOpts)
@@ -7,47 +7,42 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 3, 3 ) ref -> [esp+0x00] this class-hnd single-def <System.Data.Common.SqlBinaryStorage>
+; V00 this [V00,T03] ( 3, 3 ) ref -> edi this class-hnd single-def <System.Data.Common.SqlBinaryStorage>
; V01 arg1 [V01,T00] ( 4, 4 ) int -> esi single-def
; V02 tmp0 [V02,T01] ( 3, 6 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <System.Data.SqlTypes.SqlBinary>
; V03 tmp1 [V03,T02] ( 3, 6 ) ref -> ecx single-def "arr expr"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M2130_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push edi
push esi
- push ebx
- push eax
- mov gword ptr [esp], ecx
- ; GC ptr vars +{V00}
+ mov edi, ecx
+ ; gcrRegs +[edi]
mov esi, edx
- ;; size=9 bbWeight=1 PerfScore 5.25
-G_M2130_IG02: ; bbWeight=1, gcVars=00000008 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ;; size=6 bbWeight=1 PerfScore 2.50
+G_M2130_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E ; System.Data.SqlTypes.SqlBinary
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
- lea edi, bword ptr [eax+0x04]
- ; byrRegs +[edi]
- mov ebx, gword ptr [esp]
- ; gcrRegs +[ebx]
- mov ecx, gword ptr [ebx+0x24]
+ ; gcr arg pop 0
+ mov ecx, gword ptr [edi+0x24]
; gcrRegs +[ecx]
cmp esi, dword ptr [ecx+0x04]
jae SHORT G_M2130_IG04
lea esi, bword ptr [ecx+4*esi+0x08]
; byrRegs +[esi]
- ; GC ptr vars -{V00}
+ lea edi, bword ptr [eax+0x04]
+ ; gcrRegs -[edi]
+ ; byrRegs +[edi]
call CORINFO_HELP_ASSIGN_BYREF
- ; gcrRegs -[ecx ebx]
- ;; size=33 bbWeight=1 PerfScore 10.75
+ ; gcrRegs -[ecx]
+ ;; size=30 bbWeight=1 PerfScore 9.75
G_M2130_IG03: ; bbWeight=1, epilog, nogc, extend
- pop ecx
- pop ebx
pop esi
pop edi
ret
- ;; size=5 bbWeight=1 PerfScore 3.00
+ ;; size=3 bbWeight=1 PerfScore 2.00
G_M2130_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax]
; byrRegs -[esi edi]
@@ -55,6 +50,6 @@ G_M2130_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, by
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 53, prolog size 4, PerfScore 19.00, instruction count 22, allocated bytes for code 53 (MethodHash=63a8f7ad) for method System.Data.Common.SqlBinaryStorage:Get(int):System.Object:this (FullOpts)
+; Total bytes of code 45, prolog size 2, PerfScore 14.25, instruction count 17, allocated bytes for code 45 (MethodHash=63a8f7ad) for method System.Data.Common.SqlBinaryStorage:Get(int):System.Object:this (FullOpts)
; ============================================================
-13 (-14.29%) : 180751.dasm - System.Xml.XmlSqlBinaryReader:ImplReadPI():this (FullOpts)
@@ -12,37 +12,29 @@
;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
; V03 tmp2 [V03,T01] ( 3, 6 ) ref -> edi single-def "arr expr"
; V04 tmp3 [V04,T02] ( 3, 6 ) int -> eax "index expr"
-; TEMP_01 byref -> [ebp-0x0C]
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M3247_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
push edi
push esi
- push eax
- xor eax, eax
- mov dword ptr [ebp-0x0C], eax
mov esi, ecx
; gcrRegs +[esi]
- ;; size=13 bbWeight=1 PerfScore 5.75
+ ;; size=7 bbWeight=1 PerfScore 3.50
G_M3247_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- lea edx, bword ptr [esi+0x9C]
- ; byrRegs +[edx]
- mov bword ptr [ebp-0x0C], edx
mov edi, gword ptr [esi+0x88]
; gcrRegs +[edi]
mov ecx, esi
; gcrRegs +[ecx]
call [System.Xml.XmlSqlBinaryReader:ReadNameRef():int:this]
; gcrRegs -[ecx]
- ; byrRegs -[edx]
cmp eax, dword ptr [edi+0x04]
jae SHORT G_M3247_IG04
mov ecx, gword ptr [edi+4*eax+0x08]
; gcrRegs +[ecx]
- mov edx, bword ptr [ebp-0x0C]
+ lea edx, bword ptr [esi+0x9C]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_ECX
; gcrRegs -[ecx edi]
@@ -58,20 +50,19 @@ G_M3247_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; byrRegs -[edx]
mov dword ptr [esi+0x70], eax
mov dword ptr [esi+0x54], 7
- ;; size=67 bbWeight=1 PerfScore 23.50
+ ;; size=61 bbWeight=1 PerfScore 21.50
G_M3247_IG03: ; bbWeight=1, epilog, nogc, extend
- pop ecx
pop esi
pop edi
pop ebp
ret
- ;; size=5 bbWeight=1 PerfScore 3.00
+ ;; size=4 bbWeight=1 PerfScore 2.50
G_M3247_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[esi]
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 91, prolog size 11, PerfScore 32.25, instruction count 32, allocated bytes for code 91 (MethodHash=7b43f350) for method System.Xml.XmlSqlBinaryReader:ImplReadPI():this (FullOpts)
+; Total bytes of code 78, prolog size 5, PerfScore 27.50, instruction count 26, allocated bytes for code 78 (MethodHash=7b43f350) for method System.Xml.XmlSqlBinaryReader:ImplReadPI():this (FullOpts)
; ============================================================
+9 (+3.56%) : 162729.dasm - Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder
1[ubyte]:SortAndRemoveDuplicates(System.Collections.Generic.IComparer1[ubyte]):this (FullOpts)@@ -9,34 +9,33 @@
; Final local variable assignments
;
; V00 this [V00,T04] ( 10, 16.50) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]>
-; V01 arg1 [V01,T08] ( 4, 6.50) ref -> [ebp-0x18] class-hnd single-def <System.Collections.Generic.IComparer`1[ubyte]>
+; V01 arg1 [V01,T13] ( 4, 6.50) ref -> [ebp-0x20] class-hnd single-def <System.Collections.Generic.IComparer`1[ubyte]>
; V02 loc0 [V02,T03] ( 10, 23 ) int -> ebx
; V03 loc1 [V03,T00] ( 10, 30.50) int -> [ebp-0x10]
-; V04 tmp0 [V04,T06] ( 2, 16 ) int -> ecx "impAppendStmt"
+; V04 tmp0 [V04,T06] ( 2, 16 ) int -> [ebp-0x14] spill-single-def "impAppendStmt"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
-; V06 tmp2 [V06,T22] ( 2, 2 ) ref -> edx class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
+; V06 tmp2 [V06,T21] ( 2, 2 ) ref -> edx class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
; V07 tmp3 [V07,T01] ( 3, 24 ) ref -> ecx class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
-;* V08 tmp4 [V08,T18] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
-; V09 tmp5 [V09,T09] ( 3, 12 ) ref -> ecx class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
-; V10 tmp6 [V10,T17] ( 2, 8 ) ubyte -> edx "Inlining Arg"
-; V11 tmp7 [V11,T16] ( 2, 8 ) ref -> eax class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
+;* V08 tmp4 [V08,T17] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
+; V09 tmp5 [V09,T07] ( 3, 12 ) ref -> ecx class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
+; V10 tmp6 [V10,T16] ( 2, 8 ) ubyte -> edx "Inlining Arg"
+; V11 tmp7 [V11,T14] ( 2, 8 ) ref -> eax class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
;* V13 tmp9 [V13 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V14 tmp10 [V14,T23] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V14 tmp10 [V14,T22] ( 2, 2 ) ref -> edx single-def "argument with side effect"
; V15 tmp11 [V15,T02] ( 3, 24 ) ref -> edi "arr expr"
-; V16 tmp12 [V16,T05] ( 2, 16 ) ref -> ecx "arr expr"
-;* V17 tmp13 [V17,T19] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V18 tmp14 [V18,T07] ( 2, 16 ) int -> edx "argument with side effect"
-; V19 tmp15 [V19,T10] ( 3, 12 ) ref -> edx "arr expr"
-; V20 tmp16 [V20,T11] ( 3, 12 ) ref -> ecx "arr expr"
-; V21 cse0 [V21,T21] ( 3, 2.50) int -> ecx "CSE - conservative"
-; V22 cse1 [V22,T12] ( 2, 8 ) ref -> ecx "CSE - moderate"
-; V23 cse2 [V23,T14] ( 3, 12 ) int -> edx "CSE - moderate"
-; V24 cse3 [V24,T13] ( 3, 12 ) ref -> [ebp-0x1C] spill-single-def "CSE - moderate"
-; V25 cse4 [V25,T20] ( 3, 6 ) ref -> ecx "CSE - conservative"
-; V26 cse5 [V26,T15] ( 3, 12 ) int -> [ebp-0x14] spill-single-def "CSE - moderate"
+; V16 tmp12 [V16,T05] ( 2, 16 ) ref -> edx "arr expr"
+; V17 tmp13 [V17,T08] ( 3, 12 ) ref -> edx "arr expr"
+; V18 tmp14 [V18,T15] ( 2, 8 ) ref -> ecx "arr expr"
+; V19 cse0 [V19,T20] ( 3, 2.50) int -> ecx "CSE - moderate"
+; V20 cse1 [V20,T09] ( 2, 8 ) ref -> ecx "CSE - moderate"
+; V21 cse2 [V21,T11] ( 3, 12 ) int -> edx "CSE - moderate"
+; V22 cse3 [V22,T10] ( 3, 12 ) ref -> [ebp-0x24] spill-single-def "CSE - moderate"
+; V23 cse4 [V23,T18] ( 3, 6 ) ref -> ecx "CSE - moderate"
+; V24 cse5 [V24,T12] ( 3, 12 ) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V25 cse6 [V25,T19] ( 3, 6 ) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M10347_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -44,7 +43,7 @@ G_M10347_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 16
+ sub esp, 24
mov esi, ecx
; gcrRegs +[esi]
mov edi, edx
@@ -73,7 +72,7 @@ G_M10347_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e
; gcrRegs +[edx]
mov edx, gword ptr [edx+0x04]
push ecx
- mov gword ptr [ebp-0x18], edi
+ mov gword ptr [ebp-0x20], edi
; GC ptr vars +{V01}
push edi
mov ecx, edx
@@ -97,35 +96,36 @@ G_M10347_IG05: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
cmp ebx, edx
jge G_M10347_IG11
mov ecx, gword ptr [ecx+0x04]
- mov gword ptr [ebp-0x1C], ecx
- ; GC ptr vars +{V24}
+ mov gword ptr [ebp-0x24], ecx
+ ; GC ptr vars +{V22}
mov edi, ecx
; gcrRegs +[edi]
mov ecx, dword ptr [edi+0x04]
; gcrRegs -[ecx]
- mov dword ptr [ebp-0x14], ecx
+ mov dword ptr [ebp-0x18], ecx
cmp ebx, ecx
jae G_M10347_IG10
movzx ecx, byte ptr [edi+ebx+0x08]
+ mov dword ptr [ebp-0x14], ecx
cmp eax, edx
jge G_M10347_IG11
- mov edx, ecx
- mov ecx, gword ptr [ebp-0x1C]
- ; gcrRegs +[ecx]
- cmp eax, dword ptr [ebp-0x14]
+ mov edx, gword ptr [ebp-0x24]
+ ; gcrRegs +[edx]
+ cmp eax, dword ptr [ebp-0x18]
jae SHORT G_M10347_IG10
mov dword ptr [ebp-0x10], eax
- movzx ecx, byte ptr [ecx+eax+0x08]
- ; gcrRegs -[ecx]
- push ecx
- mov ecx, gword ptr [ebp-0x18]
+ movzx edx, byte ptr [edx+eax+0x08]
+ ; gcrRegs -[edx]
+ push edx
+ mov ecx, gword ptr [ebp-0x20]
; gcrRegs +[ecx]
- ; GC ptr vars -{V24}
+ mov edx, dword ptr [ebp-0x14]
+ ; GC ptr vars -{V22}
call [<unknown method>]
; gcrRegs -[ecx edi]
test eax, eax
jge SHORT G_M10347_IG07
- ;; size=81 bbWeight=4 PerfScore 118.00
+ ;; size=85 bbWeight=4 PerfScore 125.00
G_M10347_IG06: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
inc ebx
mov ecx, gword ptr [esi+0x04]
@@ -136,7 +136,9 @@ G_M10347_IG06: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov ecx, gword ptr [ecx+0x04]
mov edx, ecx
; gcrRegs +[edx]
- cmp edi, dword ptr [edx+0x04]
+ mov eax, dword ptr [edx+0x04]
+ mov dword ptr [ebp-0x1C], eax
+ cmp edi, eax
jae SHORT G_M10347_IG10
movzx edx, byte ptr [edx+edi+0x08]
; gcrRegs -[edx]
@@ -144,11 +146,11 @@ G_M10347_IG06: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs +[eax]
cmp ebx, dword ptr [eax+0x08]
jge SHORT G_M10347_IG11
- cmp ebx, dword ptr [ecx+0x04]
+ cmp ebx, dword ptr [ebp-0x1C]
jae SHORT G_M10347_IG10
mov byte ptr [ecx+ebx+0x08], dl
mov dword ptr [ebp-0x10], edi
- ;; size=47 bbWeight=2 PerfScore 55.00
+ ;; size=52 bbWeight=2 PerfScore 53.50
G_M10347_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax ecx]
mov edi, dword ptr [ebp-0x10]
@@ -185,6 +187,6 @@ G_M10347_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 253, prolog size 9, PerfScore 229.50, instruction count 92, allocated bytes for code 253 (MethodHash=a3fdd794) for method Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]:SortAndRemoveDuplicates(System.Collections.Generic.IComparer`1[ubyte]):this (FullOpts)
+; Total bytes of code 262, prolog size 9, PerfScore 235.00, instruction count 95, allocated bytes for code 262 (MethodHash=a3fdd794) for method Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]:SortAndRemoveDuplicates(System.Collections.Generic.IComparer`1[ubyte]):this (FullOpts)
; ============================================================
+9 (+3.56%) : 114808.dasm - Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder
1[ubyte]:SortAndRemoveDuplicates(System.Collections.Generic.IComparer1[ubyte]):this (FullOpts)@@ -9,34 +9,33 @@
; Final local variable assignments
;
; V00 this [V00,T04] ( 10, 16.50) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]>
-; V01 arg1 [V01,T08] ( 4, 6.50) ref -> [ebp-0x18] class-hnd single-def <System.Collections.Generic.IComparer`1[ubyte]>
+; V01 arg1 [V01,T13] ( 4, 6.50) ref -> [ebp-0x20] class-hnd single-def <System.Collections.Generic.IComparer`1[ubyte]>
; V02 loc0 [V02,T03] ( 10, 23 ) int -> ebx
; V03 loc1 [V03,T00] ( 10, 30.50) int -> [ebp-0x10]
-; V04 tmp0 [V04,T06] ( 2, 16 ) int -> ecx "impAppendStmt"
+; V04 tmp0 [V04,T06] ( 2, 16 ) int -> [ebp-0x14] spill-single-def "impAppendStmt"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
-; V06 tmp2 [V06,T22] ( 2, 2 ) ref -> edx class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
+; V06 tmp2 [V06,T21] ( 2, 2 ) ref -> edx class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
; V07 tmp3 [V07,T01] ( 3, 24 ) ref -> ecx class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
-;* V08 tmp4 [V08,T18] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
-; V09 tmp5 [V09,T09] ( 3, 12 ) ref -> ecx class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
-; V10 tmp6 [V10,T17] ( 2, 8 ) ubyte -> edx "Inlining Arg"
-; V11 tmp7 [V11,T16] ( 2, 8 ) ref -> eax class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
+;* V08 tmp4 [V08,T17] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
+; V09 tmp5 [V09,T07] ( 3, 12 ) ref -> ecx class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
+; V10 tmp6 [V10,T16] ( 2, 8 ) ubyte -> edx "Inlining Arg"
+; V11 tmp7 [V11,T14] ( 2, 8 ) ref -> eax class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
;* V13 tmp9 [V13 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V14 tmp10 [V14,T23] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V14 tmp10 [V14,T22] ( 2, 2 ) ref -> edx single-def "argument with side effect"
; V15 tmp11 [V15,T02] ( 3, 24 ) ref -> edi "arr expr"
-; V16 tmp12 [V16,T05] ( 2, 16 ) ref -> ecx "arr expr"
-;* V17 tmp13 [V17,T19] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V18 tmp14 [V18,T07] ( 2, 16 ) int -> edx "argument with side effect"
-; V19 tmp15 [V19,T10] ( 3, 12 ) ref -> edx "arr expr"
-; V20 tmp16 [V20,T11] ( 3, 12 ) ref -> ecx "arr expr"
-; V21 cse0 [V21,T21] ( 3, 2.50) int -> ecx "CSE - conservative"
-; V22 cse1 [V22,T12] ( 2, 8 ) ref -> ecx "CSE - moderate"
-; V23 cse2 [V23,T14] ( 3, 12 ) int -> edx "CSE - moderate"
-; V24 cse3 [V24,T13] ( 3, 12 ) ref -> [ebp-0x1C] spill-single-def "CSE - moderate"
-; V25 cse4 [V25,T20] ( 3, 6 ) ref -> ecx "CSE - conservative"
-; V26 cse5 [V26,T15] ( 3, 12 ) int -> [ebp-0x14] spill-single-def "CSE - moderate"
+; V16 tmp12 [V16,T05] ( 2, 16 ) ref -> edx "arr expr"
+; V17 tmp13 [V17,T08] ( 3, 12 ) ref -> edx "arr expr"
+; V18 tmp14 [V18,T15] ( 2, 8 ) ref -> ecx "arr expr"
+; V19 cse0 [V19,T20] ( 3, 2.50) int -> ecx "CSE - moderate"
+; V20 cse1 [V20,T09] ( 2, 8 ) ref -> ecx "CSE - moderate"
+; V21 cse2 [V21,T11] ( 3, 12 ) int -> edx "CSE - moderate"
+; V22 cse3 [V22,T10] ( 3, 12 ) ref -> [ebp-0x24] spill-single-def "CSE - moderate"
+; V23 cse4 [V23,T18] ( 3, 6 ) ref -> ecx "CSE - moderate"
+; V24 cse5 [V24,T12] ( 3, 12 ) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V25 cse6 [V25,T19] ( 3, 6 ) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M10347_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -44,7 +43,7 @@ G_M10347_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 16
+ sub esp, 24
mov esi, ecx
; gcrRegs +[esi]
mov edi, edx
@@ -73,7 +72,7 @@ G_M10347_IG04: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e
; gcrRegs +[edx]
mov edx, gword ptr [edx+0x04]
push ecx
- mov gword ptr [ebp-0x18], edi
+ mov gword ptr [ebp-0x20], edi
; GC ptr vars +{V01}
push edi
mov ecx, edx
@@ -97,35 +96,36 @@ G_M10347_IG05: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
cmp ebx, edx
jge G_M10347_IG11
mov ecx, gword ptr [ecx+0x04]
- mov gword ptr [ebp-0x1C], ecx
- ; GC ptr vars +{V24}
+ mov gword ptr [ebp-0x24], ecx
+ ; GC ptr vars +{V22}
mov edi, ecx
; gcrRegs +[edi]
mov ecx, dword ptr [edi+0x04]
; gcrRegs -[ecx]
- mov dword ptr [ebp-0x14], ecx
+ mov dword ptr [ebp-0x18], ecx
cmp ebx, ecx
jae G_M10347_IG10
movzx ecx, byte ptr [edi+ebx+0x08]
+ mov dword ptr [ebp-0x14], ecx
cmp eax, edx
jge G_M10347_IG11
- mov edx, ecx
- mov ecx, gword ptr [ebp-0x1C]
- ; gcrRegs +[ecx]
- cmp eax, dword ptr [ebp-0x14]
+ mov edx, gword ptr [ebp-0x24]
+ ; gcrRegs +[edx]
+ cmp eax, dword ptr [ebp-0x18]
jae SHORT G_M10347_IG10
mov dword ptr [ebp-0x10], eax
- movzx ecx, byte ptr [ecx+eax+0x08]
- ; gcrRegs -[ecx]
- push ecx
- mov ecx, gword ptr [ebp-0x18]
+ movzx edx, byte ptr [edx+eax+0x08]
+ ; gcrRegs -[edx]
+ push edx
+ mov ecx, gword ptr [ebp-0x20]
; gcrRegs +[ecx]
- ; GC ptr vars -{V24}
+ mov edx, dword ptr [ebp-0x14]
+ ; GC ptr vars -{V22}
call [<unknown method>]
; gcrRegs -[ecx edi]
test eax, eax
jge SHORT G_M10347_IG07
- ;; size=81 bbWeight=4 PerfScore 118.00
+ ;; size=85 bbWeight=4 PerfScore 125.00
G_M10347_IG06: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
inc ebx
mov ecx, gword ptr [esi+0x04]
@@ -136,7 +136,9 @@ G_M10347_IG06: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov ecx, gword ptr [ecx+0x04]
mov edx, ecx
; gcrRegs +[edx]
- cmp edi, dword ptr [edx+0x04]
+ mov eax, dword ptr [edx+0x04]
+ mov dword ptr [ebp-0x1C], eax
+ cmp edi, eax
jae SHORT G_M10347_IG10
movzx edx, byte ptr [edx+edi+0x08]
; gcrRegs -[edx]
@@ -144,11 +146,11 @@ G_M10347_IG06: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs +[eax]
cmp ebx, dword ptr [eax+0x08]
jge SHORT G_M10347_IG11
- cmp ebx, dword ptr [ecx+0x04]
+ cmp ebx, dword ptr [ebp-0x1C]
jae SHORT G_M10347_IG10
mov byte ptr [ecx+ebx+0x08], dl
mov dword ptr [ebp-0x10], edi
- ;; size=47 bbWeight=2 PerfScore 55.00
+ ;; size=52 bbWeight=2 PerfScore 53.50
G_M10347_IG07: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax ecx]
mov edi, dword ptr [ebp-0x10]
@@ -185,6 +187,6 @@ G_M10347_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 253, prolog size 9, PerfScore 229.50, instruction count 92, allocated bytes for code 253 (MethodHash=a3fdd794) for method Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]:SortAndRemoveDuplicates(System.Collections.Generic.IComparer`1[ubyte]):this (FullOpts)
+; Total bytes of code 262, prolog size 9, PerfScore 235.00, instruction count 95, allocated bytes for code 262 (MethodHash=a3fdd794) for method Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]:SortAndRemoveDuplicates(System.Collections.Generic.IComparer`1[ubyte]):this (FullOpts)
; ============================================================
+22 (+7.24%) : 201709.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (FullOpts)
@@ -8,28 +8,26 @@
; 4 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 4, 6 ) byref -> [ebp-0x18] this single-def
+; V00 this [V00,T05] ( 4, 6 ) byref -> [ebp-0x28] this single-def
; V01 arg1 [V01,T02] ( 11, 20 ) ref -> esi class-hnd single-def <System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig]>
-; V02 arg2 [V02,T08] ( 4, 8 ) ref -> ebx class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo>
+; V02 arg2 [V02,T06] ( 4, 8 ) ref -> ebx class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo>
; V03 loc0 [V03,T01] ( 13, 25.50) int -> [ebp-0x10]
; V04 loc1 [V04,T00] ( 16, 43 ) int -> [ebp-0x14]
-; V05 loc2 [V05,T15] ( 3, 6 ) int -> eax
-; V06 tmp0 [V06,T09] ( 2, 8 ) ref -> edi class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig>
-; V07 tmp1 [V07,T10] ( 2, 8 ) ref -> edx class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig>
-; V08 tmp2 [V08,T04] ( 3, 12 ) ref -> edi "arr expr"
-; V09 tmp3 [V09,T05] ( 3, 12 ) ref -> ecx "arr expr"
-;* V10 tmp4 [V10,T18] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-; V11 tmp5 [V11,T11] ( 2, 8 ) ref -> edi "argument with side effect"
-; V12 tmp6 [V12,T06] ( 3, 12 ) ref -> edx "arr expr"
-; V13 tmp7 [V13,T07] ( 3, 12 ) ref -> ecx "arr expr"
-;* V14 tmp8 [V14,T19] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-; V15 tmp9 [V15,T12] ( 2, 8 ) ref -> edx "argument with side effect"
-; V16 cse0 [V16,T16] ( 3, 6 ) int -> ecx "CSE - conservative"
-; V17 cse1 [V17,T13] ( 3, 6 ) ref -> [ebp-0x1C] spill-single-def "CSE - conservative"
-; V18 cse2 [V18,T17] ( 3, 6 ) int -> ecx "CSE - conservative"
-; V19 cse3 [V19,T14] ( 3, 6 ) ref -> [ebp-0x20] spill-single-def "CSE - conservative"
+; V05 loc2 [V05,T13] ( 3, 6 ) int -> eax
+; V06 tmp0 [V06,T07] ( 2, 8 ) ref -> edi class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig>
+; V07 tmp1 [V07,T08] ( 2, 8 ) ref -> edx class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig>
+; V08 tmp2 [V08,T03] ( 3, 12 ) ref -> edi "arr expr"
+; V09 tmp3 [V09,T09] ( 2, 8 ) ref -> ecx "arr expr"
+; V10 tmp4 [V10,T04] ( 3, 12 ) ref -> edx "arr expr"
+; V11 tmp5 [V11,T10] ( 2, 8 ) ref -> ecx "arr expr"
+; V12 cse0 [V12,T14] ( 3, 6 ) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V13 cse1 [V13,T11] ( 3, 6 ) ref -> [ebp-0x2C] spill-single-def "CSE - moderate"
+; V14 cse2 [V14,T15] ( 3, 6 ) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
+; V15 cse3 [V15,T12] ( 3, 6 ) ref -> [ebp-0x30] spill-single-def "CSE - moderate"
+; V16 cse4 [V16,T16] ( 3, 6 ) int -> [ebp-0x20] spill-single-def "CSE - moderate"
+; V17 cse5 [V17,T17] ( 3, 6 ) int -> [ebp-0x24] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 20
+; Lcl frame size = 36
G_M40378_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -37,15 +35,15 @@ G_M40378_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 20
- mov bword ptr [ebp-0x18], ecx
+ sub esp, 36
+ mov bword ptr [ebp-0x28], ecx
; GC ptr vars +{V00}
mov esi, edx
; gcrRegs +[esi]
mov ebx, gword ptr [ebp+0x08]
; gcrRegs +[ebx]
;; size=17 bbWeight=1 PerfScore 6.75
-G_M40378_IG02: ; bbWeight=1, gcVars=00000008 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M40378_IG02: ; bbWeight=1, gcVars=00000020 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
cmp dword ptr [esi+0x08], 1
jne SHORT G_M40378_IG05
;; size=6 bbWeight=1 PerfScore 4.00
@@ -62,9 +60,9 @@ G_M40378_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 4
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M40378_IG05: ; bbWeight=0.50, gcVars=00000008 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M40378_IG05: ; bbWeight=0.50, gcVars=00000020 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ebx esi]
- ; GC ptr vars +{V00 V03}
+ ; GC ptr vars +{V00 V05}
xor eax, eax
mov edx, 1
cmp dword ptr [esi+0x08], 1
@@ -76,21 +74,25 @@ G_M40378_IG06: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
;; size=4 bbWeight=4 PerfScore 5.00
G_M40378_IG07: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [esi+0x08]
+ mov dword ptr [ebp-0x18], ecx
cmp eax, ecx
jae G_M40378_IG24
mov edi, gword ptr [esi+0x04]
; gcrRegs +[edi]
- mov gword ptr [ebp-0x1C], edi
- ; GC ptr vars +{V17}
- cmp eax, dword ptr [edi+0x04]
+ mov gword ptr [ebp-0x2C], edi
+ ; GC ptr vars +{V13}
+ mov ecx, dword ptr [edi+0x04]
+ mov dword ptr [ebp-0x20], ecx
+ cmp eax, ecx
jae G_M40378_IG23
mov dword ptr [ebp-0x10], eax
mov edi, gword ptr [edi+4*eax+0x08]
+ mov ecx, dword ptr [ebp-0x18]
cmp edx, ecx
jae G_M40378_IG24
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x2C]
; gcrRegs +[ecx]
- cmp edx, dword ptr [ecx+0x04]
+ cmp edx, dword ptr [ebp-0x20]
jae G_M40378_IG23
mov dword ptr [ebp-0x14], edx
push gword ptr [ecx+4*edx+0x08]
@@ -99,12 +101,12 @@ G_M40378_IG07: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
; gcr arg push 1
push gword ptr [ebx+0x10]
; gcr arg push 2
- mov ecx, bword ptr [ebp-0x18]
+ mov ecx, bword ptr [ebp-0x28]
; gcrRegs -[ecx]
; byrRegs +[ecx]
mov edx, edi
; gcrRegs +[edx]
- ; GC ptr vars -{V03 V17}
+ ; GC ptr vars -{V05 V13}
call [<unknown method>]
; gcrRegs -[edx edi]
; byrRegs -[ecx]
@@ -113,7 +115,7 @@ G_M40378_IG07: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
jne SHORT G_M40378_IG09
mov edi, -1
jmp SHORT G_M40378_IG12
- ;; size=88 bbWeight=2 PerfScore 68.50
+ ;; size=99 bbWeight=2 PerfScore 71.00
G_M40378_IG08: ; bbWeight=0.25, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
mov edi, eax
jmp SHORT G_M40378_IG13
@@ -154,9 +156,9 @@ G_M40378_IG15: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 4
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M40378_IG16: ; bbWeight=2, gcVars=00000008 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M40378_IG16: ; bbWeight=2, gcVars=00000020 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[ebx esi]
- ; GC ptr vars +{V00 V03}
+ ; GC ptr vars +{V00 V05}
mov eax, edi
jmp G_M40378_IG06
;; size=7 bbWeight=2 PerfScore 4.50
@@ -172,20 +174,24 @@ G_M40378_IG18: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
;; size=4 bbWeight=4 PerfScore 5.00
G_M40378_IG19: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [esi+0x08]
+ mov dword ptr [ebp-0x1C], ecx
cmp edi, ecx
jae SHORT G_M40378_IG24
mov edx, gword ptr [esi+0x04]
; gcrRegs +[edx]
- mov gword ptr [ebp-0x20], edx
- ; GC ptr vars +{V19}
- cmp edi, dword ptr [edx+0x04]
+ mov gword ptr [ebp-0x30], edx
+ ; GC ptr vars +{V15}
+ mov ecx, dword ptr [edx+0x04]
+ mov dword ptr [ebp-0x24], ecx
+ cmp edi, ecx
jae SHORT G_M40378_IG23
mov edx, gword ptr [edx+4*edi+0x08]
+ mov ecx, dword ptr [ebp-0x1C]
cmp eax, ecx
jae SHORT G_M40378_IG24
- mov ecx, gword ptr [ebp-0x20]
+ mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx]
- cmp eax, dword ptr [ecx+0x04]
+ cmp eax, dword ptr [ebp-0x24]
jae SHORT G_M40378_IG23
mov dword ptr [ebp-0x14], eax
push gword ptr [ecx+4*eax+0x08]
@@ -194,10 +200,10 @@ G_M40378_IG19: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
; gcr arg push 1
push gword ptr [ebx+0x10]
; gcr arg push 2
- mov ecx, bword ptr [ebp-0x18]
+ mov ecx, bword ptr [ebp-0x28]
; gcrRegs -[ecx]
; byrRegs +[ecx]
- ; GC ptr vars -{V03 V19}
+ ; GC ptr vars -{V05 V15}
call [<unknown method>]
; gcrRegs -[edx]
; byrRegs -[ecx]
@@ -205,7 +211,7 @@ G_M40378_IG19: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
test eax, eax
mov eax, dword ptr [ebp-0x14]
jge SHORT G_M40378_IG14
- ;; size=63 bbWeight=2 PerfScore 63.50
+ ;; size=74 bbWeight=2 PerfScore 66.00
G_M40378_IG20: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
inc eax
cmp eax, dword ptr [esi+0x08]
@@ -232,6 +238,6 @@ G_M40378_IG24: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 304, prolog size 17, PerfScore 216.56, instruction count 114, allocated bytes for code 304 (MethodHash=ddc26245) for method Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (FullOpts)
+; Total bytes of code 326, prolog size 17, PerfScore 221.56, instruction count 122, allocated bytes for code 326 (MethodHash=ddc26245) for method Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (FullOpts)
; ============================================================
libraries_tests.run.windows.x86.Release.mch
-48 (-23.41%) : 391316.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (Tier0-FullOpts)
@@ -8,24 +8,22 @@
; 1 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 8, 12 ) ref -> esi this class-hnd single-def <System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension>
+; V00 this [V00,T05] ( 8, 12 ) ref -> esi this class-hnd single-def <System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension>
;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Xml.Xsl.XsltContext>
-; V02 arg2 [V02,T08] ( 7, 11 ) ref -> [ebp+0x0C] class-hnd single-def <System.Object[]>
+; V02 arg2 [V02,T06] ( 8, 11.04) ref -> edi class-hnd single-def <System.Object[]>
;* V03 arg3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Xml.XPath.XPathNavigator>
-; V04 loc0 [V04,T03] ( 11, 19 ) int -> ebx
+; V04 loc0 [V04,T00] ( 22, 39.04) int -> ebx
;* V05 tmp0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Object>
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.MethodInfo>
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Object>
; V08 tmp3 [V08,T01] ( 6, 24 ) ref -> eax "arr expr"
-; V09 tmp4 [V09,T02] ( 6, 24 ) ref -> edi "arr expr"
-; V10 tmp5 [V10,T05] ( 4, 16 ) ref -> ecx "argument with side effect"
-; V11 tmp6 [V11,T06] ( 4, 16 ) int -> eax "argument with side effect"
-; V12 tmp7 [V12,T00] ( 15, 56.08) int -> [ebp-0x10] "argument with side effect"
-; V13 tmp8 [V13,T04] ( 5, 16.08) ref -> eax "argument with side effect"
-; V14 tmp9 [V14,T09] ( 3, 6 ) ref -> ecx single-def "argument with side effect"
-; V15 tmp10 [V15,T10] ( 2, 4 ) ref -> edx single-def "argument with side effect"
+; V09 tmp4 [V09,T02] ( 6, 24 ) ref -> eax "arr expr"
+; V10 tmp5 [V10,T03] ( 4, 16 ) ref -> ecx "argument with side effect"
+; V11 tmp6 [V11,T04] ( 4, 16 ) int -> edx "argument with side effect"
+; V12 tmp7 [V12,T07] ( 3, 6 ) ref -> ecx single-def "argument with side effect"
+; V13 tmp8 [V13,T08] ( 2, 4 ) ref -> edx single-def "argument with side effect"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M50779_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -33,86 +31,69 @@ G_M50779_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- push eax
mov esi, ecx
; gcrRegs +[esi]
mov edi, gword ptr [ebp+0x0C]
; gcrRegs +[edi]
- ;; size=12 bbWeight=1 PerfScore 6.50
+ ;; size=11 bbWeight=1 PerfScore 5.50
G_M50779_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ebx, dword ptr [edi+0x04]
dec ebx
- js G_M50779_IG06
+ js SHORT G_M50779_IG06
cmp dword ptr [edi+0x04], ebx
jle SHORT G_M50779_IG05
- ;; size=15 bbWeight=1 PerfScore 7.25
+ ;; size=11 bbWeight=1 PerfScore 7.25
G_M50779_IG03: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp+0x0C], edi
- mov eax, edi
- ; gcrRegs +[eax]
- mov edx, ebx
- mov ecx, gword ptr [eax+4*edx+0x08]
+ mov ecx, gword ptr [edi+4*ebx+0x08]
; gcrRegs +[ecx]
mov eax, gword ptr [esi+0x04]
- cmp edx, dword ptr [eax+0x04]
- jae G_M50779_IG08
- mov eax, dword ptr [eax+4*edx+0x08]
- ; gcrRegs -[eax]
- mov edi, gword ptr [esi+0x1C]
- cmp edx, dword ptr [edi+0x04]
- jae G_M50779_IG08
- mov dword ptr [ebp-0x10], edx
- push gword ptr [edi+4*edx+0x08]
- mov edx, eax
+ ; gcrRegs +[eax]
+ cmp ebx, dword ptr [eax+0x04]
+ jae SHORT G_M50779_IG08
+ mov edx, dword ptr [eax+4*ebx+0x08]
+ mov eax, gword ptr [esi+0x1C]
+ cmp ebx, dword ptr [eax+0x04]
+ jae SHORT G_M50779_IG08
+ push gword ptr [eax+4*ebx+0x08]
call [System.Xml.Xsl.XsltOld.XsltCompileContext+XsltFunctionImpl:ConvertToXPathType(System.Object,int,System.Type):System.Object]
- ; gcrRegs -[ecx edi] +[eax]
+ ; gcrRegs -[ecx]
push eax
- mov edx, dword ptr [ebp-0x10]
- mov ecx, gword ptr [ebp+0x0C]
+ mov edx, ebx
+ mov ecx, edi
; gcrRegs +[ecx]
call CORINFO_HELP_ARRADDR_ST
; gcrRegs -[eax ecx]
dec ebx
- mov edi, gword ptr [ebp+0x0C]
- ; gcrRegs +[edi]
jns SHORT G_M50779_IG03
- ;; size=72 bbWeight=3.96 PerfScore 118.80
+ ;; size=47 bbWeight=3.96 PerfScore 98.01
G_M50779_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M50779_IG06
;; size=2 bbWeight=1 PerfScore 2.00
G_M50779_IG05: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp+0x0C], edi
- mov eax, edi
- ; gcrRegs +[eax]
- mov edx, ebx
- cmp edx, dword ptr [eax+0x04]
+ cmp ebx, dword ptr [edi+0x04]
jae SHORT G_M50779_IG08
- mov ecx, gword ptr [eax+4*edx+0x08]
+ mov ecx, gword ptr [edi+4*ebx+0x08]
; gcrRegs +[ecx]
mov eax, gword ptr [esi+0x04]
- cmp edx, dword ptr [eax+0x04]
+ ; gcrRegs +[eax]
+ cmp ebx, dword ptr [eax+0x04]
jae SHORT G_M50779_IG08
- mov eax, dword ptr [eax+4*edx+0x08]
- ; gcrRegs -[eax]
- mov edi, gword ptr [esi+0x1C]
- cmp edx, dword ptr [edi+0x04]
+ mov edx, dword ptr [eax+4*ebx+0x08]
+ mov eax, gword ptr [esi+0x1C]
+ cmp ebx, dword ptr [eax+0x04]
jae SHORT G_M50779_IG08
- mov dword ptr [ebp-0x10], edx
- push gword ptr [edi+4*edx+0x08]
- mov edx, eax
+ push gword ptr [eax+4*ebx+0x08]
call [System.Xml.Xsl.XsltOld.XsltCompileContext+XsltFunctionImpl:ConvertToXPathType(System.Object,int,System.Type):System.Object]
- ; gcrRegs -[ecx edi] +[eax]
+ ; gcrRegs -[ecx]
push eax
- mov edx, dword ptr [ebp-0x10]
- mov ecx, gword ptr [ebp+0x0C]
+ mov edx, ebx
+ mov ecx, edi
; gcrRegs +[ecx]
call CORINFO_HELP_ARRADDR_ST
; gcrRegs -[eax ecx]
dec ebx
- mov edi, gword ptr [ebp+0x0C]
- ; gcrRegs +[edi]
jns SHORT G_M50779_IG05
- ;; size=69 bbWeight=0.04 PerfScore 1.36
+ ;; size=52 bbWeight=0.04 PerfScore 1.15
G_M50779_IG06: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x18]
; gcrRegs +[ecx]
@@ -128,19 +109,18 @@ G_M50779_IG06: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
; gcrRegs -[ecx edx esi edi] +[eax]
;; size=21 bbWeight=1 PerfScore 15.00
G_M50779_IG07: ; bbWeight=1, epilog, nogc, extend
- pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 8
- ;; size=8 bbWeight=1 PerfScore 4.50
+ ;; size=7 bbWeight=1 PerfScore 4.00
G_M50779_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax]
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 205, prolog size 7, PerfScore 155.41, instruction count 77, allocated bytes for code 205 (MethodHash=355039a4) for method System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (Tier0-FullOpts)
+; Total bytes of code 157, prolog size 6, PerfScore 132.91, instruction count 63, allocated bytes for code 157 (MethodHash=355039a4) for method System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (Tier0-FullOpts)
; ============================================================
-18 (-22.50%) : 4217.dasm - Xunit.Sdk.TestCaseMessage:.ctor(Xunit.Abstractions.ITestCase):this (Instrumented Tier0)
@@ -8,29 +8,21 @@
; V00 this [V00 ] ( 1, 1 ) ref -> [ebp-0x04] do-not-enreg[] this class-hnd <Xunit.Sdk.TestCaseMessage>
; V01 arg1 [V01 ] ( 1, 1 ) ref -> [ebp-0x08] do-not-enreg[] class-hnd <Xunit.Abstractions.ITestCase>
; V02 tmp0 [V02 ] ( 1, 1 ) ref -> [ebp-0x0C] do-not-enreg[] must-init "handle histogram profile tmp"
-; V03 tmp1 [V03 ] ( 1, 1 ) ref -> [ebp-0x10] do-not-enreg[] must-init "argument with side effect"
-; V04 tmp2 [V04 ] ( 1, 1 ) ref -> [ebp-0x14] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 20
+; Lcl frame size = 12
G_M39804_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- sub esp, 20
+ sub esp, 12
xor eax, eax
mov dword ptr [ebp-0x0C], eax
- mov dword ptr [ebp-0x10], eax
- mov dword ptr [ebp-0x14], eax
mov gword ptr [ebp-0x04], ecx
mov gword ptr [ebp-0x08], edx
- ;; size=23 bbWeight=1 PerfScore 6.75
+ ;; size=17 bbWeight=1 PerfScore 4.75
G_M39804_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, gword ptr [ebp-0x04]
+ mov ecx, gword ptr [ebp-0x08]
; gcrRegs +[ecx]
- mov gword ptr [ebp-0x14], ecx
- mov ecx, gword ptr [ebp-0x08]
- mov gword ptr [ebp-0x10], ecx
- mov ecx, gword ptr [ebp-0x08]
mov gword ptr [ebp-0x0C], ecx
mov ecx, gword ptr [ebp-0x0C]
mov edx, 0xD1FFAB1E
@@ -41,19 +33,19 @@ G_M39804_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
call [<unknown method>]
; gcrRegs -[ecx] +[eax]
push eax
- mov edx, gword ptr [ebp-0x10]
+ mov edx, gword ptr [ebp-0x08]
; gcrRegs +[edx]
- mov ecx, gword ptr [ebp-0x14]
+ mov ecx, gword ptr [ebp-0x04]
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[eax ecx edx]
- ;; size=53 bbWeight=1 PerfScore 18.25
+ ;; size=41 bbWeight=1 PerfScore 14.25
G_M39804_IG03: ; bbWeight=1, epilog, nogc, extend
mov esp, ebp
pop ebp
ret
;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 80, prolog size 17, PerfScore 26.75, instruction count 27, allocated bytes for code 80 (MethodHash=ff666483) for method Xunit.Sdk.TestCaseMessage:.ctor(Xunit.Abstractions.ITestCase):this (Instrumented Tier0)
+; Total bytes of code 62, prolog size 11, PerfScore 20.75, instruction count 21, allocated bytes for code 62 (MethodHash=ff666483) for method Xunit.Sdk.TestCaseMessage:.ctor(Xunit.Abstractions.ITestCase):this (Instrumented Tier0)
; ============================================================
-18 (-22.50%) : 194238.dasm - System.Collections.Immutable.ValuesCollectionAccessor
2[int,ubyte]:.ctor(System.Collections.Immutable.IImmutableDictionary2[int,ubyte]):this (Instrumented Tier0)@@ -8,29 +8,21 @@
; V00 this [V00 ] ( 1, 1 ) ref -> [ebp-0x04] do-not-enreg[] this class-hnd <System.Collections.Immutable.ValuesCollectionAccessor`2[int,ubyte]>
; V01 arg1 [V01 ] ( 1, 1 ) ref -> [ebp-0x08] do-not-enreg[] class-hnd <System.Collections.Immutable.IImmutableDictionary`2[int,ubyte]>
; V02 tmp0 [V02 ] ( 1, 1 ) ref -> [ebp-0x0C] do-not-enreg[] must-init "handle histogram profile tmp"
-; V03 tmp1 [V03 ] ( 1, 1 ) ref -> [ebp-0x10] do-not-enreg[] must-init "argument with side effect"
-; V04 tmp2 [V04 ] ( 1, 1 ) ref -> [ebp-0x14] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 20
+; Lcl frame size = 12
G_M10333_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
- sub esp, 20
+ sub esp, 12
xor eax, eax
mov dword ptr [ebp-0x0C], eax
- mov dword ptr [ebp-0x10], eax
- mov dword ptr [ebp-0x14], eax
mov gword ptr [ebp-0x04], ecx
mov gword ptr [ebp-0x08], edx
- ;; size=23 bbWeight=1 PerfScore 6.75
+ ;; size=17 bbWeight=1 PerfScore 4.75
G_M10333_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, gword ptr [ebp-0x04]
+ mov ecx, gword ptr [ebp-0x08]
; gcrRegs +[ecx]
- mov gword ptr [ebp-0x14], ecx
- mov ecx, gword ptr [ebp-0x08]
- mov gword ptr [ebp-0x10], ecx
- mov ecx, gword ptr [ebp-0x08]
mov gword ptr [ebp-0x0C], ecx
mov ecx, gword ptr [ebp-0x0C]
mov edx, 0xD1FFAB1E
@@ -41,19 +33,19 @@ G_M10333_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
call [<unknown method>]
; gcrRegs -[ecx] +[eax]
push eax
- mov edx, gword ptr [ebp-0x10]
+ mov edx, gword ptr [ebp-0x08]
; gcrRegs +[edx]
- mov ecx, gword ptr [ebp-0x14]
+ mov ecx, gword ptr [ebp-0x04]
; gcrRegs +[ecx]
call [<unknown method>]
; gcrRegs -[eax ecx edx]
- ;; size=53 bbWeight=1 PerfScore 18.25
+ ;; size=41 bbWeight=1 PerfScore 14.25
G_M10333_IG03: ; bbWeight=1, epilog, nogc, extend
mov esp, ebp
pop ebp
ret
;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 80, prolog size 17, PerfScore 26.75, instruction count 27, allocated bytes for code 80 (MethodHash=2cb2d7a2) for method System.Collections.Immutable.ValuesCollectionAccessor`2[int,ubyte]:.ctor(System.Collections.Immutable.IImmutableDictionary`2[int,ubyte]):this (Instrumented Tier0)
+; Total bytes of code 62, prolog size 11, PerfScore 20.75, instruction count 21, allocated bytes for code 62 (MethodHash=2cb2d7a2) for method System.Collections.Immutable.ValuesCollectionAccessor`2[int,ubyte]:.ctor(System.Collections.Immutable.IImmutableDictionary`2[int,ubyte]):this (Instrumented Tier0)
; ============================================================
+14 (+6.33%) : 365211.dasm - System.Net.SSPIAuthType:QueryContextAttributes(System.Net.Security.SafeDeleteContext,int,System.Span`1[ubyte],System.Type,byref):int:this (Tier1)
@@ -11,23 +11,21 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Net.SSPIAuthType>
; V01 arg1 [V01,T01] ( 3, 3.01) ref -> esi class-hnd single-def <System.Net.Security.SafeDeleteContext>
-; V02 arg2 [V02,T08] ( 1, 1.01) int -> [ebp+0x18] single-def
-; V03 arg3 [V03,T06] ( 2, 2.02) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]>
-; V04 arg4 [V04,T07] ( 5, 1.02) ref -> ebx class-hnd single-def <System.Type>
-; V05 arg5 [V05,T05] ( 4, 2.03) byref -> edi single-def
+; V02 arg2 [V02,T06] ( 1, 1.01) int -> [ebp+0x18] single-def
+; V03 arg3 [V03,T04] ( 2, 2.02) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]>
+; V04 arg4 [V04,T05] ( 5, 1.02) ref -> ebx class-hnd single-def <System.Type>
+; V05 arg5 [V05,T03] ( 4, 2.03) byref -> edi single-def
;* V06 loc0 [V06 ] ( 0, 0 ) int -> zero-ref
; V07 loc1 [V07 ] ( 1, 1.01) byref -> [ebp-0x10] do-not-enreg[P] must-init pinned
-; V08 tmp0 [V08,T12] ( 2, 0 ) ref -> esi class-hnd exact single-def "non-inline candidate call" <<unknown class>>
-; V09 tmp1 [V09,T10] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V10 tmp2 [V10,T11] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Net.Security.SafeFreeCertContext>
-; V11 tmp3 [V11,T09] ( 3, 0.13) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Net.Security.SafeFreeContextBuffer_SECURITY>
+; V08 tmp0 [V08,T10] ( 2, 0 ) ref -> esi class-hnd exact single-def "non-inline candidate call" <<unknown class>>
+; V09 tmp1 [V09,T08] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V10 tmp2 [V10,T09] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Net.Security.SafeFreeCertContext>
+; V11 tmp3 [V11,T07] ( 3, 0.13) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Net.Security.SafeFreeContextBuffer_SECURITY>
;* V12 tmp4 [V12 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
; V13 tmp5 [V13,T00] ( 5, 5.05) byref -> ecx "Inline stloc first use temp"
-; V14 tmp6 [V14,T13] ( 2, 0 ) ref -> edx single-def "argument with side effect"
-; V15 tmp7 [V15,T14] ( 2, 0 ) ref -> esi single-def "argument with side effect"
-; V16 tmp8 [V16,T03] ( 2, 4.04) int -> ecx "Cast away GC"
-; V17 tmp9 [V17,T02] ( 2, 4.04) ref -> esi single-def "argument with side effect"
-; V18 tmp10 [V18,T04] ( 2, 4.04) int -> edx "argument with side effect"
+; V14 tmp6 [V14,T11] ( 2, 0 ) ref -> edx single-def "argument with side effect"
+; V15 tmp7 [V15,T12] ( 2, 0 ) ref -> esi single-def "argument with side effect"
+; V16 tmp8 [V16,T02] ( 2, 4.04) int -> ecx "Cast away GC"
;
; Lcl frame size = 4
@@ -52,8 +50,9 @@ G_M23053_IG02: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
; gcrRegs +[ecx]
mov gword ptr [edi], ecx
test ebx, ebx
+ mov eax, dword ptr [ebp+0x18]
jne SHORT G_M23053_IG05
- ;; size=8 bbWeight=1 PerfScore 2.50
+ ;; size=11 bbWeight=1 PerfScore 3.50
G_M23053_IG03: ; bbWeight=1.01, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
; gcrRegs -[ecx ebx]
xor ecx, ecx
@@ -61,16 +60,16 @@ G_M23053_IG03: ; bbWeight=1.01, gcrefRegs=00000040 {esi}, byrefRegs=00000
cmp dword ptr [ebp+0x14], 0
cmovne ecx, bword ptr [ebp+0x10]
mov bword ptr [ebp-0x10], ecx
- mov edx, dword ptr [ebp+0x18]
push ecx
push gword ptr [edi]
mov ecx, esi
; gcrRegs +[ecx]
; byrRegs -[ecx]
+ mov edx, eax
call [<unknown method>]
; gcrRegs -[ecx esi]
; byrRegs -[edi]
- ;; size=27 bbWeight=1.01 PerfScore 12.62
+ ;; size=26 bbWeight=1.01 PerfScore 11.86
G_M23053_IG04: ; bbWeight=1.01, epilog, nogc, extend
pop ecx
pop ebx
@@ -84,6 +83,7 @@ G_M23053_IG05: ; bbWeight=0.02, gcVars=00000000 {}, gcrefRegs=00000048 {e
; byrRegs +[edi]
cmp ebx, 0xD1FFAB1E
jne SHORT G_M23053_IG06
+ mov dword ptr [ebp+0x18], eax
mov ecx, 0xD1FFAB1E ; System.Net.Security.SafeFreeContextBuffer_SECURITY
call CORINFO_HELP_NEWFAST
; gcrRegs -[ebx] +[eax]
@@ -100,12 +100,14 @@ G_M23053_IG05: ; bbWeight=0.02, gcVars=00000000 {}, gcrefRegs=00000048 {e
call CORINFO_HELP_CHECKED_ASSIGN_REF_EBX
; gcrRegs -[ebx]
; byrRegs -[edx]
+ mov eax, dword ptr [ebp+0x18]
jmp SHORT G_M23053_IG03
- ;; size=41 bbWeight=0.02 PerfScore 0.23
+ ;; size=47 bbWeight=0.02 PerfScore 0.28
G_M23053_IG06: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000080 {edi}, byref, isz
; gcrRegs +[ebx]
cmp ebx, 0xD1FFAB1E
jne SHORT G_M23053_IG07
+ mov dword ptr [ebp+0x18], eax
mov ecx, 0xD1FFAB1E ; System.Net.Security.SafeFreeCertContext
call CORINFO_HELP_NEWFAST
; gcrRegs -[ebx] +[eax]
@@ -122,8 +124,9 @@ G_M23053_IG06: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
call CORINFO_HELP_CHECKED_ASSIGN_REF_EBX
; gcrRegs -[ebx]
; byrRegs -[edx]
+ mov eax, dword ptr [ebp+0x18]
jmp SHORT G_M23053_IG03
- ;; size=41 bbWeight=0 PerfScore 0.00
+ ;; size=47 bbWeight=0 PerfScore 0.00
G_M23053_IG07: ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi] +[ebx]
; byrRegs -[edi]
@@ -167,6 +170,6 @@ G_M23053_IG07: ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
int3
;; size=76 bbWeight=0 PerfScore 0.00
-; Total bytes of code 221, prolog size 12, PerfScore 28.64, instruction count 77, allocated bytes for code 221 (MethodHash=f870a5f2) for method System.Net.SSPIAuthType:QueryContextAttributes(System.Net.Security.SafeDeleteContext,int,System.Span`1[ubyte],System.Type,byref):int:this (Tier1)
+; Total bytes of code 235, prolog size 12, PerfScore 28.93, instruction count 82, allocated bytes for code 235 (MethodHash=f870a5f2) for method System.Net.SSPIAuthType:QueryContextAttributes(System.Net.Security.SafeDeleteContext,int,System.Span`1[ubyte],System.Type,byref):int:this (Tier1)
; ============================================================
+22 (+7.24%) : 86260.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (Tier0-FullOpts)
@@ -8,28 +8,26 @@
; 4 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 4, 6 ) byref -> [ebp-0x18] this single-def
+; V00 this [V00,T05] ( 4, 6 ) byref -> [ebp-0x28] this single-def
; V01 arg1 [V01,T02] ( 11, 20 ) ref -> esi class-hnd single-def <System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig]>
-; V02 arg2 [V02,T08] ( 4, 8 ) ref -> ebx class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo>
+; V02 arg2 [V02,T06] ( 4, 8 ) ref -> ebx class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo>
; V03 loc0 [V03,T01] ( 13, 25.50) int -> [ebp-0x10]
; V04 loc1 [V04,T00] ( 16, 43 ) int -> [ebp-0x14]
-; V05 loc2 [V05,T15] ( 3, 6 ) int -> eax
-; V06 tmp0 [V06,T09] ( 2, 8 ) ref -> edi class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig>
-; V07 tmp1 [V07,T10] ( 2, 8 ) ref -> edx class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig>
-; V08 tmp2 [V08,T04] ( 3, 12 ) ref -> edi "arr expr"
-; V09 tmp3 [V09,T05] ( 3, 12 ) ref -> ecx "arr expr"
-;* V10 tmp4 [V10,T18] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-; V11 tmp5 [V11,T11] ( 2, 8 ) ref -> edi "argument with side effect"
-; V12 tmp6 [V12,T06] ( 3, 12 ) ref -> edx "arr expr"
-; V13 tmp7 [V13,T07] ( 3, 12 ) ref -> ecx "arr expr"
-;* V14 tmp8 [V14,T19] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-; V15 tmp9 [V15,T12] ( 2, 8 ) ref -> edx "argument with side effect"
-; V16 cse0 [V16,T16] ( 3, 6 ) int -> ecx "CSE - conservative"
-; V17 cse1 [V17,T13] ( 3, 6 ) ref -> [ebp-0x1C] spill-single-def "CSE - conservative"
-; V18 cse2 [V18,T17] ( 3, 6 ) int -> ecx "CSE - conservative"
-; V19 cse3 [V19,T14] ( 3, 6 ) ref -> [ebp-0x20] spill-single-def "CSE - conservative"
+; V05 loc2 [V05,T13] ( 3, 6 ) int -> eax
+; V06 tmp0 [V06,T07] ( 2, 8 ) ref -> edi class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig>
+; V07 tmp1 [V07,T08] ( 2, 8 ) ref -> edx class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig>
+; V08 tmp2 [V08,T03] ( 3, 12 ) ref -> edi "arr expr"
+; V09 tmp3 [V09,T09] ( 2, 8 ) ref -> ecx "arr expr"
+; V10 tmp4 [V10,T04] ( 3, 12 ) ref -> edx "arr expr"
+; V11 tmp5 [V11,T10] ( 2, 8 ) ref -> ecx "arr expr"
+; V12 cse0 [V12,T14] ( 3, 6 ) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V13 cse1 [V13,T11] ( 3, 6 ) ref -> [ebp-0x2C] spill-single-def "CSE - moderate"
+; V14 cse2 [V14,T15] ( 3, 6 ) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
+; V15 cse3 [V15,T12] ( 3, 6 ) ref -> [ebp-0x30] spill-single-def "CSE - moderate"
+; V16 cse4 [V16,T16] ( 3, 6 ) int -> [ebp-0x20] spill-single-def "CSE - moderate"
+; V17 cse5 [V17,T17] ( 3, 6 ) int -> [ebp-0x24] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 20
+; Lcl frame size = 36
G_M40378_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -37,15 +35,15 @@ G_M40378_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 20
- mov bword ptr [ebp-0x18], ecx
+ sub esp, 36
+ mov bword ptr [ebp-0x28], ecx
; GC ptr vars +{V00}
mov esi, edx
; gcrRegs +[esi]
mov ebx, gword ptr [ebp+0x08]
; gcrRegs +[ebx]
;; size=17 bbWeight=1 PerfScore 6.75
-G_M40378_IG02: ; bbWeight=1, gcVars=00000008 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M40378_IG02: ; bbWeight=1, gcVars=00000020 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
cmp dword ptr [esi+0x08], 1
jne SHORT G_M40378_IG05
;; size=6 bbWeight=1 PerfScore 4.00
@@ -62,9 +60,9 @@ G_M40378_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 4
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M40378_IG05: ; bbWeight=0.50, gcVars=00000008 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M40378_IG05: ; bbWeight=0.50, gcVars=00000020 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ebx esi]
- ; GC ptr vars +{V00 V03}
+ ; GC ptr vars +{V00 V05}
xor eax, eax
mov edx, 1
cmp dword ptr [esi+0x08], 1
@@ -76,21 +74,25 @@ G_M40378_IG06: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
;; size=4 bbWeight=4 PerfScore 5.00
G_M40378_IG07: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [esi+0x08]
+ mov dword ptr [ebp-0x18], ecx
cmp eax, ecx
jae G_M40378_IG24
mov edi, gword ptr [esi+0x04]
; gcrRegs +[edi]
- mov gword ptr [ebp-0x1C], edi
- ; GC ptr vars +{V17}
- cmp eax, dword ptr [edi+0x04]
+ mov gword ptr [ebp-0x2C], edi
+ ; GC ptr vars +{V13}
+ mov ecx, dword ptr [edi+0x04]
+ mov dword ptr [ebp-0x20], ecx
+ cmp eax, ecx
jae G_M40378_IG23
mov dword ptr [ebp-0x10], eax
mov edi, gword ptr [edi+4*eax+0x08]
+ mov ecx, dword ptr [ebp-0x18]
cmp edx, ecx
jae G_M40378_IG24
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x2C]
; gcrRegs +[ecx]
- cmp edx, dword ptr [ecx+0x04]
+ cmp edx, dword ptr [ebp-0x20]
jae G_M40378_IG23
mov dword ptr [ebp-0x14], edx
push gword ptr [ecx+4*edx+0x08]
@@ -99,12 +101,12 @@ G_M40378_IG07: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
; gcr arg push 1
push gword ptr [ebx+0x10]
; gcr arg push 2
- mov ecx, bword ptr [ebp-0x18]
+ mov ecx, bword ptr [ebp-0x28]
; gcrRegs -[ecx]
; byrRegs +[ecx]
mov edx, edi
; gcrRegs +[edx]
- ; GC ptr vars -{V03 V17}
+ ; GC ptr vars -{V05 V13}
call [<unknown method>]
; gcrRegs -[edx edi]
; byrRegs -[ecx]
@@ -113,7 +115,7 @@ G_M40378_IG07: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
jne SHORT G_M40378_IG09
mov edi, -1
jmp SHORT G_M40378_IG12
- ;; size=88 bbWeight=2 PerfScore 68.50
+ ;; size=99 bbWeight=2 PerfScore 71.00
G_M40378_IG08: ; bbWeight=0.25, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
mov edi, eax
jmp SHORT G_M40378_IG13
@@ -154,9 +156,9 @@ G_M40378_IG15: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 4
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M40378_IG16: ; bbWeight=2, gcVars=00000008 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M40378_IG16: ; bbWeight=2, gcVars=00000020 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[ebx esi]
- ; GC ptr vars +{V00 V03}
+ ; GC ptr vars +{V00 V05}
mov eax, edi
jmp G_M40378_IG06
;; size=7 bbWeight=2 PerfScore 4.50
@@ -172,20 +174,24 @@ G_M40378_IG18: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
;; size=4 bbWeight=4 PerfScore 5.00
G_M40378_IG19: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [esi+0x08]
+ mov dword ptr [ebp-0x1C], ecx
cmp edi, ecx
jae SHORT G_M40378_IG24
mov edx, gword ptr [esi+0x04]
; gcrRegs +[edx]
- mov gword ptr [ebp-0x20], edx
- ; GC ptr vars +{V19}
- cmp edi, dword ptr [edx+0x04]
+ mov gword ptr [ebp-0x30], edx
+ ; GC ptr vars +{V15}
+ mov ecx, dword ptr [edx+0x04]
+ mov dword ptr [ebp-0x24], ecx
+ cmp edi, ecx
jae SHORT G_M40378_IG23
mov edx, gword ptr [edx+4*edi+0x08]
+ mov ecx, dword ptr [ebp-0x1C]
cmp eax, ecx
jae SHORT G_M40378_IG24
- mov ecx, gword ptr [ebp-0x20]
+ mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx]
- cmp eax, dword ptr [ecx+0x04]
+ cmp eax, dword ptr [ebp-0x24]
jae SHORT G_M40378_IG23
mov dword ptr [ebp-0x14], eax
push gword ptr [ecx+4*eax+0x08]
@@ -194,10 +200,10 @@ G_M40378_IG19: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
; gcr arg push 1
push gword ptr [ebx+0x10]
; gcr arg push 2
- mov ecx, bword ptr [ebp-0x18]
+ mov ecx, bword ptr [ebp-0x28]
; gcrRegs -[ecx]
; byrRegs +[ecx]
- ; GC ptr vars -{V03 V19}
+ ; GC ptr vars -{V05 V15}
call [<unknown method>]
; gcrRegs -[edx]
; byrRegs -[ecx]
@@ -205,7 +211,7 @@ G_M40378_IG19: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
test eax, eax
mov eax, dword ptr [ebp-0x14]
jge SHORT G_M40378_IG14
- ;; size=63 bbWeight=2 PerfScore 63.50
+ ;; size=74 bbWeight=2 PerfScore 66.00
G_M40378_IG20: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
inc eax
cmp eax, dword ptr [esi+0x08]
@@ -232,6 +238,6 @@ G_M40378_IG24: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 304, prolog size 17, PerfScore 216.56, instruction count 114, allocated bytes for code 304 (MethodHash=ddc26245) for method Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (Tier0-FullOpts)
+; Total bytes of code 326, prolog size 17, PerfScore 221.56, instruction count 122, allocated bytes for code 326 (MethodHash=ddc26245) for method Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (Tier0-FullOpts)
; ============================================================
+18 (+7.86%) : 365126.dasm - System.Net.SSPISecureChannelType:QueryContextAttributes(System.Net.Security.SafeDeleteContext,int,System.Span`1[ubyte],System.Type,byref):int:this (Tier1)
@@ -11,23 +11,21 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Net.SSPISecureChannelType>
; V01 arg1 [V01,T01] ( 3, 3.01) ref -> esi class-hnd single-def <System.Net.Security.SafeDeleteContext>
-; V02 arg2 [V02,T09] ( 1, 1.01) int -> [ebp+0x18] single-def
-; V03 arg3 [V03,T07] ( 2, 2.02) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]>
-; V04 arg4 [V04,T08] ( 5, 1.41) ref -> ebx class-hnd single-def <System.Type>
-; V05 arg5 [V05,T06] ( 4, 2.22) byref -> edi single-def
+; V02 arg2 [V02,T07] ( 1, 1.01) int -> [ebp+0x18] single-def
+; V03 arg3 [V03,T05] ( 2, 2.02) struct ( 8) [ebp+0x10] do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]>
+; V04 arg4 [V04,T06] ( 5, 1.41) ref -> ebx class-hnd single-def <System.Type>
+; V05 arg5 [V05,T04] ( 4, 2.22) byref -> edi single-def
;* V06 loc0 [V06 ] ( 0, 0 ) int -> zero-ref
; V07 loc1 [V07 ] ( 1, 1.01) byref -> [ebp-0x10] do-not-enreg[P] must-init pinned
-; V08 tmp0 [V08,T12] ( 2, 0 ) ref -> esi class-hnd exact single-def "non-inline candidate call" <<unknown class>>
-; V09 tmp1 [V09,T10] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V10 tmp2 [V10,T05] ( 6, 2.47) ref -> eax class-hnd exact single-def "NewObj constructor temp" <System.Net.Security.SafeFreeCertContext>
-; V11 tmp3 [V11,T11] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Net.Security.SafeFreeContextBuffer_SECURITY>
+; V08 tmp0 [V08,T10] ( 2, 0 ) ref -> esi class-hnd exact single-def "non-inline candidate call" <<unknown class>>
+; V09 tmp1 [V09,T08] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V10 tmp2 [V10,T03] ( 6, 2.47) ref -> eax class-hnd exact single-def "NewObj constructor temp" <System.Net.Security.SafeFreeCertContext>
+; V11 tmp3 [V11,T09] ( 3, 0 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.Net.Security.SafeFreeContextBuffer_SECURITY>
;* V12 tmp4 [V12 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
; V13 tmp5 [V13,T00] ( 5, 5.05) byref -> ecx "Inline stloc first use temp"
-; V14 tmp6 [V14,T13] ( 2, 0 ) ref -> edx single-def "argument with side effect"
-; V15 tmp7 [V15,T14] ( 2, 0 ) ref -> esi single-def "argument with side effect"
-; V16 tmp8 [V16,T03] ( 2, 4.04) int -> ecx "Cast away GC"
-; V17 tmp9 [V17,T02] ( 2, 4.04) ref -> esi single-def "argument with side effect"
-; V18 tmp10 [V18,T04] ( 2, 4.04) int -> edx "argument with side effect"
+; V14 tmp6 [V14,T11] ( 2, 0 ) ref -> edx single-def "argument with side effect"
+; V15 tmp7 [V15,T12] ( 2, 0 ) ref -> esi single-def "argument with side effect"
+; V16 tmp8 [V16,T02] ( 2, 4.04) int -> ecx "Cast away GC"
;
; Lcl frame size = 4
@@ -52,8 +50,9 @@ G_M45105_IG02: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
; gcrRegs +[ecx]
mov gword ptr [edi], ecx
test ebx, ebx
+ mov eax, dword ptr [ebp+0x18]
jne SHORT G_M45105_IG05
- ;; size=8 bbWeight=1 PerfScore 2.50
+ ;; size=11 bbWeight=1 PerfScore 3.50
G_M45105_IG03: ; bbWeight=1.01, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
; gcrRegs -[ecx ebx]
xor ecx, ecx
@@ -61,16 +60,16 @@ G_M45105_IG03: ; bbWeight=1.01, gcrefRegs=00000040 {esi}, byrefRegs=00000
cmp dword ptr [ebp+0x14], 0
cmovne ecx, bword ptr [ebp+0x10]
mov bword ptr [ebp-0x10], ecx
- mov edx, dword ptr [ebp+0x18]
push ecx
push gword ptr [edi]
mov ecx, esi
; gcrRegs +[ecx]
; byrRegs -[ecx]
+ mov edx, eax
call [<unknown method>]
; gcrRegs -[ecx esi]
; byrRegs -[edi]
- ;; size=27 bbWeight=1.01 PerfScore 12.62
+ ;; size=26 bbWeight=1.01 PerfScore 11.86
G_M45105_IG04: ; bbWeight=1.01, epilog, nogc, extend
pop ecx
pop ebx
@@ -83,9 +82,10 @@ G_M45105_IG05: ; bbWeight=0.21, gcVars=00000000 {}, gcrefRegs=00000048 {e
; gcrRegs +[ebx esi]
; byrRegs +[edi]
cmp ebx, 0xD1FFAB1E
- je SHORT G_M45105_IG07
+ je G_M45105_IG07
cmp ebx, 0xD1FFAB1E
jne SHORT G_M45105_IG06
+ mov dword ptr [ebp+0x18], eax
mov ecx, 0xD1FFAB1E ; System.Net.Security.SafeFreeCertContext
call CORINFO_HELP_NEWFAST
; gcrRegs -[ebx] +[eax]
@@ -99,8 +99,9 @@ G_M45105_IG05: ; bbWeight=0.21, gcVars=00000000 {}, gcrefRegs=00000048 {e
call CORINFO_HELP_CHECKED_ASSIGN_REF_EAX
; gcrRegs -[eax]
; byrRegs -[edx]
+ mov eax, dword ptr [ebp+0x18]
jmp SHORT G_M45105_IG03
- ;; size=55 bbWeight=0.21 PerfScore 2.32
+ ;; size=65 bbWeight=0.21 PerfScore 2.73
G_M45105_IG06: ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
; gcrRegs -[esi] +[ebx]
; byrRegs -[edi]
@@ -145,6 +146,7 @@ G_M45105_IG06: ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
G_M45105_IG07: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
; gcrRegs +[esi]
; byrRegs +[edi]
+ mov dword ptr [ebp+0x18], eax
mov ecx, 0xD1FFAB1E ; System.Net.Security.SafeFreeContextBuffer_SECURITY
call CORINFO_HELP_NEWFAST
; gcrRegs +[eax]
@@ -161,9 +163,10 @@ G_M45105_IG07: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000080
call CORINFO_HELP_CHECKED_ASSIGN_REF_EBX
; gcrRegs -[ebx]
; byrRegs -[edx]
+ mov eax, dword ptr [ebp+0x18]
jmp G_M45105_IG03
- ;; size=36 bbWeight=0 PerfScore 0.00
+ ;; size=42 bbWeight=0 PerfScore 0.00
-; Total bytes of code 229, prolog size 12, PerfScore 30.72, instruction count 76, allocated bytes for code 229 (MethodHash=f4584fce) for method System.Net.SSPISecureChannelType:QueryContextAttributes(System.Net.Security.SafeDeleteContext,int,System.Span`1[ubyte],System.Type,byref):int:this (Tier1)
+; Total bytes of code 247, prolog size 12, PerfScore 31.38, instruction count 81, allocated bytes for code 247 (MethodHash=f4584fce) for method System.Net.SSPISecureChannelType:QueryContextAttributes(System.Net.Security.SafeDeleteContext,int,System.Span`1[ubyte],System.Type,byref):int:this (Tier1)
; ============================================================
librariestestsnotieredcompilation.run.windows.x86.Release.mch
-48 (-23.41%) : 174980.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
@@ -8,24 +8,22 @@
; 1 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 8, 12 ) ref -> esi this class-hnd single-def <System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension>
+; V00 this [V00,T05] ( 8, 12 ) ref -> esi this class-hnd single-def <System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension>
;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Xml.Xsl.XsltContext>
-; V02 arg2 [V02,T08] ( 7, 11 ) ref -> [ebp+0x0C] class-hnd single-def <System.Object[]>
+; V02 arg2 [V02,T06] ( 8, 11.04) ref -> edi class-hnd single-def <System.Object[]>
;* V03 arg3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Xml.XPath.XPathNavigator>
-; V04 loc0 [V04,T03] ( 11, 19 ) int -> ebx
+; V04 loc0 [V04,T00] ( 22, 39.04) int -> ebx
;* V05 tmp0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Object>
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.MethodInfo>
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Object>
; V08 tmp3 [V08,T01] ( 6, 24 ) ref -> eax "arr expr"
-; V09 tmp4 [V09,T02] ( 6, 24 ) ref -> edi "arr expr"
-; V10 tmp5 [V10,T05] ( 4, 16 ) ref -> ecx "argument with side effect"
-; V11 tmp6 [V11,T06] ( 4, 16 ) int -> eax "argument with side effect"
-; V12 tmp7 [V12,T00] ( 15, 56.08) int -> [ebp-0x10] "argument with side effect"
-; V13 tmp8 [V13,T04] ( 5, 16.08) ref -> eax "argument with side effect"
-; V14 tmp9 [V14,T09] ( 3, 6 ) ref -> ecx single-def "argument with side effect"
-; V15 tmp10 [V15,T10] ( 2, 4 ) ref -> edx single-def "argument with side effect"
+; V09 tmp4 [V09,T02] ( 6, 24 ) ref -> eax "arr expr"
+; V10 tmp5 [V10,T03] ( 4, 16 ) ref -> ecx "argument with side effect"
+; V11 tmp6 [V11,T04] ( 4, 16 ) int -> edx "argument with side effect"
+; V12 tmp7 [V12,T07] ( 3, 6 ) ref -> ecx single-def "argument with side effect"
+; V13 tmp8 [V13,T08] ( 2, 4 ) ref -> edx single-def "argument with side effect"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M50779_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -33,86 +31,69 @@ G_M50779_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- push eax
mov esi, ecx
; gcrRegs +[esi]
mov edi, gword ptr [ebp+0x0C]
; gcrRegs +[edi]
- ;; size=12 bbWeight=1 PerfScore 6.50
+ ;; size=11 bbWeight=1 PerfScore 5.50
G_M50779_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov ebx, dword ptr [edi+0x04]
dec ebx
- js G_M50779_IG06
+ js SHORT G_M50779_IG06
cmp dword ptr [edi+0x04], ebx
jle SHORT G_M50779_IG05
- ;; size=15 bbWeight=1 PerfScore 7.25
+ ;; size=11 bbWeight=1 PerfScore 7.25
G_M50779_IG03: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp+0x0C], edi
- mov eax, edi
- ; gcrRegs +[eax]
- mov edx, ebx
- mov ecx, gword ptr [eax+4*edx+0x08]
+ mov ecx, gword ptr [edi+4*ebx+0x08]
; gcrRegs +[ecx]
mov eax, gword ptr [esi+0x04]
- cmp edx, dword ptr [eax+0x04]
- jae G_M50779_IG08
- mov eax, dword ptr [eax+4*edx+0x08]
- ; gcrRegs -[eax]
- mov edi, gword ptr [esi+0x1C]
- cmp edx, dword ptr [edi+0x04]
- jae G_M50779_IG08
- mov dword ptr [ebp-0x10], edx
- push gword ptr [edi+4*edx+0x08]
- mov edx, eax
+ ; gcrRegs +[eax]
+ cmp ebx, dword ptr [eax+0x04]
+ jae SHORT G_M50779_IG08
+ mov edx, dword ptr [eax+4*ebx+0x08]
+ mov eax, gword ptr [esi+0x1C]
+ cmp ebx, dword ptr [eax+0x04]
+ jae SHORT G_M50779_IG08
+ push gword ptr [eax+4*ebx+0x08]
call [System.Xml.Xsl.XsltOld.XsltCompileContext+XsltFunctionImpl:ConvertToXPathType(System.Object,int,System.Type):System.Object]
- ; gcrRegs -[ecx edi] +[eax]
+ ; gcrRegs -[ecx]
push eax
- mov edx, dword ptr [ebp-0x10]
- mov ecx, gword ptr [ebp+0x0C]
+ mov edx, ebx
+ mov ecx, edi
; gcrRegs +[ecx]
call CORINFO_HELP_ARRADDR_ST
; gcrRegs -[eax ecx]
dec ebx
- mov edi, gword ptr [ebp+0x0C]
- ; gcrRegs +[edi]
jns SHORT G_M50779_IG03
- ;; size=72 bbWeight=3.96 PerfScore 118.80
+ ;; size=47 bbWeight=3.96 PerfScore 98.01
G_M50779_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M50779_IG06
;; size=2 bbWeight=1 PerfScore 2.00
G_M50779_IG05: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp+0x0C], edi
- mov eax, edi
- ; gcrRegs +[eax]
- mov edx, ebx
- cmp edx, dword ptr [eax+0x04]
+ cmp ebx, dword ptr [edi+0x04]
jae SHORT G_M50779_IG08
- mov ecx, gword ptr [eax+4*edx+0x08]
+ mov ecx, gword ptr [edi+4*ebx+0x08]
; gcrRegs +[ecx]
mov eax, gword ptr [esi+0x04]
- cmp edx, dword ptr [eax+0x04]
+ ; gcrRegs +[eax]
+ cmp ebx, dword ptr [eax+0x04]
jae SHORT G_M50779_IG08
- mov eax, dword ptr [eax+4*edx+0x08]
- ; gcrRegs -[eax]
- mov edi, gword ptr [esi+0x1C]
- cmp edx, dword ptr [edi+0x04]
+ mov edx, dword ptr [eax+4*ebx+0x08]
+ mov eax, gword ptr [esi+0x1C]
+ cmp ebx, dword ptr [eax+0x04]
jae SHORT G_M50779_IG08
- mov dword ptr [ebp-0x10], edx
- push gword ptr [edi+4*edx+0x08]
- mov edx, eax
+ push gword ptr [eax+4*ebx+0x08]
call [System.Xml.Xsl.XsltOld.XsltCompileContext+XsltFunctionImpl:ConvertToXPathType(System.Object,int,System.Type):System.Object]
- ; gcrRegs -[ecx edi] +[eax]
+ ; gcrRegs -[ecx]
push eax
- mov edx, dword ptr [ebp-0x10]
- mov ecx, gword ptr [ebp+0x0C]
+ mov edx, ebx
+ mov ecx, edi
; gcrRegs +[ecx]
call CORINFO_HELP_ARRADDR_ST
; gcrRegs -[eax ecx]
dec ebx
- mov edi, gword ptr [ebp+0x0C]
- ; gcrRegs +[edi]
jns SHORT G_M50779_IG05
- ;; size=69 bbWeight=0.04 PerfScore 1.36
+ ;; size=52 bbWeight=0.04 PerfScore 1.15
G_M50779_IG06: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov ecx, gword ptr [esi+0x18]
; gcrRegs +[ecx]
@@ -128,19 +109,18 @@ G_M50779_IG06: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
; gcrRegs -[ecx edx esi edi] +[eax]
;; size=21 bbWeight=1 PerfScore 15.00
G_M50779_IG07: ; bbWeight=1, epilog, nogc, extend
- pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 8
- ;; size=8 bbWeight=1 PerfScore 4.50
+ ;; size=7 bbWeight=1 PerfScore 4.00
G_M50779_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax]
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 205, prolog size 7, PerfScore 155.41, instruction count 77, allocated bytes for code 205 (MethodHash=355039a4) for method System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
+; Total bytes of code 157, prolog size 6, PerfScore 132.91, instruction count 63, allocated bytes for code 157 (MethodHash=355039a4) for method System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
; ============================================================
-13 (-21.31%) : 70919.dasm - System.Collections.Immutable.Tests.ImmutableArrayTest+<>cDisplayClass128_1:
@@ -11,19 +11,15 @@
; V01 tmp0 [V01,T01] ( 3, 6 ) ref -> edi class-hnd exact single-def "Single-def Box Helper" <System.Collections.Immutable.ImmutableArray`1[int]>
; V02 tmp1 [V02,T03] ( 3, 3 ) ref -> ecx single-def "Field obj"
; V03 tmp2 [V03,T02] ( 2, 4 ) byref -> ecx single-def "argument with side effect"
-; TEMP_01 byref -> [esp+0x00]
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M54012_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push edi
push esi
- push eax
- xor eax, eax
- mov dword ptr [esp], eax
mov esi, ecx
; gcrRegs +[esi]
- ;; size=10 bbWeight=1 PerfScore 4.50
+ ;; size=4 bbWeight=1 PerfScore 2.25
G_M54012_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; System.Collections.Immutable.ImmutableArray`1[int]
call CORINFO_HELP_NEWSFAST
@@ -31,9 +27,6 @@ G_M54012_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcr arg pop 0
mov edi, eax
; gcrRegs +[edi]
- lea edx, bword ptr [edi+0x04]
- ; byrRegs +[edx]
- mov bword ptr [esp], edx
mov ecx, gword ptr [esi+0x0C]
; gcrRegs +[ecx]
cmp byte ptr [ecx], cl
@@ -44,26 +37,24 @@ G_M54012_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcr arg push 0
xor edx, edx
; gcrRegs +[edx]
- ; byrRegs -[edx]
call [<unknown method>]
; gcrRegs -[edx esi]
; byrRegs -[ecx]
; gcr arg pop 1
- mov edx, bword ptr [esp]
+ lea edx, bword ptr [edi+0x04]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax]
; byrRegs -[edx]
mov eax, edi
; gcrRegs +[eax]
- ;; size=47 bbWeight=1 PerfScore 15.75
+ ;; size=41 bbWeight=1 PerfScore 13.75
G_M54012_IG03: ; bbWeight=1, epilog, nogc, extend
- pop ecx
pop esi
pop edi
ret
- ;; size=4 bbWeight=1 PerfScore 2.50
+ ;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 61, prolog size 8, PerfScore 22.75, instruction count 24, allocated bytes for code 64 (MethodHash=75bf2d03) for method System.Collections.Immutable.Tests.ImmutableArrayTest+<>c__DisplayClass128_1:<RemoveRangeEnumerableInvalid>b__20():System.Object:this (FullOpts)
+; Total bytes of code 48, prolog size 2, PerfScore 18.00, instruction count 18, allocated bytes for code 48 (MethodHash=75bf2d03) for method System.Collections.Immutable.Tests.ImmutableArrayTest+<>c__DisplayClass128_1:<RemoveRangeEnumerableInvalid>b__20():System.Object:this (FullOpts)
; ============================================================
-13 (-11.02%) : 17145.dasm - System.Net.Http.Unit.Tests.HPack.DynamicTableTest+<>cDisplayClass60:<BoundsCheckThrowsIndexOutOfRangeException>b0():System.Object:this (FullOpts)
@@ -10,78 +10,69 @@
;
; V00 this [V00,T04] ( 3, 3 ) ref -> ecx this class-hnd single-def <System.Net.Http.Unit.Tests.HPack.DynamicTableTest+<>c__DisplayClass6_0>
; V01 tmp0 [V01,T02] ( 3, 6 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <System.Net.Http.HPack.HeaderField>
-; V02 tmp1 [V02,T00] ( 6, 10 ) int -> [ebp-0x0C] "Inlining Arg"
+; V02 tmp1 [V02,T00] ( 6, 10 ) int -> edi "Inlining Arg"
; V03 tmp2 [V03,T01] ( 5, 9 ) ref -> esi class-hnd exact single-def "Inlining Arg" <System.Net.Http.HPack.DynamicTable>
; V04 tmp3 [V04,T05] ( 3, 0 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V05 tmp4 [V05,T03] ( 3, 6 ) ref -> ecx single-def "arr expr"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M19023_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
mov ebp, esp
push edi
push esi
- push eax
- ;; size=6 bbWeight=1 PerfScore 4.25
+ ;; size=5 bbWeight=1 PerfScore 3.25
G_M19023_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx]
mov esi, gword ptr [ecx+0x04]
; gcrRegs +[esi]
cmp dword ptr [esi+0x10], 0
- jle SHORT G_M19023_IG08
+ jle SHORT G_M19023_IG07
mov edi, dword ptr [esi+0x14]
dec edi
- jns SHORT G_M19023_IG06
+ jns SHORT G_M19023_IG04
;; size=15 bbWeight=1 PerfScore 9.25
G_M19023_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
mov ecx, gword ptr [esi+0x04]
; gcrRegs +[ecx]
add edi, dword ptr [ecx+0x04]
- mov dword ptr [ebp-0x0C], edi
- ;; size=9 bbWeight=0.50 PerfScore 3.00
+ ;; size=6 bbWeight=0.50 PerfScore 2.50
G_M19023_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
mov ecx, 0xD1FFAB1E ; System.Net.Http.HPack.HeaderField
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
- lea edi, bword ptr [eax+0x04]
- ; byrRegs +[edi]
mov ecx, gword ptr [esi+0x04]
; gcrRegs +[ecx]
- mov esi, dword ptr [ebp-0x0C]
- ; gcrRegs -[esi]
- cmp esi, dword ptr [ecx+0x04]
- jae SHORT G_M19023_IG07
- mov edx, esi
+ cmp edi, dword ptr [ecx+0x04]
+ jae SHORT G_M19023_IG06
+ mov edx, edi
shl edx, 4
lea esi, bword ptr [ecx+edx+0x08]
+ ; gcrRegs -[esi]
; byrRegs +[esi]
+ lea edi, bword ptr [eax+0x04]
+ ; byrRegs +[edi]
call CORINFO_HELP_ASSIGN_BYREF
; gcrRegs -[ecx]
call CORINFO_HELP_ASSIGN_BYREF
movsd
movsd
- ;; size=45 bbWeight=1 PerfScore 14.50
+ ;; size=42 bbWeight=1 PerfScore 13.50
G_M19023_IG05: ; bbWeight=1, epilog, nogc, extend
- pop ecx
pop esi
pop edi
pop ebp
ret
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M19023_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax] +[esi]
+ ;; size=4 bbWeight=1 PerfScore 2.50
+G_M19023_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax]
; byrRegs -[esi edi]
- mov dword ptr [ebp-0x0C], edi
- jmp SHORT G_M19023_IG04
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M19023_IG07: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi]
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
-G_M19023_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M19023_IG07: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
@@ -98,6 +89,6 @@ G_M19023_IG08: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 118, prolog size 6, PerfScore 35.50, instruction count 44, allocated bytes for code 118 (MethodHash=b295b5b0) for method System.Net.Http.Unit.Tests.HPack.DynamicTableTest+<>c__DisplayClass6_0:<BoundsCheck_ThrowsIndexOutOfRangeException>b__0():System.Object:this (FullOpts)
+; Total bytes of code 105, prolog size 5, PerfScore 31.00, instruction count 38, allocated bytes for code 105 (MethodHash=b295b5b0) for method System.Net.Http.Unit.Tests.HPack.DynamicTableTest+<>c__DisplayClass6_0:<BoundsCheck_ThrowsIndexOutOfRangeException>b__0():System.Object:this (FullOpts)
; ============================================================
+8 (+6.72%) : 87959.dasm - Castle.Proxies.Invocations.TypeDescriptionProvider_GetReflectionType:InvokeMethodOnTarget():this (FullOpts)
@@ -9,19 +9,17 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 5, 5 ) ref -> esi this class-hnd single-def <Castle.Proxies.Invocations.TypeDescriptionProvider_GetReflectionType>
-; V01 loc0 [V01,T10] ( 2, 2 ) ref -> eax class-hnd single-def <<unknown class>>
-; V02 tmp0 [V02,T05] ( 2, 4 ) ref -> edi class-hnd single-def "impAppendStmt" <<unknown class>>
+; V01 loc0 [V01,T08] ( 2, 2 ) ref -> eax class-hnd single-def <<unknown class>>
+; V02 tmp0 [V02,T02] ( 3, 6 ) ref -> edi class-hnd single-def "impAppendStmt" <<unknown class>>
; V03 tmp1 [V03,T04] ( 3, 4.25) ref -> edx single-def "CASTCLASS eval op1"
-; V04 tmp2 [V04,T11] ( 3, 1.25) int -> ebx "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T01] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <<unknown class>>
-; V06 tmp4 [V06,T02] ( 3, 6 ) ref -> ecx single-def "arr expr"
-; V07 tmp5 [V07,T06] ( 2, 4 ) ref -> ebx single-def "arr expr"
-; V08 tmp6 [V08,T03] ( 3, 6 ) ref -> edi single-def "argument with side effect"
-; V09 tmp7 [V09,T07] ( 2, 4 ) ref -> edx single-def "argument with side effect"
-; V10 cse0 [V10,T08] ( 3, 3 ) ref -> [ebp-0x14] spill-single-def "CSE - moderate"
-; V11 cse1 [V11,T09] ( 3, 3 ) int -> [ebp-0x10] spill-single-def "CSE - moderate"
+; V04 tmp2 [V04,T09] ( 3, 1.25) int -> ebx "fgMakeTemp is creating a new local variable"
+; V05 tmp3 [V05,T01] ( 5, 6.75) ref -> [ebp-0x14] class-hnd "spilling QMark2" <<unknown class>>
+; V06 tmp4 [V06,T03] ( 3, 6 ) ref -> ecx single-def "arr expr"
+; V07 tmp5 [V07,T05] ( 2, 4 ) ref -> ebx single-def "arr expr"
+; V08 cse0 [V08,T06] ( 3, 3 ) ref -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V09 cse1 [V09,T07] ( 3, 3 ) int -> [ebp-0x10] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M21808_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -29,7 +27,7 @@ G_M21808_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 8
+ sub esp, 12
mov esi, ecx
; gcrRegs +[esi]
;; size=11 bbWeight=1 PerfScore 4.75
@@ -43,50 +41,52 @@ G_M21808_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs +[edi]
mov ebx, gword ptr [esi+0x08]
; gcrRegs +[ebx]
- mov gword ptr [ebp-0x14], ebx
- ; GC ptr vars +{V10}
+ mov gword ptr [ebp-0x18], ebx
+ ; GC ptr vars +{V08}
mov ecx, ebx
; gcrRegs +[ecx]
mov eax, dword ptr [ecx+0x04]
; gcrRegs -[eax]
mov dword ptr [ebp-0x10], eax
test eax, eax
- je SHORT G_M21808_IG07
+ je SHORT G_M21808_IG08
mov edx, gword ptr [ecx+0x08]
; gcrRegs +[edx]
mov ecx, edx
test ecx, ecx
- je SHORT G_M21808_IG05
+ je SHORT G_M21808_IG07
;; size=42 bbWeight=1 PerfScore 14.50
-G_M21808_IG03: ; bbWeight=0.25, gcVars=00000100 {V10}, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M21808_IG03: ; bbWeight=0.25, gcVars=00000040 {V08}, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ebx]
mov ebx, 0xD1FFAB1E ; <unknown class>
cmp dword ptr [ecx], ebx
+ mov gword ptr [ebp-0x14], ecx
+ ; GC ptr vars +{V05}
je SHORT G_M21808_IG05
- ;; size=9 bbWeight=0.25 PerfScore 1.06
+ ;; size=12 bbWeight=0.25 PerfScore 1.31
G_M21808_IG04: ; bbWeight=0.12, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
+ ; GC ptr vars -{V05}
mov ecx, ebx
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[edx] +[eax]
- mov edx, eax
- ; gcrRegs +[edx]
- mov ecx, edx
- ; gcrRegs +[ecx]
- ;; size=11 bbWeight=0.12 PerfScore 0.22
-G_M21808_IG05: ; bbWeight=1, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax edx]
- mov edx, ecx
- ; gcrRegs +[edx]
- mov ebx, gword ptr [ebp-0x14]
+ mov gword ptr [ebp-0x14], eax
+ ; GC ptr vars +{V05}
+ ;; size=10 bbWeight=0.12 PerfScore 0.28
+G_M21808_IG05: ; bbWeight=1, gcVars=00000042 {V05 V08}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax]
+ mov ebx, gword ptr [ebp-0x18]
; gcrRegs +[ebx]
cmp dword ptr [ebp-0x10], 1
- jbe SHORT G_M21808_IG07
+ jbe SHORT G_M21808_IG08
push gword ptr [ebx+0x0C]
mov ecx, edi
+ ; gcrRegs +[ecx]
+ mov edx, gword ptr [ebp-0x14]
+ ; gcrRegs +[edx]
mov eax, dword ptr [edi]
mov eax, dword ptr [eax+0x34]
- ; GC ptr vars -{V10}
+ ; GC ptr vars -{V05 V08}
call [eax+0x08]<unknown method>
; gcrRegs -[ecx edx ebx edi] +[eax]
lea edx, bword ptr [esi+0x18]
@@ -94,7 +94,7 @@ G_M21808_IG05: ; bbWeight=1, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax esi]
; byrRegs -[edx]
- ;; size=32 bbWeight=1 PerfScore 15.00
+ ;; size=33 bbWeight=1 PerfScore 15.75
G_M21808_IG06: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
@@ -103,11 +103,20 @@ G_M21808_IG06: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=1 PerfScore 3.50
-G_M21808_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M21808_IG07: ; bbWeight=0.50, gcVars=00000040 {V08}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs +[ecx esi edi]
+ ; GC ptr vars +{V06 V08}
+ mov gword ptr [ebp-0x14], ecx
+ ; GC ptr vars +{V05}
+ jmp SHORT G_M21808_IG05
+ ;; size=5 bbWeight=0.50 PerfScore 1.50
+G_M21808_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[ecx esi edi]
+ ; GC ptr vars -{V05 V06 V08}
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 119, prolog size 9, PerfScore 39.03, instruction count 48, allocated bytes for code 119 (MethodHash=14a4aacf) for method Castle.Proxies.Invocations.TypeDescriptionProvider_GetReflectionType:InvokeMethodOnTarget():this (FullOpts)
+; Total bytes of code 127, prolog size 9, PerfScore 41.59, instruction count 50, allocated bytes for code 127 (MethodHash=14a4aacf) for method Castle.Proxies.Invocations.TypeDescriptionProvider_GetReflectionType:InvokeMethodOnTarget():this (FullOpts)
; ============================================================
+8 (+6.72%) : 87991.dasm - Castle.Proxies.Invocations.TypeDescriptionProvider_GetTypeDescriptor:InvokeMethodOnTarget():this (FullOpts)
@@ -9,19 +9,17 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 5, 5 ) ref -> esi this class-hnd single-def <Castle.Proxies.Invocations.TypeDescriptionProvider_GetTypeDescriptor>
-; V01 loc0 [V01,T10] ( 2, 2 ) ref -> eax class-hnd single-def <<unknown class>>
-; V02 tmp0 [V02,T05] ( 2, 4 ) ref -> edi class-hnd single-def "impAppendStmt" <<unknown class>>
+; V01 loc0 [V01,T08] ( 2, 2 ) ref -> eax class-hnd single-def <<unknown class>>
+; V02 tmp0 [V02,T02] ( 3, 6 ) ref -> edi class-hnd single-def "impAppendStmt" <<unknown class>>
; V03 tmp1 [V03,T04] ( 3, 4.25) ref -> edx single-def "CASTCLASS eval op1"
-; V04 tmp2 [V04,T11] ( 3, 1.25) int -> ebx "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T01] ( 5, 6.75) ref -> registers class-hnd "spilling QMark2" <<unknown class>>
-; V06 tmp4 [V06,T02] ( 3, 6 ) ref -> ecx single-def "arr expr"
-; V07 tmp5 [V07,T06] ( 2, 4 ) ref -> ebx single-def "arr expr"
-; V08 tmp6 [V08,T03] ( 3, 6 ) ref -> edi single-def "argument with side effect"
-; V09 tmp7 [V09,T07] ( 2, 4 ) ref -> edx single-def "argument with side effect"
-; V10 cse0 [V10,T08] ( 3, 3 ) ref -> [ebp-0x14] spill-single-def "CSE - moderate"
-; V11 cse1 [V11,T09] ( 3, 3 ) int -> [ebp-0x10] spill-single-def "CSE - moderate"
+; V04 tmp2 [V04,T09] ( 3, 1.25) int -> ebx "fgMakeTemp is creating a new local variable"
+; V05 tmp3 [V05,T01] ( 5, 6.75) ref -> [ebp-0x14] class-hnd "spilling QMark2" <<unknown class>>
+; V06 tmp4 [V06,T03] ( 3, 6 ) ref -> ecx single-def "arr expr"
+; V07 tmp5 [V07,T05] ( 2, 4 ) ref -> ebx single-def "arr expr"
+; V08 cse0 [V08,T06] ( 3, 3 ) ref -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V09 cse1 [V09,T07] ( 3, 3 ) int -> [ebp-0x10] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M17764_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -29,7 +27,7 @@ G_M17764_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 8
+ sub esp, 12
mov esi, ecx
; gcrRegs +[esi]
;; size=11 bbWeight=1 PerfScore 4.75
@@ -43,50 +41,52 @@ G_M17764_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs +[edi]
mov ebx, gword ptr [esi+0x08]
; gcrRegs +[ebx]
- mov gword ptr [ebp-0x14], ebx
- ; GC ptr vars +{V10}
+ mov gword ptr [ebp-0x18], ebx
+ ; GC ptr vars +{V08}
mov ecx, ebx
; gcrRegs +[ecx]
mov eax, dword ptr [ecx+0x04]
; gcrRegs -[eax]
mov dword ptr [ebp-0x10], eax
test eax, eax
- je SHORT G_M17764_IG07
+ je SHORT G_M17764_IG08
mov edx, gword ptr [ecx+0x08]
; gcrRegs +[edx]
mov ecx, edx
test ecx, ecx
- je SHORT G_M17764_IG05
+ je SHORT G_M17764_IG07
;; size=42 bbWeight=1 PerfScore 14.50
-G_M17764_IG03: ; bbWeight=0.25, gcVars=00000100 {V10}, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M17764_IG03: ; bbWeight=0.25, gcVars=00000040 {V08}, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[ebx]
mov ebx, 0xD1FFAB1E ; <unknown class>
cmp dword ptr [ecx], ebx
+ mov gword ptr [ebp-0x14], ecx
+ ; GC ptr vars +{V05}
je SHORT G_M17764_IG05
- ;; size=9 bbWeight=0.25 PerfScore 1.06
+ ;; size=12 bbWeight=0.25 PerfScore 1.31
G_M17764_IG04: ; bbWeight=0.12, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx]
+ ; GC ptr vars -{V05}
mov ecx, ebx
call CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[edx] +[eax]
- mov edx, eax
- ; gcrRegs +[edx]
- mov ecx, edx
- ; gcrRegs +[ecx]
- ;; size=11 bbWeight=0.12 PerfScore 0.22
-G_M17764_IG05: ; bbWeight=1, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
- ; gcrRegs -[eax edx]
- mov edx, ecx
- ; gcrRegs +[edx]
- mov ebx, gword ptr [ebp-0x14]
+ mov gword ptr [ebp-0x14], eax
+ ; GC ptr vars +{V05}
+ ;; size=10 bbWeight=0.12 PerfScore 0.28
+G_M17764_IG05: ; bbWeight=1, gcVars=00000042 {V05 V08}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax]
+ mov ebx, gword ptr [ebp-0x18]
; gcrRegs +[ebx]
cmp dword ptr [ebp-0x10], 1
- jbe SHORT G_M17764_IG07
+ jbe SHORT G_M17764_IG08
push gword ptr [ebx+0x0C]
mov ecx, edi
+ ; gcrRegs +[ecx]
+ mov edx, gword ptr [ebp-0x14]
+ ; gcrRegs +[edx]
mov eax, dword ptr [edi]
mov eax, dword ptr [eax+0x34]
- ; GC ptr vars -{V10}
+ ; GC ptr vars -{V05 V08}
call [eax+0x10]<unknown method>
; gcrRegs -[ecx edx ebx edi] +[eax]
lea edx, bword ptr [esi+0x18]
@@ -94,7 +94,7 @@ G_M17764_IG05: ; bbWeight=1, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax esi]
; byrRegs -[edx]
- ;; size=32 bbWeight=1 PerfScore 15.00
+ ;; size=33 bbWeight=1 PerfScore 15.75
G_M17764_IG06: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
@@ -103,11 +103,20 @@ G_M17764_IG06: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=8 bbWeight=1 PerfScore 3.50
-G_M17764_IG07: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M17764_IG07: ; bbWeight=0.50, gcVars=00000040 {V08}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs +[ecx esi edi]
+ ; GC ptr vars +{V06 V08}
+ mov gword ptr [ebp-0x14], ecx
+ ; GC ptr vars +{V05}
+ jmp SHORT G_M17764_IG05
+ ;; size=5 bbWeight=0.50 PerfScore 1.50
+G_M17764_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[ecx esi edi]
+ ; GC ptr vars -{V05 V06 V08}
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 119, prolog size 9, PerfScore 39.03, instruction count 48, allocated bytes for code 119 (MethodHash=34faba9b) for method Castle.Proxies.Invocations.TypeDescriptionProvider_GetTypeDescriptor:InvokeMethodOnTarget():this (FullOpts)
+; Total bytes of code 127, prolog size 9, PerfScore 41.59, instruction count 50, allocated bytes for code 127 (MethodHash=34faba9b) for method Castle.Proxies.Invocations.TypeDescriptionProvider_GetTypeDescriptor:InvokeMethodOnTarget():this (FullOpts)
; ============================================================
+22 (+7.24%) : 26145.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (FullOpts)
@@ -8,28 +8,26 @@
; 4 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 4, 6 ) byref -> [ebp-0x18] this single-def
+; V00 this [V00,T05] ( 4, 6 ) byref -> [ebp-0x28] this single-def
; V01 arg1 [V01,T02] ( 11, 20 ) ref -> esi class-hnd single-def <System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig]>
-; V02 arg2 [V02,T08] ( 4, 8 ) ref -> ebx class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo>
+; V02 arg2 [V02,T06] ( 4, 8 ) ref -> ebx class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo>
; V03 loc0 [V03,T01] ( 13, 25.50) int -> [ebp-0x10]
; V04 loc1 [V04,T00] ( 16, 43 ) int -> [ebp-0x14]
-; V05 loc2 [V05,T15] ( 3, 6 ) int -> eax
-; V06 tmp0 [V06,T09] ( 2, 8 ) ref -> edi class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig>
-; V07 tmp1 [V07,T10] ( 2, 8 ) ref -> edx class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig>
-; V08 tmp2 [V08,T04] ( 3, 12 ) ref -> edi "arr expr"
-; V09 tmp3 [V09,T05] ( 3, 12 ) ref -> ecx "arr expr"
-;* V10 tmp4 [V10,T18] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-; V11 tmp5 [V11,T11] ( 2, 8 ) ref -> edi "argument with side effect"
-; V12 tmp6 [V12,T06] ( 3, 12 ) ref -> edx "arr expr"
-; V13 tmp7 [V13,T07] ( 3, 12 ) ref -> ecx "arr expr"
-;* V14 tmp8 [V14,T19] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-; V15 tmp9 [V15,T12] ( 2, 8 ) ref -> edx "argument with side effect"
-; V16 cse0 [V16,T16] ( 3, 6 ) int -> ecx "CSE - conservative"
-; V17 cse1 [V17,T13] ( 3, 6 ) ref -> [ebp-0x1C] spill-single-def "CSE - conservative"
-; V18 cse2 [V18,T17] ( 3, 6 ) int -> ecx "CSE - conservative"
-; V19 cse3 [V19,T14] ( 3, 6 ) ref -> [ebp-0x20] spill-single-def "CSE - conservative"
+; V05 loc2 [V05,T13] ( 3, 6 ) int -> eax
+; V06 tmp0 [V06,T07] ( 2, 8 ) ref -> edi class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig>
+; V07 tmp1 [V07,T08] ( 2, 8 ) ref -> edx class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig>
+; V08 tmp2 [V08,T03] ( 3, 12 ) ref -> edi "arr expr"
+; V09 tmp3 [V09,T09] ( 2, 8 ) ref -> ecx "arr expr"
+; V10 tmp4 [V10,T04] ( 3, 12 ) ref -> edx "arr expr"
+; V11 tmp5 [V11,T10] ( 2, 8 ) ref -> ecx "arr expr"
+; V12 cse0 [V12,T14] ( 3, 6 ) int -> [ebp-0x18] spill-single-def "CSE - moderate"
+; V13 cse1 [V13,T11] ( 3, 6 ) ref -> [ebp-0x2C] spill-single-def "CSE - moderate"
+; V14 cse2 [V14,T15] ( 3, 6 ) int -> [ebp-0x1C] spill-single-def "CSE - moderate"
+; V15 cse3 [V15,T12] ( 3, 6 ) ref -> [ebp-0x30] spill-single-def "CSE - moderate"
+; V16 cse4 [V16,T16] ( 3, 6 ) int -> [ebp-0x20] spill-single-def "CSE - moderate"
+; V17 cse5 [V17,T17] ( 3, 6 ) int -> [ebp-0x24] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 20
+; Lcl frame size = 36
G_M40378_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -37,15 +35,15 @@ G_M40378_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 20
- mov bword ptr [ebp-0x18], ecx
+ sub esp, 36
+ mov bword ptr [ebp-0x28], ecx
; GC ptr vars +{V00}
mov esi, edx
; gcrRegs +[esi]
mov ebx, gword ptr [ebp+0x08]
; gcrRegs +[ebx]
;; size=17 bbWeight=1 PerfScore 6.75
-G_M40378_IG02: ; bbWeight=1, gcVars=00000008 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M40378_IG02: ; bbWeight=1, gcVars=00000020 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
cmp dword ptr [esi+0x08], 1
jne SHORT G_M40378_IG05
;; size=6 bbWeight=1 PerfScore 4.00
@@ -62,9 +60,9 @@ G_M40378_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 4
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M40378_IG05: ; bbWeight=0.50, gcVars=00000008 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M40378_IG05: ; bbWeight=0.50, gcVars=00000020 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ebx esi]
- ; GC ptr vars +{V00 V03}
+ ; GC ptr vars +{V00 V05}
xor eax, eax
mov edx, 1
cmp dword ptr [esi+0x08], 1
@@ -76,21 +74,25 @@ G_M40378_IG06: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
;; size=4 bbWeight=4 PerfScore 5.00
G_M40378_IG07: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [esi+0x08]
+ mov dword ptr [ebp-0x18], ecx
cmp eax, ecx
jae G_M40378_IG24
mov edi, gword ptr [esi+0x04]
; gcrRegs +[edi]
- mov gword ptr [ebp-0x1C], edi
- ; GC ptr vars +{V17}
- cmp eax, dword ptr [edi+0x04]
+ mov gword ptr [ebp-0x2C], edi
+ ; GC ptr vars +{V13}
+ mov ecx, dword ptr [edi+0x04]
+ mov dword ptr [ebp-0x20], ecx
+ cmp eax, ecx
jae G_M40378_IG23
mov dword ptr [ebp-0x10], eax
mov edi, gword ptr [edi+4*eax+0x08]
+ mov ecx, dword ptr [ebp-0x18]
cmp edx, ecx
jae G_M40378_IG24
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x2C]
; gcrRegs +[ecx]
- cmp edx, dword ptr [ecx+0x04]
+ cmp edx, dword ptr [ebp-0x20]
jae G_M40378_IG23
mov dword ptr [ebp-0x14], edx
push gword ptr [ecx+4*edx+0x08]
@@ -99,12 +101,12 @@ G_M40378_IG07: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
; gcr arg push 1
push gword ptr [ebx+0x10]
; gcr arg push 2
- mov ecx, bword ptr [ebp-0x18]
+ mov ecx, bword ptr [ebp-0x28]
; gcrRegs -[ecx]
; byrRegs +[ecx]
mov edx, edi
; gcrRegs +[edx]
- ; GC ptr vars -{V03 V17}
+ ; GC ptr vars -{V05 V13}
call [<unknown method>]
; gcrRegs -[edx edi]
; byrRegs -[ecx]
@@ -113,7 +115,7 @@ G_M40378_IG07: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
jne SHORT G_M40378_IG09
mov edi, -1
jmp SHORT G_M40378_IG12
- ;; size=88 bbWeight=2 PerfScore 68.50
+ ;; size=99 bbWeight=2 PerfScore 71.00
G_M40378_IG08: ; bbWeight=0.25, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
mov edi, eax
jmp SHORT G_M40378_IG13
@@ -154,9 +156,9 @@ G_M40378_IG15: ; bbWeight=0.50, epilog, nogc, extend
pop ebp
ret 4
;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M40378_IG16: ; bbWeight=2, gcVars=00000008 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M40378_IG16: ; bbWeight=2, gcVars=00000020 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[ebx esi]
- ; GC ptr vars +{V00 V03}
+ ; GC ptr vars +{V00 V05}
mov eax, edi
jmp G_M40378_IG06
;; size=7 bbWeight=2 PerfScore 4.50
@@ -172,20 +174,24 @@ G_M40378_IG18: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
;; size=4 bbWeight=4 PerfScore 5.00
G_M40378_IG19: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, dword ptr [esi+0x08]
+ mov dword ptr [ebp-0x1C], ecx
cmp edi, ecx
jae SHORT G_M40378_IG24
mov edx, gword ptr [esi+0x04]
; gcrRegs +[edx]
- mov gword ptr [ebp-0x20], edx
- ; GC ptr vars +{V19}
- cmp edi, dword ptr [edx+0x04]
+ mov gword ptr [ebp-0x30], edx
+ ; GC ptr vars +{V15}
+ mov ecx, dword ptr [edx+0x04]
+ mov dword ptr [ebp-0x24], ecx
+ cmp edi, ecx
jae SHORT G_M40378_IG23
mov edx, gword ptr [edx+4*edi+0x08]
+ mov ecx, dword ptr [ebp-0x1C]
cmp eax, ecx
jae SHORT G_M40378_IG24
- mov ecx, gword ptr [ebp-0x20]
+ mov ecx, gword ptr [ebp-0x30]
; gcrRegs +[ecx]
- cmp eax, dword ptr [ecx+0x04]
+ cmp eax, dword ptr [ebp-0x24]
jae SHORT G_M40378_IG23
mov dword ptr [ebp-0x14], eax
push gword ptr [ecx+4*eax+0x08]
@@ -194,10 +200,10 @@ G_M40378_IG19: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
; gcr arg push 1
push gword ptr [ebx+0x10]
; gcr arg push 2
- mov ecx, bword ptr [ebp-0x18]
+ mov ecx, bword ptr [ebp-0x28]
; gcrRegs -[ecx]
; byrRegs +[ecx]
- ; GC ptr vars -{V03 V19}
+ ; GC ptr vars -{V05 V15}
call [<unknown method>]
; gcrRegs -[edx]
; byrRegs -[ecx]
@@ -205,7 +211,7 @@ G_M40378_IG19: ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
test eax, eax
mov eax, dword ptr [ebp-0x14]
jge SHORT G_M40378_IG14
- ;; size=63 bbWeight=2 PerfScore 63.50
+ ;; size=74 bbWeight=2 PerfScore 66.00
G_M40378_IG20: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
inc eax
cmp eax, dword ptr [esi+0x08]
@@ -232,6 +238,6 @@ G_M40378_IG24: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 304, prolog size 17, PerfScore 216.56, instruction count 114, allocated bytes for code 304 (MethodHash=ddc26245) for method Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (FullOpts)
+; Total bytes of code 326, prolog size 17, PerfScore 221.56, instruction count 122, allocated bytes for code 326 (MethodHash=ddc26245) for method Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (FullOpts)
; ============================================================
realworld.run.windows.x86.checked.mch
-8 (-14.04%) : 2276.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
@@ -9,7 +9,7 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 5, 5 ) ref -> ebx this class-hnd single-def <System.Threading.QueueUserWorkItemCallbackBase>
-; V01 tmp0 [V01,T01] ( 2, 4 ) ubyte -> ecx "Inlining Arg"
+;* V01 tmp0 [V01 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;
; Lcl frame size = 0
@@ -32,11 +32,8 @@ G_M21281_IG02: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
mov ecx, 1
xchg dword ptr [ebx], ecx
test ecx, ecx
- sete cl
- movzx ecx, cl
- test ecx, ecx
- jne SHORT G_M21281_IG04
- ;; size=32 bbWeight=1 PerfScore 29.50
+ je SHORT G_M21281_IG04
+ ;; size=24 bbWeight=1 PerfScore 28.00
G_M21281_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
; byrRegs -[ebx]
mov ecx, 0xD1FFAB1E
@@ -52,6 +49,6 @@ G_M21281_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
ret
;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 57, prolog size 4, PerfScore 35.75, instruction count 21, allocated bytes for code 57 (MethodHash=f256acde) for method System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
+; Total bytes of code 49, prolog size 4, PerfScore 34.25, instruction count 18, allocated bytes for code 49 (MethodHash=f256acde) for method System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
; ============================================================
-34 (-12.55%) : 15464.dasm - Microsoft.ML.Data.DataViewUtils+Splitter+Cursor:.ctor(Microsoft.ML.Runtime.IChannelProvider,Microsoft.ML.DataViewSchema,int[],int[],Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe[],System.Collections.Concurrent.BlockingCollection`1[Microsoft.ML.Data.DataViewUtils+Splitter+Batch],System.Action):this (FullOpts)
@@ -8,28 +8,27 @@
; Final local variable assignments
;
; V00 this [V00,T03] ( 15, 21 ) ref -> esi this class-hnd single-def <Microsoft.ML.Data.DataViewUtils+Splitter+Cursor>
-; V01 arg1 [V01,T11] ( 3, 3 ) ref -> edx class-hnd single-def <Microsoft.ML.Runtime.IChannelProvider>
-; V02 arg2 [V02,T16] ( 1, 1 ) ref -> [ebp+0x1C] class-hnd single-def <Microsoft.ML.DataViewSchema>
-; V03 arg3 [V03,T13] ( 2, 2 ) ref -> edi class-hnd single-def <int[]>
-; V04 arg4 [V04,T17] ( 1, 1 ) ref -> [ebp+0x14] class-hnd single-def <int[]>
-; V05 arg5 [V05,T14] ( 2, 2 ) ref -> ebx class-hnd single-def <Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe[]>
-; V06 arg6 [V06,T18] ( 1, 1 ) ref -> [ebp+0x0C] class-hnd single-def <System.Collections.Concurrent.BlockingCollection`1[Microsoft.ML.Data.DataViewUtils+Splitter+Batch]>
-; V07 arg7 [V07,T19] ( 1, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.Action>
-; V08 loc0 [V08,T04] ( 5, 17 ) int -> ebx
+; V01 arg1 [V01,T10] ( 3, 3 ) ref -> edx class-hnd single-def <Microsoft.ML.Runtime.IChannelProvider>
+; V02 arg2 [V02,T15] ( 1, 1 ) ref -> [ebp+0x1C] class-hnd single-def <Microsoft.ML.DataViewSchema>
+; V03 arg3 [V03,T12] ( 2, 2 ) ref -> edi class-hnd single-def <int[]>
+; V04 arg4 [V04,T16] ( 1, 1 ) ref -> [ebp+0x14] class-hnd single-def <int[]>
+; V05 arg5 [V05,T13] ( 2, 2 ) ref -> ebx class-hnd single-def <Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe[]>
+; V06 arg6 [V06,T17] ( 1, 1 ) ref -> [ebp+0x0C] class-hnd single-def <System.Collections.Concurrent.BlockingCollection`1[Microsoft.ML.Data.DataViewUtils+Splitter+Batch]>
+; V07 arg7 [V07,T18] ( 1, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.Action>
+; V08 loc0 [V08,T00] ( 7, 25 ) int -> ebx
;* V09 tmp0 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>>
-; V10 tmp1 [V10,T12] ( 3, 4 ) ref -> eax single-def "CASTCLASS eval op1"
-; V11 tmp2 [V11,T15] ( 3, 1 ) int -> edx "fgMakeTemp is creating a new local variable"
-; V12 tmp3 [V12,T07] ( 4, 6.50) ref -> ecx class-hnd single-def "spilling QMark2" <<unknown class>>
+; V10 tmp1 [V10,T11] ( 3, 4 ) ref -> eax single-def "CASTCLASS eval op1"
+; V11 tmp2 [V11,T14] ( 3, 1 ) int -> edx "fgMakeTemp is creating a new local variable"
+; V12 tmp3 [V12,T06] ( 4, 6.50) ref -> ecx class-hnd single-def "spilling QMark2" <<unknown class>>
; V13 tmp4 [V13,T01] ( 3, 24 ) ref -> ecx "arr expr"
; V14 tmp5 [V14,T02] ( 3, 24 ) ref -> ecx "argument with side effect"
-; V15 tmp6 [V15,T00] ( 4, 32 ) int -> [ebp-0x10] spill-single-def "argument with side effect"
-; V16 tmp7 [V16,T05] ( 2, 16 ) ref -> [ebp-0x18] spill-single-def "argument with side effect"
-; V17 tmp8 [V17,T08] ( 3, 6 ) ref -> ecx single-def "arr expr"
-; V18 tmp9 [V18,T09] ( 3, 6 ) ref -> ecx single-def "argument with side effect"
-; V19 cse0 [V19,T06] ( 5, 8 ) int -> [ebp-0x14] spill-single-def "CSE - moderate"
-; V20 rat0 [V20,T10] ( 3, 6 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
+; V15 tmp6 [V15,T04] ( 2, 16 ) ref -> [ebp-0x10] spill-single-def "argument with side effect"
+; V16 tmp7 [V16,T07] ( 3, 6 ) ref -> ecx single-def "arr expr"
+; V17 tmp8 [V17,T08] ( 3, 6 ) ref -> ecx single-def "argument with side effect"
+; V18 cse0 [V18,T05] ( 5, 8 ) int -> edi "CSE - moderate"
+; V19 rat0 [V19,T09] ( 3, 6 ) byref -> edx "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 12
+; Lcl frame size = 4
G_M44758_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -37,15 +36,15 @@ G_M44758_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 12
+ push eax
mov esi, ecx
; gcrRegs +[esi]
mov edi, gword ptr [ebp+0x18]
; gcrRegs +[edi]
mov ebx, gword ptr [ebp+0x10]
; gcrRegs +[ebx]
- ;; size=17 bbWeight=1 PerfScore 6.75
-G_M44758_IG02: ; bbWeight=1, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref
+ ;; size=15 bbWeight=1 PerfScore 7.50
+G_M44758_IG02: ; bbWeight=1, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[edx]
mov ecx, esi
; gcrRegs +[ecx]
@@ -85,43 +84,39 @@ G_M44758_IG02: ; bbWeight=1, gcrefRegs=000000CC {edx ebx esi edi}, byrefR
xor ebx, ebx
mov edi, dword ptr [edi+0x04]
; gcrRegs -[edi]
- mov dword ptr [ebp-0x14], edi
test edi, edi
- jle G_M44758_IG09
- ;; size=83 bbWeight=1 PerfScore 20.50
+ jle SHORT G_M44758_IG04
+ ;; size=76 bbWeight=1 PerfScore 19.50
G_M44758_IG03: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov eax, gword ptr [esi+0x2C]
; gcrRegs +[eax]
- mov gword ptr [ebp-0x18], eax
- ; GC ptr vars +{V16}
- mov edx, ebx
- mov dword ptr [ebp-0x10], edx
+ mov gword ptr [ebp-0x10], eax
+ ; GC ptr vars +{V15}
mov ecx, gword ptr [esi+0x28]
; gcrRegs +[ecx]
- cmp edx, dword ptr [ecx+0x04]
- jae G_M44758_IG10
- mov ecx, gword ptr [ecx+4*edx+0x08]
- mov edi, dword ptr [ecx]
- mov edi, dword ptr [edi+0x2C]
- call [edi+0x1C]<unknown method>
+ cmp ebx, dword ptr [ecx+0x04]
+ jae SHORT G_M44758_IG08
+ mov ecx, gword ptr [ecx+4*ebx+0x08]
+ mov edx, dword ptr [ecx]
+ mov edx, dword ptr [edx+0x2C]
+ call [edx+0x1C]<unknown method>
; gcrRegs -[ecx]
push eax
- mov edx, dword ptr [ebp-0x10]
- mov ecx, gword ptr [ebp-0x18]
+ mov ecx, gword ptr [ebp-0x10]
; gcrRegs +[ecx]
- ; GC ptr vars -{V16}
+ mov edx, ebx
+ ; GC ptr vars -{V15}
call CORINFO_HELP_ARRADDR_ST
; gcrRegs -[eax ecx]
inc ebx
- mov edi, dword ptr [ebp-0x14]
cmp edi, ebx
- jg SHORT G_M44758_IG08
- ;; size=55 bbWeight=4 PerfScore 103.00
+ jg SHORT G_M44758_IG03
+ ;; size=42 bbWeight=4 PerfScore 91.00
G_M44758_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, gword ptr [esi+0x28]
; gcrRegs +[ecx]
cmp edi, dword ptr [ecx+0x04]
- jae SHORT G_M44758_IG10
+ jae SHORT G_M44758_IG08
mov ecx, gword ptr [ecx+4*edi+0x08]
mov eax, dword ptr [ecx]
mov eax, dword ptr [eax+0x2C]
@@ -135,7 +130,7 @@ G_M44758_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
G_M44758_IG05: ; bbWeight=0.25, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
mov edx, 0xD1FFAB1E ; <unknown class>
cmp dword ptr [ecx], edx
- jne SHORT G_M44758_IG11
+ jne SHORT G_M44758_IG09
;; size=9 bbWeight=0.25 PerfScore 1.06
G_M44758_IG06: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax]
@@ -162,26 +157,17 @@ G_M44758_IG06: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000
; byrRegs -[edx]
;; size=46 bbWeight=1 PerfScore 9.00
G_M44758_IG07: ; bbWeight=1, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret 24
- ;; size=10 bbWeight=1 PerfScore 4.50
-G_M44758_IG08: ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs +[esi]
- jmp G_M44758_IG03
- ;; size=5 bbWeight=2 PerfScore 4.00
-G_M44758_IG09: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov edi, dword ptr [ebp-0x14]
- jmp SHORT G_M44758_IG04
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M44758_IG10: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi]
+ ;; size=8 bbWeight=1 PerfScore 4.50
+G_M44758_IG08: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
-G_M44758_IG11: ; bbWeight=0, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
+G_M44758_IG09: ; bbWeight=0, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
; gcrRegs +[eax]
mov ecx, edx
mov edx, eax
@@ -191,6 +177,6 @@ G_M44758_IG11: ; bbWeight=0, gcrefRegs=00000001 {eax}, byrefRegs=00000000
int3
;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 271, prolog size 9, PerfScore 166.81, instruction count 88, allocated bytes for code 271 (MethodHash=c0345129) for method Microsoft.ML.Data.DataViewUtils+Splitter+Cursor:.ctor(Microsoft.ML.Runtime.IChannelProvider,Microsoft.ML.DataViewSchema,int[],int[],Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe[],System.Collections.Concurrent.BlockingCollection`1[Microsoft.ML.Data.DataViewUtils+Splitter+Batch],System.Action):this (FullOpts)
+; Total bytes of code 237, prolog size 7, PerfScore 149.06, instruction count 81, allocated bytes for code 237 (MethodHash=c0345129) for method Microsoft.ML.Data.DataViewUtils+Splitter+Cursor:.ctor(Microsoft.ML.Runtime.IChannelProvider,Microsoft.ML.DataViewSchema,int[],int[],Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe[],System.Collections.Concurrent.BlockingCollection`1[Microsoft.ML.Data.DataViewUtils+Splitter+Batch],System.Action):this (FullOpts)
; ============================================================
-20 (-12.50%) : 35684.dasm - System.Management.Automation.ComInterop.ComInvokeBinder:MakeArgumentExpressions():System.Linq.Expressions.Expression[]:this (FullOpts)
@@ -8,18 +8,16 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 9, 13.50) ref -> esi this class-hnd single-def <System.Management.Automation.ComInterop.ComInvokeBinder>
-; V01 loc0 [V01,T07] ( 5, 6.50) ref -> [ebp-0x14] class-hnd <System.Linq.Expressions.Expression[]>
-; V02 loc1 [V02,T06] ( 4, 9.50) int -> edi
+; V00 this [V00,T03] ( 9, 13.50) ref -> esi this class-hnd single-def <System.Management.Automation.ComInterop.ComInvokeBinder>
+; V01 loc0 [V01,T05] ( 5, 6.50) ref -> ebx class-hnd <System.Linq.Expressions.Expression[]>
+; V02 loc1 [V02,T04] ( 4, 9.50) int -> edi
; V03 loc2 [V03,T02] ( 6, 21 ) int -> [ebp-0x10]
; V04 tmp0 [V04,T01] ( 3, 24 ) int -> edx "impSpillLclRefs"
;* V05 tmp1 [V05 ] ( 0, 0 ) int -> zero-ref "impSpillLclRefs"
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Dynamic.DynamicMetaObject>
-; V07 tmp3 [V07,T00] ( 3, 24 ) ref -> ebx "arr expr"
-; V08 tmp4 [V08,T03] ( 2, 16 ) ref -> ecx "argument with side effect"
-; V09 tmp5 [V09,T04] ( 2, 16 ) int -> edx "argument with side effect"
+; V07 tmp3 [V07,T00] ( 3, 24 ) ref -> ecx "arr expr"
;
-; Lcl frame size = 8
+; Lcl frame size = 4
G_M34535_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -27,10 +25,10 @@ G_M34535_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 8
+ push eax
mov esi, ecx
; gcrRegs +[esi]
- ;; size=11 bbWeight=1 PerfScore 4.75
+ ;; size=9 bbWeight=1 PerfScore 5.50
G_M34535_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
xor edi, edi
cmp gword ptr [esi+0x1C], 0
@@ -76,68 +74,50 @@ G_M34535_IG05: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
mov ecx, gword ptr [esi+0x14]
; gcrRegs +[ecx]
cmp dword ptr [ecx+0x04], 0
- jle SHORT G_M34535_IG10
+ jle SHORT G_M34535_IG07
;; size=11 bbWeight=1 PerfScore 6.25
G_M34535_IG06: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ecx]
mov edx, edi
lea edi, [edx+0x01]
- mov gword ptr [ebp-0x14], ebx
- ; GC ptr vars +{V01}
- mov ecx, ebx
+ mov ecx, gword ptr [esi+0x14]
; gcrRegs +[ecx]
- mov ebx, gword ptr [esi+0x14]
- cmp eax, dword ptr [ebx+0x04]
- jae SHORT G_M34535_IG11
+ cmp eax, dword ptr [ecx+0x04]
+ jae SHORT G_M34535_IG09
mov dword ptr [ebp-0x10], eax
- mov ebx, gword ptr [ebx+4*eax+0x08]
- push gword ptr [ebx+0x08]
+ mov ecx, gword ptr [ecx+4*eax+0x08]
+ push gword ptr [ecx+0x08]
; gcr arg push 0
+ mov ecx, ebx
call CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[ecx ebx]
+ ; gcrRegs -[ecx]
; gcr arg pop 1
- mov ebx, dword ptr [ebp-0x10]
- inc ebx
- mov eax, gword ptr [esi+0x14]
- ; gcrRegs +[eax]
- cmp dword ptr [eax+0x04], ebx
+ mov eax, dword ptr [ebp-0x10]
+ inc eax
+ mov edx, gword ptr [esi+0x14]
+ ; gcrRegs +[edx]
+ cmp dword ptr [edx+0x04], eax
+ jg SHORT G_M34535_IG06
+ ;; size=42 bbWeight=4 PerfScore 81.00
+G_M34535_IG07: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[edx esi]
mov eax, ebx
- ; gcrRegs -[eax]
- jg SHORT G_M34535_IG09
- ;; size=47 bbWeight=4 PerfScore 86.00
-G_M34535_IG07: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi]
- mov eax, gword ptr [ebp-0x14]
; gcrRegs +[eax]
- ;; size=3 bbWeight=1 PerfScore 1.00
+ ;; size=2 bbWeight=1 PerfScore 0.25
G_M34535_IG08: ; bbWeight=1, epilog, nogc, extend
- lea esp, [ebp-0x0C]
+ pop ecx
pop ebx
pop esi
pop edi
pop ebp
ret
- ;; size=8 bbWeight=1 PerfScore 3.50
-G_M34535_IG09: ; bbWeight=2, gcVars=00000080 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax] +[esi]
- mov ebx, gword ptr [ebp-0x14]
- ; gcrRegs +[ebx]
- jmp SHORT G_M34535_IG06
- ;; size=5 bbWeight=2 PerfScore 6.00
-G_M34535_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[esi]
- ; GC ptr vars -{V01}
- mov gword ptr [ebp-0x14], ebx
- ; GC ptr vars +{V01}
- jmp SHORT G_M34535_IG07
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M34535_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx]
- ; GC ptr vars -{V01}
+ ;; size=6 bbWeight=1 PerfScore 3.50
+G_M34535_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ; gcrRegs -[eax ebx]
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 11, PerfScore 121.75, instruction count 61, allocated bytes for code 160 (MethodHash=e9dc7918) for method System.Management.Automation.ComInterop.ComInvokeBinder:MakeArgumentExpressions():System.Linq.Expressions.Expression[]:this (FullOpts)
+; Total bytes of code 140, prolog size 9, PerfScore 109.25, instruction count 55, allocated bytes for code 140 (MethodHash=e9dc7918) for method System.Management.Automation.ComInterop.ComInvokeBinder:MakeArgumentExpressions():System.Linq.Expressions.Expression[]:this (FullOpts)
; ============================================================
+8 (+2.05%) : 104.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
@@ -8,33 +8,33 @@
; 0 inlinees with PGO data; 8 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T08] ( 7, 4.50) ref -> esi class-hnd single-def <System.String>
-; V01 loc0 [V01,T10] ( 6, 2.38) ref -> edi class-hnd exact <System.String>
-; V02 loc1 [V02,T07] ( 8, 14.50) ref -> ebx class-hnd exact single-def <<unknown class>>
-; V03 loc2 [V03,T02] ( 6, 17 ) ref -> esi class-hnd exact single-def <<unknown class>>
-; V04 loc3 [V04,T00] ( 9, 32.50) int -> edi
+; V00 arg0 [V00,T07] ( 7, 4.50) ref -> esi class-hnd single-def <System.String>
+; V01 loc0 [V01,T09] ( 6, 2.38) ref -> edi class-hnd exact <System.String>
+; V02 loc1 [V02,T06] ( 7, 14 ) ref -> ebx class-hnd exact single-def <<unknown class>>
+; V03 loc2 [V03,T02] ( 6, 17 ) ref -> edi class-hnd exact single-def <<unknown class>>
+; V04 loc3 [V04,T00] ( 9, 32.50) int -> [ebp-0x10]
; V05 loc4 [V05,T03] ( 5, 16.50) int -> ebx
-; V06 tmp0 [V06,T11] ( 2, 2 ) ref -> edi single-def "CASTCLASS eval op1"
+; V06 tmp0 [V06,T10] ( 2, 2 ) ref -> edi single-def "CASTCLASS eval op1"
;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-; V08 tmp2 [V08,T09] ( 3, 3 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V08 tmp2 [V08,T08] ( 3, 3 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V09 tmp3 [V09,T04] ( 2, 16 ) byref -> ecx "impAppendStmt"
;* V10 tmp4 [V10,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V11 tmp5 [V11,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V12 tmp6 [V12 ] ( 2, 2 ) ushort -> [ebp-0x10] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+; V12 tmp6 [V12 ] ( 2, 2 ) ushort -> [ebp-0x14] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
;* V13 tmp7 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V14 tmp8 [V14 ] ( 2, 2 ) ushort -> [ebp-0x14] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+; V14 tmp8 [V14 ] ( 2, 2 ) ushort -> [ebp-0x18] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
;* V15 tmp9 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V16 tmp10 [V16,T14] ( 2, 1 ) byref -> ecx single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V17 tmp11 [V17,T18] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x4)" P-INDEP
; V18 tmp12 [V18,T15] ( 2, 1 ) byref -> ecx single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V19 tmp13 [V19,T19] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x4)" P-INDEP
-; V20 tmp14 [V20,T12] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-; V21 tmp15 [V21,T13] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V20 tmp14 [V20,T11] ( 2, 2 ) ref -> edx single-def "argument with side effect"
+; V21 tmp15 [V21,T12] ( 2, 2 ) ref -> edx single-def "argument with side effect"
; V22 tmp16 [V22,T01] ( 3, 24 ) ref -> edx "arr expr"
-; V23 tmp17 [V23,T05] ( 2, 16 ) byref -> ecx "argument with side effect"
-; V24 tmp18 [V24,T06] ( 2, 16 ) ref -> edx "argument with side effect"
+; V23 tmp17 [V23,T05] ( 2, 16 ) ref -> edx "argument with side effect"
+; V24 cse0 [V24,T13] ( 3, 1.50) int -> esi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 12
G_M12781_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -42,7 +42,7 @@ G_M12781_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 8
+ sub esp, 12
mov esi, ecx
; gcrRegs +[esi]
;; size=11 bbWeight=1 PerfScore 4.75
@@ -113,8 +113,8 @@ G_M12781_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
;; size=64 bbWeight=0.50 PerfScore 7.88
G_M12781_IG09: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
movzx ecx, word ptr [D1FFAB1EH] ; static handle
- mov word ptr [ebp-0x10], cx
- lea ecx, bword ptr [ebp-0x10]
+ mov word ptr [ebp-0x14], cx
+ lea ecx, bword ptr [ebp-0x14]
; byrRegs +[ecx]
push 1
push ecx
@@ -140,8 +140,8 @@ G_M12781_IG10: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=0
;; size=17 bbWeight=0.50 PerfScore 2.62
G_M12781_IG11: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref
movzx ecx, word ptr [D1FFAB1EH] ; static handle
- mov word ptr [ebp-0x14], cx
- lea ecx, bword ptr [ebp-0x14]
+ mov word ptr [ebp-0x18], cx
+ lea ecx, bword ptr [ebp-0x18]
; byrRegs +[ecx]
push 1
push ecx
@@ -160,57 +160,61 @@ G_M12781_IG11: ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=0
; gcrRegs -[eax ecx edx]
;; size=42 bbWeight=0.50 PerfScore 6.75
G_M12781_IG12: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
- mov edx, dword ptr [ebx+0x08]
+ mov esi, dword ptr [ebx+0x08]
+ mov edx, esi
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[eax]
- mov esi, eax
- ; gcrRegs +[esi]
- xor edi, edi
- cmp dword ptr [ebx+0x08], 0
- jle SHORT G_M12781_IG14
- ;; size=23 bbWeight=0.50 PerfScore 3.88
-G_M12781_IG13: ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ mov edi, eax
+ ; gcrRegs +[edi]
+ xor eax, eax
; gcrRegs -[eax]
- cmp edi, dword ptr [esi+0x04]
+ test esi, esi
+ jle SHORT G_M12781_IG14
+ ;; size=23 bbWeight=0.50 PerfScore 2.62
+G_M12781_IG13: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz
+ cmp eax, dword ptr [edi+0x04]
jae SHORT G_M12781_IG17
- lea ecx, bword ptr [esi+8*edi+0x08]
+ lea ecx, bword ptr [edi+8*eax+0x08]
; byrRegs +[ecx]
- cmp edi, dword ptr [ebx+0x08]
+ cmp eax, dword ptr [ebx+0x08]
jae SHORT G_M12781_IG20
mov edx, gword ptr [ebx+0x04]
; gcrRegs +[edx]
- cmp edi, dword ptr [edx+0x04]
+ cmp eax, dword ptr [edx+0x04]
jae SHORT G_M12781_IG17
- mov edx, gword ptr [edx+4*edi+0x08]
+ mov dword ptr [ebp-0x10], eax
+ mov edx, gword ptr [edx+4*eax+0x08]
call [<unknown method>]
; gcrRegs -[edx]
; byrRegs -[ecx]
- inc edi
- cmp edi, dword ptr [ebx+0x08]
+ mov esi, dword ptr [ebp-0x10]
+ inc esi
+ cmp esi, dword ptr [ebx+0x08]
+ mov eax, esi
jl SHORT G_M12781_IG13
- ;; size=38 bbWeight=4 PerfScore 97.00
-G_M12781_IG14: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ;; size=46 bbWeight=4 PerfScore 106.00
+G_M12781_IG14: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ebx]
xor ebx, ebx
- cmp dword ptr [esi+0x04], 0
+ cmp dword ptr [edi+0x04], 0
jle G_M12781_IG03
;; size=12 bbWeight=0.50 PerfScore 2.12
-G_M12781_IG15: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M12781_IG15: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
lea eax, [8*ebx]
add eax, 8
- add eax, esi
+ add eax, edi
; byrRegs +[eax]
push gword ptr [eax+0x04]
push gword ptr [eax]
call [<unknown method>]
; byrRegs -[eax]
inc ebx
- cmp dword ptr [esi+0x04], ebx
+ cmp dword ptr [edi+0x04], ebx
jg SHORT G_M12781_IG15
;; size=29 bbWeight=4 PerfScore 49.00
G_M12781_IG16: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi]
+ ; gcrRegs -[edi]
jmp G_M12781_IG03
;; size=5 bbWeight=0.50 PerfScore 1.00
G_M12781_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
@@ -236,6 +240,6 @@ G_M12781_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 390, prolog size 9, PerfScore 195.53, instruction count 115, allocated bytes for code 390 (MethodHash=6685ce12) for method System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
+; Total bytes of code 398, prolog size 9, PerfScore 203.28, instruction count 119, allocated bytes for code 398 (MethodHash=6685ce12) for method System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
; ============================================================
+3 (+2.24%) : 13694.dasm -
@@ -16,14 +16,12 @@
; V05 tmp3 [V05,T07] ( 2, 4 ) ref -> [ebp-0x18] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
; V06 tmp4 [V06,T04] ( 3, 4 ) int -> ebx "spilling helperCall"
; V07 tmp5 [V07,T08] ( 2, 4 ) byref -> [ebp-0x1C] spill-single-def "Inlining Arg"
-; V08 tmp6 [V08,T14] ( 2, 2 ) ref -> [ebp-0x20] spill-single-def "field V02.contents (fldOffset=0x0)" P-INDEP
+; V08 tmp6 [V08,T12] ( 2, 2 ) ref -> [ebp-0x20] spill-single-def "field V02.contents (fldOffset=0x0)" P-INDEP
; V09 tmp7 [V09,T09] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
-; V10 tmp8 [V10,T12] ( 2, 4 ) int -> eax "argument with side effect"
-; V11 tmp9 [V11,T13] ( 3, 3 ) ref -> ecx single-def "Field obj"
-; V12 tmp10 [V12,T10] ( 2, 4 ) ref -> edi single-def "argument with side effect"
-; V13 tmp11 [V13,T11] ( 2, 4 ) ref -> edx single-def "argument with side effect"
-; V14 rat0 [V14,T03] ( 3, 4.40) int -> edi "Spilling to split statement for tree"
-; V15 rat1 [V15,T01] ( 3, 5.60) int -> ebx "fgMakeTemp is creating a new local variable"
+; V10 tmp8 [V10,T10] ( 2, 4 ) int -> eax "argument with side effect"
+; V11 tmp9 [V11,T11] ( 3, 3 ) ref -> ecx single-def "Field obj"
+; V12 rat0 [V12,T03] ( 3, 4.40) int -> edi "Spilling to split statement for tree"
+; V13 rat1 [V13,T01] ( 3, 5.60) int -> ebx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 20
@@ -59,8 +57,9 @@ G_M9390_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000
; gcrRegs +[eax]
mov gword ptr [ebp-0x14], eax
; GC ptr vars +{V04}
- mov eax, gword ptr [esi+0x08]
- mov gword ptr [ebp-0x18], eax
+ mov edx, gword ptr [esi+0x08]
+ ; gcrRegs +[edx]
+ mov gword ptr [ebp-0x18], edx
; GC ptr vars +{V05}
mov ecx, gword ptr [esi+0x04]
; gcrRegs +[ecx]
@@ -79,39 +78,42 @@ G_M9390_IG02: ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000
test ebx, ebx
je SHORT G_M9390_IG04
;; size=64 bbWeight=1 PerfScore 33.75
-G_M9390_IG03: ; bbWeight=0.80, gcVars=000041E0 {V03 V04 V05 V07 V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[eax]
+G_M9390_IG03: ; bbWeight=0.80, gcVars=000011E0 {V03 V04 V05 V07 V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ ; gcrRegs -[eax edx]
; byrRegs -[ecx]
+ mov eax, gword ptr [ebp-0x14]
+ ; gcrRegs +[eax]
jmp SHORT G_M9390_IG05
- ;; size=2 bbWeight=0.80 PerfScore 1.60
+ ;; size=5 bbWeight=0.80 PerfScore 2.40
G_M9390_IG04: ; bbWeight=0.20, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ; gcrRegs -[eax]
mov ecx, edi
mov edx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
mov ebx, eax
- ;; size=14 bbWeight=0.20 PerfScore 0.35
-G_M9390_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov eax, gword ptr [ebp-0x14]
+ ; gcrRegs +[eax]
+ ;; size=17 bbWeight=0.20 PerfScore 0.55
+G_M9390_IG05: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
push gword ptr [ebp-0x20]
- mov edi, gword ptr [ebp-0x10]
- ; gcrRegs +[edi]
- mov edx, gword ptr [ebp-0x14]
- ; gcrRegs +[edx]
push gword ptr [ebp-0x18]
- mov eax, -1
+ mov edx, -1
mov ecx, bword ptr [ebp-0x1C]
; byrRegs +[ecx]
lock
- xadd dword ptr [ecx], eax
- dec eax
- push eax
+ xadd dword ptr [ecx], edx
+ dec edx
+ push edx
push ebx
- mov ecx, edi
+ mov ecx, gword ptr [ebp-0x10]
; gcrRegs +[ecx]
; byrRegs -[ecx]
+ mov edx, eax
+ ; gcrRegs +[edx]
; GC ptr vars -{V03 V04 V05 V07 V08}
call [<unknown method>]
- ; gcrRegs -[ecx edx edi] +[eax]
- ;; size=35 bbWeight=1 PerfScore 27.75
+ ; gcrRegs -[ecx edx]
+ ;; size=32 bbWeight=1 PerfScore 26.75
G_M9390_IG06: ; bbWeight=1, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
@@ -121,6 +123,6 @@ G_M9390_IG06: ; bbWeight=1, epilog, nogc, extend
ret
;; size=8 bbWeight=1 PerfScore 3.50
-; Total bytes of code 134, prolog size 9, PerfScore 71.70, instruction count 54, allocated bytes for code 134 (MethodHash=6e06db51) for method <StartupCode$FSharp-Core>.$Async+Parallel@1621-3[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
+; Total bytes of code 137, prolog size 9, PerfScore 71.70, instruction count 55, allocated bytes for code 137 (MethodHash=6e06db51) for method <StartupCode$FSharp-Core>.$Async+Parallel@1621-3[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
; ============================================================
+8 (+2.29%) : 22231.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ResolveMultipleSymbolsInAttributeTypeLookup(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol]):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
@@ -15,24 +15,24 @@
; V04 loc2 [V04 ] ( 7, 4.50) struct ( 8) [ebp-0x1C] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.Binder+BestSymbolInfo>
; V05 loc3 [V05,T01] ( 9, 33 ) int -> [ebp-0x20]
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
-; V07 tmp0 [V07,T18] ( 2, 2 ) ref -> ecx class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V07 tmp0 [V07,T18] ( 2, 2 ) ref -> [ebp-0x24] class-hnd spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbol>
; V08 tmp1 [V08,T10] ( 3, 6 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]>
;* V10 tmp3 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon[]>
; V11 tmp4 [V11,T02] ( 3, 24 ) ref -> ecx class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
; V12 tmp5 [V12,T09] ( 3, 8 ) ref -> eax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbol>
-; V13 tmp6 [V13,T00] ( 7, 36 ) ref -> [ebp-0x24] class-hnd spill-single-def "Inlining Arg" <System.__Canon>
+; V13 tmp6 [V13,T00] ( 7, 36 ) ref -> [ebp-0x28] class-hnd spill-single-def "Inlining Arg" <System.__Canon>
; V14 tmp7 [V14,T08] ( 3, 10 ) int -> ecx "fgMakeTemp is creating a new local variable"
; V15 tmp8 [V15,T07] ( 4, 12 ) ref -> eax class-hnd "spilling QMark2" <<unknown class>>
; V16 tmp9 [V16,T03] ( 3, 24 ) ref -> ecx class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
;* V17 tmp10 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
-;* V18 tmp11 [V18,T27] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V19 tmp12 [V19,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V20 tmp13 [V20,T15] ( 4, 2 ) int -> ecx "Inline return value spill temp"
-; V21 tmp14 [V21,T12] ( 3, 3 ) ref -> edx class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
+;* V18 tmp11 [V18,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V19 tmp12 [V19,T27] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V20 tmp13 [V20,T15] ( 4, 2 ) int -> edx "Inline return value spill temp"
+; V21 tmp14 [V21,T12] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
; V22 tmp15 [V22,T16] ( 4, 2 ) int -> esi "Inline return value spill temp"
-;* V23 tmp16 [V23,T26] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
-; V24 tmp17 [V24,T24] ( 3, 1.50) int -> eax "Inline return value spill temp"
+;* V23 tmp16 [V23,T25] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
+; V24 tmp17 [V24,T23] ( 3, 1.50) int -> eax "Inline return value spill temp"
; V25 tmp18 [V25,T17] ( 3, 2 ) ref -> ebx single-def "field V02.array (fldOffset=0x0)" P-INDEP
; V26 tmp19 [V26 ] ( 4, 2.50) int -> [ebp-0x14] do-not-enreg[X] addr-exposed "field V03._location (fldOffset=0x0)" P-DEP
; V27 tmp20 [V27 ] ( 2, 1.50) int -> [ebp-0x10] do-not-enreg[X] addr-exposed "field V03._index (fldOffset=0x4)" P-DEP
@@ -42,14 +42,13 @@
; V31 tmp24 [V31,T04] ( 3, 24 ) ref -> ecx "arr expr"
; V32 tmp25 [V32,T06] ( 2, 16 ) ref -> ecx "argument with side effect"
; V33 tmp26 [V33,T13] ( 3, 3 ) ref -> esi single-def "arr expr"
-; V34 tmp27 [V34,T14] ( 3, 3 ) ref -> edx single-def "arr expr"
+; V34 tmp27 [V34,T14] ( 3, 3 ) ref -> ecx single-def "arr expr"
; V35 tmp28 [V35,T20] ( 2, 2 ) ref -> ecx single-def "argument with side effect"
-; V36 tmp29 [V36,T21] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-; V37 cse0 [V37,T22] ( 2, 1 ) ref -> edx "CSE - conservative"
-; V38 cse1 [V38,T25] ( 3, 1.50) int -> eax "CSE - conservative"
-; V39 cse2 [V39,T23] ( 3, 1.50) ref -> edx "CSE - conservative"
+; V36 cse0 [V36,T21] ( 2, 1 ) ref -> ecx "CSE - conservative"
+; V37 cse1 [V37,T24] ( 3, 1.50) int -> eax "CSE - conservative"
+; V38 cse2 [V38,T22] ( 3, 1.50) ref -> ecx "CSE - conservative"
;
-; Lcl frame size = 24
+; Lcl frame size = 28
G_M31598_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -57,7 +56,7 @@ G_M31598_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 24
+ sub esp, 28
xor eax, eax
mov dword ptr [ebp-0x14], eax
mov dword ptr [ebp-0x10], eax
@@ -96,7 +95,7 @@ G_M31598_IG03: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
mov edx, gword ptr [ecx+4*eax+0x08]
; gcrRegs +[edx]
mov ecx, edx
- mov gword ptr [ebp-0x24], ecx
+ mov gword ptr [ebp-0x28], ecx
; GC ptr vars +{V13}
mov edx, dword ptr [ecx]
; gcrRegs -[edx]
@@ -108,7 +107,7 @@ G_M31598_IG03: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
;; size=47 bbWeight=4 PerfScore 98.00
G_M31598_IG04: ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov ecx, 0xD1FFAB1E ; <unknown class>
- mov eax, gword ptr [ebp-0x24]
+ mov eax, gword ptr [ebp-0x28]
; gcrRegs +[eax]
cmp dword ptr [eax], ecx
je SHORT G_M31598_IG06
@@ -135,7 +134,7 @@ G_M31598_IG06: ; bbWeight=2, gcrefRegs=000000C9 {eax ebx esi edi}, byrefR
G_M31598_IG07: ; bbWeight=2, gcVars=00000001 {V13}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax]
; GC ptr vars +{V00 V13}
- mov eax, gword ptr [ebp-0x24]
+ mov eax, gword ptr [ebp-0x28]
; gcrRegs +[eax]
;; size=3 bbWeight=2 PerfScore 2.00
G_M31598_IG08: ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
@@ -180,29 +179,34 @@ G_M31598_IG11: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=0
je SHORT G_M31598_IG13
cmp dword ptr [ebp-0x14], 3
je SHORT G_M31598_IG13
- mov ecx, -1
+ mov edx, -1
cmp dword ptr [ebp-0x1C], 0
- cmovne ecx, dword ptr [ebp-0x18]
- mov edx, gword ptr [esi+0x04]
- ; gcrRegs +[edx]
- mov eax, dword ptr [edx+0x08]
- cmp ecx, eax
- jge SHORT G_M31598_IG16
- mov edx, gword ptr [edx+0x04]
- mov esi, edx
- cmp ecx, dword ptr [esi+0x04]
- jae SHORT G_M31598_IG15
- mov ecx, gword ptr [esi+4*ecx+0x08]
+ cmovne edx, dword ptr [ebp-0x18]
+ mov ecx, gword ptr [esi+0x04]
; gcrRegs +[ecx]
+ mov eax, dword ptr [ecx+0x08]
+ cmp edx, eax
+ jge SHORT G_M31598_IG16
+ mov ecx, gword ptr [ecx+0x04]
+ mov esi, ecx
+ cmp edx, dword ptr [esi+0x04]
+ jae SHORT G_M31598_IG15
+ mov edx, gword ptr [esi+4*edx+0x08]
+ ; gcrRegs +[edx]
+ mov gword ptr [ebp-0x24], edx
+ ; GC ptr vars +{V07}
mov esi, -1
; gcrRegs -[esi]
cmp dword ptr [ebp-0x14], 0
cmovne esi, dword ptr [ebp-0x10]
cmp esi, eax
jge SHORT G_M31598_IG16
- cmp esi, dword ptr [edx+0x04]
+ cmp esi, dword ptr [ecx+0x04]
jae SHORT G_M31598_IG15
- mov edx, gword ptr [edx+4*esi+0x08]
+ mov ecx, gword ptr [ecx+4*esi+0x08]
+ mov edx, ecx
+ mov ecx, gword ptr [ebp-0x24]
+ ; GC ptr vars -{V07}
call [Microsoft.CodeAnalysis.CSharp.Binder:NameAndArityMatchRecursively(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):ubyte]
; gcrRegs -[ecx edx]
test eax, eax
@@ -214,7 +218,7 @@ G_M31598_IG11: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=0
jae SHORT G_M31598_IG15
mov eax, gword ptr [ebx+4*eax+0x08]
; gcrRegs +[eax]
- ;; size=107 bbWeight=0.50 PerfScore 24.88
+ ;; size=115 bbWeight=0.50 PerfScore 26.00
G_M31598_IG12: ; bbWeight=0.50, epilog, nogc, extend
lea esp, [ebp-0x0C]
pop ebx
@@ -246,6 +250,6 @@ G_M31598_IG16: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
int3
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 349, prolog size 23, PerfScore 271.75, instruction count 124, allocated bytes for code 349 (MethodHash=5b978491) for method Microsoft.CodeAnalysis.CSharp.Binder:ResolveMultipleSymbolsInAttributeTypeLookup(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol]):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
+; Total bytes of code 357, prolog size 23, PerfScore 272.88, instruction count 127, allocated bytes for code 357 (MethodHash=5b978491) for method Microsoft.CodeAnalysis.CSharp.Binder:ResolveMultipleSymbolsInAttributeTypeLookup(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol]):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
; ============================================================
To reproduce these diffs on Windows x86:
To reproduce these diffs on Windows x86:
To reproduce these diffs on Windows x86:
To reproduce these diffs on Windows x86:
To reproduce these diffs on Windows x86:
To reproduce these diffs on Windows x86:
To reproduce these diffs on Windows x86:
To reproduce these diffs on Windows x86:
To reproduce these diffs on Windows x86:
Details
Improvements/regressions per collection
Collection
Contexts with diffs
Improvements
Regressions
Same size
Improvements (bytes)
Regressions (bytes)
benchmarks.run.windows.x86.checked.mch
185
96
16
73
-1,223
+145
benchmarks.run_pgo.windows.x86.checked.mch
4,326
777
1,593
1,956
-10,761
+3,393
benchmarks.run_tiered.windows.x86.checked.mch
167
88
14
65
-1,053
+121
coreclr_tests.run.windows.x86.checked.mch
3,428
2,782
258
388
-39,884
+720
libraries.crossgen2.windows.x86.checked.mch
757
334
68
355
-3,614
+436
libraries.pmi.windows.x86.checked.mch
1,141
525
85
531
-5,427
+763
libraries_tests.run.windows.x86.Release.mch
9,303
7,014
974
1,315
-123,144
+4,109
librariestestsnotieredcompilation.run.windows.x86.Release.mch
1,299
658
77
564
-7,578
+866
realworld.run.windows.x86.checked.mch
195
114
16
65
-1,315
+721
20,801
12,388
3,101
5,312
-193,999
+11,274
Context information
Collection
Diffed contexts
MinOpts
FullOpts
Missed, base
Missed, diff
benchmarks.run.windows.x86.checked.mch
24,469
4
24,465
13 (0.05%)
19 (0.08%)
benchmarks.run_pgo.windows.x86.checked.mch
119,503
42,004
77,499
348 (0.29%)
360 (0.30%)
benchmarks.run_tiered.windows.x86.checked.mch
47,891
28,726
19,165
11 (0.02%)
16 (0.03%)
coreclr_tests.run.windows.x86.checked.mch
574,817
320,010
254,807
569 (0.10%)
590 (0.10%)
libraries.crossgen2.windows.x86.checked.mch
241,904
15
241,889
16 (0.01%)
23 (0.01%)
libraries.pmi.windows.x86.checked.mch
303,511
6
303,505
707 (0.23%)
721 (0.24%)
libraries_tests.run.windows.x86.Release.mch
632,833
429,177
203,656
2,910 (0.46%)
2,976 (0.47%)
librariestestsnotieredcompilation.run.windows.x86.Release.mch
315,227
21,872
293,355
508 (0.16%)
528 (0.17%)
realworld.run.windows.x86.checked.mch
35,964
3
35,961
11 (0.03%)
18 (0.05%)
2,296,119
841,817
1,454,302
5,093 (0.22%)
5,251 (0.23%)
jit-analyze output
benchmarks.run.windows.x86.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 7104846 (overridden on cmd)
Total bytes of diff: 7103768 (overridden on cmd)
Total bytes of delta: -1078 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
36 : 5387.dasm (1.47 % of base)
23 : 14537.dasm (1.19 % of base)
15 : 22900.dasm (8.11 % of base)
12 : 12542.dasm (0.60 % of base)
12 : 15181.dasm (0.71 % of base)
10 : 12082.dasm (0.58 % of base)
8 : 104.dasm (2.05 % of base)
6 : 5663.dasm (1.01 % of base)
6 : 5677.dasm (0.40 % of base)
3 : 23517.dasm (1.00 % of base)
3 : 15194.dasm (0.11 % of base)
3 : 12377.dasm (0.12 % of base)
2 : 23519.dasm (0.44 % of base)
2 : 1885.dasm (0.17 % of base)
2 : 23518.dasm (0.13 % of base)
2 : 24204.dasm (0.21 % of base)
Top file improvements (bytes):
-97 : 15014.dasm (-4.97 % of base)
-94 : 11906.dasm (-7.13 % of base)
-69 : 23537.dasm (-4.69 % of base)
-62 : 5397.dasm (-0.70 % of base)
-57 : 22815.dasm (-11.18 % of base)
-45 : 8136.dasm (-0.47 % of base)
-37 : 5826.dasm (-2.06 % of base)
-25 : 2556.dasm (-1.95 % of base)
-24 : 1464.dasm (-3.93 % of base)
-24 : 3811.dasm (-1.73 % of base)
-24 : 15017.dasm (-3.54 % of base)
-24 : 8373.dasm (-1.49 % of base)
-20 : 16799.dasm (-5.71 % of base)
-18 : 21575.dasm (-1.98 % of base)
-17 : 9521.dasm (-3.07 % of base)
-16 : 12496.dasm (-1.21 % of base)
-16 : 1462.dasm (-3.28 % of base)
-16 : 15015.dasm (-3.27 % of base)
-16 : 15143.dasm (-0.52 % of base)
-16 : 23524.dasm (-13.91 % of base)
52 total files with Code Size differences (36 improved, 16 regressed), 22 unchanged.
Top method regressions (bytes):
36 (1.47 % of base) : 5387.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
23 (1.19 % of base) : 14537.dasm - MessagePack.Formatters.ListFormatter`1[System.__Canon]:Serialize(byref,int,System.Collections.Generic.List`1[System.__Canon],MessagePack.IFormatterResolver):int:this (FullOpts)
15 (8.11 % of base) : 22900.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
12 (0.71 % of base) : 15181.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
12 (0.60 % of base) : 12542.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (FullOpts)
10 (0.58 % of base) : 12082.dasm - Utf8Json.Formatters.ListFormatter`1[int]:Serialize(byref,System.Collections.Generic.List`1[int],Utf8Json.IJsonFormatterResolver):this (FullOpts)
8 (2.05 % of base) : 104.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
6 (1.01 % of base) : 5663.dasm - Sigil.Impl.RollingVerifier+<>c__DisplayClass16_1:<RemoveUnnecessaryVerifiers>b__1(Sigil.Impl.LinqStack`1[Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack]],int):int:this (FullOpts)
6 (0.40 % of base) : 5677.dasm - Sigil.Impl.VerifiableTracker:GetLegalTransitions(Sigil.Impl.LinqList`1[Sigil.Impl.StackTransition],Sigil.Impl.LinqStack`1[Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack]]):Sigil.Impl.LinqList`1[Sigil.Impl.StackTransition]:this (FullOpts)
3 (0.11 % of base) : 15194.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:ReadValue(System.Type,System.String):System.Reflection.Emit.LocalBuilder:this (FullOpts)
3 (0.12 % of base) : 12377.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
3 (1.00 % of base) : 23517.dasm - V8.Crypto.BigInteger:dLShiftTo(int,V8.Crypto.BigInteger):this (FullOpts)
2 (0.21 % of base) : 24204.dasm - BenchmarksGame.ReverseComplement_1:Bench(System.IO.Stream,System.IO.Stream) (FullOpts)
2 (0.17 % of base) : 1885.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong] (FullOpts)
2 (0.13 % of base) : 23518.dasm - V8.Crypto.BigInteger:divRemTo(V8.Crypto.BigInteger,V8.Crypto.BigInteger,V8.Crypto.BigInteger):this (FullOpts)
2 (0.44 % of base) : 23519.dasm - V8.Crypto.BigInteger:lShiftTo(int,V8.Crypto.BigInteger):this (FullOpts)
Top method improvements (bytes):
-97 (-4.97 % of base) : 15014.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
-94 (-7.13 % of base) : 11906.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-69 (-4.69 % of base) : 23537.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (FullOpts)
-62 (-0.70 % of base) : 5397.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-57 (-11.18 % of base) : 22815.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (FullOpts)
-45 (-0.47 % of base) : 8136.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-37 (-2.06 % of base) : 5826.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:UnionAwareWriteMembers(ubyte,ubyte,System.Type,System.Collections.Generic.List`1[System.Reflection.MemberInfo],Sigil.Local,Sigil.Local,byref,Jil.Serialize.InlineSerializer`1+WriteMemberDelegate[System.__Canon]):this (FullOpts)
-25 (-1.95 % of base) : 2556.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon] (FullOpts)
-24 (-1.49 % of base) : 8373.dasm - Newtonsoft.Json.Serialization.JsonArrayContract:.ctor(System.Type):this (FullOpts)
-24 (-3.93 % of base) : 1464.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseTime(byref):ubyte:this (FullOpts)
-24 (-1.73 % of base) : 3811.dasm - System.Net.Http.HttpConnectionPoolManager:.ctor(System.Net.Http.HttpConnectionSettings):this (FullOpts)
-24 (-3.54 % of base) : 15017.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseTime(byref):ubyte:this (FullOpts)
-20 (-5.71 % of base) : 16799.dasm - System.Collections.Concurrent.ConcurrentBag`1[System.__Canon]:ToArray():System.__Canon[]:this (FullOpts)
-18 (-1.98 % of base) : 21575.dasm - System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
-17 (-3.07 % of base) : 9521.dasm - System.Threading.Channels.ChannelUtilities:WakeUpWaiters(byref,ubyte,System.Exception) (FullOpts)
-16 (-3.28 % of base) : 1462.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseDate(int):ubyte:this (FullOpts)
-16 (-0.52 % of base) : 15143.dasm - System.Runtime.Serialization.Json.XmlJsonReader:Read():ubyte:this (FullOpts)
-16 (-1.21 % of base) : 12496.dasm - System.Runtime.Serialization.Json.XmlJsonWriter:WriteStartElement(System.String,System.String,System.String):this (FullOpts)
-16 (-3.27 % of base) : 15015.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseDate(int):ubyte:this (FullOpts)
-16 (-13.91 % of base) : 23524.dasm - V8.Crypto.BigInteger:copyTo(V8.Crypto.BigInteger):this (FullOpts)
Top method regressions (percentages):
15 (8.11 % of base) : 22900.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
8 (2.05 % of base) : 104.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
36 (1.47 % of base) : 5387.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
23 (1.19 % of base) : 14537.dasm - MessagePack.Formatters.ListFormatter`1[System.__Canon]:Serialize(byref,int,System.Collections.Generic.List`1[System.__Canon],MessagePack.IFormatterResolver):int:this (FullOpts)
6 (1.01 % of base) : 5663.dasm - Sigil.Impl.RollingVerifier+<>c__DisplayClass16_1:<RemoveUnnecessaryVerifiers>b__1(Sigil.Impl.LinqStack`1[Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack]],int):int:this (FullOpts)
3 (1.00 % of base) : 23517.dasm - V8.Crypto.BigInteger:dLShiftTo(int,V8.Crypto.BigInteger):this (FullOpts)
12 (0.71 % of base) : 15181.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
12 (0.60 % of base) : 12542.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (FullOpts)
10 (0.58 % of base) : 12082.dasm - Utf8Json.Formatters.ListFormatter`1[int]:Serialize(byref,System.Collections.Generic.List`1[int],Utf8Json.IJsonFormatterResolver):this (FullOpts)
2 (0.44 % of base) : 23519.dasm - V8.Crypto.BigInteger:lShiftTo(int,V8.Crypto.BigInteger):this (FullOpts)
6 (0.40 % of base) : 5677.dasm - Sigil.Impl.VerifiableTracker:GetLegalTransitions(Sigil.Impl.LinqList`1[Sigil.Impl.StackTransition],Sigil.Impl.LinqStack`1[Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack]]):Sigil.Impl.LinqList`1[Sigil.Impl.StackTransition]:this (FullOpts)
2 (0.21 % of base) : 24204.dasm - BenchmarksGame.ReverseComplement_1:Bench(System.IO.Stream,System.IO.Stream) (FullOpts)
2 (0.17 % of base) : 1885.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong] (FullOpts)
2 (0.13 % of base) : 23518.dasm - V8.Crypto.BigInteger:divRemTo(V8.Crypto.BigInteger,V8.Crypto.BigInteger,V8.Crypto.BigInteger):this (FullOpts)
3 (0.12 % of base) : 12377.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
3 (0.11 % of base) : 15194.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:ReadValue(System.Type,System.String):System.Reflection.Emit.LocalBuilder:this (FullOpts)
Top method improvements (percentages):
-8 (-14.04 % of base) : 4727.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
-16 (-13.91 % of base) : 23524.dasm - V8.Crypto.BigInteger:copyTo(V8.Crypto.BigInteger):this (FullOpts)
-57 (-11.18 % of base) : 22815.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (FullOpts)
-12 (-10.17 % of base) : 24384.dasm - System.Linq.Grouping`2+<GetEnumerator>d__9[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
-15 (-9.32 % of base) : 6216.dasm - System.Diagnostics.Tracing.EventSource:IsEnabledByDefault(int,ubyte,int,long):ubyte:this (FullOpts)
-9 (-8.33 % of base) : 24450.dasm - Benchstone.MDBenchI.MDPuzzle:Test():ubyte:this (FullOpts)
-7 (-7.45 % of base) : 4803.dasm - System.IO.Compression.DeflateStream:ReadByte():int:this (FullOpts)
-94 (-7.13 % of base) : 11906.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-5 (-5.75 % of base) : 23502.dasm - V8.Crypto.BigInteger:bitLength():int:this (FullOpts)
-20 (-5.71 % of base) : 16799.dasm - System.Collections.Concurrent.ConcurrentBag`1[System.__Canon]:ToArray():System.__Canon[]:this (FullOpts)
-97 (-4.97 % of base) : 15014.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
-14 (-4.95 % of base) : 3539.dasm - System.Text.Json.Tests.Perf_Strings:Setup():this (FullOpts)
-69 (-4.69 % of base) : 23537.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (FullOpts)
-24 (-3.93 % of base) : 1464.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseTime(byref):ubyte:this (FullOpts)
-12 (-3.86 % of base) : 22890.dasm - System.Collections.SortedList:.ctor(System.Collections.IDictionary,System.Collections.IComparer):this (FullOpts)
-6 (-3.55 % of base) : 1477.dasm - Newtonsoft.Json.JsonReader:Pop():int:this (FullOpts)
-24 (-3.54 % of base) : 15017.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseTime(byref):ubyte:this (FullOpts)
-16 (-3.28 % of base) : 1462.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseDate(int):ubyte:this (FullOpts)
-7 (-3.27 % of base) : 873.dasm - System.Threading.LowLevelLock:TryAcquire():ubyte:this (FullOpts)
-16 (-3.27 % of base) : 15015.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseDate(int):ubyte:this (FullOpts)
benchmarks.run_pgo.windows.x86.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 45219159 (overridden on cmd)
Total bytes of diff: 45211791 (overridden on cmd)
Total bytes of delta: -7368 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
36 : 14420.dasm (1.46 % of base)
27 : 49513.dasm (1.40 % of base)
13 : 69702.dasm (0.72 % of base)
12 : 32206.dasm (0.60 % of base)
10 : 81136.dasm (0.72 % of base)
9 : 39519.dasm (0.35 % of base)
8 : 246.dasm (2.05 % of base)
8 : 36347.dasm (1.71 % of base)
6 : 110889.dasm (0.41 % of base)
6 : 15188.dasm (0.33 % of base)
6 : 21237.dasm (0.40 % of base)
6 : 62236.dasm (0.44 % of base)
6 : 100710.dasm (0.33 % of base)
6 : 21174.dasm (1.01 % of base)
6 : 93560.dasm (0.33 % of base)
6 : 88893.dasm (0.33 % of base)
6 : 97594.dasm (0.33 % of base)
5 : 22510.dasm (1.79 % of base)
5 : 44937.dasm (1.61 % of base)
5 : 76143.dasm (2.63 % of base)
Top file improvements (bytes):
-200 : 14403.dasm (-6.88 % of base)
-184 : 70361.dasm (-9.12 % of base)
-169 : 81024.dasm (-12.12 % of base)
-168 : 33148.dasm (-7.69 % of base)
-150 : 30176.dasm (-8.93 % of base)
-142 : 56063.dasm (-9.02 % of base)
-130 : 81166.dasm (-2.55 % of base)
-114 : 14207.dasm (-7.51 % of base)
-112 : 114111.dasm (-5.98 % of base)
-96 : 33847.dasm (-5.63 % of base)
-95 : 53745.dasm (-4.94 % of base)
-88 : 33895.dasm (-5.42 % of base)
-87 : 27697.dasm (-8.81 % of base)
-82 : 68004.dasm (-5.05 % of base)
-80 : 106937.dasm (-6.01 % of base)
-76 : 10115.dasm (-4.57 % of base)
-71 : 33135.dasm (-3.16 % of base)
-71 : 107049.dasm (-4.97 % of base)
-70 : 9947.dasm (-7.07 % of base)
-69 : 109253.dasm (-4.69 % of base)
85 total files with Code Size differences (50 improved, 35 regressed), 20 unchanged.
Top method regressions (bytes):
36 (1.46 % of base) : 14420.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (Tier0-FullOpts)
27 (1.40 % of base) : 49513.dasm - MessagePack.Formatters.ListFormatter`1[System.__Canon]:Serialize(byref,int,System.Collections.Generic.List`1[System.__Canon],MessagePack.IFormatterResolver):int:this (Tier0-FullOpts)
13 (0.72 % of base) : 69702.dasm - ProtoBuf.Meta.ValueMember:BuildSerializer():ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode:this (Instrumented Tier0)
12 (0.60 % of base) : 32206.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (Tier0-FullOpts)
10 (0.72 % of base) : 81136.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:<EmitInstanceCallExpression>g__emitArgumentsAndCallEpilogue|152_2(Microsoft.CodeAnalysis.CSharp.BoundCall,int,int):this (Instrumented Tier0)
9 (0.35 % of base) : 39519.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadValue(System.Type,System.String,System.String):System.Reflection.Emit.LocalBuilder:this (Tier0-FullOpts)
8 (1.71 % of base) : 36347.dasm - System.Globalization.Ordinal:ToUpperOrdinal(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):int (Tier1)
8 (2.05 % of base) : 246.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (Tier0-FullOpts)
6 (1.01 % of base) : 21174.dasm - Sigil.Impl.RollingVerifier+<>c__DisplayClass16_1:<RemoveUnnecessaryVerifiers>b__1(Sigil.Impl.LinqStack`1[Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack]],int):int:this (Tier0-FullOpts)
6 (0.40 % of base) : 21237.dasm - Sigil.Impl.VerifiableTracker:GetLegalTransitions(Sigil.Impl.LinqList`1[Sigil.Impl.StackTransition],Sigil.Impl.LinqStack`1[Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack]]):Sigil.Impl.LinqList`1[Sigil.Impl.StackTransition]:this (Tier0-FullOpts)
6 (0.41 % of base) : 110889.dasm - System.IO.RandomAccess:ReadSyncUsingAsyncHandle(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Span`1[ubyte],long):int (Tier1)
6 (0.44 % of base) : 62236.dasm - System.IO.RandomAccess:WriteSyncUsingAsyncHandle(Microsoft.Win32.SafeHandles.SafeFileHandle,System.ReadOnlySpan`1[ubyte],long) (Tier1)
6 (0.33 % of base) : 15188.dasm - System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:TryWrite(System.Text.Json.Utf8JsonWriter,byref,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier1)
6 (0.33 % of base) : 100710.dasm - System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:TryWrite(System.Text.Json.Utf8JsonWriter,byref,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier1)
6 (0.33 % of base) : 93560.dasm - System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:TryWrite(System.Text.Json.Utf8JsonWriter,byref,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier1)
6 (0.33 % of base) : 88893.dasm - System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:TryWrite(System.Text.Json.Utf8JsonWriter,byref,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier1)
6 (0.33 % of base) : 97594.dasm - System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:TryWrite(System.Text.Json.Utf8JsonWriter,byref,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier1)
5 (1.91 % of base) : 89671.dasm - Exceptions.Handling:Throw(int):this (Instrumented Tier0)
5 (2.63 % of base) : 76143.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSyntaxTreeOrdinal(Microsoft.CodeAnalysis.SyntaxTree):int:this (Instrumented Tier0)
5 (1.52 % of base) : 77823.dasm - Microsoft.CodeAnalysis.CSharp.DiagnosticsPass:Visit(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Instrumented Tier0)
Top method improvements (bytes):
-200 (-6.88 % of base) : 14403.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetFieldTokenNoLock(System.Reflection.FieldInfo):int:this (Instrumented Tier0)
-184 (-9.12 % of base) : 70361.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalWriter:SerializeValue(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.Serialization.JsonContract,Newtonsoft.Json.Serialization.JsonProperty,Newtonsoft.Json.Serialization.JsonContainerContract,Newtonsoft.Json.Serialization.JsonProperty):this (Instrumented Tier0)
-169 (-12.12 % of base) : 81024.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitConstantValue(Microsoft.CodeAnalysis.ConstantValue):this (Instrumented Tier0)
-168 (-7.69 % of base) : 33148.dasm - System.Xml.Serialization.FieldModel:.ctor(System.Reflection.MemberInfo,System.Type,System.Xml.Serialization.TypeDesc):this (Instrumented Tier0)
-150 (-8.93 % of base) : 30176.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:IsValidCallback(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],System.Type,System.Reflection.MethodInfo,byref):ubyte (Instrumented Tier0)
-142 (-9.02 % of base) : 56063.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:IsValidCallback(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],System.Type,System.Reflection.MethodInfo,byref):ubyte (Instrumented Tier0)
-130 (-2.55 % of base) : 81166.dasm - Microsoft.CodeAnalysis.Compilation:SerializeToPeStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.RebuildData,System.Func`2[Microsoft.DiaSymReader.ISymWriterMetadataProvider,Microsoft.DiaSymReader.SymUnmanagedWriter],Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Emit.EmitOptions,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte:this (Instrumented Tier0)
-114 (-7.51 % of base) : 14207.dasm - System.Linq.Expressions.Expression:Call(System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]):System.Linq.Expressions.MethodCallExpression (Instrumented Tier0)
-112 (-5.98 % of base) : 114111.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:CreateObjectContract(System.Type):Newtonsoft.Json.Serialization.JsonObjectContract:this (Instrumented Tier0)
-96 (-5.63 % of base) : 33847.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteSourceBegin(System.String):this (Instrumented Tier0)
-95 (-4.94 % of base) : 53745.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (Tier0-FullOpts)
-88 (-5.42 % of base) : 33895.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:ILGenElseString(System.String):this (Instrumented Tier0)
-87 (-8.81 % of base) : 27697.dasm - System.Linq.Expressions.Expression:GetUserDefinedBinaryOperator(int,System.String,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte):System.Linq.Expressions.BinaryExpression (Instrumented Tier0)
-82 (-5.05 % of base) : 68004.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:InternalDeserialize(System.Runtime.Serialization.XmlReaderDelegator,System.String,System.String,System.Type,byref):System.Object:this (Instrumented Tier0)
-80 (-6.01 % of base) : 106937.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitBranchComparison(ubyte,System.Linq.Expressions.BinaryExpression,System.Reflection.Emit.Label):this (Instrumented Tier0)
-76 (-4.57 % of base) : 10115.dasm - ProtoBuf.Internal.Serializers.PropertyDecorator:EmitRead(ProtoBuf.Compiler.CompilerContext,ProtoBuf.Compiler.Local):this (Instrumented Tier0)
-71 (-4.97 % of base) : 107049.dasm - System.Net.Sockets.Socket:ConnectAsync(System.Net.Sockets.SocketAsyncEventArgs,ubyte,ubyte):ubyte:this (Instrumented Tier0)
-71 (-3.16 % of base) : 33135.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportTypeMapping(System.Xml.Serialization.TypeModel,System.String,int,System.String,System.Xml.Serialization.XmlAttributes,ubyte,ubyte,System.Xml.Serialization.RecursionLimiter):System.Xml.Serialization.TypeMapping:this (Instrumented Tier0)
-70 (-7.07 % of base) : 9947.dasm - ProtoBuf.Serializers.RepeatedSerializers:TryGetRepeatedProvider(System.Type):ProtoBuf.Serializers.RepeatedSerializerStub (Instrumented Tier0)
-69 (-4.69 % of base) : 109253.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (Tier0-FullOpts)
Top method regressions (percentages):
5 (3.07 % of base) : 33839.dasm - System.Xml.Serialization.CodeGenerator:get_ReturnLocal():System.Reflection.Emit.LocalBuilder:this (Instrumented Tier0)
5 (2.92 % of base) : 81467.dasm - System.Security.Cryptography.HashAlgorithm:CaptureHashCodeAndReinitialize():ubyte[]:this (Instrumented Tier0)
5 (2.79 % of base) : 6997.dasm - System.IO.Compression.ZLibNative+ZLibStreamHandle:EnsureState(int):this (Instrumented Tier0)
5 (2.67 % of base) : 27641.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitParameterExpression(System.Linq.Expressions.Expression):this (Instrumented Tier0)
5 (2.63 % of base) : 76143.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSyntaxTreeOrdinal(Microsoft.CodeAnalysis.SyntaxTree):int:this (Instrumented Tier0)
5 (2.46 % of base) : 80767.dasm - Microsoft.CodeAnalysis.MetadataHelpers:CheckAssemblyOrModuleName(System.String,Microsoft.CodeAnalysis.CommonMessageProvider,int,Microsoft.CodeAnalysis.DiagnosticBag) (Instrumented Tier0)
5 (2.39 % of base) : 88384.dasm - System.Xml.XmlBaseReader:ReadContentAsDateTime():System.DateTime:this (Instrumented Tier0)
8 (2.05 % of base) : 246.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (Tier0-FullOpts)
5 (1.91 % of base) : 89671.dasm - Exceptions.Handling:Throw(int):this (Instrumented Tier0)
5 (1.79 % of base) : 84565.dasm - Newtonsoft.Json.JsonWriter:UpdateCurrentState():this (Instrumented Tier0)
5 (1.79 % of base) : 22510.dasm - Sigil.Emit`1[System.__Canon]:Seal(int):this (Instrumented Tier0)
8 (1.71 % of base) : 36347.dasm - System.Globalization.Ordinal:ToUpperOrdinal(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):int (Tier1)
5 (1.61 % of base) : 44937.dasm - System.Resources.ManifestBasedResourceGroveler:UltimateFallbackFixup(System.Globalization.CultureInfo):System.Globalization.CultureInfo:this (Instrumented Tier0)
5 (1.52 % of base) : 77823.dasm - Microsoft.CodeAnalysis.CSharp.DiagnosticsPass:Visit(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Instrumented Tier0)
36 (1.46 % of base) : 14420.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (Tier0-FullOpts)
3 (1.43 % of base) : 12447.dasm - System.Lazy`1[System.__Canon]:ViaFactory(int):this (Instrumented Tier0)
3 (1.43 % of base) : 81375.dasm - System.Lazy`1[System.Collections.Immutable.ImmutableArray`1[System.Reflection.PortableExecutable.PEBuilder+Section]]:ViaFactory(int):this (Instrumented Tier0)
27 (1.40 % of base) : 49513.dasm - MessagePack.Formatters.ListFormatter`1[System.__Canon]:Serialize(byref,int,System.Collections.Generic.List`1[System.__Canon],MessagePack.IFormatterResolver):int:this (Tier0-FullOpts)
5 (1.35 % of base) : 30150.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:CreateShouldSerializeTest(System.Reflection.MemberInfo):System.Predicate`1[System.Object]:this (Instrumented Tier0)
5 (1.34 % of base) : 55166.dasm - System.Text.Json.WriteStack:Initialize(System.Text.Json.Serialization.Metadata.JsonTypeInfo,System.Object,ubyte,ubyte):this (Instrumented Tier0)
Top method improvements (percentages):
-18 (-16.67 % of base) : 77849.dasm - Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.InstrumentationState):this (Instrumented Tier0)
-20 (-14.93 % of base) : 50.dasm - System.Buffer:Memmove[ushort](byref,byref,uint) (Instrumented Tier0)
-11 (-14.29 % of base) : 28474.dasm - Benchstone.MDBenchI.MDAddArray2:.ctor():this (Tier0)
-11 (-14.29 % of base) : 31776.dasm - Benchstone.MDBenchI.MDXposMatrix:.ctor():this (Tier0)
-16 (-13.91 % of base) : 109240.dasm - V8.Crypto.BigInteger:copyTo(V8.Crypto.BigInteger):this (Tier0-FullOpts)
-8 (-13.56 % of base) : 11462.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (Tier1)
-12 (-13.19 % of base) : 28914.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
-12 (-13.19 % of base) : 50897.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
-12 (-13.19 % of base) : 64900.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
-12 (-13.19 % of base) : 104519.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
-12 (-13.19 % of base) : 115661.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
-12 (-13.19 % of base) : 45628.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
-12 (-13.19 % of base) : 49412.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
-12 (-13.19 % of base) : 93243.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
-12 (-13.19 % of base) : 105475.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
-12 (-13.19 % of base) : 21236.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
-12 (-13.19 % of base) : 67527.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
-12 (-13.19 % of base) : 91389.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
-12 (-13.19 % of base) : 79301.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
-12 (-13.19 % of base) : 95356.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
benchmarks.run_tiered.windows.x86.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 9509296 (overridden on cmd)
Total bytes of diff: 9508364 (overridden on cmd)
Total bytes of delta: -932 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
36 : 14038.dasm (1.47 % of base)
23 : 28583.dasm (1.19 % of base)
12 : 24938.dasm (0.60 % of base)
10 : 19954.dasm (0.58 % of base)
8 : 239.dasm (2.05 % of base)
6 : 15116.dasm (1.01 % of base)
6 : 15164.dasm (0.40 % of base)
6 : 17827.dasm (1.95 % of base)
3 : 30018.dasm (0.11 % of base)
3 : 46142.dasm (1.00 % of base)
2 : 47640.dasm (0.21 % of base)
2 : 10302.dasm (0.17 % of base)
2 : 46143.dasm (0.13 % of base)
2 : 46144.dasm (0.44 % of base)
Top file improvements (bytes):
-95 : 28951.dasm (-4.94 % of base)
-69 : 46166.dasm (-4.69 % of base)
-62 : 14051.dasm (-0.70 % of base)
-57 : 44773.dasm (-11.18 % of base)
-45 : 17937.dasm (-0.47 % of base)
-37 : 15511.dasm (-2.06 % of base)
-25 : 10420.dasm (-1.95 % of base)
-24 : 28956.dasm (-3.54 % of base)
-24 : 14487.dasm (-3.93 % of base)
-23 : 25091.dasm (-4.18 % of base)
-17 : 20515.dasm (-3.07 % of base)
-16 : 30040.dasm (-1.21 % of base)
-16 : 20646.dasm (-3.28 % of base)
-16 : 30996.dasm (-3.27 % of base)
-16 : 46153.dasm (-13.91 % of base)
-16 : 46631.dasm (-4.08 % of base)
-14 : 12531.dasm (-4.95 % of base)
-14 : 31912.dasm (-9.40 % of base)
-14 : 4926.dasm (-3.07 % of base)
-13 : 10079.dasm (-0.62 % of base)
46 total files with Code Size differences (32 improved, 14 regressed), 25 unchanged.
Top method regressions (bytes):
36 (1.47 % of base) : 14038.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (Tier0-FullOpts)
23 (1.19 % of base) : 28583.dasm - MessagePack.Formatters.ListFormatter`1[System.__Canon]:Serialize(byref,int,System.Collections.Generic.List`1[System.__Canon],MessagePack.IFormatterResolver):int:this (Tier0-FullOpts)
12 (0.60 % of base) : 24938.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (Tier0-FullOpts)
10 (0.58 % of base) : 19954.dasm - Utf8Json.Formatters.ListFormatter`1[int]:Serialize(byref,System.Collections.Generic.List`1[int],Utf8Json.IJsonFormatterResolver):this (Tier0-FullOpts)
8 (2.05 % of base) : 239.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (Tier0-FullOpts)
6 (1.01 % of base) : 15116.dasm - Sigil.Impl.RollingVerifier+<>c__DisplayClass16_1:<RemoveUnnecessaryVerifiers>b__1(Sigil.Impl.LinqStack`1[Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack]],int):int:this (Tier0-FullOpts)
6 (0.40 % of base) : 15164.dasm - Sigil.Impl.VerifiableTracker:GetLegalTransitions(Sigil.Impl.LinqList`1[Sigil.Impl.StackTransition],Sigil.Impl.LinqStack`1[Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack]]):Sigil.Impl.LinqList`1[Sigil.Impl.StackTransition]:this (Tier0-FullOpts)
6 (1.95 % of base) : 17827.dasm - System.Text.Json.Reflection.ReflectionExtensions:IsInSubtypeRelationshipWith(System.Type,System.Type):ubyte (Tier1)
3 (0.11 % of base) : 30018.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:ReadValue(System.Type,System.String):System.Reflection.Emit.LocalBuilder:this (Tier0-FullOpts)
3 (1.00 % of base) : 46142.dasm - V8.Crypto.BigInteger:dLShiftTo(int,V8.Crypto.BigInteger):this (Tier0-FullOpts)
2 (0.21 % of base) : 47640.dasm - BenchmarksGame.ReverseComplement_1:Bench(System.IO.Stream,System.IO.Stream) (Tier0-FullOpts)
2 (0.17 % of base) : 10302.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong] (Tier0-FullOpts)
2 (0.13 % of base) : 46143.dasm - V8.Crypto.BigInteger:divRemTo(V8.Crypto.BigInteger,V8.Crypto.BigInteger,V8.Crypto.BigInteger):this (Tier0-FullOpts)
2 (0.44 % of base) : 46144.dasm - V8.Crypto.BigInteger:lShiftTo(int,V8.Crypto.BigInteger):this (Tier0-FullOpts)
Top method improvements (bytes):
-95 (-4.94 % of base) : 28951.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (Tier0-FullOpts)
-69 (-4.69 % of base) : 46166.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (Tier0-FullOpts)
-62 (-0.70 % of base) : 14051.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
-57 (-11.18 % of base) : 44773.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (Tier0-FullOpts)
-45 (-0.47 % of base) : 17937.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
-37 (-2.06 % of base) : 15511.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:UnionAwareWriteMembers(ubyte,ubyte,System.Type,System.Collections.Generic.List`1[System.Reflection.MemberInfo],Sigil.Local,Sigil.Local,byref,Jil.Serialize.InlineSerializer`1+WriteMemberDelegate[System.__Canon]):this (Tier0-FullOpts)
-25 (-1.95 % of base) : 10420.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon] (Tier0-FullOpts)
-24 (-3.93 % of base) : 14487.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseTime(byref):ubyte:this (Tier0-FullOpts)
-24 (-3.54 % of base) : 28956.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseTime(byref):ubyte:this (Tier0-FullOpts)
-23 (-4.18 % of base) : 25091.dasm - System.Text.Encoding:GetBytesWithFallback(uint,int,uint,int,int,int,System.Text.EncoderNLS):int:this (Tier0)
-17 (-3.07 % of base) : 20515.dasm - System.Threading.Channels.ChannelUtilities:WakeUpWaiters(byref,ubyte,System.Exception) (Tier0-FullOpts)
-16 (-3.28 % of base) : 20646.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseDate(int):ubyte:this (Tier1)
-16 (-1.21 % of base) : 30040.dasm - System.Runtime.Serialization.Json.XmlJsonWriter:WriteStartElement(System.String,System.String,System.String):this (Tier1)
-16 (-4.08 % of base) : 46631.dasm - System.Threading.Tests.Perf_Timer+<>c:<SynchronousContention>b__8_0():this (Tier0-FullOpts)
-16 (-3.27 % of base) : 30996.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseDate(int):ubyte:this (Tier1)
-16 (-13.91 % of base) : 46153.dasm - V8.Crypto.BigInteger:copyTo(V8.Crypto.BigInteger):this (Tier0-FullOpts)
-14 (-9.40 % of base) : 31912.dasm - System.Collections.Concurrent.ConcurrentBag`1[System.__Canon]:CopyFromEachQueueToArray(System.__Canon[],int):int:this (Tier0-FullOpts)
-14 (-3.07 % of base) : 4926.dasm - System.Text.Json.Tests.Perf_Deep:Setup():this (Tier0-FullOpts)
-14 (-4.95 % of base) : 12531.dasm - System.Text.Json.Tests.Perf_Strings:Setup():this (Tier0-FullOpts)
-13 (-0.62 % of base) : 10079.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon]:Transform[ulong](System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Func`3[System.__Canon,System.__Canon,ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier0-FullOpts)
Top method regressions (percentages):
8 (2.05 % of base) : 239.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (Tier0-FullOpts)
6 (1.95 % of base) : 17827.dasm - System.Text.Json.Reflection.ReflectionExtensions:IsInSubtypeRelationshipWith(System.Type,System.Type):ubyte (Tier1)
36 (1.47 % of base) : 14038.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (Tier0-FullOpts)
23 (1.19 % of base) : 28583.dasm - MessagePack.Formatters.ListFormatter`1[System.__Canon]:Serialize(byref,int,System.Collections.Generic.List`1[System.__Canon],MessagePack.IFormatterResolver):int:this (Tier0-FullOpts)
6 (1.01 % of base) : 15116.dasm - Sigil.Impl.RollingVerifier+<>c__DisplayClass16_1:<RemoveUnnecessaryVerifiers>b__1(Sigil.Impl.LinqStack`1[Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack]],int):int:this (Tier0-FullOpts)
3 (1.00 % of base) : 46142.dasm - V8.Crypto.BigInteger:dLShiftTo(int,V8.Crypto.BigInteger):this (Tier0-FullOpts)
12 (0.60 % of base) : 24938.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (Tier0-FullOpts)
10 (0.58 % of base) : 19954.dasm - Utf8Json.Formatters.ListFormatter`1[int]:Serialize(byref,System.Collections.Generic.List`1[int],Utf8Json.IJsonFormatterResolver):this (Tier0-FullOpts)
2 (0.44 % of base) : 46144.dasm - V8.Crypto.BigInteger:lShiftTo(int,V8.Crypto.BigInteger):this (Tier0-FullOpts)
6 (0.40 % of base) : 15164.dasm - Sigil.Impl.VerifiableTracker:GetLegalTransitions(Sigil.Impl.LinqList`1[Sigil.Impl.StackTransition],Sigil.Impl.LinqStack`1[Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack]]):Sigil.Impl.LinqList`1[Sigil.Impl.StackTransition]:this (Tier0-FullOpts)
2 (0.21 % of base) : 47640.dasm - BenchmarksGame.ReverseComplement_1:Bench(System.IO.Stream,System.IO.Stream) (Tier0-FullOpts)
2 (0.17 % of base) : 10302.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong] (Tier0-FullOpts)
2 (0.13 % of base) : 46143.dasm - V8.Crypto.BigInteger:divRemTo(V8.Crypto.BigInteger,V8.Crypto.BigInteger,V8.Crypto.BigInteger):this (Tier0-FullOpts)
3 (0.11 % of base) : 30018.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:ReadValue(System.Type,System.String):System.Reflection.Emit.LocalBuilder:this (Tier0-FullOpts)
Top method improvements (percentages):
-11 (-14.29 % of base) : 18249.dasm - Benchstone.MDBenchI.MDAddArray2:.ctor():this (Tier0)
-11 (-14.29 % of base) : 23201.dasm - Benchstone.MDBenchI.MDXposMatrix:.ctor():this (Tier0)
-8 (-14.04 % of base) : 17247.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (Tier1)
-16 (-13.91 % of base) : 46153.dasm - V8.Crypto.BigInteger:copyTo(V8.Crypto.BigInteger):this (Tier0-FullOpts)
-9 (-12.86 % of base) : 11924.dasm - Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[int](byref,byref,uint) (Tier0)
-57 (-11.18 % of base) : 44773.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (Tier0-FullOpts)
-12 (-10.17 % of base) : 47760.dasm - System.Linq.Grouping`2+<GetEnumerator>d__9[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
-14 (-9.40 % of base) : 31912.dasm - System.Collections.Concurrent.ConcurrentBag`1[System.__Canon]:CopyFromEachQueueToArray(System.__Canon[],int):int:this (Tier0-FullOpts)
-9 (-8.33 % of base) : 47747.dasm - Benchstone.MDBenchI.MDPuzzle:Test():ubyte:this (Tier0-FullOpts)
-8 (-5.88 % of base) : 20645.dasm - Newtonsoft.Json.Utilities.DateTimeParser:Parse(ushort[],int,int):ubyte:this (Tier1)
-5 (-5.75 % of base) : 46180.dasm - V8.Crypto.BigInteger:bitLength():int:this (Tier1)
-9 (-5.73 % of base) : 11927.dasm - Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.__Canon](byref,byref,uint) (Tier0)
-14 (-4.95 % of base) : 12531.dasm - System.Text.Json.Tests.Perf_Strings:Setup():this (Tier0-FullOpts)
-95 (-4.94 % of base) : 28951.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (Tier0-FullOpts)
-69 (-4.69 % of base) : 46166.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (Tier0-FullOpts)
-23 (-4.18 % of base) : 25091.dasm - System.Text.Encoding:GetBytesWithFallback(uint,int,uint,int,int,int,System.Text.EncoderNLS):int:this (Tier0)
-16 (-4.08 % of base) : 46631.dasm - System.Threading.Tests.Perf_Timer+<>c:<SynchronousContention>b__8_0():this (Tier0-FullOpts)
-24 (-3.93 % of base) : 14487.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseTime(byref):ubyte:this (Tier0-FullOpts)
-12 (-3.86 % of base) : 44811.dasm - System.Collections.SortedList:.ctor(System.Collections.IDictionary,System.Collections.IComparer):this (Tier0-FullOpts)
-6 (-3.55 % of base) : 42580.dasm - Newtonsoft.Json.JsonReader:Pop():int:this (Tier1)
coreclr_tests.run.windows.x86.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 309170651 (overridden on cmd)
Total bytes of diff: 309131487 (overridden on cmd)
Total bytes of delta: -39164 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
80 : 518187.dasm (2.11 % of base)
15 : 480957.dasm (0.84 % of base)
12 : 232584.dasm (0.46 % of base)
12 : 480709.dasm (0.59 % of base)
12 : 480728.dasm (0.46 % of base)
12 : 482187.dasm (0.56 % of base)
10 : 375171.dasm (1.34 % of base)
10 : 376365.dasm (1.34 % of base)
8 : 285339.dasm (2.05 % of base)
8 : 362985.dasm (1.92 % of base)
8 : 517503.dasm (2.05 % of base)
8 : 340791.dasm (2.05 % of base)
8 : 361326.dasm (1.92 % of base)
8 : 365071.dasm (0.75 % of base)
8 : 560359.dasm (2.05 % of base)
6 : 517132.dasm (7.41 % of base)
6 : 168588.dasm (0.20 % of base)
6 : 464203.dasm (2.07 % of base)
6 : 150328.dasm (0.20 % of base)
6 : 193312.dasm (2.07 % of base)
Top file improvements (bytes):
-1390 : 506211.dasm (-4.39 % of base)
-1186 : 505709.dasm (-3.84 % of base)
-184 : 237183.dasm (-9.12 % of base)
-177 : 369425.dasm (-12.05 % of base)
-150 : 573886.dasm (-2.25 % of base)
-150 : 234782.dasm (-8.93 % of base)
-150 : 374452.dasm (-2.25 % of base)
-142 : 236555.dasm (-9.02 % of base)
-134 : 241491.dasm (-2.71 % of base)
-128 : 194622.dasm (-8.56 % of base)
-119 : 205174.dasm (-2.86 % of base)
-119 : 250768.dasm (-2.86 % of base)
-119 : 204519.dasm (-2.86 % of base)
-119 : 249925.dasm (-2.86 % of base)
-119 : 250748.dasm (-2.86 % of base)
-119 : 204504.dasm (-2.86 % of base)
-119 : 205237.dasm (-2.86 % of base)
-119 : 249818.dasm (-2.86 % of base)
-119 : 250100.dasm (-2.86 % of base)
-114 : 195581.dasm (-7.51 % of base)
91 total files with Code Size differences (59 improved, 32 regressed), 20 unchanged.
Top method regressions (bytes):
80 (2.11 % of base) : 518187.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
15 (0.84 % of base) : 480957.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
12 (0.56 % of base) : 482187.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (FullOpts)
12 (0.59 % of base) : 480709.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
12 (0.46 % of base) : 480728.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadValue(System.Type,System.String,System.String):System.Reflection.Emit.LocalBuilder:this (FullOpts)
12 (0.46 % of base) : 232584.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadValue(System.Type,System.String,System.String):System.Reflection.Emit.LocalBuilder:this (Tier0-FullOpts)
10 (1.34 % of base) : 375171.dasm - System.IO.Strategies.BufferedFileStreamStrategy:FlushWrite():this (Tier1)
10 (1.34 % of base) : 376365.dasm - System.IO.Strategies.BufferedFileStreamStrategy:FlushWrite():this (Tier1)
8 (0.75 % of base) : 365071.dasm - System.IO.RandomAccess+<>c:<ReadAtOffsetAsync>b__19_0(System.ValueTuple`4[Microsoft.Win32.SafeHandles.SafeFileHandle,System.Memory`1[ubyte],long,System.IO.Strategies.OSFileStreamStrategy]):int:this (Tier1)
8 (1.92 % of base) : 362985.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
8 (2.05 % of base) : 517503.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
8 (2.05 % of base) : 560359.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
8 (2.05 % of base) : 285339.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (Tier0-FullOpts)
8 (2.05 % of base) : 340791.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (Tier0-FullOpts)
8 (1.92 % of base) : 361326.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (Tier0-FullOpts)
6 (2.07 % of base) : 464203.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.ComInvokeBinder:Invoke():System.Dynamic.DynamicMetaObject:this (FullOpts)
6 (2.07 % of base) : 193312.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.ComInvokeBinder:Invoke():System.Dynamic.DynamicMetaObject:this (Tier0-FullOpts)
6 (7.41 % of base) : 517132.dasm - Runtime_88091:IsSubsetOf(System.Collections.Generic.List`1[NamedSet],int,int):ubyte (FullOpts)
6 (0.20 % of base) : 168588.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
6 (0.20 % of base) : 150328.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
Top method improvements (bytes):
-1390 (-4.39 % of base) : 506211.dasm - ulongMDArrTest:TestEntryPoint():int (FullOpts)
-1186 (-3.84 % of base) : 505709.dasm - longMDArrTest:TestEntryPoint():int (FullOpts)
-184 (-9.12 % of base) : 237183.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalWriter:SerializeValue(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.Serialization.JsonContract,Newtonsoft.Json.Serialization.JsonProperty,Newtonsoft.Json.Serialization.JsonContainerContract,Newtonsoft.Json.Serialization.JsonProperty):this (Instrumented Tier0)
-177 (-12.05 % of base) : 369425.dasm - ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory:CreateReadyToRunHelper(ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey):ILCompiler.DependencyAnalysis.ISymbolNode:this (Instrumented Tier0)
-150 (-8.93 % of base) : 234782.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:IsValidCallback(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],System.Type,System.Reflection.MethodInfo,byref):ubyte (Instrumented Tier0)
-150 (-2.25 % of base) : 573886.dasm - Test_13662_b:TestEntryPoint():int (FullOpts)
-150 (-2.25 % of base) : 374452.dasm - Test_13662_b:TestEntryPoint():int (Tier0-FullOpts)
-142 (-9.02 % of base) : 236555.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:IsValidCallback(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],System.Type,System.Reflection.MethodInfo,byref):ubyte (Instrumented Tier0)
-134 (-2.71 % of base) : 241491.dasm - BinderTracingTests.BinderEventListener:OnEventWritten(System.Diagnostics.Tracing.EventWrittenEventArgs):this (Instrumented Tier0)
-128 (-8.56 % of base) : 194622.dasm - System.Linq.Expressions.Expression:Invoke(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]):System.Linq.Expressions.InvocationExpression (Instrumented Tier0)
-119 (-2.86 % of base) : 250748.dasm - Test_AbstractBase02:TestEntryPoint():int (Tier0)
-119 (-2.86 % of base) : 249818.dasm - Test_AbstractBase03:TestEntryPoint():int (Tier0)
-119 (-2.86 % of base) : 204504.dasm - Test_BaseClass02:TestEntryPoint():int (Tier0)
-119 (-2.86 % of base) : 204519.dasm - Test_BaseClass03:TestEntryPoint():int (Tier0)
-119 (-2.86 % of base) : 205174.dasm - Test_class01:TestEntryPoint():int (Tier0)
-119 (-2.86 % of base) : 205237.dasm - Test_class01:TestEntryPoint():int (Tier0)
-119 (-2.86 % of base) : 249925.dasm - Test_NestedBaseClass06:TestEntryPoint():int (Tier0)
-119 (-2.86 % of base) : 250100.dasm - Test_NestedClass01:TestEntryPoint():int (Tier0)
-119 (-2.86 % of base) : 250768.dasm - Test_NestedClass03:TestEntryPoint():int (Tier0)
-114 (-7.51 % of base) : 195581.dasm - System.Linq.Expressions.Expression:Call(System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]):System.Linq.Expressions.MethodCallExpression (Instrumented Tier0)
Top method regressions (percentages):
6 (7.41 % of base) : 517132.dasm - Runtime_88091:IsSubsetOf(System.Collections.Generic.List`1[NamedSet],int,int):ubyte (FullOpts)
5 (3.55 % of base) : 364931.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker+<>c__DisplayClass10_0:<ValidateTypeWorker>g__ValidateTypeWorkerHelper|0(Internal.TypeSystem.TypeDesc):System.Threading.Tasks.Task`1[ubyte]:this (Instrumented Tier0)
5 (3.38 % of base) : 372509.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.StringImportSignature:AppendMangledName(ILCompiler.NameMangler,Internal.Text.Utf8StringBuilder):this (Instrumented Tier0)
5 (2.92 % of base) : 337296.dasm - System.CommandLine.Parsing.OptionResult:get_ArgumentConversionResult():System.CommandLine.Binding.ArgumentConversionResult:this (Instrumented Tier0)
5 (2.92 % of base) : 236409.dasm - System.Security.Cryptography.HashAlgorithm:CaptureHashCodeAndReinitialize():ubyte[]:this (Instrumented Tier0)
5 (2.79 % of base) : 338573.dasm - System.IO.Compression.ZLibNative+ZLibStreamHandle:EnsureState(int):this (Instrumented Tier0)
5 (2.79 % of base) : 195566.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitDefaultExpression(System.Linq.Expressions.Expression):this (Instrumented Tier0)
5 (2.67 % of base) : 194700.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitParameterExpression(System.Linq.Expressions.Expression):this (Instrumented Tier0)
5 (2.63 % of base) : 227372.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSyntaxTreeOrdinal(Microsoft.CodeAnalysis.SyntaxTree):int:this (Instrumented Tier0)
5 (2.59 % of base) : 369883.dasm - Internal.IL.Stubs.PInvokeILEmitter:<EmitPInvokeCall>g__AllocateTargetNativeMethod|5_0(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodSignature):Internal.IL.Stubs.PInvokeTargetNativeMethod (Instrumented Tier0)
5 (2.56 % of base) : 372112.dasm - Internal.TypeSystem.TypeSystemHelpers:GetFullName(Internal.TypeSystem.DefType):System.String (Instrumented Tier0)
5 (2.31 % of base) : 368669.dasm - ILCompiler.ProcessLinkerXmlBase:MatchType(Internal.TypeSystem.TypeDesc,System.Text.RegularExpressions.Regex,System.Xml.XPath.XPathNavigator):this (Instrumented Tier0)
5 (2.27 % of base) : 370250.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DelegateCtorSignature:.ctor(Internal.TypeSystem.TypeDesc,ILCompiler.DependencyAnalysis.IMethodNode,Internal.JitInterface.MethodWithToken):this (Instrumented Tier0)
80 (2.11 % of base) : 518187.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
6 (2.07 % of base) : 464203.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.ComInvokeBinder:Invoke():System.Dynamic.DynamicMetaObject:this (FullOpts)
6 (2.07 % of base) : 193312.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.ComInvokeBinder:Invoke():System.Dynamic.DynamicMetaObject:this (Tier0-FullOpts)
8 (2.05 % of base) : 517503.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
8 (2.05 % of base) : 560359.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
8 (2.05 % of base) : 285339.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (Tier0-FullOpts)
8 (2.05 % of base) : 340791.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (Tier0-FullOpts)
Top method improvements (percentages):
-22 (-20.18 % of base) : 505330.dasm - Test_classarr_InnerProd.ArrayClass:.ctor(int):this (FullOpts)
-14 (-19.18 % of base) : 503656.dasm - Test_10w5d.testout1+CL_0_1_1_5_5:.ctor():this (FullOpts)
-14 (-19.18 % of base) : 509850.dasm - Test_10w5d.testout1+CL_0_1_1_5_5:.ctor():this (FullOpts)
-14 (-19.18 % of base) : 503015.dasm - Test_10w5d.testout1+CL_0_5_1_3_5:.ctor():this (FullOpts)
-14 (-19.18 % of base) : 509336.dasm - Test_10w5d.testout1+CL_0_5_1_3_5:.ctor():this (FullOpts)
-22 (-19.13 % of base) : 505316.dasm - Arrayclass:.ctor(int):this (FullOpts)
-14 (-18.92 % of base) : 503537.dasm - Test_10w5d.testout1+CL_0_1_6_5_4:.ctor():this (FullOpts)
-14 (-18.92 % of base) : 509753.dasm - Test_10w5d.testout1+CL_0_1_6_5_4:.ctor():this (FullOpts)
-14 (-18.92 % of base) : 509658.dasm - Test_10w5d.testout1+CL_0_2_5_2_3:.ctor():this (FullOpts)
-14 (-18.92 % of base) : 503421.dasm - Test_10w5d.testout1+CL_0_2_5_2_3:.ctor():this (FullOpts)
-14 (-18.92 % of base) : 509586.dasm - Test_10w5d.testout1+CL_0_3_2_1_3:.ctor():this (FullOpts)
-14 (-18.92 % of base) : 503325.dasm - Test_10w5d.testout1+CL_0_3_2_1_3:.ctor():this (FullOpts)
-14 (-18.92 % of base) : 503027.dasm - Test_10w5d.testout1+CL_0_5_1_2_1:.ctor():this (FullOpts)
-14 (-18.92 % of base) : 509345.dasm - Test_10w5d.testout1+CL_0_5_1_2_1:.ctor():this (FullOpts)
-14 (-18.92 % of base) : 502984.dasm - Test_10w5d.testout1+CL_0_5_2_3_6:.ctor():this (FullOpts)
-14 (-18.92 % of base) : 509310.dasm - Test_10w5d.testout1+CL_0_5_2_3_6:.ctor():this (FullOpts)
-14 (-18.92 % of base) : 502817.dasm - Test_10w5d.testout1+CL_0_6_2_1_3:.ctor():this (FullOpts)
-14 (-18.92 % of base) : 509182.dasm - Test_10w5d.testout1+CL_0_6_2_1_3:.ctor():this (FullOpts)
-18 (-18.75 % of base) : 369998.dasm - Internal.JitInterface.JitTypeNameFormatter:AppendNameForInstantiatedType(System.Text.StringBuilder,Internal.TypeSystem.DefType):this (Instrumented Tier0)
-22 (-17.60 % of base) : 378158.dasm - testout1+CL_0_1_2_3_2:.ctor():this (FullOpts)
libraries.crossgen2.windows.x86.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 31620161 (overridden on cmd)
Total bytes of diff: 31616983 (overridden on cmd)
Total bytes of delta: -3178 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
80 : 149808.dasm (2.66 % of base)
34 : 238895.dasm (4.37 % of base)
34 : 238898.dasm (4.36 % of base)
30 : 178406.dasm (4.54 % of base)
29 : 209613.dasm (7.16 % of base)
15 : 21996.dasm (7.89 % of base)
14 : 168462.dasm (2.73 % of base)
14 : 143626.dasm (2.73 % of base)
11 : 218552.dasm (2.33 % of base)
9 : 215478.dasm (2.47 % of base)
8 : 22218.dasm (1.67 % of base)
6 : 3276.dasm (1.34 % of base)
6 : 99813.dasm (0.54 % of base)
6 : 226966.dasm (2.08 % of base)
6 : 3274.dasm (1.34 % of base)
5 : 180972.dasm (2.17 % of base)
5 : 219379.dasm (1.33 % of base)
5 : 180844.dasm (2.17 % of base)
5 : 96979.dasm (1.79 % of base)
5 : 21998.dasm (2.02 % of base)
Top file improvements (bytes):
-413 : 148225.dasm (-7.70 % of base)
-114 : 218453.dasm (-0.51 % of base)
-104 : 153745.dasm (-6.20 % of base)
-98 : 151800.dasm (-6.64 % of base)
-86 : 32108.dasm (-1.54 % of base)
-73 : 156115.dasm (-2.49 % of base)
-65 : 184654.dasm (-2.09 % of base)
-48 : 149280.dasm (-23.76 % of base)
-42 : 219173.dasm (-3.49 % of base)
-38 : 81049.dasm (-5.80 % of base)
-38 : 23813.dasm (-0.55 % of base)
-37 : 125883.dasm (-4.07 % of base)
-33 : 30736.dasm (-2.43 % of base)
-29 : 37716.dasm (-1.55 % of base)
-26 : 106741.dasm (-5.34 % of base)
-25 : 140460.dasm (-1.71 % of base)
-25 : 165259.dasm (-1.71 % of base)
-24 : 128341.dasm (-5.90 % of base)
-24 : 15214.dasm (-13.95 % of base)
-24 : 233561.dasm (-6.00 % of base)
68 total files with Code Size differences (41 improved, 27 regressed), 20 unchanged.
Top method regressions (bytes):
80 (2.66 % of base) : 149808.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
34 (4.36 % of base) : 238898.dasm - System.Net.Sockets.SocketPal:Receive(System.Net.Sockets.SafeSocketHandle,System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],int,byref):int (FullOpts)
34 (4.37 % of base) : 238895.dasm - System.Net.Sockets.SocketPal:Send(System.Net.Sockets.SafeSocketHandle,System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],int,byref):int (FullOpts)
30 (4.54 % of base) : 178406.dasm - System.IO.Packaging.PartBasedPackageProperties:SerializeDirtyProperties():this (FullOpts)
29 (7.16 % of base) : 209613.dasm - System.IO.Compression.DeflateStream:ReadCore(System.Span`1[ubyte]):int:this (FullOpts)
15 (7.89 % of base) : 21996.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
14 (2.73 % of base) : 168462.dasm - Microsoft.CodeAnalysis.Emit.NoPia.EmbeddedTypesManager`21[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetTypes(Microsoft.CodeAnalysis.DiagnosticBag,System.Collections.Generic.HashSet`1[System.String]):System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.INamespaceTypeDefinition]:this (FullOpts)
14 (2.73 % of base) : 143626.dasm - Microsoft.CodeAnalysis.Emit.NoPia.EmbeddedTypesManager`21[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetTypes(Microsoft.CodeAnalysis.DiagnosticBag,System.Collections.Generic.HashSet`1[System.String]):System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.INamespaceTypeDefinition]:this (FullOpts)
11 (2.33 % of base) : 218552.dasm - Microsoft.VisualBasic.DateAndTime:WeekdayName(int,ubyte,int):System.String (FullOpts)
9 (2.47 % of base) : 215478.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this (FullOpts)
8 (1.67 % of base) : 22218.dasm - System.Globalization.Ordinal:ToUpperOrdinal(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):int (FullOpts)
6 (0.54 % of base) : 99813.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PENamedTypeSymbol+VB$StateMachine_72_GetMethodsToEmit:MoveNext():ubyte:this (FullOpts)
6 (2.08 % of base) : 226966.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.ComInvokeBinder:Invoke():System.Dynamic.DynamicMetaObject:this (FullOpts)
6 (1.34 % of base) : 3274.dasm - System.MemoryExtensions:ToLowerInvariant(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):int (FullOpts)
6 (1.34 % of base) : 3276.dasm - System.MemoryExtensions:ToUpperInvariant(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):int (FullOpts)
5 (1.79 % of base) : 96979.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions:ComputeHashCode():int:this (FullOpts)
5 (1.33 % of base) : 219379.dasm - Microsoft.VisualBasic.CompilerServices.IDOUtils:PackArguments(int,System.String[],System.Object[],byref,byref) (FullOpts)
5 (2.02 % of base) : 21998.dasm - System.Array+SorterObjectArray:Heapsort(int,int):this (FullOpts)
5 (2.17 % of base) : 180844.dasm - System.Collections.Generic.SegmentedList`1[System.__Canon]:AppendFrom(System.__Canon[],int,int):this (FullOpts)
5 (2.17 % of base) : 180972.dasm - System.Collections.Generic.SegmentedList`1[ubyte]:AppendFrom(ubyte[],int,int):this (FullOpts)
Top method improvements (bytes):
-413 (-7.70 % of base) : 148225.dasm - System.Xml.Schema.XdrBuilder:.cctor() (FullOpts)
-114 (-0.51 % of base) : 218453.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-104 (-6.20 % of base) : 153745.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
-98 (-6.64 % of base) : 151800.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-86 (-1.54 % of base) : 32108.dasm - System.Data.RBTree`1[int]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
-73 (-2.49 % of base) : 156115.dasm - System.Xml.Xsl.Xslt.XsltLoader:LoadOutput():this (FullOpts)
-65 (-2.09 % of base) : 184654.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,System.__Canon]:MergeSortCooperatively():this (FullOpts)
-48 (-23.76 % of base) : 149280.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
-42 (-3.49 % of base) : 219173.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
-38 (-5.80 % of base) : 81049.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbolExtensions:TransformToCanonicalFormFor(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol],Microsoft.CodeAnalysis.VisualBasic.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol] (FullOpts)
-38 (-0.55 % of base) : 23813.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-37 (-4.07 % of base) : 125883.dasm - Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC:ConvertMarkTimes():this (FullOpts)
-33 (-2.43 % of base) : 30736.dasm - System.Data.ConstraintCollection:FinishInitConstraints():this (FullOpts)
-29 (-1.55 % of base) : 37716.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompiler:CreateCompilation(System.IO.TextWriter,Microsoft.CodeAnalysis.TouchedFileLogger,Microsoft.CodeAnalysis.ErrorLogger,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AnalyzerConfigOptionsResult],Microsoft.CodeAnalysis.AnalyzerConfigOptionsResult):Microsoft.CodeAnalysis.Compilation:this (FullOpts)
-26 (-5.34 % of base) : 106741.dasm - System.Runtime.Serialization.Json.JsonClassDataContract+JsonClassDataContractCriticalHelper:CopyMembersAndCheckDuplicateNames():this (FullOpts)
-25 (-1.71 % of base) : 140460.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver+<ProcessCompilationEventsAsync>d__132:MoveNext():this (FullOpts)
-25 (-1.71 % of base) : 165259.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver+<ProcessCompilationEventsAsync>d__132:MoveNext():this (FullOpts)
-24 (-6.00 % of base) : 233561.dasm - Newtonsoft.Json.Bson.Utilities.DateTimeParser:ParseTime(byref):ubyte:this (FullOpts)
-24 (-5.90 % of base) : 128341.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseTime(byref):ubyte:this (FullOpts)
-24 (-13.95 % of base) : 15214.dasm - System.Collections.Generic.List`1[System.__Canon]:ConvertAll[System.__Canon](System.Converter`2[System.__Canon,System.__Canon]):System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
Top method regressions (percentages):
15 (7.89 % of base) : 21996.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
29 (7.16 % of base) : 209613.dasm - System.IO.Compression.DeflateStream:ReadCore(System.Span`1[ubyte]):int:this (FullOpts)
30 (4.54 % of base) : 178406.dasm - System.IO.Packaging.PartBasedPackageProperties:SerializeDirtyProperties():this (FullOpts)
34 (4.37 % of base) : 238895.dasm - System.Net.Sockets.SocketPal:Send(System.Net.Sockets.SafeSocketHandle,System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],int,byref):int (FullOpts)
34 (4.36 % of base) : 238898.dasm - System.Net.Sockets.SocketPal:Receive(System.Net.Sockets.SafeSocketHandle,System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],int,byref):int (FullOpts)
2 (3.77 % of base) : 224281.dasm - System.Reflection.TypeLoading.Ecma.EcmaModule:IsSystemType(System.Reflection.TypeLoading.RoType):ubyte:this (FullOpts)
2 (3.77 % of base) : 191315.dasm - System.Reflection.TypeLoading.Ecma.EcmaModule:IsSystemType(System.Reflection.TypeLoading.RoType):ubyte:this (FullOpts)
14 (2.73 % of base) : 168462.dasm - Microsoft.CodeAnalysis.Emit.NoPia.EmbeddedTypesManager`21[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetTypes(Microsoft.CodeAnalysis.DiagnosticBag,System.Collections.Generic.HashSet`1[System.String]):System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.INamespaceTypeDefinition]:this (FullOpts)
14 (2.73 % of base) : 143626.dasm - Microsoft.CodeAnalysis.Emit.NoPia.EmbeddedTypesManager`21[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetTypes(Microsoft.CodeAnalysis.DiagnosticBag,System.Collections.Generic.HashSet`1[System.String]):System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.INamespaceTypeDefinition]:this (FullOpts)
80 (2.66 % of base) : 149808.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
4 (2.63 % of base) : 124104.dasm - Microsoft.Diagnostics.Tracing.Parsers.ApplicationServer.Multidata3TemplateHATraceData:get_AppDomain():System.String:this (FullOpts)
4 (2.61 % of base) : 124116.dasm - Microsoft.Diagnostics.Tracing.Parsers.ApplicationServer.Multidata6TemplateHATraceData:get_HostReference():System.String:this (FullOpts)
9 (2.47 % of base) : 215478.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this (FullOpts)
4 (2.45 % of base) : 124117.dasm - Microsoft.Diagnostics.Tracing.Parsers.ApplicationServer.Multidata6TemplateHATraceData:get_AppDomain():System.String:this (FullOpts)
4 (2.42 % of base) : 18584.dasm - System.Runtime.Intrinsics.Vector512`1[int]:System.Runtime.Intrinsics.ISimdVector<System.Runtime.Intrinsics.Vector512<T>,T>.Sum(System.Runtime.Intrinsics.Vector512`1[int]):int (FullOpts)
4 (2.42 % of base) : 18953.dasm - System.Runtime.Intrinsics.Vector512`1[uint]:System.Runtime.Intrinsics.ISimdVector<System.Runtime.Intrinsics.Vector512<T>,T>.Sum(System.Runtime.Intrinsics.Vector512`1[uint]):uint (FullOpts)
11 (2.33 % of base) : 218552.dasm - Microsoft.VisualBasic.DateAndTime:WeekdayName(int,ubyte,int):System.String (FullOpts)
5 (2.17 % of base) : 180844.dasm - System.Collections.Generic.SegmentedList`1[System.__Canon]:AppendFrom(System.__Canon[],int,int):this (FullOpts)
5 (2.17 % of base) : 180972.dasm - System.Collections.Generic.SegmentedList`1[ubyte]:AppendFrom(ubyte[],int,int):this (FullOpts)
6 (2.08 % of base) : 226966.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.ComInvokeBinder:Invoke():System.Dynamic.DynamicMetaObject:this (FullOpts)
Top method improvements (percentages):
-48 (-23.76 % of base) : 149280.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
-13 (-19.12 % of base) : 226882.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol:GetRootNamespaceSymbol():Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (FullOpts)
-8 (-15.69 % of base) : 30542.dasm - System.Data.Common.SqlBinaryStorage:Get(int):System.Object:this (FullOpts)
-13 (-13.98 % of base) : 153299.dasm - System.Xml.XmlSqlBinaryReader:ImplReadPI():this (FullOpts)
-24 (-13.95 % of base) : 15214.dasm - System.Collections.Generic.List`1[System.__Canon]:ConvertAll[System.__Canon](System.Converter`2[System.__Canon,System.__Canon]):System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
-23 (-13.37 % of base) : 180806.dasm - System.Collections.Generic.GrowableArray`1[System.__Canon]:Insert(int,System.__Canon):this (FullOpts)
-8 (-12.70 % of base) : 30528.dasm - System.Data.Common.SqlStringStorage:Get(int):System.Object:this (FullOpts)
-8 (-12.70 % of base) : 6490.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
-12 (-11.76 % of base) : 13852.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-20 (-11.49 % of base) : 214914.dasm - System.Data.OleDb.OleDbDataReader:GetValues(System.Object[]):int:this (FullOpts)
-4 (-10.00 % of base) : 30256.dasm - System.Data.Common.ObjectStorage:Copy(int,int):this (FullOpts)
-4 (-10.00 % of base) : 30343.dasm - System.Data.Common.StringStorage:Copy(int,int):this (FullOpts)
-12 (-10.00 % of base) : 185429.dasm - System.Linq.Grouping`2+<GetEnumerator>d__9[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
-21 (-10.00 % of base) : 152112.dasm - System.Xml.Schema.XdrBuilder:GetNextState(System.Xml.XmlQualifiedName):ubyte:this (FullOpts)
-16 (-9.36 % of base) : 227275.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.ComInvokeBinder:MakeArgumentExpressions():System.Linq.Expressions.Expression[]:this (FullOpts)
-15 (-9.26 % of base) : 22434.dasm - System.Diagnostics.Tracing.EventSource:IsEnabledByDefault(int,ubyte,int,long):ubyte:this (FullOpts)
-20 (-8.44 % of base) : 202656.dasm - System.Data.Odbc.OdbcDataReader:GetOrdinalFromBaseColName(System.String,System.String):int:this (FullOpts)
-20 (-8.30 % of base) : 128339.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseDate(int):ubyte:this (FullOpts)
-20 (-8.23 % of base) : 154544.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseDate(int):ubyte:this (FullOpts)
-16 (-8.12 % of base) : 35641.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:InitializeDependencies():this (FullOpts)
libraries.pmi.windows.x86.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 48795839 (overridden on cmd)
Total bytes of diff: 48791175 (overridden on cmd)
Total bytes of delta: -4664 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
103 : 169172.dasm (7.30 % of base)
103 : 121357.dasm (7.30 % of base)
82 : 147560.dasm (0.34 % of base)
80 : 191558.dasm (2.06 % of base)
36 : 178573.dasm (1.12 % of base)
22 : 201709.dasm (7.24 % of base)
17 : 195922.dasm (1.10 % of base)
15 : 178560.dasm (0.84 % of base)
12 : 178476.dasm (0.59 % of base)
12 : 178481.dasm (0.46 % of base)
12 : 178594.dasm (0.56 % of base)
10 : 286188.dasm (1.66 % of base)
10 : 241284.dasm (2.42 % of base)
9 : 114808.dasm (3.56 % of base)
9 : 127179.dasm (2.33 % of base)
9 : 162729.dasm (3.56 % of base)
9 : 251897.dasm (1.36 % of base)
9 : 71194.dasm (1.39 % of base)
8 : 30625.dasm (2.29 % of base)
8 : 290038.dasm (0.57 % of base)
Top file improvements (bytes):
-146 : 259439.dasm (-4.55 % of base)
-104 : 211716.dasm (-1.89 % of base)
-100 : 187839.dasm (-4.36 % of base)
-94 : 184897.dasm (-7.13 % of base)
-88 : 70947.dasm (-1.58 % of base)
-77 : 188969.dasm (-2.09 % of base)
-63 : 267460.dasm (-3.59 % of base)
-59 : 84683.dasm (-7.52 % of base)
-58 : 217375.dasm (-8.57 % of base)
-48 : 189854.dasm (-23.41 % of base)
-45 : 116.dasm (-0.47 % of base)
-42 : 267407.dasm (-2.49 % of base)
-41 : 121311.dasm (-5.93 % of base)
-41 : 169126.dasm (-5.93 % of base)
-38 : 267021.dasm (-1.23 % of base)
-37 : 107190.dasm (-1.59 % of base)
-36 : 107189.dasm (-2.27 % of base)
-36 : 107191.dasm (-1.62 % of base)
-36 : 65421.dasm (-1.64 % of base)
-36 : 65423.dasm (-1.32 % of base)
75 total files with Code Size differences (44 improved, 31 regressed), 20 unchanged.
Top method regressions (bytes):
103 (7.30 % of base) : 169172.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySortHelper`2[ubyte,System.Nullable`1[int]]:PickPivotAndPartition(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte],System.Span`1[System.Nullable`1[int]],System.Collections.Generic.IComparer`1[ubyte]):int (FullOpts)
103 (7.30 % of base) : 121357.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySortHelper`2[ubyte,System.Nullable`1[int]]:PickPivotAndPartition(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte],System.Span`1[System.Nullable`1[int]],System.Collections.Generic.IComparer`1[ubyte]):int (FullOpts)
82 (0.34 % of base) : 147560.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
80 (2.06 % of base) : 191558.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
36 (1.12 % of base) : 178573.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:ReadGetOnlyCollection(System.Runtime.Serialization.DataContracts.CollectionDataContract):this (FullOpts)
22 (7.24 % of base) : 201709.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (FullOpts)
17 (1.10 % of base) : 195922.dasm - ILCompiler.ReadyToRunFileLayoutOptimizer:PettisHansenSort(System.Collections.Generic.List`1[ILCompiler.DependencyAnalysis.ReadyToRun.MethodWithGCInfo]):System.Collections.Generic.List`1[ILCompiler.DependencyAnalysis.ReadyToRun.MethodWithGCInfo]:this (FullOpts)
15 (0.84 % of base) : 178560.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
12 (0.56 % of base) : 178594.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (FullOpts)
12 (0.59 % of base) : 178476.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
12 (0.46 % of base) : 178481.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadValue(System.Type,System.String,System.String):System.Reflection.Emit.LocalBuilder:this (FullOpts)
10 (2.42 % of base) : 241284.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this (FullOpts)
10 (1.66 % of base) : 286188.dasm - System.Security.Cryptography.RSABCrypt:TryEncrypt(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.RSAEncryptionPadding,byref):ubyte:this (FullOpts)
9 (3.56 % of base) : 114808.dasm - Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]:SortAndRemoveDuplicates(System.Collections.Generic.IComparer`1[ubyte]):this (FullOpts)
9 (3.56 % of base) : 162729.dasm - Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]:SortAndRemoveDuplicates(System.Collections.Generic.IComparer`1[ubyte]):this (FullOpts)
9 (2.33 % of base) : 127179.dasm - Microsoft.Diagnostics.Tracing.Utilities.FastStream:ReadAsciiStringUpToLastBeforeTrue(ushort,System.Text.StringBuilder,System.Func`2[ubyte,ubyte]):this (FullOpts)
9 (1.39 % of base) : 71194.dasm - System.Data.Index:GetRows(System.Data.Range):System.Data.DataRow[]:this (FullOpts)
9 (1.36 % of base) : 251897.dasm - System.IO.Packaging.PartBasedPackageProperties:ValidateXsiType(System.Xml.XmlReader,System.Object,System.String) (FullOpts)
8 (2.29 % of base) : 30625.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ResolveMultipleSymbolsInAttributeTypeLookup(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol]):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
8 (0.57 % of base) : 290038.dasm - System.Speech.Internal.SrgsParser.XmlParser:ParseToken(System.Speech.Internal.SrgsParser.IElement,System.Xml.XmlReader):System.Speech.Internal.SrgsParser.IToken:this (FullOpts)
Top method improvements (bytes):
-146 (-4.55 % of base) : 259439.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,System.Nullable`1[int]]:MergeSortCooperatively():this (FullOpts)
-104 (-1.89 % of base) : 211716.dasm - Newtonsoft.Json.JsonTextReader+<ParseValueAsync>d__8:MoveNext():this (FullOpts)
-100 (-4.36 % of base) : 187839.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
-94 (-7.13 % of base) : 184897.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-88 (-1.58 % of base) : 70947.dasm - System.Data.RBTree`1[ubyte]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
-77 (-2.09 % of base) : 188969.dasm - System.Xml.Xsl.Xslt.XsltLoader:LoadOutput():this (FullOpts)
-63 (-3.59 % of base) : 267460.dasm - System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
-59 (-7.52 % of base) : 84683.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbolExtensions:TransformToCanonicalFormFor(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol],Microsoft.CodeAnalysis.VisualBasic.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol] (FullOpts)
-58 (-8.57 % of base) : 217375.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySortHelper`1[ubyte]:DownHeap(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte],int,int,int,System.Comparison`1[ubyte]) (FullOpts)
-48 (-23.41 % of base) : 189854.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
-45 (-0.47 % of base) : 116.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-42 (-2.49 % of base) : 267407.dasm - System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.ReadOnlySpan`1[System.String],System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
-41 (-5.93 % of base) : 121311.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySortHelper`1[ubyte]:DownHeap(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte],int,int,int,System.Comparison`1[ubyte]) (FullOpts)
-41 (-5.93 % of base) : 169126.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySortHelper`1[ubyte]:DownHeap(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte],int,int,int,System.Comparison`1[ubyte]) (FullOpts)
-38 (-1.23 % of base) : 267021.dasm - System.Net.Http.Http3RequestStream+<SendContentAsync>d__31:MoveNext():this (FullOpts)
-37 (-1.59 % of base) : 107190.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNodeRemover+SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
-36 (-1.64 % of base) : 65421.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNodeRemover+SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
-36 (-1.32 % of base) : 65423.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNodeRemover+SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxToken):this (FullOpts)
-36 (-2.27 % of base) : 107189.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNodeRemover+SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
-36 (-1.62 % of base) : 107191.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNodeRemover+SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxToken):this (FullOpts)
Top method regressions (percentages):
103 (7.30 % of base) : 169172.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySortHelper`2[ubyte,System.Nullable`1[int]]:PickPivotAndPartition(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte],System.Span`1[System.Nullable`1[int]],System.Collections.Generic.IComparer`1[ubyte]):int (FullOpts)
103 (7.30 % of base) : 121357.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySortHelper`2[ubyte,System.Nullable`1[int]]:PickPivotAndPartition(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte],System.Span`1[System.Nullable`1[int]],System.Collections.Generic.IComparer`1[ubyte]):int (FullOpts)
22 (7.24 % of base) : 201709.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (FullOpts)
9 (3.56 % of base) : 114808.dasm - Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]:SortAndRemoveDuplicates(System.Collections.Generic.IComparer`1[ubyte]):this (FullOpts)
9 (3.56 % of base) : 162729.dasm - Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]:SortAndRemoveDuplicates(System.Collections.Generic.IComparer`1[ubyte]):this (FullOpts)
4 (2.76 % of base) : 143384.dasm - Microsoft.Diagnostics.Tracing.Parsers.ApplicationServer.Multidata3TemplateHATraceData:get_AppDomain():System.String:this (FullOpts)
4 (2.74 % of base) : 143396.dasm - Microsoft.Diagnostics.Tracing.Parsers.ApplicationServer.Multidata6TemplateHATraceData:get_HostReference():System.String:this (FullOpts)
6 (2.64 % of base) : 168969.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[ubyte]:FindLastIndex(int,int,System.Predicate`1[ubyte]):int:this (FullOpts)
6 (2.64 % of base) : 121154.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[ubyte]:FindLastIndex(int,int,System.Predicate`1[ubyte]):int:this (FullOpts)
4 (2.56 % of base) : 143397.dasm - Microsoft.Diagnostics.Tracing.Parsers.ApplicationServer.Multidata6TemplateHATraceData:get_AppDomain():System.String:this (FullOpts)
10 (2.42 % of base) : 241284.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this (FullOpts)
9 (2.33 % of base) : 127179.dasm - Microsoft.Diagnostics.Tracing.Utilities.FastStream:ReadAsciiStringUpToLastBeforeTrue(ushort,System.Text.StringBuilder,System.Func`2[ubyte,ubyte]):this (FullOpts)
8 (2.29 % of base) : 30625.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ResolveMultipleSymbolsInAttributeTypeLookup(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol]):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
3 (2.24 % of base) : 19631.dasm - <StartupCode$FSharp-Core>.$Async+Parallel@1621-3[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
2 (2.11 % of base) : 202705.dasm - System.Collections.Generic.GrowableArray`1[System.__Canon]:Search[ubyte](ubyte,int,System.Func`3[ubyte,System.__Canon,int],byref):ubyte:this (FullOpts)
6 (2.07 % of base) : 201298.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.ComInvokeBinder:Invoke():System.Dynamic.DynamicMetaObject:this (FullOpts)
2 (2.06 % of base) : 202741.dasm - System.Collections.Generic.GrowableArray`1[ubyte]:Search[ubyte](ubyte,int,System.Func`3[ubyte,ubyte,int],byref):ubyte:this (FullOpts)
80 (2.06 % of base) : 191558.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
6 (1.95 % of base) : 293807.dasm - System.Text.Json.Reflection.ReflectionExtensions:IsInSubtypeRelationshipWith(System.Type,System.Type):ubyte (FullOpts)
4 (1.87 % of base) : 71038.dasm - System.Data.RBTree`1[System.Numerics.Vector`1[float]]:Search(System.Numerics.Vector`1[float]):int:this (FullOpts)
Top method improvements (percentages):
-48 (-23.41 % of base) : 189854.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
-8 (-15.09 % of base) : 74021.dasm - System.Data.Common.SqlBinaryStorage:Get(int):System.Object:this (FullOpts)
-13 (-14.29 % of base) : 180751.dasm - System.Xml.XmlSqlBinaryReader:ImplReadPI():this (FullOpts)
-23 (-13.86 % of base) : 202683.dasm - System.Collections.Generic.GrowableArray`1[System.__Canon]:Insert(int,System.__Canon):this (FullOpts)
-20 (-12.50 % of base) : 201304.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.ComInvokeBinder:MakeArgumentExpressions():System.Linq.Expressions.Expression[]:this (FullOpts)
-8 (-12.50 % of base) : 74006.dasm - System.Data.Common.SqlStringStorage:Get(int):System.Object:this (FullOpts)
-4 (-10.53 % of base) : 73685.dasm - System.Data.Common.ObjectStorage:Copy(int,int):this (FullOpts)
-28 (-10.33 % of base) : 286596.dasm - System.Security.Cryptography.X509Certificates.X500DistinguishedName+<EnumerateRelativeDistinguishedNames>d__15:MoveNext():ubyte:this (FullOpts)
-9 (-10.23 % of base) : 208006.dasm - Newtonsoft.Json.Bson.BsonDataReader:PopContext():this (FullOpts)
-9 (-10.23 % of base) : 211563.dasm - Newtonsoft.Json.Bson.BsonReader:PopContext():this (FullOpts)
-12 (-10.17 % of base) : 145716.dasm - Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModules+<GetEnumerator>d__5:MoveNext():ubyte:this (FullOpts)
-12 (-10.17 % of base) : 145762.dasm - Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFiles+<System-Collections-Generic-IEnumerable<Microsoft-Diagnostics-Tracing-Etlx-TraceModuleFile>-GetEnumerator>d__7:MoveNext():ubyte:this (FullOpts)
-12 (-10.17 % of base) : 145695.dasm - Microsoft.Diagnostics.Tracing.Etlx.TraceProcesses+<System-Collections-Generic-IEnumerable<Microsoft-Diagnostics-Tracing-Etlx-TraceProcess>-GetEnumerator>d__11:MoveNext():ubyte:this (FullOpts)
-12 (-10.17 % of base) : 145698.dasm - Microsoft.Diagnostics.Tracing.Etlx.TraceProcesses+<System-Collections-IEnumerable-GetEnumerator>d__20:MoveNext():ubyte:this (FullOpts)
-12 (-10.17 % of base) : 145710.dasm - Microsoft.Diagnostics.Tracing.Etlx.TraceThreads+<System-Collections-Generic-IEnumerable<Microsoft-Diagnostics-Tracing-Etlx-TraceThread>-GetEnumerator>d__0:MoveNext():ubyte:this (FullOpts)
-11 (-9.91 % of base) : 146503.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:MapParameters(System.Nullable`1[int][],System.Object[]):this (FullOpts)
-14 (-9.40 % of base) : 224489.dasm - System.Collections.Concurrent.ConcurrentBag`1[System.__Canon]:CopyFromEachQueueToArray(System.__Canon[],int):int:this (FullOpts)
-15 (-9.32 % of base) : 241604.dasm - System.Data.OleDb.OleDbDataReader:GetValues(System.Object[]):int:this (FullOpts)
-9 (-8.91 % of base) : 171437.dasm - Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+RegionBuilder:ExtendToInclude(Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+BasicBlockBuilder):this (FullOpts)
-9 (-8.91 % of base) : 123634.dasm - Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+RegionBuilder:ExtendToInclude(Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+BasicBlockBuilder):this (FullOpts)
libraries_tests.run.windows.x86.Release.mch
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 185793630 (overridden on cmd)
Total bytes of diff: 185674595 (overridden on cmd)
Total bytes of delta: -119035 (-0.06 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
181 : 27904.dasm (3.20 % of base)
99 : 143375.dasm (1.41 % of base)
91 : 129771.dasm (1.31 % of base)
82 : 169024.dasm (0.34 % of base)
82 : 76563.dasm (1.73 % of base)
80 : 396102.dasm (1.88 % of base)
52 : 116586.dasm (0.69 % of base)
52 : 177079.dasm (0.69 % of base)
52 : 280532.dasm (0.68 % of base)
52 : 112687.dasm (0.69 % of base)
52 : 225683.dasm (0.69 % of base)
52 : 65012.dasm (0.68 % of base)
52 : 119770.dasm (0.69 % of base)
52 : 220876.dasm (0.69 % of base)
52 : 381462.dasm (0.68 % of base)
52 : 432460.dasm (0.69 % of base)
52 : 631125.dasm (0.69 % of base)
25 : 313991.dasm (1.28 % of base)
22 : 86260.dasm (7.24 % of base)
18 : 365126.dasm (7.86 % of base)
Top file improvements (bytes):
-1650 : 234576.dasm (-9.19 % of base)
-1408 : 391615.dasm (-14.04 % of base)
-615 : 383262.dasm (-8.25 % of base)
-387 : 235196.dasm (-13.89 % of base)
-376 : 395811.dasm (-7.87 % of base)
-344 : 395408.dasm (-3.80 % of base)
-343 : 501225.dasm (-2.87 % of base)
-343 : 545942.dasm (-2.87 % of base)
-343 : 123033.dasm (-2.87 % of base)
-343 : 453528.dasm (-2.87 % of base)
-343 : 442710.dasm (-2.87 % of base)
-343 : 135772.dasm (-2.87 % of base)
-343 : 285914.dasm (-2.87 % of base)
-343 : 423104.dasm (-2.87 % of base)
-339 : 197912.dasm (-2.80 % of base)
-323 : 217505.dasm (-2.72 % of base)
-319 : 445640.dasm (-2.68 % of base)
-319 : 448420.dasm (-2.68 % of base)
-319 : 183435.dasm (-2.68 % of base)
-319 : 441741.dasm (-2.68 % of base)
96 total files with Code Size differences (59 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
181 (3.20 % of base) : 27904.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeParameterConstraints(Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax]]:this (Tier0-FullOpts)
99 (1.41 % of base) : 143375.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeParameterConstraints(Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax]]:this (Tier0-FullOpts)
91 (1.31 % of base) : 129771.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeParameterConstraints(Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax]]:this (Tier0-FullOpts)
82 (1.73 % of base) : 76563.dasm - Microsoft.CodeAnalysis.CSharp.BinderFactory+BinderFactoryVisitor:VisitTypeDeclarationCore(Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)
82 (0.34 % of base) : 169024.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
80 (1.88 % of base) : 396102.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (Tier1)
52 (0.69 % of base) : 116586.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
52 (0.69 % of base) : 177079.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
52 (0.68 % of base) : 280532.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
52 (0.69 % of base) : 112687.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
52 (0.69 % of base) : 225683.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
52 (0.68 % of base) : 65012.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
52 (0.69 % of base) : 119770.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
52 (0.69 % of base) : 220876.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
52 (0.68 % of base) : 381462.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
52 (0.69 % of base) : 432460.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
52 (0.69 % of base) : 631125.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
25 (1.28 % of base) : 313991.dasm - System.Linq.Parallel.Tests.PlinqModesTests+<WithExecutionModeQueryData>d__3:MoveNext():ubyte:this (Tier0-FullOpts)
22 (7.24 % of base) : 86260.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (Tier0-FullOpts)
18 (7.86 % of base) : 365126.dasm - System.Net.SSPISecureChannelType:QueryContextAttributes(System.Net.Security.SafeDeleteContext,int,System.Span`1[ubyte],System.Type,byref):int:this (Tier1)
Top method improvements (bytes):
-1650 (-9.19 % of base) : 234576.dasm - System.Xml.Schema.SchemaNames:.ctor(System.Xml.XmlNameTable):this (Instrumented Tier0)
-1408 (-14.04 % of base) : 391615.dasm - System.Xml.Xsl.Xslt.KeywordsTable:.ctor(System.Xml.XmlNameTable):this (Instrumented Tier0)
-615 (-8.25 % of base) : 383262.dasm - System.Xml.Serialization.XmlSerializationReader:InitPrimitiveIDs():this (Instrumented Tier0)
-387 (-13.89 % of base) : 235196.dasm - System.Xml.Schema.XsdBuilder:SetContainer(int,System.Object):this (Instrumented Tier0)
-376 (-7.87 % of base) : 395811.dasm - System.Xml.Xsl.XPath.XPathBuilder:Function(System.String,System.String,System.Collections.Generic.IList`1[System.Xml.Xsl.Qil.QilNode]):System.Xml.Xsl.Qil.QilNode:this (Instrumented Tier0)
-344 (-3.80 % of base) : 395408.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (Instrumented Tier0)
-343 (-2.87 % of base) : 501225.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
-343 (-2.87 % of base) : 545942.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
-343 (-2.87 % of base) : 123033.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
-343 (-2.87 % of base) : 453528.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
-343 (-2.87 % of base) : 442710.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
-343 (-2.87 % of base) : 135772.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
-343 (-2.87 % of base) : 285914.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
-343 (-2.87 % of base) : 423104.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
-339 (-2.80 % of base) : 197912.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
-323 (-2.72 % of base) : 217505.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
-319 (-2.68 % of base) : 445640.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
-319 (-2.68 % of base) : 448420.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
-319 (-2.68 % of base) : 183435.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
-319 (-2.68 % of base) : 441741.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
Top method regressions (percentages):
18 (7.86 % of base) : 365126.dasm - System.Net.SSPISecureChannelType:QueryContextAttributes(System.Net.Security.SafeDeleteContext,int,System.Span`1[ubyte],System.Type,byref):int:this (Tier1)
22 (7.24 % of base) : 86260.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (Tier0-FullOpts)
14 (6.33 % of base) : 365211.dasm - System.Net.SSPIAuthType:QueryContextAttributes(System.Net.Security.SafeDeleteContext,int,System.Span`1[ubyte],System.Type,byref):int:this (Tier1)
15 (6.15 % of base) : 379242.dasm - System.Collections.ObjectModel.KeyedCollection`2[int,System.__Canon]:Remove(int):ubyte:this (Tier0-FullOpts)
5 (5.56 % of base) : 242093.dasm - System.Diagnostics.Tests.Helpers+<>c__DisplayClass13_0`1[System.__Canon]:<RetryOnAllPlatformsWithClosingResources>b__0():this (Instrumented Tier0)
16 (4.86 % of base) : 379194.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (Tier0-FullOpts)
5 (3.60 % of base) : 42292.dasm - Microsoft.CodeAnalysis.CSharp.AttributeSemanticModel:IsNullableAnalysisEnabled():ubyte:this (Instrumented Tier0)
5 (3.57 % of base) : 145544.dasm - Microsoft.CodeAnalysis.CSharp.AttributeSemanticModel:IsNullableAnalysisEnabled():ubyte:this (Instrumented Tier0)
5 (3.57 % of base) : 133115.dasm - Microsoft.CodeAnalysis.CSharp.AttributeSemanticModel:IsNullableAnalysisEnabled():ubyte:this (Instrumented Tier0)
5 (3.42 % of base) : 284279.dasm - LocalMemoryStream:Clone():LocalMemoryStream:this (Instrumented Tier0)
5 (3.42 % of base) : 361793.dasm - System.Net.Tests.HttpWebRequestTest:ContentType_SetThenGet_ExpectSameValue(System.Uri):this (Instrumented Tier0)
5 (3.31 % of base) : 575467.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter:VisitLiteral(Microsoft.CodeAnalysis.CSharp.BoundLiteral):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Instrumented Tier0)
5 (3.21 % of base) : 361563.dasm - System.Net.Tests.HttpWebRequestTest:Credentials_SetExplicitCredentialsThenGet_ValuesMatch(System.Uri):this (Instrumented Tier0)
181 (3.20 % of base) : 27904.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeParameterConstraints(Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax]]:this (Tier0-FullOpts)
5 (3.12 % of base) : 557049.dasm - System.Text.Json.Serialization.Tests.ExceptionTests+<>c:<ClassWithUnsupportedArrayInProperty>b__25_1():System.Object:this (Tier0)
5 (3.11 % of base) : 143412.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol:get_IsReadOnly():ubyte:this (Instrumented Tier0)
5 (3.11 % of base) : 132676.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol:get_IsReadOnly():ubyte:this (Instrumented Tier0)
5 (3.11 % of base) : 38453.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol:get_IsReadOnly():ubyte:this (Instrumented Tier0)
5 (3.07 % of base) : 235001.dasm - System.Xml.Serialization.CodeGenerator:get_ReturnLocal():System.Reflection.Emit.LocalBuilder:this (Instrumented Tier0)
5 (3.03 % of base) : 192048.dasm - System.Collections.Frozen.Tests.FrozenDictionary_Generic_Tests_string_string:CreateT(int):System.Collections.Generic.KeyValuePair`2[System.String,System.String]:this (Instrumented Tier0)
Top method improvements (percentages):
-48 (-23.41 % of base) : 391316.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (Tier0-FullOpts)
-18 (-22.50 % of base) : 194643.dasm - System.Collections.Immutable.KeysCollectionAccessor`2[int,ubyte]:.ctor(System.Collections.Immutable.IImmutableDictionary`2[int,ubyte]):this (Instrumented Tier0)
-18 (-22.50 % of base) : 194238.dasm - System.Collections.Immutable.ValuesCollectionAccessor`2[int,ubyte]:.ctor(System.Collections.Immutable.IImmutableDictionary`2[int,ubyte]):this (Instrumented Tier0)
-18 (-22.50 % of base) : 4217.dasm - Xunit.Sdk.TestCaseMessage:.ctor(Xunit.Abstractions.ITestCase):this (Instrumented Tier0)
-18 (-21.95 % of base) : 447843.dasm - System.Runtime.Serialization.XmlObjectSerializerWriteContext:IncrementCollectionCount(System.Runtime.Serialization.XmlWriterDelegator,System.Collections.ICollection):this (Instrumented Tier0)
-18 (-19.15 % of base) : 36878.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ThisParameterSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):this (Instrumented Tier0)
-18 (-19.15 % of base) : 222233.dasm - System.Configuration.ConfigurationElementCollection:BaseAdd(System.Configuration.ConfigurationElement):this (Instrumented Tier0)
-18 (-19.15 % of base) : 7408.dasm - Xunit.Sdk.TestClassMessage:.ctor(System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.ITestCase],Xunit.Abstractions.ITestClass):this (Instrumented Tier0)
-18 (-19.15 % of base) : 4221.dasm - Xunit.Sdk.TestClassMessage:.ctor(Xunit.Abstractions.ITestCase,Xunit.Abstractions.ITestClass):this (Instrumented Tier0)
-18 (-19.15 % of base) : 7406.dasm - Xunit.Sdk.TestCollectionMessage:.ctor(System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.ITestCase],Xunit.Abstractions.ITestCollection):this (Instrumented Tier0)
-18 (-19.15 % of base) : 4223.dasm - Xunit.Sdk.TestCollectionMessage:.ctor(Xunit.Abstractions.ITestCase,Xunit.Abstractions.ITestCollection):this (Instrumented Tier0)
-18 (-19.15 % of base) : 28268.dasm - Xunit.Sdk.TestMethodMessage:.ctor(System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.ITestCase],Xunit.Abstractions.ITestMethod):this (Instrumented Tier0)
-18 (-19.15 % of base) : 4219.dasm - Xunit.Sdk.TestMethodMessage:.ctor(Xunit.Abstractions.ITestCase,Xunit.Abstractions.ITestMethod):this (Instrumented Tier0)
-18 (-18.75 % of base) : 391604.dasm - System.Xml.Xsl.XsltOld.NavigatorInput:.ctor(System.Xml.XPath.XPathNavigator):this (Instrumented Tier0)
-18 (-18.56 % of base) : 447842.dasm - System.Runtime.Serialization.DataContracts.CollectionDataContract+CollectionDataContractCriticalHelper+<>c:<IncrementCollectionCount>b__95_1(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext):this (Instrumented Tier0)
-18 (-18.18 % of base) : 234970.dasm - System.Data.SqlTypes.SqlString:.ctor(System.String):this (Instrumented Tier0)
-18 (-17.31 % of base) : 32968.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SubstitutedMethodSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):this (Instrumented Tier0)
-18 (-17.14 % of base) : 184282.dasm - System.Collections.Concurrent.BlockingCollection`1[int]:.ctor(System.Collections.Concurrent.IProducerConsumerCollection`1[int]):this (Instrumented Tier0)
-147 (-16.70 % of base) : 36462.dasm - NuGet.Configuration.SettingsFile+<>c__DisplayClass32_0:<ExecuteSynchronized>b__0():this (Instrumented Tier0)
-18 (-16.67 % of base) : 35981.dasm - Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.InstrumentationState):this (Instrumented Tier0)
librariestestsnotieredcompilation.run.windows.x86.Release.mch
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 102157669 (overridden on cmd)
Total bytes of diff: 102150957 (overridden on cmd)
Total bytes of delta: -6712 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
181 : 14599.dasm (3.20 % of base)
82 : 59928.dasm (0.34 % of base)
80 : 175982.dasm (2.11 % of base)
51 : 177018.dasm (1.40 % of base)
36 : 204272.dasm (1.12 % of base)
34 : 110242.dasm (0.72 % of base)
25 : 140625.dasm (1.28 % of base)
22 : 26145.dasm (7.24 % of base)
18 : 11818.dasm (1.58 % of base)
16 : 169421.dasm (4.86 % of base)
16 : 287129.dasm (1.34 % of base)
15 : 203968.dasm (0.84 % of base)
15 : 169045.dasm (6.15 % of base)
14 : 19817.dasm (1.48 % of base)
12 : 105885.dasm (0.46 % of base)
12 : 105872.dasm (0.59 % of base)
12 : 203950.dasm (0.56 % of base)
10 : 169551.dasm (2.92 % of base)
10 : 227205.dasm (1.66 % of base)
10 : 169164.dasm (2.92 % of base)
Top file improvements (bytes):
-239 : 108223.dasm (-3.00 % of base)
-127 : 137815.dasm (-4.02 % of base)
-95 : 63618.dasm (-4.94 % of base)
-94 : 33532.dasm (-7.13 % of base)
-88 : 93806.dasm (-1.59 % of base)
-84 : 118595.dasm (-1.18 % of base)
-70 : 175591.dasm (-1.97 % of base)
-66 : 153714.dasm (-3.70 % of base)
-63 : 209578.dasm (-1.50 % of base)
-59 : 77104.dasm (-3.56 % of base)
-58 : 162265.dasm (-2.60 % of base)
-58 : 106902.dasm (-4.32 % of base)
-57 : 164573.dasm (-3.36 % of base)
-54 : 245604.dasm (-2.45 % of base)
-54 : 269934.dasm (-2.45 % of base)
-50 : 180879.dasm (-5.19 % of base)
-50 : 221785.dasm (-1.61 % of base)
-49 : 312724.dasm (-4.09 % of base)
-48 : 174980.dasm (-23.41 % of base)
-45 : 2360.dasm (-0.47 % of base)
81 total files with Code Size differences (51 improved, 30 regressed), 20 unchanged.
Top method regressions (bytes):
181 (3.20 % of base) : 14599.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeParameterConstraints(Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax]]:this (FullOpts)
82 (0.34 % of base) : 59928.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
80 (2.11 % of base) : 175982.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
51 (1.40 % of base) : 177018.dasm - (dynamicClass):<xsl:apply-templates>(System.Xml.Xsl.Runtime.XmlQueryRuntime,System.Xml.XPath.XPathNavigator) (FullOpts)
36 (1.12 % of base) : 204272.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:ReadGetOnlyCollection(System.Runtime.Serialization.DataContracts.CollectionDataContract):this (FullOpts)
34 (0.72 % of base) : 110242.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.context.dlgateEvent.dlgate.dlgate001.dlgate001.nms.Start:MainMethod():int (FullOpts)
25 (1.28 % of base) : 140625.dasm - System.Linq.Parallel.Tests.PlinqModesTests+<WithExecutionModeQueryData>d__3:MoveNext():ubyte:this (FullOpts)
22 (7.24 % of base) : 26145.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (FullOpts)
18 (1.58 % of base) : 11818.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindConditionalOperator(Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
16 (4.86 % of base) : 169421.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (FullOpts)
16 (1.34 % of base) : 287129.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2543_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
15 (6.15 % of base) : 169045.dasm - System.Collections.ObjectModel.KeyedCollection`2[int,System.__Canon]:Remove(int):ubyte:this (FullOpts)
15 (0.84 % of base) : 203968.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
14 (1.48 % of base) : 19817.dasm - Microsoft.Interop.Analyzers.CustomMarshallerAttributeFixer+<AddMissingMembers>d__9:MoveNext():this (FullOpts)
12 (0.56 % of base) : 203950.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (FullOpts)
12 (0.59 % of base) : 105872.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
12 (0.46 % of base) : 105885.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadValue(System.Type,System.String,System.String):System.Reflection.Emit.LocalBuilder:this (FullOpts)
10 (1.66 % of base) : 227205.dasm - System.Security.Cryptography.RSABCrypt:TryEncrypt(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.RSAEncryptionPadding,byref):ubyte:this (FullOpts)
10 (0.21 % of base) : 265123.dasm - System.Text.Json.Serialization.Tests.SerializerTests+<TestMultiContextDeserialization>d__10`1[System.__Canon]:MoveNext():this (FullOpts)
10 (2.92 % of base) : 169164.dasm - Tests.Collections.IListTest`1[int]:SetItem():this (FullOpts)
Top method improvements (bytes):
-239 (-3.00 % of base) : 108223.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.returnType.covariant.usage001.usage001.Test:MainMethod(System.String[]):int (FullOpts)
-127 (-4.02 % of base) : 137815.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,int]:MergeSortCooperatively():this (FullOpts)
-95 (-4.94 % of base) : 63618.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
-94 (-7.13 % of base) : 33532.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-88 (-1.59 % of base) : 93806.dasm - System.Data.RBTree`1[int]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
-84 (-1.18 % of base) : 118595.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.array010.array010.Test:MainMethod():int (FullOpts)
-70 (-1.97 % of base) : 175591.dasm - System.Xml.Xsl.Xslt.XsltLoader:LoadOutput():this (FullOpts)
-66 (-3.70 % of base) : 153714.dasm - System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
-63 (-1.50 % of base) : 209578.dasm - System.Tests.Int128Tests+<Parse_Valid_TestData>d__13:MoveNext():ubyte:this (FullOpts)
-59 (-3.56 % of base) : 77104.dasm - System.Collections.Tests.List_Generic_Tests`1[System.__Canon]:FindIndexIntInt_VerifyVanilla(int):this (FullOpts)
-58 (-4.32 % of base) : 106902.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.context.operate.regclass.regstrct023.regstrct023.Test:MainMethod():int (FullOpts)
-58 (-2.60 % of base) : 162265.dasm - System.Threading.Tasks.TaskTimeoutExtensions+<WaitAsync>d__7`1[System.__Canon]:MoveNext():this (FullOpts)
-57 (-3.36 % of base) : 164573.dasm - System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
-54 (-2.45 % of base) : 245604.dasm - System.Text.Json.Serialization.Tests.PropertyVisibilityTests+<NonPublicProperty_JsonInclude_WorksAsExpected>d__276:MoveNext():this (FullOpts)
-54 (-2.45 % of base) : 269934.dasm - System.Text.Json.Serialization.Tests.PropertyVisibilityTests+<NonPublicProperty_JsonInclude_WorksAsExpected>d__276:MoveNext():this (FullOpts)
-50 (-1.61 % of base) : 221785.dasm - System.Tests.UInt128Tests+<Parse_Valid_TestData>d__13:MoveNext():ubyte:this (FullOpts)
-50 (-5.19 % of base) : 180879.dasm - System.Xml.XmlConvertTests.VerifyNameTests1:v1():int:this (FullOpts)
-49 (-4.09 % of base) : 312724.dasm - System.Threading.Tests.TimerConstructorTests:Timer_AllConstructorsCanBeUsedSuccessfully():this (FullOpts)
-48 (-23.41 % of base) : 174980.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
-45 (-0.47 % of base) : 2360.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
Top method regressions (percentages):
22 (7.24 % of base) : 26145.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (FullOpts)
8 (6.72 % of base) : 87959.dasm - Castle.Proxies.Invocations.TypeDescriptionProvider_GetReflectionType:InvokeMethodOnTarget():this (FullOpts)
8 (6.72 % of base) : 87991.dasm - Castle.Proxies.Invocations.TypeDescriptionProvider_GetTypeDescriptor:InvokeMethodOnTarget():this (FullOpts)
15 (6.15 % of base) : 169045.dasm - System.Collections.ObjectModel.KeyedCollection`2[int,System.__Canon]:Remove(int):ubyte:this (FullOpts)
16 (4.86 % of base) : 169421.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (FullOpts)
6 (3.23 % of base) : 15240.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.FormattingHelpers:IsFirstFromKeywordInExpression(Microsoft.CodeAnalysis.SyntaxToken):ubyte (FullOpts)
181 (3.20 % of base) : 14599.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeParameterConstraints(Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax]]:this (FullOpts)
10 (2.92 % of base) : 169164.dasm - Tests.Collections.IListTest`1[int]:SetItem():this (FullOpts)
10 (2.92 % of base) : 169551.dasm - Tests.Collections.IListTest`1[System.__Canon]:SetItem():this (FullOpts)
8 (2.29 % of base) : 54720.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ResolveMultipleSymbolsInAttributeTypeLookup(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol]):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
80 (2.11 % of base) : 175982.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
4 (1.79 % of base) : 44466.dasm - Microsoft.CodeAnalysis.SyntaxNode:get_HasLeadingTrivia():ubyte:this (FullOpts)
4 (1.79 % of base) : 50388.dasm - Microsoft.CodeAnalysis.SyntaxNode:get_HasLeadingTrivia():ubyte:this (FullOpts)
6 (1.73 % of base) : 77433.dasm - System.Collections.Tests.List_Generic_Tests`1[System.__Canon]:Constructor_IEnumerable(int,int,int,int,int):this (FullOpts)
10 (1.66 % of base) : 227205.dasm - System.Security.Cryptography.RSABCrypt:TryEncrypt(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.RSAEncryptionPadding,byref):ubyte:this (FullOpts)
4 (1.66 % of base) : 103563.dasm - Microsoft.Diagnostics.Tracing.ETWTraceEventSource:Initialize(System.String,int):this (FullOpts)
18 (1.58 % of base) : 11818.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindConditionalOperator(Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
14 (1.48 % of base) : 19817.dasm - Microsoft.Interop.Analyzers.CustomMarshallerAttributeFixer+<AddMissingMembers>d__9:MoveNext():this (FullOpts)
9 (1.45 % of base) : 132826.dasm - System.IO.Packaging.PartBasedPackageProperties:ValidateXsiType(System.Xml.XmlReader,System.Object,System.String) (FullOpts)
51 (1.40 % of base) : 177018.dasm - (dynamicClass):<xsl:apply-templates>(System.Xml.Xsl.Runtime.XmlQueryRuntime,System.Xml.XPath.XPathNavigator) (FullOpts)
Top method improvements (percentages):
-48 (-23.41 % of base) : 174980.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
-13 (-21.31 % of base) : 70919.dasm - System.Collections.Immutable.Tests.ImmutableArrayTest+<>c__DisplayClass128_1:<RemoveRangeEnumerableInvalid>b__20():System.Object:this (FullOpts)
-13 (-11.02 % of base) : 17145.dasm - System.Net.Http.Unit.Tests.HPack.DynamicTableTest+<>c__DisplayClass6_0:<BoundsCheck_ThrowsIndexOutOfRangeException>b__0():System.Object:this (FullOpts)
-13 (-11.02 % of base) : 153565.dasm - System.Net.Http.Unit.Tests.HPack.DynamicTableTest+<>c__DisplayClass6_0:<BoundsCheck_ThrowsIndexOutOfRangeException>b__0():System.Object:this (FullOpts)
-13 (-10.83 % of base) : 153566.dasm - System.Net.Http.Unit.Tests.HPack.DynamicTableTest+<>c__DisplayClass6_0:<BoundsCheck_ThrowsIndexOutOfRangeException>b__1():System.Object:this (FullOpts)
-13 (-10.83 % of base) : 17146.dasm - System.Net.Http.Unit.Tests.HPack.DynamicTableTest+<>c__DisplayClass6_0:<BoundsCheck_ThrowsIndexOutOfRangeException>b__1():System.Object:this (FullOpts)
-4 (-10.53 % of base) : 93817.dasm - System.Data.Common.ObjectStorage:Copy(int,int):this (FullOpts)
-28 (-10.33 % of base) : 230976.dasm - System.Security.Cryptography.X509Certificates.X500DistinguishedName+<EnumerateRelativeDistinguishedNames>d__15:MoveNext():ubyte:this (FullOpts)
-14 (-10.29 % of base) : 38293.dasm - Moq.ParameterTypes+<GetEnumerator>d__6:MoveNext():ubyte:this (FullOpts)
-12 (-10.17 % of base) : 1022.dasm - System.Linq.Grouping`2+<GetEnumerator>d__9[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
-11 (-9.91 % of base) : 34966.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:MapParameters(System.Nullable`1[int][],System.Object[]):this (FullOpts)
-12 (-9.68 % of base) : 36498.dasm - Stashbox.Utils.Data.ExpandableArray`1+<GetEnumerator>d__20[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-14 (-9.40 % of base) : 68569.dasm - System.Collections.Concurrent.ConcurrentBag`1[System.__Canon]:CopyFromEachQueueToArray(System.__Canon[],int):int:this (FullOpts)
-15 (-9.32 % of base) : 99609.dasm - System.Data.OleDb.OleDbDataReader:GetValues(System.Object[]):int:this (FullOpts)
-13 (-9.15 % of base) : 216164.dasm - System.Tests.AttributeGetCustomAttributes:GetCustomAttributesWorksWithOpenAndClosedGenericTypesForParameter() (FullOpts)
-16 (-8.38 % of base) : 308667.dasm - System.Threading.Tasks.ParallelLoopState:Break[int](int,System.Threading.Tasks.ParallelLoopStateFlags`1[int]) (FullOpts)
-13 (-8.13 % of base) : 216910.dasm - System.Tests.CreateDelegateTests:CreateDelegate2_Target_GenericTypeParameter() (FullOpts)
-14 (-7.95 % of base) : 32992.dasm - System.Linq.Enumerable+ReverseIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-8 (-7.84 % of base) : 167468.dasm - System.Numerics.Tests.GenericVectorTests+<>c__DisplayClass714_0`1[int]:<TestSquareRoot>b__0(int,int):this (FullOpts)
-8 (-7.84 % of base) : 168907.dasm - System.Numerics.Tests.GenericVectorTests+<>c__DisplayClass714_0`1[uint]:<TestSquareRoot>b__0(int,uint):this (FullOpts)
realworld.run.windows.x86.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 11359539 (overridden on cmd)
Total bytes of diff: 11358945 (overridden on cmd)
Total bytes of delta: -594 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
242 : 2392.dasm (3.11 % of base)
236 : 6451.dasm (0.34 % of base)
172 : 22760.dasm (2.99 % of base)
18 : 25504.dasm (1.58 % of base)
14 : 15732.dasm (0.19 % of base)
8 : 22231.dasm (2.29 % of base)
8 : 104.dasm (2.05 % of base)
5 : 16612.dasm (1.75 % of base)
4 : 21110.dasm (1.79 % of base)
4 : 35909.dasm (0.60 % of base)
3 : 4934.dasm (1.55 % of base)
3 : 13694.dasm (2.24 % of base)
1 : 1247.dasm (0.02 % of base)
1 : 15361.dasm (0.53 % of base)
1 : 31807.dasm (0.43 % of base)
1 : 5855.dasm (0.72 % of base)
Top file improvements (bytes):
-94 : 1653.dasm (-7.13 % of base)
-82 : 33505.dasm (-1.03 % of base)
-62 : 33833.dasm (-0.70 % of base)
-45 : 31796.dasm (-0.47 % of base)
-37 : 34093.dasm (-0.84 % of base)
-36 : 15052.dasm (-1.79 % of base)
-34 : 15464.dasm (-12.55 % of base)
-34 : 32112.dasm (-2.33 % of base)
-32 : 15279.dasm (-0.43 % of base)
-24 : 16939.dasm (-1.77 % of base)
-24 : 33502.dasm (-2.57 % of base)
-21 : 9984.dasm (-1.32 % of base)
-20 : 35684.dasm (-12.50 % of base)
-20 : 14019.dasm (-5.71 % of base)
-20 : 7729.dasm (-0.64 % of base)
-19 : 16410.dasm (-5.64 % of base)
-18 : 31991.dasm (-4.21 % of base)
-17 : 8566.dasm (-3.21 % of base)
-15 : 25790.dasm (-7.81 % of base)
-15 : 25834.dasm (-6.38 % of base)
54 total files with Code Size differences (38 improved, 16 regressed), 23 unchanged.
Top method regressions (bytes):
242 (3.11 % of base) : 2392.dasm - <StartupCode$FSharp-Compiler-Service>.$FSharp.Compiler.Features:.cctor() (FullOpts)
236 (0.34 % of base) : 6451.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
172 (2.99 % of base) : 22760.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeParameterConstraints(Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax]]:this (FullOpts)
18 (1.58 % of base) : 25504.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindConditionalOperator(Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
14 (0.19 % of base) : 15732.dasm - Microsoft.ML.Trainers.SdcaTrainerBase`3[System.__Canon,System.__Canon,System.__Canon]:TrainCore(Microsoft.ML.Runtime.IChannel,Microsoft.ML.Data.RoleMappedData,Microsoft.ML.Trainers.LinearModelParameters,int):System.__Canon:this (FullOpts)
8 (2.29 % of base) : 22231.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ResolveMultipleSymbolsInAttributeTypeLookup(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol]):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
8 (2.05 % of base) : 104.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
5 (1.75 % of base) : 16612.dasm - Microsoft.ML.Numeric.L1Optimizer+L1OptimizerState:EvalCore(byref,byref,Microsoft.ML.Runtime.IProgressChannelProvider):float:this (FullOpts)
4 (1.79 % of base) : 21110.dasm - Microsoft.CodeAnalysis.SyntaxNode:get_HasLeadingTrivia():ubyte:this (FullOpts)
4 (0.60 % of base) : 35909.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase:GetModuleForNames(System.Collections.Generic.List`1[System.String],ubyte,ubyte):System.Collections.Generic.IEnumerable`1[System.Management.Automation.PSModuleInfo]:this (FullOpts)
3 (2.24 % of base) : 13694.dasm - <StartupCode$FSharp-Core>.$Async+Parallel@1621-3[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
3 (1.55 % of base) : 4934.dasm - <StartupCode$FSharp-Core>.$Async+taskCtxt@1645[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
1 (0.02 % of base) : 1247.dasm - BepuPhysics.CollisionDetection.NarrowPhase`1[DemoBenchmarks.RagdollTubeBenchmark+SubgroupFilteredCallbacks]:AddBatchEntries(int,byref,byref,byref,byref,BepuPhysics.Collidables.TypedIndex,BepuPhysics.Collidables.TypedIndex,int,int,float,byref,byref,byref,byref):this (FullOpts)
1 (0.72 % of base) : 5855.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader+seekReadNestedExportedTypes@3183[int,FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+ImplementationTag]]:Invoke(Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILNestedExportedType]:this (FullOpts)
1 (0.53 % of base) : 15361.dasm - Microsoft.ML.Data.TextLoader+Parser:CreateRowSet(Microsoft.ML.Data.TextLoader+ParseStats,int,ubyte[]):Microsoft.ML.Data.TextLoader+RowSet:this (FullOpts)
1 (0.43 % of base) : 31807.dasm - Microsoft.Win32.RegistryKey:OpenBaseKey(int,int):Microsoft.Win32.RegistryKey (FullOpts)
Top method improvements (bytes):
-94 (-7.13 % of base) : 1653.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-82 (-1.03 % of base) : 33505.dasm - System.Management.Automation.Language.Tokenizer:NextToken():System.Management.Automation.Language.Token:this (FullOpts)
-62 (-0.70 % of base) : 33833.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-45 (-0.47 % of base) : 31796.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-37 (-0.84 % of base) : 34093.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
-36 (-1.79 % of base) : 15052.dasm - Microsoft.ML.Transforms.HashingTransformer:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.IDataView,Microsoft.ML.Transforms.HashingEstimator+ColumnOptions[]):this (FullOpts)
-34 (-12.55 % of base) : 15464.dasm - Microsoft.ML.Data.DataViewUtils+Splitter+Cursor:.ctor(Microsoft.ML.Runtime.IChannelProvider,Microsoft.ML.DataViewSchema,int[],int[],Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe[],System.Collections.Concurrent.BlockingCollection`1[Microsoft.ML.Data.DataViewUtils+Splitter+Batch],System.Action):this (FullOpts)
-34 (-2.33 % of base) : 32112.dasm - System.Management.Automation.ArgumentTypeConverterAttribute:Transform(System.Management.Automation.EngineIntrinsics,System.Object,ubyte,ubyte):System.Object:this (FullOpts)
-32 (-0.43 % of base) : 15279.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
-24 (-2.57 % of base) : 33502.dasm - System.Management.Automation.Language.Tokenizer:SkipNewlines(ubyte):this (FullOpts)
-24 (-1.77 % of base) : 16939.dasm - System.Net.Http.HttpConnectionPoolManager:.ctor(System.Net.Http.HttpConnectionSettings):this (FullOpts)
-21 (-1.32 % of base) : 9984.dasm - FSharp.Compiler.CheckDeclarations+IncrClassChecking+FixupExprNode@1147:Invoke(Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.TypedTree+Expr):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Expr]:this (FullOpts)
-20 (-0.64 % of base) : 7729.dasm - FSharp.Compiler.CheckDeclarations+EstablishTypeDefinitionCores:GetStructuralElementsOfTyconDefn(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase1DataForTycon,FSharp.Compiler.TypedTree+Entity):Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Text.Range]] (FullOpts)
-20 (-5.71 % of base) : 14019.dasm - System.Collections.Concurrent.ConcurrentBag`1[System.__Canon]:ToArray():System.__Canon[]:this (FullOpts)
-20 (-12.50 % of base) : 35684.dasm - System.Management.Automation.ComInterop.ComInvokeBinder:MakeArgumentExpressions():System.Linq.Expressions.Expression[]:this (FullOpts)
-19 (-5.64 % of base) : 16410.dasm - Microsoft.ML.Data.ArrayDataViewBuilder+DataView+Cursor:GetGetter[double](Microsoft.ML.DataViewSchema+Column):Microsoft.ML.ValueGetter`1[double]:this (FullOpts)
-18 (-4.21 % of base) : 31991.dasm - System.Security.AccessControl.CommonAcl:QuickSort(int,int,ubyte):this (FullOpts)
-17 (-3.21 % of base) : 8566.dasm - FSharp.Compiler.TypedTreeOps:eliminateDeadTargetsFromMatch[System.__Canon](FSharp.Compiler.TypedTree+DecisionTree,System.__Canon[]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
-15 (-6.38 % of base) : 25834.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:DependsDirectlyOn(int,int):ubyte:this (FullOpts)
-15 (-7.81 % of base) : 25790.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:InitializeDependencies():this (FullOpts)
Top method regressions (percentages):
242 (3.11 % of base) : 2392.dasm - <StartupCode$FSharp-Compiler-Service>.$FSharp.Compiler.Features:.cctor() (FullOpts)
172 (2.99 % of base) : 22760.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeParameterConstraints(Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax]]:this (FullOpts)
8 (2.29 % of base) : 22231.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ResolveMultipleSymbolsInAttributeTypeLookup(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol]):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
3 (2.24 % of base) : 13694.dasm - <StartupCode$FSharp-Core>.$Async+Parallel@1621-3[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
8 (2.05 % of base) : 104.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
4 (1.79 % of base) : 21110.dasm - Microsoft.CodeAnalysis.SyntaxNode:get_HasLeadingTrivia():ubyte:this (FullOpts)
5 (1.75 % of base) : 16612.dasm - Microsoft.ML.Numeric.L1Optimizer+L1OptimizerState:EvalCore(byref,byref,Microsoft.ML.Runtime.IProgressChannelProvider):float:this (FullOpts)
18 (1.58 % of base) : 25504.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindConditionalOperator(Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
3 (1.55 % of base) : 4934.dasm - <StartupCode$FSharp-Core>.$Async+taskCtxt@1645[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
1 (0.72 % of base) : 5855.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader+seekReadNestedExportedTypes@3183[int,FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+ImplementationTag]]:Invoke(Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILNestedExportedType]:this (FullOpts)
4 (0.60 % of base) : 35909.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase:GetModuleForNames(System.Collections.Generic.List`1[System.String],ubyte,ubyte):System.Collections.Generic.IEnumerable`1[System.Management.Automation.PSModuleInfo]:this (FullOpts)
1 (0.53 % of base) : 15361.dasm - Microsoft.ML.Data.TextLoader+Parser:CreateRowSet(Microsoft.ML.Data.TextLoader+ParseStats,int,ubyte[]):Microsoft.ML.Data.TextLoader+RowSet:this (FullOpts)
1 (0.43 % of base) : 31807.dasm - Microsoft.Win32.RegistryKey:OpenBaseKey(int,int):Microsoft.Win32.RegistryKey (FullOpts)
236 (0.34 % of base) : 6451.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
14 (0.19 % of base) : 15732.dasm - Microsoft.ML.Trainers.SdcaTrainerBase`3[System.__Canon,System.__Canon,System.__Canon]:TrainCore(Microsoft.ML.Runtime.IChannel,Microsoft.ML.Data.RoleMappedData,Microsoft.ML.Trainers.LinearModelParameters,int):System.__Canon:this (FullOpts)
1 (0.02 % of base) : 1247.dasm - BepuPhysics.CollisionDetection.NarrowPhase`1[DemoBenchmarks.RagdollTubeBenchmark+SubgroupFilteredCallbacks]:AddBatchEntries(int,byref,byref,byref,byref,BepuPhysics.Collidables.TypedIndex,BepuPhysics.Collidables.TypedIndex,int,int,float,byref,byref,byref,byref):this (FullOpts)
Top method improvements (percentages):
-8 (-14.04 % of base) : 2276.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
-34 (-12.55 % of base) : 15464.dasm - Microsoft.ML.Data.DataViewUtils+Splitter+Cursor:.ctor(Microsoft.ML.Runtime.IChannelProvider,Microsoft.ML.DataViewSchema,int[],int[],Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe[],System.Collections.Concurrent.BlockingCollection`1[Microsoft.ML.Data.DataViewUtils+Splitter+Batch],System.Action):this (FullOpts)
-20 (-12.50 % of base) : 35684.dasm - System.Management.Automation.ComInterop.ComInvokeBinder:MakeArgumentExpressions():System.Linq.Expressions.Expression[]:this (FullOpts)
-13 (-12.38 % of base) : 16234.dasm - Microsoft.ML.Internal.Utilities.HashArray`1[float]:.ctor():this (FullOpts)
-6 (-11.32 % of base) : 15844.dasm - Microsoft.ML.Transforms.RowShufflingTransformer+Cursor+<>c__DisplayClass36_0`1[ubyte]:<CreateGetterDelegate>b__0(byref):this (FullOpts)
-9 (-9.89 % of base) : 3188.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-4 (-9.52 % of base) : 15430.dasm - Microsoft.ML.Data.TextLoader+PrimitivePipe`1[System.ReadOnlyMemory`1[ushort]]:Consume(int,int,byref):ubyte:this (FullOpts)
-14 (-7.95 % of base) : 34770.dasm - System.Linq.Enumerable+ReverseIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-15 (-7.81 % of base) : 25790.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:InitializeDependencies():this (FullOpts)
-12 (-7.64 % of base) : 34410.dasm - System.Management.Automation.Language.Tokenizer:NewVariableToken(System.Management.Automation.VariablePath,ubyte):System.Management.Automation.Language.VariableToken:this (FullOpts)
-7 (-7.45 % of base) : 13867.dasm - System.IO.Compression.DeflateStream:ReadByte():int:this (FullOpts)
-94 (-7.13 % of base) : 1653.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-2 (-6.67 % of base) : 19960.dasm - Microsoft.CodeAnalysis.Syntax.SyntaxList+WithManyChildren:GetNodeSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
-12 (-6.59 % of base) : 33506.dasm - System.Management.Automation.Language.Tokenizer:ScanStringLiteral():System.Management.Automation.Language.Token:this (FullOpts)
-15 (-6.38 % of base) : 25834.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:DependsDirectlyOn(int,int):ubyte:this (FullOpts)
-12 (-6.22 % of base) : 18559.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:AddTokenSlot():this (FullOpts)
-12 (-6.19 % of base) : 12702.dasm - FSharp.Compiler.TypedTreeOps:permute[System.__Canon](int[],System.__Canon[]):System.__Canon[] (FullOpts)
-20 (-5.71 % of base) : 14019.dasm - System.Collections.Concurrent.ConcurrentBag`1[System.__Canon]:ToArray():System.__Canon[]:this (FullOpts)
-19 (-5.64 % of base) : 16410.dasm - Microsoft.ML.Data.ArrayDataViewBuilder+DataView+Cursor:GetGetter[double](Microsoft.ML.DataViewSchema+Column):Microsoft.ML.ValueGetter`1[double]:this (FullOpts)
-2 (-5.26 % of base) : 16413.dasm - Microsoft.ML.Data.ArrayDataViewBuilder+Column`2[double,double]:CopyOut(int,byref):this (FullOpts)